feat(m02): % 덧줄 표기 — 율 · 규격 덧칸 · 하위 행 · M01 시험계산(149-4)

- 서버 `M02_Labor_Doc.pct_extras` = 식 「X * Y / 100」 덧줄에 율(Y) · 규격(노무비의 % · 인건비의 % · 줄 이름의 %) · `run_line` 에서 부름
- M01 `/calc` 도 같은 도우미(늦은 부름)
- 화면 `pctView` 한 벌 = 이름 (규격) · 수량 = 율 · 단위 % — M02 하위 행 · M01 시험계산 표
- 금액 · 엔진 줄(식 · 1) 그대로 · 금액 식 덧줄(기계손료 등) 그대로 · 마스터 안 고침

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SE9MxeXTu2uaDZ55BJowAY
This commit is contained in:
2026-10-09 19:11:36 +09:00
co-authored by Claude Opus 5.5
parent 8ad8516717
commit 651dc4b818
6 changed files with 151 additions and 11 deletions
@@ -7,6 +7,7 @@
import { createButton, createSelectField, el, showToast } from "@ui/ui_template_elements";
import {
fetchAuto,
pctView,
runCalc,
runText,
searchElements,
@@ -226,8 +227,8 @@ export function answerView(answer: CalcAnswer, draft: boolean, money: boolean):
children: [
el("span", {
text: line.출처
? `${line.이름} (${line.출처.replace(/[A-Z]{2}\d{6}\./g, "")})`
: line.이름,
? `${pctView(line).name} (${line.출처.replace(/[A-Z]{2}\d{6}\./g, "")})`
: pctView(line).name,
}),
...(line.단위경고
? [
@@ -239,7 +240,7 @@ export function answerView(answer: CalcAnswer, draft: boolean, money: boolean):
: []),
],
}),
el("td", { text: `${formatNumber(line.수량)} ${line.단위}` }),
el("td", { text: `${formatNumber(pctView(line).qty)} ${pctView(line).unit}` }),
el("td", { className: "m01-logic__money", text: formatMoney(line.금액) }),
],
}),