Files
Aislo/ui_template/ui_template_locale_b3.ts
T
eomsangdonandClaude Opus 5 feab848e69 feat(Z01): 기초단가 표 [저장] 방식 교체 · 공종 편집 화면 신설 — PLAN 1-4
- 기초단가 표: 칸 나갈 때 즉시 저장 없앰 · 고친 칸·새 줄·지울 줄은 초안(sessionStorage z01-draft:base:{kind})에 쌓고 [저장] 한 번에 보냄 · [고친 것 버리기]·[줄 추가]·[줄 삭제]·[초기값으로] · 409 면 초안 지키고 알림 · 서버가 revision 을 줄 때만 고치기 단추 섬
- 옛 덮개 길(칸 단위 PUT · 고친 것 모아 보기 · 덮개 판정 표시)과 그 사전 글자 뺌 — 계약 1-0 에서 서버 쪽 삭제
- 공종 편집(Z01_MasterData_UI_WorkItem.ts · _WorkItem_Rows.ts): 왼쪽 목록(상태별 개수·검색) / 머리 / 구성 줄 표(갈래별 · 자원 찾기 = 기초단가 검색) / 품셈 원문 표+[주] 읽기 전용 / [저장]·[초기값으로]·[검수 완료] · 초안 열쇠 z01-draft:work_item:{key}
- 공종 API(sub_laptop_3 e1c71c3e) 모양에 맞춤 — 줄은 id + 계약 칸 열하나만 보냄(extra=forbid) · 저장·초기값 응답(새 GET 모양)으로 바로 다시 그림 · 저장된 고침(changed_columns·is_added) 표시
- 초안 순수 함수 Z01_MasterData_UI_Draft.ts + 시험 test_z01_master_draft.py

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0145cr1DMC5Ft8fouQSXtp69
2026-09-18 23:55:45 +09:00

264 lines
15 KiB
TypeScript

