From aa4270038251a81f29c80011382a891f21ce8642 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 16 Sep 2026 11:23:01 +0900 Subject: [PATCH] =?UTF-8?q?fix(z01):=20=EB=9C=BB=20=EB=B0=94=EB=80=90=20?= =?UTF-8?q?=EC=A4=84=20=EC=9D=B4=EB=A6=84=EC=9D=B4=20=EC=95=88=20=EC=98=A4?= =?UTF-8?q?=EB=A9=B4=20=EB=AC=BC=EC=9D=8C=ED=91=9C=20=EB=8C=80=EC=8B=A0=20?= =?UTF-8?q?=E3=80=8C=E2=9B=94=20=EC=98=9B=20=EC=9D=B4=EB=A6=84=C2=B7?= =?UTF-8?q?=EC=A7=80=EA=B8=88=20=EC=9D=B4=EB=A6=84=EC=9D=84=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=EA=B0=80=20=EC=95=88=20=EC=A4=8C=20=E2=80=94=20?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=E3=80=8D=20=C2=B7=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=EA=B0=80=20=ED=95=A9=EC=B3=90=20=EC=A4=80=20=ED=95=9C=20?= =?UTF-8?q?=EC=A4=84=20=EA=B7=B8=EB=8C=80=EB=A1=9C=20=EB=B3=B4=EC=9E=84(?= =?UTF-8?q?=EC=AA=BC=EA=B0=9C=EC=A7=80=EB=8F=84=20=EC=9E=87=EC=A7=80?= =?UTF-8?q?=EB=8F=84=20=EC=95=8A=EC=9D=8C=20=C2=B7=20=EB=B8=8C=EB=A0=88?= =?UTF-8?q?=EC=9D=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq --- Z01_MasterData/Z01_MasterData_UI_Rows.ts | 14 ++++++++++++-- ui_template/ui_template_locale_b3.ts | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Z01_MasterData/Z01_MasterData_UI_Rows.ts b/Z01_MasterData/Z01_MasterData_UI_Rows.ts index 8cc9b8c9..203e52ab 100644 --- a/Z01_MasterData/Z01_MasterData_UI_Rows.ts +++ b/Z01_MasterData/Z01_MasterData_UI_Rows.ts @@ -60,13 +60,23 @@ function fill(key: Parameters[0], value: string): string { return L(key).replace("{value}", value); } +/** + * 뜻이 바뀐 줄의 옛 이름·지금 이름 — 서버가 합쳐 한 줄로 줌(자재는 품명·규격·인도조건이 이어 붙어 옴). + * 화면은 쪼개거나 다시 합치지 않음. 안 오면 버그로 드러냄. + */ +function meaningNames(info: CellInfo): string { + if (!info.was || !info.now) return L("Z01_MasterData_State_MeaningMissing"); + return `${fill("Z01_MasterData_State_Was", info.was)} / ${fill("Z01_MasterData_State_Now", info.now)}`; +} + /** 덮개 판정 한 줄 — 서버 state 그대로 · state 가 없으면 버그로 드러냄. */ function stateText(info: CellInfo, column: MasterColumn): string { const original = valueWithUnit(info.original, column.unit); switch (info.state) { case "meaning_changed": // 값이 틀린 것보다 나쁨 — 같은 번호에 딴 물건이 앉음. 옛 이름·지금 이름을 나란히. - return `${L("Z01_MasterData_State_MeaningChanged")} — ${fill("Z01_MasterData_State_Was", info.was ?? "?")} / ${fill("Z01_MasterData_State_Now", info.now ?? "?")} · ${fill("Z01_MasterData_Edit_OriginalWas", original)}`; + // ⚠ 이름이 안 오면 물음표로 때우지 않고 버그로 드러냄 — 물음표는 「원래 그런가 보다」로 넘김. + return `${L("Z01_MasterData_State_MeaningChanged")} — ${meaningNames(info)} · ${fill("Z01_MasterData_Edit_OriginalWas", original)}`; case "source_changed": return `${fill("Z01_MasterData_State_SourceChanged", valueWithUnit(info.current, column.unit))} (${fill("Z01_MasterData_Edit_OriginalWas", original)})`; case "orphan": @@ -382,7 +392,7 @@ export function buildRowsView(): RowsView { async function drop(index: number, column: MasterColumn, info: CellInfo): Promise { if (info.state === "meaning_changed") { const ok = await showConfirmDialog( - `${fill("Z01_MasterData_State_Was", info.was ?? "?")} / ${fill("Z01_MasterData_State_Now", info.now ?? "?")}\n${L("Z01_MasterData_Edit_MeaningConfirm")}`, + `${meaningNames(info)}\n${L("Z01_MasterData_Edit_MeaningConfirm")}`, L("Z01_MasterData_Edit_DropConfirm"), ); if (!ok) return; diff --git a/ui_template/ui_template_locale_b3.ts b/ui_template/ui_template_locale_b3.ts index 4adc3605..662fc14c 100644 --- a/ui_template/ui_template_locale_b3.ts +++ b/ui_template/ui_template_locale_b3.ts @@ -175,6 +175,10 @@ export const ui_locales_b3 = { "⛔ 고쳐짐 — 줄의 뜻이 바뀜(같은 번호에 다른 물건)", "⛔ Edited — the row now means something else (same code, different item)", ], + Z01_MasterData_State_MeaningMissing: [ + "⛔ 옛 이름·지금 이름을 서버가 안 줌 — 버그", + "⛔ Server sent no before/after row names — bug", + ], Z01_MasterData_State_Was: ["고칠 때: {value}", "when edited: {value}"], Z01_MasterData_State_Now: ["지금: {value}", "now: {value}"], Z01_MasterData_Edit_DropOnMeaning: [