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")); }