/* =============================================================================
* ui_template_locale_b3.ts
* B 그룹 사전 3 — B09 실무 서식 화면(설계내역서·일위대가표·단가산출근거, PLAN 12장)
*
* b2 가 700줄을 넘어 새 벌로 뗌. 신규 문구는 이 파일 최하단에 추가.
* ========================================================================== */
export const ui_locales_b3 = {
/* --- B09 실무 서식 표 --- */
B09_Sheet_Col_ItemNo: ["공종", "Item"],
B09_Sheet_Col_Name: ["명칭", "Name"],
B09_Sheet_Col_Spec: ["규격", "Spec"],
B09_Sheet_Col_Quantity: ["수량", "Qty"],
B09_Sheet_Col_Unit: ["단위", "Unit"],
B09_Sheet_Col_Total: ["합계", "Total"],
B09_Sheet_Col_Labor: ["노무비", "Labor"],
B09_Sheet_Col_Material: ["재료비", "Material"],
B09_Sheet_Col_Expense: ["경비", "Expense"],
B09_Sheet_Col_UnitPrice: ["단가", "Unit price"],
B09_Sheet_Col_Amount: ["금액", "Amount"],
B09_Sheet_Col_Note: ["비고", "Note"],
B09_Sheet_Col_Sheet: ["호표", "Sheet"],
B09_Sheet_Col_Basis: ["산근", "Basis"],
B09_Sheet_Sum: ["합계", "Total"],
B09_Sheet_BodyTotal: ["내역 본체 합계", "Bill body total"],
B09_Sheet_Won: ["원", " KRW"],
B09_Sheet_Count: ["건", ""],
B09_Sheet_Unconfirmed: ["미확정", "Unconfirmed"],
B09_Sheet_Unpriced: ["금액에 안 들어감", "not in the amount"],
B09_Sheet_Missing: ["금액을 못 세운 줄", "Rows without a price"],
B09_Sheet_Missing_Passed: [
"사유는 아래 단계(수량·단가)가 낸 것을 그대로 옮김 — 여기서 새로 짓지 않음",
"Reasons are passed through from the quantity/price step as-is",
],
B09_Sheet_Reload: ["다시 불러오기", "Reload"],
B09_Sheet_Level: ["보이는 레벨", "Show levels"],
B09_Sheet_Level_All: ["모두", "All"],
B09_Sheet_Level_Upto: ["레벨까지", " level(s)"],
B09_Sheet_Loading: ["불러오는 중…", "Loading…"],
B09_Sheet_LoadFailed: ["불러오지 못했습니다.", "Could not load."],
B09_Sheet_NoProject: ["프로젝트를 먼저 고르세요.", "Pick a project first."],
B09_Sheet_Open_UnitPrice: [
"누르면 이 줄의 일위대가표로 들어갑니다",
"Click to open this row's unit price sheet",
],
B09_Sheet_Drill: ["누르면 이 줄의 호표로 들어갑니다", "Click to open this row's sheet"],
B09_Sheet_Basis_Short: ["단산", "Basis"],
B09_Sheet_Basis_Long: ["산근", "Basis"],
B09_Sheet_Basis_Suffix: ["호표", ""],
B09_Sheet_Machine: ["시간당 중기", "Machine hourly"],
B09_Sheet_UnitPriceList: ["일위대가 목록표", "Unit price list"],
B09_Sheet_BasisList: ["단가산출근거 목록표", "Price basis list"],
B09_Sheet_EmptyList: [
"내역에 쓰인 호표가 없습니다 — 설계내역서가 먼저 서야 합니다.",
"No sheets used by the bill yet.",
],
B09_Sheet_PickSheet: [
"목록표에서 호표를 누르면 본표가 아래에 섭니다.",
"Click a sheet above to see its table.",
],
B09_Sheet_StructureSheet: [
"구조물도 일위대가는 수량산출 › 구조물도 탭의 일위대가 표가 본표입니다.",
"Structure unit prices are shown on the structure drawing tab.",
],
B09_Sheet_MachineList: ["중기 목록표", "Machine list"],
B09_Sheet_List_Material: ["재료비 목록표", "Material list"],
B09_Sheet_List_Labor: ["노무비 목록표", "Labor list"],
B09_Sheet_List_Expense: ["경비 목록표", "Expense list"],
B09_Sheet_List_Lumpsum: ["일식견적 목록표", "Lump-sum list"],
B09_Sheet_Sum_Material: ["재료비 수량금액집계표", "Material summary"],
B09_Sheet_Sum_Labor: ["노무비 수량금액집계표", "Labor summary"],
B09_Sheet_Sum_Expense: ["경비 수량금액집계표", "Expense summary"],
B09_Sheet_Sum_Machine: ["중기 시간금액집계표", "Machine hours summary"],
B09_Sheet_SumMissing: ["집계에 못 넣은 코드:", "Codes left out of the summary:"],
B09_Sheet_EmptyGroup: ["이 표에 실릴 줄이 없습니다.", "No rows for this table."],
B09_Sheet_Tab_Summary: ["집계표", "Summaries"],
B09_Sheet_Tab_Lists: ["목록표", "Lists"],
B09_Sheet_Tab_PriceCompare: ["자재단가대비표", "Material price comparison"],
B09_Sheet_Col_Page: ["페이지", "Page"],
B09_Sheet_Min: ["최소", "min"],
B09_Sheet_User: ["사용자", "User"],
B09_Sheet_Undo: [
"고친 값을 지우고 계산값으로 되돌림",
"Clear the edit and return to the computed value",
],
B09_Sheet_Adopt: ["채택", "Adopt"],
B09_Sheet_Bulk: ["일괄 채택", "Adopt for all"],
B09_Sheet_Bulk_None: ["변동없음", "No change"],
B09_Sheet_Bulk_Min: ["최소단가", "Lowest price"],
B09_Sheet_Apply: ["적용", "Apply"],
B09_Sheet_Saved: ["저장했습니다 — 금액을 다시 셈했습니다.", "Saved — prices recalculated."],
B09_Sheet_SaveFailed: ["저장하지 못했습니다:", "Could not save:"],
B09_Sheet_EditSkipped: ["얹지 못한 고친 값:", "Edits not applied:"],
B09_Sheet_Edit: ["편집", "Edit"],
B09_Sheet_EditDone: ["편집 끝", "Done"],
B09_Sheet_RemoveRow: ["이 줄을 뺌(↺ 로 되돌림)", "Remove this row (undo with ↺)"],
B09_Sheet_AddRow: ["줄 더하기", "Add row"],
B09_Sheet_SearchTitle: [
"노임·자재·중기·일위대가 이름으로 찾기",
"Search labor, material, machine or unit price",
],
B09_Sheet_Rate: ["할증·일괄보정", "Surcharge / bulk adjust"],
B09_Sheet_Rate_Selected: ["선택 항목만", "Selected rows"],
B09_Sheet_Rate_All: ["내역서 전체", "Whole bill"],
B09_Sheet_Rate_Same: ["재·노·경 같은 비율", "Same rate"],
B09_Sheet_Rate_Parts: ["비목별", "Per component"],
B09_Sheet_Rate_Floor: ["절사", "Floor"],
B09_Sheet_Rate_Round: ["반올림", "Round"],
B09_Sheet_Rate_Digits: ["소수", "Decimals"],
B09_Sheet_Rate_PickRows: ["할증할 줄을 먼저 고르세요.", "Pick rows first."],
B09_Sheet_Rate_ClearAll: ["할증 전부 되돌리기", "Clear all surcharges"],
B09_Sheet_Rate_SelectedCount: ["고른 줄", "Selected"],
B09_Sheet_Rate_AllBadge: ["전체 할증", "Bill-wide"],
/* --- B08 산출 조건 「혼합석 부설」(2026-09-15 브레인 포장 둘 ⓑ) --- */
B08_Quantity_Side_Gravel: ["혼합석 부설", "Gravel Surfacing"],
B08_Quantity_Gravel_Scope: ["까는 범위", "Scope"],
B08_Quantity_Gravel_Scope_Legal: [
"법령 조건(종단 8% 초과 토사 · 연약·습윤 구간)",
"Legal conditions (grade > 8% soil · soft/wet ranges)",
],
B08_Quantity_Gravel_Scope_All: ["비포장 전 구간(교본 3-2)", "All unpaved stations (manual 3-2)"],
B08_Quantity_Gravel_SoftWet: ["연약·습윤 구간(m)", "Soft/wet ranges (m)"],
B08_Quantity_Gravel_SoftWet_Placeholder: ["예: 120~160, 480~520", "e.g. 120~160, 480~520"],
B08_Quantity_Gravel_SoftWet_Invalid: [
"구간 글자를 못 읽음 — 「시작~끝」을 쉼표로 이어 적을 것",
"Cannot read ranges — write start~end separated by commas",
],
B08_Quantity_Gravel_Thickness: ["두께(다짐 후, m)", "Thickness after compaction (m)"],
B08_Quantity_Gravel_C: ["C(다짐)", "C (compacted)"],
B08_Quantity_Gravel_L: ["L(흐트러짐)", "L (loose)"],
B08_Quantity_Gravel_Suggested: ["비우면 제안값", "Blank uses suggested"],
B08_Quantity_Gravel_Now: ["지금 셈", "Now"],
B08_Quantity_Gravel_Excavation: ["사전 터파기(토사)", "Pre-excavation (soil)"],
B08_Quantity_Side_Gravel_Hint: [
"법령 별표2 Ⅰ.2.바.(2) 가 요구하는 구간만 자동 — 종단 8% 초과 사질·점토(우리 프리셋은 토사 하나라 토사 전부) · 8% 이하 연약·습윤은 칸(판정 근거 없음). 교본 3-2 는 「콘크리트 포장 구간 이외」 전부라 고르면 넓힘. 두께 제안 0.10(교본) · C·L 제안 소광 관측(원문 표에 혼합석 줄 없음 · 역 C 와 방향이 반대)",
"Only the stations required by the forest act table 2 are automatic — grade > 8% sandy/clay soil (our preset has one soil class) and ≤ 8% soft/wet ranges you enter. Manual 3-2 covers all non-concrete stations. Suggested thickness 0.10 (manual) · C·L from practice (no gravel row in the standard table)",
],
/* --- B01 시스템 설정 · Z01 마스터 데이터 (2026-09-15 브레인 Z01) --- */
B01_Dashboard_SystemSettings: ["시스템 설정", "System Settings"],
B01_Dashboard_MasterData: ["마스터 데이터", "Master Data"],
Z01_MasterData_Title: ["마스터 데이터", "Master Data"],
Z01_MasterData_Tree: ["마스터 트리", "Master tree"],
/* ⚠ 갈래·표 이름은 사전에 두지 않음 — 서버(이름표)가 줌. 화면이 들면 kind 가 늘 때 빠짐 */
Z01_MasterData_Edit_Can: [
"고칠 수 있는 칸 — 눌러 고치고 Enter (Esc 취소) · [저장]을 눌러야 반영",
"Editable — click, type, Enter (Esc cancels) · applied on [Save]",
],
Z01_MasterData_Edit_Locked: ["못 고치는 칸", "Not editable"],
Z01_MasterData_Edit_NotListed: ["고칠 수 있는 칸 목록에 없음", "Not in the editable list"],
Z01_MasterData_Edit_Invalid: [
"「{value}」 를 수로 못 읽음",
"Cannot read 「{value}」 as a number",
],
Z01_MasterData_Edit_NotSaved: ["⚠ 안 들어감 — {value}", "⚠ Not applied — {value}"],
Z01_MasterData_Edit_Failed: ["저장 못 함", "Save failed"],
Z01_MasterData_Formula: ["산출근거", "Basis"],
/* --- Z01 고치기 — [저장] 한 번에 보냄(자동저장 금지 · PLAN 1-0) --- */
Z01_MasterData_Save: ["저장", "Save"],
Z01_MasterData_Discard: ["고친 것 버리기", "Discard edits"],
Z01_MasterData_AddRow: ["줄 추가", "Add row"],
Z01_MasterData_DeleteRow: ["줄 삭제", "Delete row"],
Z01_MasterData_UndeleteRow: ["삭제 취소", "Undo delete"],
Z01_MasterData_Reset: ["초기값으로", "Reset to initial"],
Z01_MasterData_ResetConfirm: [
"고른 줄을 초기값으로 되돌림 — 바로 저장됨(관리자가 추가한 줄은 지워짐)",
"Reset the picked row to its initial value — saved at once (admin-added rows are removed)",
],
Z01_MasterData_ResetBlocked: [
"저장 안 한 고침이 있음 — 먼저 [저장]하거나 [고친 것 버리기]",
"Unsaved edits — save or discard them first",
],
Z01_MasterData_ResetDone: ["초기값으로 되돌렸음", "Reset to initial value"],
Z01_MasterData_Saved: ["저장했음", "Saved"],
Z01_MasterData_Unsaved: ["저장 안 한 고침이 있음", "There are unsaved edits"],
Z01_MasterData_Draft_Edits: ["고친 칸", "Edited cells"],
Z01_MasterData_Draft_Added: ["추가 줄", "Added rows"],
Z01_MasterData_Draft_Deleted: ["삭제 줄", "Deleted rows"],
Z01_MasterData_Draft_Pending: ["[저장]해야 반영됨", "applied on [Save]"],
Z01_MasterData_Draft_None: ["고친 것 없음", "No edits"],
Z01_MasterData_Draft_Stale: [
"⚠ 다른 곳에서 먼저 저장됨 — 이 초안은 저장 못 함 · [고친 것 버리기]로 새로 읽을 것",
"⚠ Saved elsewhere first — this draft cannot be saved · discard to reload",
],
Z01_MasterData_Cell_Draft: ["저장 안 한 고침 — {value}", "Unsaved edit — {value}"],
Z01_MasterData_Cell_Changed: ["초기값과 다름(저장된 고침)", "Differs from the initial value"],
Z01_MasterData_Row_Added: ["관리자가 추가한 줄", "Row added by an admin"],
Z01_MasterData_Row_New: ["새 줄 — 저장 전", "New row — not saved yet"],
/* --- Z01 공종 편집 (PLAN 1-4) --- */
Z01_WorkItem_Title: ["공종 편집", "Work items"],
Z01_WorkItem_Axis_Forest: ["산림 공종", "Forest"],
Z01_WorkItem_Axis_Const: ["건설 공종", "Construction"],
Z01_WorkItem_Pick: ["왼쪽 목록에서 공종을 고를 것", "Pick a work item from the list"],
Z01_WorkItem_Status: ["상태", "Status"],
Z01_WorkItem_Status_All: ["전부", "All"],
Z01_WorkItem_Status_NeedsInput: ["입력 필요", "Needs input"],
Z01_WorkItem_Status_Partial: ["일부 못 맞춤", "Partly unmatched"],
Z01_WorkItem_Status_AutoOk: ["자동 완료", "Auto OK"],
Z01_WorkItem_Status_NotItem: ["공종 아님", "Not a work item"],
Z01_WorkItem_Status_Reviewed: ["검수 완료", "Reviewed"],
Z01_WorkItem_Review: ["검수 완료", "Mark reviewed"],
Z01_WorkItem_Dirty: [
"저장 안 한 고침 있음 — [저장]해야 반영됨",
"Unsaved edits — applied on [Save]",
],
Z01_WorkItem_ResetConfirm: [
"이 공종의 머리·구성 줄을 초기값으로 되돌림 — 바로 저장됨(관리자가 추가한 줄은 지워짐)",
"Reset this work item's header and rows — saved at once (admin-added rows are removed)",
],
Z01_WorkItem_Key: ["열쇠", "Key"],
Z01_WorkItem_Number: ["번호", "Number"],
Z01_WorkItem_Parent: ["상위 공종", "Parent"],
Z01_WorkItem_Edition: ["판", "Edition"],
Z01_WorkItem_Name: ["이름", "Name"],
Z01_WorkItem_BasisQuantity: ["기준 수량", "Basis quantity"],
Z01_WorkItem_BasisUnit: ["기준 단위", "Basis unit"],
Z01_WorkItem_Rows: ["구성 줄", "Resource rows"],
Z01_WorkItem_NoVariant: ["갈래 없음", "No variant"],
Z01_WorkItem_VariantName: ["새 갈래 이름", "New variant name"],
Z01_WorkItem_AddVariant: ["갈래 추가", "Add variant"],
Z01_WorkItem_Col_Kind: ["종류", "Kind"],
Z01_WorkItem_Col_Resource: ["자원", "Resource"],
Z01_WorkItem_Col_Spec: ["규격", "Spec"],
Z01_WorkItem_Col_Key: ["기초단가 열쇠", "Base price key"],
Z01_WorkItem_Col_Amount: ["수량", "Amount"],
Z01_WorkItem_Col_Unit: ["단위", "Unit"],
Z01_WorkItem_Col_Alt: ["대체 수량", "Alternative"],
Z01_WorkItem_Col_Ratio: ["묶음 비율 %", "Group ratio %"],
Z01_WorkItem_Col_Raw: ["원문 글자", "Source text"],
Z01_WorkItem_Col_Table: ["품셈 표", "Table"],
Z01_WorkItem_Col_Delete: ["", ""],
Z01_WorkItem_Kind_Labor: ["노무", "Labor"],
Z01_WorkItem_Kind_Machine: ["기계", "Machine"],
Z01_WorkItem_Kind_Material: ["자재", "Material"],
Z01_WorkItem_Kind_Etc: ["기타", "Other"],
Z01_WorkItem_Unmatched: ["⚠ 못 맞춤", "⚠ Unmatched"],
Z01_WorkItem_Find: ["찾기", "Find"],
Z01_WorkItem_FindTitle: ["자원 찾기 — 기초단가에서 골라 이음", "Find resource in base prices"],
Z01_WorkItem_FindClose: ["닫기", "Close"],
Z01_WorkItem_FindNone: ["찾은 줄 없음", "Nothing found"],
Z01_WorkItem_Source: ["품셈 원문 (읽기 전용)", "Standard source (read-only)"],
Z01_WorkItem_NoSource: ["원문 표 없음", "No source table"],
Z01_WorkItem_Notes: ["[주]", "[Notes]"],
Z01_MasterData_AdminOnly: ["시스템 관리자만 볼 수 있음", "System administrators only"],
Z01_MasterData_LoadFailed: ["마스터 데이터를 못 읽음", "Failed to load master data"],
Z01_MasterData_PickTable: ["왼쪽에서 표를 고를 것", "Pick a table on the left"],
Z01_MasterData_Search: ["검색", "Search"],
Z01_MasterData_ShowHidden: [
"숨긴 열 보기(내부 id · sha · 생성시각)",
"Show hidden columns (id · sha · created)",
],
Z01_MasterData_Byproduct: [
"정본 아님 — 계산이 남긴 기록",
"Not source data — calculation records",
],
Z01_MasterData_NoRows: ["줄 없음", "No rows"],
Z01_MasterData_First: ["처음", "First"],
Z01_MasterData_Last: ["끝", "Last"],
Z01_MasterData_Prev: ["이전", "Prev"],
Z01_MasterData_Next: ["다음", "Next"],
Z01_MasterData_Page: ["쪽", "pages"],
Z01_MasterData_Rows: ["줄", "rows"],
} as const;