미리보기에 태그 값이 흐를 관을 판다 — 값 아니면 사유
미리보기 레거시 호환 계획의 A1. 지금까지 미리보기는 태그를 <b>글자 그대로</b> 찍었다 — PAT_이름 이 종이에 그렇게 인쇄됐다. 값이 흐를 관이 아예 없었다. <b>해석기를 인터페이스로 둔다.</b> 오늘 값이 나오는 것은 서버 시각·로그인 사용자 16종 (운영 사용 579건, 9.1%)뿐이고 나머지 368종은 환자·내원 문맥이 있어야 한다. 그 문맥이 생기면 <b>같은 자리로</b> 더 강한 해석기가 들어온다 — 관을 지금 파 두고 해석기만 갈아 끼운다. A1 의 값어치는 9.1% 가 아니라 그 관이다. <b>못 만든 값을 감추지 않는다.</b> 값이 나오면 값을, 안 나오면 사유를 대괄호로 감싸 그린다 — [PAT_차트번호 — 환자·내원 정보가 있어야 값이 나오는 태그입니다]. 빈칸으로 두면 서식이 잘못된 줄 알고, 태그 이름을 그대로 두면 값이 나온 줄 안다. 레거시도 같은 문제를 같은 이유로 다뤘다 — 실패한 컨트롤을 노란색으로 칠했다 (ucLoadSheetBase.vb:2300-2308). 그 장치가 있다는 것 자체가 현장 실패가 흔하다는 방증이다. 주입은 컨테이너 투영과 같은 방식이다 — 모델을 복제해 Text 만 갈아 끼우고 같은 타입의 VM 을 만든다. <b>캔버스가 쓰는 VM 과 모델은 건드리지 않는다.</b> DB 는 창당 한 번만 읽는다(재료 왕복 2회). 그리기마다 새로 만들면 다시 그릴 때마다 DB 를 친다 — 레거시가 태그마다 쿼리를 돌려 태그 40개 서식에 왕복 40회를 하는 것과 같은 실수다. <b>단정은 종이에 찍힌 글자를 본다.</b> VM 속성만 보면 템플릿이 그 값을 쓰는지 알 수 없다 — 배선과 결과는 다른 문제이고, 이 저장소에서 그 둘이 여러 번 갈렸다. 검사용 해석기를 따로 둬 접속 없이도 같은 답이 나오게 했다. 게이트: 테스트 298/298, --edit-smoke 0실패(신규 3), --dialog-shots FAIL 0, --modal-check 0실패, --cleartype 11/11, --scale-budget 5/5, 빌드 경고 0, --db-smoke 1271건 diff 0, --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 동일. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a67b6ee4b8
commit
26e93cae94
@@ -0,0 +1,27 @@
|
||||
namespace SheetMe.Core.Catalog;
|
||||
|
||||
/// <summary>태그 하나를 값으로 바꾼 결과</summary>
|
||||
/// <param name="Resolved">값을 만들었는가 — false 면 <paramref name="Text"/> 는 사유다</param>
|
||||
/// <param name="Text">값 또는 사유</param>
|
||||
public readonly record struct TagValue(bool Resolved, string Text)
|
||||
{
|
||||
public static readonly TagValue None = new(false, string.Empty);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 미리보기에서 데이터 태그를 값으로 바꾸는 주체.
|
||||
///
|
||||
/// <b>왜 인터페이스인가.</b> 지금 값을 만들 수 있는 것은 서버 시각·로그인 사용자 계열
|
||||
/// 16종(운영 사용 579건, 9.1%)뿐이다. 나머지 368종은 환자·내원 문맥이 있어야 한다.
|
||||
/// 그 문맥이 생기면 <b>같은 자리로</b> 더 강한 해석기가 들어와야 하므로,
|
||||
/// 값이 흐를 관을 지금 파 두고 해석기만 갈아 끼운다.
|
||||
///
|
||||
/// <b>못 만든 것을 감추지 않는다.</b> 레거시는 값을 못 가져온 컨트롤을 노란색으로 칠했다
|
||||
/// (<c>ucLoadSheetBase.vb:2300-2308</c>) — 그런 장치가 있다는 것 자체가 현장 실패가 흔하다는 방증이다.
|
||||
/// 조용히 빈칸으로 두면 사용자는 서식이 잘못된 줄 안다. 그래서 사유를 함께 돌려준다.
|
||||
/// </summary>
|
||||
public interface ITagValueResolver
|
||||
{
|
||||
/// <summary>이 태그의 값 — 못 만들면 <see cref="TagValue.Resolved"/> 가 false 이고 사유가 담긴다</summary>
|
||||
TagValue Resolve(string tag);
|
||||
}
|
||||
Reference in New Issue
Block a user