From 5072acb5184524b56b9c08bbf64ec9edd8f2a5fc Mon Sep 17 00:00:00 2001 From: Msystech Date: Tue, 18 Aug 2026 10:06:53 +0900 Subject: [PATCH] =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EC=82=AC=EC=9C=A0?= =?UTF-8?q?=EA=B0=80=20=EB=A7=9E=EC=95=84=EC=A7=84=EB=8B=A4=20=E2=80=94=20?= =?UTF-8?q?'Inital'=20=EC=9D=80=20=EC=98=A4=ED=83=80=EA=B0=80=20=EC=95=84?= =?UTF-8?q?=EB=8B=88=EB=9D=BC=20=EC=8B=A4=EC=A0=9C=20=ED=91=9C=EA=B8=B0?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 미리보기 레거시 호환 계획의 A2. 값이 더 나오는 효과는 최대 7건이고, 본체는 "왜 값이 안 나오는지"가 맞아지는 것이다. ① Inital — 분류 규칙이 EndsWith("InitialDatatable") 인데 실제 태그 3종은 _InitalDatatable 이다(LegacyTagCatalog.cs:184, 194, 196). 레거시가 그렇게 적어 두었다. 맞춤법을 고치는 것이 아니라 실재하는 표기를 받는 것이다. 안 받으면 그 셋이 표가 아니라 환자 문맥으로 분류되어, 화면이 "환자 정보가 있어야 값이 나온다"는 틀린 사유를 말한다 — 사용자는 환자를 골라 보고 왜 안 나오는지 계속 찾게 된다. 검사에 "이 표기가 카탈로그에 실재하는가"를 함께 넣었다. 표기가 바뀌면 검사가 헛돈다. ② ETC_건강보험증번호_Refer — 본문 34줄이 전부 주석 처리되고 Return "" 만 남았다 (bzDataInterface.vb:15352). 운영 2건. Dead 표에 없어서 화면이 "환자 정보가 있으면 나온다"고 말했는데, 환자를 골라도 영원히 안 나온다. 앞선 보고를 정정한다: "카탈로그 오분류 45종 122건 회수"는 틀렸다. 재계측하면 최대 40종 7건이고, 근거로 들었던 _병원직인(82건)·_병원로고(22건)는 이름에 '직인'·'로고' 가 들어가 이미 Image 로 분류된다 — 누수가 아니었다. 게이트: 테스트 299/299(신규 1), --edit-smoke 0실패, --dialog-shots FAIL 0, --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 동일. Co-Authored-By: Claude Opus 5 --- src/SheetMe.Core/Catalog/TagPreviewCatalog.cs | 16 +++++++++++-- .../TagPreviewCatalogTests.cs | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) 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")); }