값을 못 만든 태그는 종이·미리보기에서 빈칸 — 사유 표기 제거(사용자 결정)
지금까지는 값이 안 되는 태그를 [태그명 — 사유] 로 그렸다("못 만든
것을 감추지 않는다"). 실사용 출력물에 그 문구가 찍히면 안 되므로
빈칸으로 바꾼다 — 태그 이름도 지운다(남기면 값이 나온 줄 안다).
렌더 공용 지점(WithTagValue) 한 곳 수정이라 미리보기·인쇄 동시 적용.
체크류(컨트롤 유지)·해석기 없음(디자인 화면 — 태그 이름 유지)은 그대로.
사유 자체는 사라지지 않는다 — 해석기(TagValue)가 계속 담고 있고,
진단이 그것으로 판정한다. 종이 기반이던 사유 판정 8건을 해석기 수준
판정 + "종이에 사유가 새지 않았다" 판정으로 전환:
- 못 만드는 태그/환자 없음/매핑 없음/값 빈 이름 → 해석기 사유 확인
+ 종이 빈칸 확인(각각 쌍)
- 배선 3건(컬럼 오타·없는 소스·형식 깨짐) → 해석기 사유 + 종이 빈칸
- 환자 뗌/세션 뗌 → "[PAT_차트번호] 사유 복귀" 대신 "이름·값 모두 없음"
- dotnet test 342/342 · --edit-smoke 실패 0 · --dialog-shots 통과
- --db-patient ①~㊱ 전건 통과 (⑬ 등은 해석기 직접 판정이라 무영향)
- --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 불변
(렌더 대조는 해석기 없는 경로 — 이 변경의 영향 밖)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
86ecfff1a1
commit
31a05c205b
@@ -181,9 +181,12 @@ public static class PrintService
|
||||
/// 컨테이너 투영과 같은 방식이다 — 모델을 복제해 Text 만 갈아 끼우고 같은 타입의 VM 을 새로 만든다.
|
||||
/// 타입이 같으니 템플릿이 그대로 잡히고, <b>캔버스가 쓰는 VM 과 모델은 건드리지 않는다.</b>
|
||||
///
|
||||
/// <b>못 만든 값은 감추지 않는다.</b> 사유를 대괄호로 감싸 그린다 —
|
||||
/// 빈칸으로 두면 서식이 잘못된 줄 알고, 태그 이름을 그대로 두면 값이 나온 줄 안다.
|
||||
/// 레거시는 실패한 컨트롤을 노란색으로 칠했다(같은 문제를 같은 이유로 다뤘다).
|
||||
/// <b>못 만든 값은 빈칸이다</b>(2026-08-20 사용자 결정). 처음에는 사유를 대괄호로
|
||||
/// 감싸 그렸는데("못 만든 것을 감추지 않는다"), 실사용 출력물에 [태그 — 사유] 가
|
||||
/// 찍히면 안 되므로 값이 안 되는 태그는 종이·미리보기 모두 빈칸으로 바꾼다 —
|
||||
/// 태그 이름을 그대로 두면 값이 나온 줄 알기 때문에 이름도 지운다.
|
||||
/// 사유 자체는 사라지지 않는다 — 해석기(TagValue)가 계속 담고 있고,
|
||||
/// 진단(--db-patient·edit-smoke)이 그것으로 판정한다.
|
||||
/// </summary>
|
||||
private static object WithTagValue(ControlViewModel control, SheetMe.Core.Catalog.ITagValueResolver? tags,
|
||||
SheetMe.Core.Catalog.IDataFieldResolver? fields)
|
||||
@@ -215,9 +218,8 @@ public static class PrintService
|
||||
}
|
||||
else
|
||||
{
|
||||
var text = value.Resolved ? value.Text
|
||||
: value.Text.Length > 0 ? $"[{label} — {value.Text}]" : $"[{label}]";
|
||||
model.Props.SetText("Text", text);
|
||||
// 값을 못 만들면 빈칸 — 사유를 종이에 쓰지 않는다(위 요약 참조)
|
||||
model.Props.SetText("Text", value.Resolved ? value.Text : string.Empty);
|
||||
}
|
||||
return DocumentMapper.CreateControl(model, control.EffectiveFont, control.Foreground);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user