feat(778-4): 율 줄을 단가산출(SK)에 담음 — 고정 비율 더한줄 · 기준 묶음 · 줄 목록 · 율 위 율

- SK 더한줄 율 줄 허용(일위대가 비율 줄과 같은 꼴 `고정 비율 {기준, 비목}` · 수량 = 율)
- 기준 = 비목(노무비 · 재료비 · 경비) · 묶음(인력 · 재료 · 장비 = 그 줄 종류만 · 기계 노무 섞인 블록도 인력 줄만) ·
  줄 목록(cid · add:#k · 앞 율 줄 = 율 위 율) · 검사 = 자기 · 뒤 율 줄 막음
- 밑 공용 함수 `M02_Labor_Fixed.rate_base` ↔ 짝 `Labor_Calc.ts` `rateBase`(일위대가 비율 줄 · Expand 같이 씀)
- SK 셈 `_rated` = 엔진 한 번 돈 줄로 밑 → 율 줄 값묶음 → 엔진 다시(율 줄 없는 문서 = 한 번 · 값 그대로)
- B09 pct 밑수 `bundle:` · `rows:`(파이썬 · TS 짝) · SK 블록 율 줄 = pct
- 굳힘 — 바탕 없는 SK 율 줄은 한 줄로 안 펼침(참조 그대로) · 겹침 때 기준 열쇠 새 차례
- 화면 — [율 줄 추가] 창(새 `M02_MasterTemplete_Sangeun_Rate.ts` · 부품 상자만) · 율 줄 = % 줄로 보임 ·
  더한줄 지움 · 되살림 때 기준 열쇠 옮김
- 시험 — 새 test_778_4_rate_line(25) · 거울 헬퍼에 rateBase 길 · 전후 대조 SK 16 · 일위대가 118 · B09 대가 입력 14 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-04 12:59:48 +09:00
co-authored by Claude Opus 5.5
parent 2f93dd8b11
commit d9a581659f
16 changed files with 825 additions and 53 deletions
+24
View File
@@ -347,4 +347,28 @@ export const ui_locales_m2 = {
M02_CmpColLook: ["꼴", "Result"],
M02_CmpLost: ["못옮김 {n}", "{n} unmoved"],
M02_ElemTitle: ["M01 요소 후보", "M01 element candidates"],
M02_SkRateAdd: ["율 줄 추가", "Add % line"],
M02_SkRateTitle: ["율 줄 — 기준 × 율 %", "% line — base × rate %"],
M02_SkRateName: ["이름", "Name"],
M02_SkRateDefault: ["공구손료", "Tool cost"],
M02_SkRateRate: ["율", "Rate"],
M02_SkRateBasis: ["기준", "Base"],
M02_SkRatePart: ["금액이 드는 칸", "Cost item"],
M02_SkRateLines: ["기준 줄", "Base lines"],
M02_SkRateBasisLines: ["줄 고르기", "Pick lines"],
M02_SkRateGroupLabor: ["인력 줄 합", "Labor lines"],
M02_SkRateGroupMat: ["재료 줄 합", "Material lines"],
M02_SkRateGroupMach: ["장비 줄 합", "Equipment lines"],
M02_SkRateCostLabor: ["노무비 전체", "All labor cost"],
M02_SkRateCostMat: ["재료비 전체", "All material cost"],
M02_SkRateCostExp: ["경비 전체", "All expense"],
M02_SkRatePartLabor: ["노무비", "Labor"],
M02_SkRatePartMat: ["재료비", "Material"],
M02_SkRatePartExp: ["경비", "Expense"],
M02_SkRateOk: ["넣기", "Add"],
M02_SkRateClose: ["닫기", "Close"],
M02_SkRateNoLines: ["고를 줄 없음 — 먼저 항목 추가", "No lines yet — add items first"],
M02_SkRateNeedLine: ["줄을 하나 이상 고름", "Pick at least one line"],
M02_SkRateBadRate: ["율은 0 이상 수", "Rate must be a number ≥ 0"],
M02_SkRateNeedName: ["이름이 빔", "Name is empty"],
} as const;