fix(B08): 화면 통과에서 잡은 좌측 결함 둘

㉕-1 실사용자 화면 통과(로그인 뒤). 엔진 실행으로는 안 보이던 것들.

- 토량환산계수 세 줄이 서버 키로 뜨고 있었음 (soil · ripping_rock ·
  blasting_rock) → 토사 · 리핑암 · 발파암. 준비공의 soil_guard 와 같은 병.
  모르는 키는 지어내지 않고 그대로 보임.
- 타설 방식 안내가 겹쳐 경고를 밀어내고 있었음. 기본값일 때는 「기본값으로
  계산 중」 경고가 더 많은 것을 말하므로 내 줄을 안 실음. 문구도 줄임.
  실측: 줄이기 전에는 참고 단가·⚠ 두 줄이 패널 밖으로 잘려 안 보였음.

화면 확인(스크린샷·DOM): 탭 6장 다 서고 표가 따라옴. 표토 두께 칸은
입력 가능(회색은 「안 정함」 placeholder 색).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-08 06:16:42 +09:00
co-authored by Claude Opus 5
parent 4f138794ab
commit f685845e5a
2 changed files with 25 additions and 6 deletions
+24 -5
View File
@@ -200,6 +200,17 @@ function selectField(
return row;
}
/** 지반 종류 표기 — 서버 키가 화면에 새지 않게. 모르는 키는 그대로 보인다. */
const GROUND_LABELS: Record<string, string> = {
soil: "토사",
ripping_rock: "리핑암",
blasting_rock: "발파암",
};
function groundLabel(kind: string): string {
return GROUND_LABELS[kind] ?? kind;
}
/** 자재 한 줄의 관급/사급. `install_by` 는 **관급 줄에만** 뜻이 있다. */
export interface SupplyChoice {
supply: string;
@@ -239,7 +250,10 @@ function buildQuantitySidePanel(
if (entries.length) {
panel.append(field(L("B08_Quantity_Side_Factors"), ""));
for (const [kind, value] of entries) {
panel.append(field(kind, String((value as { compacted: number }).compacted)));
// ⚠ 서버 키(`soil`·`ripping_rock`·`blasting_rock`)를 그대로 내보내지 않는다 —
// 2026-09-08 ㉕ 화면 통과에서 좌측 세 줄이 개발자 키로 떠 있었다(`soil_guard` 와 같은 병).
// 모르는 키는 **지어내지 않고** 그대로 보인다.
panel.append(field(groundLabel(kind), String((value as { compacted: number }).compacted)));
}
}
@@ -355,10 +369,15 @@ function buildQuantitySidePanel(
// 2026-09-08 ㉙: 인계가 **타설 공종 줄을 실제로 세운다.** 겹치지 않는 것이 확인됐다 —
// 품셈 12-1-1 표는 직종·품만 주고 재료를 안 줘서, 품은 이 줄 · 재료는 자재 쪽이다.
// ⚠ 돌쌓기 뒤채움(채움콘크리트)은 뺐다 — 그 공종 품에 이미 들어 있을 수 있다.
const pending = document.createElement("p");
pending.className = "b08-quantity__note";
pending.textContent = L("B08_Quantity_Placing_NotApplied");
panel.append(pending);
// ⚠ **기본값일 때는 싣지 않는다** — 바로 아래 「기본값으로 계산 중」 경고가 더 많은 것을
// 말하는데, 둘을 겹쳐 실으면 긴 문구가 그 경고를 화면 밖으로 밀어낸다
// (2026-09-08 ㉕ 화면 통과에서 실제로 잘려 있었다).
if (!placing.is_default) {
const applied = document.createElement("p");
applied.className = "b08-quantity__note";
applied.textContent = L("B08_Quantity_Placing_NotApplied");
panel.append(applied);
}
}
// ⚠ 「정하면 얼마나 달라지는지」까지 보여야 사용자가 판단한다. 이 값은 **참고 표시 전용**이고
// B08 의 어떤 계산에도 안 들어간다(금액은 B09 몫).
+1 -1
View File
@@ -629,7 +629,7 @@ export const ui_locales_b2 = {
B08_Quantity_Method_Ripping: ["긁어내기(암절취)", "Ripping"],
B08_Quantity_Method_Blasting: ["터뜨리기(발파암)", "Blasting"],
B08_Quantity_Placing_NotApplied: [
"타설 방식에 따라 이 공종의 단가가 달라집니다 — 콘크리트 물량이 「콘크리트 타설」 공종으로 견적에 넘어갑니다.",
"콘크리트 물량이 「콘크리트 타설」 공종으로 견적에 넘어갑니다.",
"The placing method changes this work item's unit price — concrete volume is handed over as a placing work item.",
],
B08_Quantity_Side_Topsoil: ["표토제거", "Topsoil Removal"],