열기·저장을 DB 로만 — 'DB에서 열기' 대화상자를 지우고 좌측 목록으로 모은다
<b>먼저 밝힐 것: 내가 "완전 중복"이라고 인용한 판정이 틀렸다.</b> 좌측 목록과 이 대화상자는 같은 조회를 쓰지만(둘 다 ListSheets, WHERE·ORDER BY·상한 동일) 같은 쓸모를 주지 않았다. 지우기 전에 구멍 넷을 좌측에 옮겼다. <b>① 저장·등록 뒤 재조회 — 가장 컸다.</b> 좌측 목록은 기동 1회와 검색 버튼으로만 채워졌고 저장 뒤 갱신이 없었다. 즉 <b>방금 저장한 서식이 목록에 안 떴다</b>. 대화상자는 열 때마다 재조회해서 그 구멍을 덮고 있었다. 그것을 안 메우고 창만 지웠으면, DB 전용으로 바꾼 직후 신규 서식을 저장한 사용자가 그 서식을 다시 찾지 못했을 것이다. <b>② 서식명 툴팁</b> — 좌측은 폭이 148px 남짓(자물쇠 붙으면 134, 패널 최소폭이면 80)이라 긴 이름이 잘리는데 전문을 볼 방법이 없었다. 대화상자는 열이 300px 에 드래그로 늘릴 수 있었다. <b>③ '디자인 없음'과 '서식생성기 사용 꺼짐'</b> 이 좌측에서는 둘 다 같은 회색+Opacity 0.6 이라 화면만 보고 구분할 수 없었다. 툴팁으로 갈랐다. <b>④ Enter 로 열기</b> — 좌측은 더블클릭 전용이라 키보드로 서식을 열 수 없었다. 대화상자에는 [열기] 버튼이 있어 그 구멍이 가려져 있었다. 검색칸에서 ↓ 로 목록에 내려가는 길도 붙였다. 그 다음 지웠다: SheetOpenDialogView(680×560), OpenFromDbCommand, 파일 메뉴의 파일 열기· 다른 이름으로 저장·DB에서 열기, 빈 화면의 '파일 열기' 버튼, Ctrl+Shift+S. Ctrl+O 는 이제 서식 목록으로 간다 — 전에는 OS 파일 대화상자였고, 운영 서식은 전부 DB 에 있다. <b>SaveMode 기본값은 바꾸지 않았다.</b> 조사해 보니 그 규칙은 실재하고 문서·코드 4곳에 있다 — docs/DEPLOYMENT.md:56 은 "이 기본값을 바꾸지 말 것"이라고 명시한다. 배포된 ini 의 CurrentServer 가 운영 병원 DB 를 가리켜서, 명시적으로 켠 단말에서만 운영 테이블(E_SdgMst/E_SctMst)에 쓰게 하려는 장치다. ini 는 SaveMode 를 담지 않으므로 이 규칙이 병원 단말의 유일한 방어선이다. UI 진입점만 없애고 규칙은 그대로 둔다. 파일 저장·열기 <b>코드</b>도 남긴다 — 접속 없이 도는 --render-smoke 와 --edit-smoke 직렬화 왕복이 그 경로를 쓴다. 대신 화면이 상태를 말하게 했다 — SaveMode=File 단말에서는 저장 메뉴·버튼이 비활성이다. 전에는 항상 활성이고 누른 뒤에야 경고가 떴다. <b>종료 가드를 고쳤다 — 앱이 안 닫히는 상태를 없앤다.</b> 전에는 저장 실패가 곧 종료 중단이었다. 파일 폴백이 있을 때는 드문 분기였지만 저장이 DB 로만 가면 흔한 경로가 된다 — SaveMode=File 단말이나 접속 불가에서 <b>수정한 탭을 가진 사용자가 앱을 닫을 수 없게</b> 된다. 이제 '버리고 종료'를 묻는다. 게이트 대체물도 함께 옮겼다: --dialog-shots 의 01-sheet-open 을 지우면 서식명 잘림을 잡을 자리가 통째로 사라지므로, 좌측 목록에 표본을 넣은 01-sheet-list 샷으로 바꿨다 (진단 모드는 Loaded 를 안 돌려 목록이 비므로 표본을 직접 주입한다). 검사한 글자 2,531 → 2,649개. 게이트: 테스트 291/291, --edit-smoke 0실패, --dialog-shots 62장 FAIL 0 대조군 4/4, --modal-check 0실패, --cleartype 11/11, --maxrect 0실패, --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
2f5c9bf82d
commit
a386c5504b
@@ -127,7 +127,9 @@ public static class DialogShots
|
||||
("00b-main-1920", () => NewMainShell(1920, 1032)),
|
||||
// 도구 상자 탭은 타일 라벨이 좁은 2열에 들어가므로 잘림이 가장 잘 나는 자리다
|
||||
("00c-main-toolbox", () => NewMainShell(1440, 920, leftTab: 2)),
|
||||
("01-sheet-open", () => new Views.SheetOpenDialogView(_ => SampleSheets())),
|
||||
// 'DB에서 열기' 대화상자를 지웠다. 그 자리를 좌측 서식 목록 샷이 대신한다 —
|
||||
// 안 그러면 서식명 잘림을 잡을 자리가 게이트에서 통째로 사라진다.
|
||||
("01-sheet-list", () => NewMainShell(1440, 920, leftTab: 0, sheets: SampleSheets())),
|
||||
("02-sheet-history", () => new Views.SheetHistoryDialogView("S999", "표본 서식", SampleVersions())),
|
||||
("03-query-editor", () => NewQueryEditor(designer,
|
||||
"SELECT ChtNum, PatNam FROM P_PatMst\nWHERE ChtNum = <<M.CMM.HISOperatingInfo.bzPatientInfo.ChtNum>>")),
|
||||
@@ -217,7 +219,8 @@ public static class DialogShots
|
||||
/// 접속 없이도 같은 결과가 나온다. 문서 한 장을 넣어 캔버스·레이어·인스펙터가 빈 상태가 아니게 한다 —
|
||||
/// 빈 껍데기를 찍으면 잘림을 볼 수 없다.
|
||||
/// </summary>
|
||||
private static Window NewMainShell(double width, double height, int leftTab = 1)
|
||||
private static Window NewMainShell(double width, double height, int leftTab = 1,
|
||||
List<SheetSummary>? sheets = null)
|
||||
{
|
||||
var window = new Views.MainView
|
||||
{
|
||||
@@ -233,6 +236,16 @@ public static class DialogShots
|
||||
}
|
||||
shell.NewFileCommand?.Execute(null);
|
||||
shell.SelectedLeftTabIndex = leftTab;
|
||||
// 진단 모드는 Loaded 커맨드를 안 돌리므로 목록이 비어 있다 —
|
||||
// 빈 목록을 찍으면 서식명 잘림을 볼 수 없다. 표본을 직접 넣는다.
|
||||
if (sheets is not null)
|
||||
{
|
||||
shell.SheetList.Clear();
|
||||
foreach (var sheet in sheets)
|
||||
{
|
||||
shell.SheetList.Add(sheet);
|
||||
}
|
||||
}
|
||||
|
||||
// 컨트롤을 놓고 하나를 고른다 — 이걸 안 하면 인스펙터가 비어 있고 레이어에 행이 없어서
|
||||
// 검사할 글자가 31개밖에 안 나온다(빈 껍데기를 찍으면 잘림을 볼 수 없다).
|
||||
|
||||
Reference in New Issue
Block a user