diff --git a/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs b/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs
index 5c6c4ac..4c31618 100644
--- a/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs
+++ b/src/SheetMe.Core/Catalog/TagPreviewCatalog.cs
@@ -76,6 +76,11 @@ public static class TagPreviewCatalog
// 레거시가 항상 빈 문자열을 돌려준다(본문이 Return "")
["OCM_수술일자_Refer"] = TagPreviewKind.Dead,
+ // 본문 34줄이 전부 주석 처리되고 Return "" 만 남았다(bzDataInterface.vb:15352).
+ // 운영에서 2건 쓰이는데, 이 표에 없으면 화면이 "환자 정보가 있으면 나온다"고 말한다 —
+ // 환자를 골라도 영원히 안 나온다. 사유를 정직하게 하려고 넣는다.
+ ["ETC_건강보험증번호_Refer"] = TagPreviewKind.Dead,
+
// 태그가 아니라 내부 헬퍼 — 우리 카탈로그가 Public Function 을 전수 추출해 섞여 들어왔다.
// 레거시 태그 목록(fmDataTag)은 PAT_/OCM_/ETC_ 접두어만 올린다.
["퇴원약DT"] = TagPreviewKind.NotATag,
@@ -102,9 +107,16 @@ public static class TagPreviewCatalog
{
return known;
}
- // 이름 끝으로 갈리는 두 갈래는 규칙이 확실하다 — 표에 나열하지 않는다
+ // 이름 끝으로 갈리는 두 갈래는 규칙이 확실하다 — 표에 나열하지 않는다.
+ //
+ // Inital 은 오타가 아니라 카탈로그의 실제 표기다. 레거시가 그렇게 적어 두었고
+ // 실제 태그 3종이 _InitalDatatable 이다(LegacyTagCatalog.cs:184, 194, 196).
+ // "InitialDatatable" 만 보면 그 셋이 표가 아니라 환자 문맥으로 분류되어,
+ // 화면이 "환자 정보가 있어야 값이 나온다"는 틀린 사유를 말한다.
+ // 맞춤법을 고치는 것이 아니라 실재하는 표기를 받는 것이다.
if (tag.EndsWith("List", StringComparison.Ordinal)
- || tag.EndsWith("InitialDatatable", StringComparison.Ordinal))
+ || tag.EndsWith("InitialDatatable", StringComparison.Ordinal)
+ || tag.EndsWith("InitalDatatable", StringComparison.Ordinal))
{
return TagPreviewKind.Table;
}
diff --git a/tests/SheetMe.Core.Tests/TagPreviewCatalogTests.cs b/tests/SheetMe.Core.Tests/TagPreviewCatalogTests.cs
index c13607c..fde64d7 100644
--- a/tests/SheetMe.Core.Tests/TagPreviewCatalogTests.cs
+++ b/tests/SheetMe.Core.Tests/TagPreviewCatalogTests.cs
@@ -54,10 +54,33 @@ public sealed class TagPreviewCatalogTests
Assert.AreEqual(TagPreviewKind.Image, TagPreviewCatalog.KindOf("ETC_병원직인"));
}
+ [TestMethod]
+ public void 카탈로그의_실제_표기를_받는다()
+ {
+ // 레거시가 'Inital' 로 적어 두었다 — 맞춤법이 아니라 실재하는 표기다.
+ // 'InitialDatatable' 만 보면 이 셋이 표가 아니라 환자 문맥으로 분류되어,
+ // 화면이 "환자 정보가 있어야 값이 나온다"는 틀린 사유를 말한다.
+ foreach (var tag in new[]
+ {
+ "ETC_로그인사용자_병동간호사목록_InitalDatatable",
+ "ETC_수술_내시경간호사목록_InitalDatatable",
+ "ETC_수술간호사목록_InitalDatatable",
+ })
+ {
+ Assert.AreEqual(TagPreviewKind.Table, TagPreviewCatalog.KindOf(tag), tag);
+ // 실재 확인 — 표기가 바뀌면 이 검사가 헛돈다
+ Assert.IsTrue(LegacyTagCatalog.DataInterfaceTags.Contains(tag), $"{tag} 가 카탈로그에 없다");
+ }
+ // 올바른 철자도 계속 받는다
+ Assert.AreEqual(TagPreviewKind.Table, TagPreviewCatalog.KindOf("PAT_병동InitialDatatable"));
+ }
+
[TestMethod]
public void 죽은_태그와_태그가_아닌_것을_가른다()
{
Assert.AreEqual(TagPreviewKind.Dead, TagPreviewCatalog.KindOf("OCM_수술일자_Refer"));
+ // 본문 34줄이 전부 주석 + Return "" — 환자를 골라도 영원히 안 나온다(실사용 2건)
+ Assert.AreEqual(TagPreviewKind.Dead, TagPreviewCatalog.KindOf("ETC_건강보험증번호_Refer"));
Assert.AreEqual(TagPreviewKind.NotATag, TagPreviewCatalog.KindOf("GetNurseShtCod"));
Assert.AreEqual(TagPreviewKind.NotATag, TagPreviewCatalog.KindOf("퇴원약DT"));
}