From 9624c847fdb3dc4fabd5d058cf86ae1d4b8b55bb Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 1 Oct 2026 09:24:24 +0900 Subject: [PATCH] =?UTF-8?q?chore(M01):=20=EC=89=AC=EC=9A=B4=20=EB=8B=A8?= =?UTF-8?q?=EA=B0=80=EC=82=B0=EC=B6=9C=20=EA=B2=80=ED=86=A0=20=EC=85=8B=20?= =?UTF-8?q?=C2=B7=20=EC=84=A4=EA=B3=84=20=EB=AC=B8=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 34-1 검토(데이터 지도 · 실무 모양과 갈래 · 지난 시도) · 34-2 설계(문장 카드 · 파일 나눔 · 맞출 모양) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01YAxqrz1iadqdygC6bE3pic --- docs/raw/M01_쉬운단가/설계.md | 98 ++++++ .../M01_쉬운단가/쉬운단가_검토_A_데이터.md | 251 ++++++++++++++++ docs/raw/M01_쉬운단가/쉬운단가_검토_C_갈래.md | 282 ++++++++++++++++++ .../M01_쉬운단가/쉬운단가_검토_D_지난시도.md | 96 ++++++ 4 files changed, 727 insertions(+) create mode 100644 docs/raw/M01_쉬운단가/설계.md create mode 100644 docs/raw/M01_쉬운단가/쉬운단가_검토_A_데이터.md create mode 100644 docs/raw/M01_쉬운단가/쉬운단가_검토_C_갈래.md create mode 100644 docs/raw/M01_쉬운단가/쉬운단가_검토_D_지난시도.md diff --git a/docs/raw/M01_쉬운단가/설계.md b/docs/raw/M01_쉬운단가/설계.md new file mode 100644 index 000000000..dbb59d778 --- /dev/null +++ b/docs/raw/M01_쉬운단가/설계.md @@ -0,0 +1,98 @@ +# 쉬운 단가산출 설계 (PLAN 34-2 · 브레인 정함 · 10-01) + +근거 = 같은 폴더 `쉬운단가_검토_A_데이터.md`(형식 · API · 쓰임 세기) · `_C_갈래.md`(실무 모양 · 갈래 다섯) · `_D_지난시도.md`(지난 시도 열넷 · 원인 다섯). 사용자가 바꿀 수 있음. + +## 1. 정함 + +1. 갈래 = **문장 카드**(C 문서 B) — 줄 하나 = 문장 하나 「【사람】 석공 이 [0.072] 인 일함 = 18,643 원」. 입구 = 비슷한 것 찾기(E) · 줄 추가 = 물음 셋(무엇 → 어떤 것 → 얼마) · 아래 접힌 「실무 일위대가표로 보기」(읽기만). +2. 카드는 묶음 + 소계 — 사람 · 재료 · 기계·경비 · 다른 일위대가 · 그 아래 덧붙임(%) · 맨 위 큰 합계 「1㎡ 만드는 데 53,788 원」. +3. 품셈 기본 로직(정본)은 읽기만 — 큰 단추 하나 「이걸 바탕으로 고치기」 = `/logic/copy` 뒤 바로 그 복사본을 고치는 화면(사용자 확정 09-21 「정본 못 고침」을 의식하지 않게). +4. 쓰기 길 = `/logic/new` · `/logic/copy` · `/logic/edit` · `/logic/delete` 만. **`/save` 안 씀**(정본을 가리지 않음). +5. 금액 = 고칠 때마다 서버 `/calc` 를 뒤에서(입력 멈춘 뒤 0.3초 · 최신 응답만) · 기다리는 동안 옛 금액을 흐리게 — 계산 자리 ③ 서버 단독(엔진 한 벌). +6. 1단계 범위 = 사람 · 재료 · 기계 · 다른 일위대가 · 덧붙임(%) 카드의 **숫자 수량** 추가 · 고치기 · 지우기 · 차례 바꾸기. 식 수량 · 표 찾기 · 조건 · 그 밖 덧줄 = **잠금 카드**(쉬운 말 한 줄 + 값 + 「숫자로 바꾸기」 확인 한 번). 설계 값 = 위 띠 「설계 때 정하는 값」(시험값만 바꿔 금액 봄 · 새로 만들기는 지금 화면). 결과 식 로직(작업량 27개)은 목록에 「쉬운 길로 못 엶」. +7. 2단계 = 「표 보고 고르기」(잠금 카드의 표를 그림으로 보여 칸을 눌러 고름) → 그다음 조건 카드. +8. 낱말 — 화면에 **키 · 식 · 호표 · 덧줄 · 비목 · 중간 값 · 끝수 · 정본 · 자체 · 별칭** 안 씀. 쓰는 말: 사람 · 재료 · 기계 · 다른 일위대가 · 덧붙임 · 사람 품값(노무비) · 재료값(재료비) · 기계·경비(경비) · 품셈 기본 · 내가 만든 것 · 설계 때 정하는 값 · 크기(규격). +9. 덧붙임 카드의 넣을 자리 기본 = 마스터에서 같은 이름 덧줄이 가장 많이 쓴 비목 · 카드 안 고르기로 바꿈. +10. 되돌리기 늘 보임(Ctrl+Z) · 줄 지우기는 안 물음 · 로직 지우기만 물음(쓰는 곳 먼저 보임 · 쓰는 곳 있으면 못 지움 까닭 한 줄) · 저장 안 하고 닫으면 물음 · 「저장 안 함」 표시. +11. 잘못 넣음은 그 카드 안 한 줄 — 숫자 아님 · 0 · 음수 · 빈 이름 · 같은 이름(내가 만든 것 안) · 너무 큼(단위별 어림 기준 하나 — 사람 1단위에 10인 넘음 등 · 물음 꼴 경고만). +12. 지금 화면 · `LogicLab_*` 파일은 안 고침 — 부르는 것은 덜 바뀌는 `Logic_Api` · `Api_Fetch` · `Logic_Money` · `Logic_Text` · `ui_template` 만. + +## 2. 파일 · 맡은 창 (모두 `M01_MasterData/EasyCalc/` · 파일마다 700줄 안 · 글 [한, 영] 짝은 각 파일 머리 · css 는 파일마다 따로) + +| 파일 | 맡음 | 하는 일 | +| --- | --- | --- | +| `M01_EasyCalc_Model.ts` | sub7 | 로직 줄 ↔ 카드 바꾸기 · 카드 더하기 · 고치기 · 지우기 · 차례 · 검사(쉬운 말) · 되돌리기 기록 · 저장 안 함 표시 — DOM 없음 | +| `M01_EasyCalc_Api.ts` | sub4 | 서버 길 감싸기(목록 · 찾기 · 열기 + 자동값 · 시험 계산 뒤에서 · 새로 · 본뜨기 · 고치기 · 지우기 · 쓰는 곳) · 403 · 409 · 422 를 쉬운 말로 · 기계 기종 → 부를 기계경비 로직 · 넘길 값 | +| `M01_EasyCalc_Entry.ts` + `_Style.css` | sub1 | 큰 창 틀 · 시작 화면(무엇과 비슷한가요? 찾기 · 내가 만든 것 · 빈 종이로 새로) · 위 띠(이름 · 크기 · 단위 · 큰 합계 · 되돌리기 · 저장 · 지우기 · 닫기) · 화면 사이 오감 · 모든 파일 잇기(마지막에 붙이는 창) | +| `M01_EasyCalc_Cards.ts` + `.css` | sub2 | 카드 그리기 · 세 묶음 + 소계 · 문장 칸 · 잠금 카드 · 지움 · ▲▼ · 카드 안 경고 · [+ 사람] [+ 재료] [+ 기계] [+ 다른 일위대가] [+ 덧붙임] | +| `M01_EasyCalc_Pick.ts` + `.css` | sub3 | 물음 셋 고르기 창(무엇 → 어떤 것 찾기 · 목록 → 얼마) | +| `M01_EasyCalc_Sheet.ts` + `.css` | sub5 | 실무 일위대가표 보기(읽기) · 설계 때 정하는 값 띠 | +| `M01_EasyCalc_Table.ts` + `.css` | sub8 | 2단계 표 보고 고르기 | + +## 3. 서로 맞출 모양 (이 이름 · 칸 그대로) + +```ts +// Model (sub7) +export type CardKind = "person" | "material" | "machine" | "logic" | "percent" | "locked"; +export type CostKind = "노무비" | "재료비" | "경비"; +export interface EasyCard { + id: string; // 화면 번호 · 저장 안 함 + kind: CardKind; + name: string; // 보이는 이름(호표 · 덧줄 이름) + spec: string; // 크기(규격) · 없으면 "" + unit: string; // 인 · ㎥ · 시간 · % … + qty: number | null; // 숫자 수량 · 식이면 null + qtyFormula: string | null; // 잠금 식(원문 그대로) · 숫자면 null + cost: CostKind | null; // 넣을 자리 · 다른 일위대가 · 기계는 null(엔진이 나눔) + percentBase: CostKind | "사람줄합" | null; // 덧붙임 바탕 · 덧붙임 아니면 null + element: unknown; // 호표 「요소」 칸 값 그대로(인력 LB 키 · 재료 검색어 묶음 · 로직 부름 글) + lockedWhy: string | null; // 잠금 까닭 쉬운 말 · 아니면 null + source: { part: "호표" | "덧줄"; index: number } | null; // 원래 자리 · 새 카드 null + raw: unknown; // 원래 줄 통째 — 카드가 안 다룬 칸을 저장 때 그대로 살림 +} +export interface EasyDoc { + key: string | null; // 새 로직 null + version: string | null; // 판본(409 대조) + isBase: boolean; // 품셈 기본 = 읽기만 + name: string; spec: string; resultUnit: string; // 결과단위 「원/㎡」 + inputs: LogicInput[]; // 설계 때 정하는 값 + cards: EasyCard[]; + row: LogicRow; // 원래 로직 줄(새 로직은 최소 칸 줄) +} +toDoc(row, meta: { key; version; isBase }): EasyDoc +toRow(doc): LogicRow // 카드 → 호표 · 덧줄 · 필요한 입력(기계 「지역」 등) · 안 다룬 칸 보존 +addCard(doc, pick: PickResult): EasyDoc · updateCard(doc, id, patch) · removeCard(doc, id) · moveCard(doc, id, -1|1) +checkCard(card, doc): string | null // 쉬운 말 경고 한 줄 +class EasyHistory { push(doc); undo(): EasyDoc | null; canUndo; dirty; markSaved() } +export interface PickResult // Model 에 둠 · Pick 이 가져다 씀 + +// Pick (sub3) +// PickResult { kind: "person" | "material" | "machine" | "logic"; name: string; spec: string; unit: string; element: unknown; qty: number | null; needInputs?: LogicInput[] } +openEasyPick(kind?: PickResult["kind"]): Promise + +// Api (sub4) — CalcAnswer · LogicRow · LogicInput 은 Logic_Api 것 그대로 +listEasy(q: string): Promise // 이름 · 품셈 기본/내가 만든 것 · 결과단위 · 쉬운 길로 못 엶 여부 +openEasy(key): Promise<{ row; version; isBase; trial: Record }> // 자동값 포함 +calcLater(row, trial, onDone: (ans: CalcAnswer | null, plain: string | null) => void): void // 0.3초 · 최신만 +newEasy(row) · copyEasy(key) · editEasy(key, version, row) · deleteEasy(key, version) · usesOf(key) +listMachines(q): Promise<{ 분류번호: string; 이름: string; 규격: string; 단위: string }[]> +machineElement(기종 분류번호): Promise<{ element: string; needInputs: LogicInput[] }> +plainError(e): string // 403 · 409 · 422 · 날식 걸름 + +// Cards (sub2) +renderCards(host, doc, ans: CalcAnswer | null, on: { change(doc): void }): void // 더하기 · 다시 고르기(openEasyPick) · 숫자로 바꾸기 · 지움 · ▲▼ 를 Cards 가 직접 하고 change 로 알림 + +// Sheet (sub5) +renderSheet(host, head: { name: string; resultUnit: string }, ans: CalcAnswer | null): void // 실무 일위대가표(명칭 · 규격 · 수량 · 단위 · 합계 · 노무비 · 재료비 · 경비) +renderTrialStrip(host, inputs, trial, onChange(trial)): void + +// Table (sub8) +openEasyTable(card, doc): Promise // 고른 표 찾기 식(잠금 카드의 새 qtyFormula) · 취소 null +``` + +## 4. 모두 지킬 것 + +- 지금 화면 · `LogicLab_*` · `Logic_Edit` 안 고침 · 폴더 밖 참조는 `LogicLab.ts` 의 두 줄만. +- 시험 · 검증 저장은 자기 폴더 `resources/master_data/로직_자체.json` 에만 · 끝나면 화면 · API 로 지움 · 파일이 남으면 커밋 전에 `tmp/` 로 옮김 — **`resources/master_data/` 를 커밋에 넣지 않음**. +- 마스터 정본 파일 · 표 · 요소 안 고침 · 시험은 진짜 마스터 내용에 기대지 않음(견본 줄을 시험 안에 둠). +- 걸음 재기 — 대표 일 여섯(① 새 로직 ② 줄 추가 ③ 수량 ④ 단가 자료 ⑤ 줄 지우기 ⑥ 로직 지우기 · 되돌리기) · 목표 여섯 합 36 안쪽. diff --git a/docs/raw/M01_쉬운단가/쉬운단가_검토_A_데이터.md b/docs/raw/M01_쉬운단가/쉬운단가_검토_A_데이터.md new file mode 100644 index 000000000..5b3251996 --- /dev/null +++ b/docs/raw/M01_쉬운단가/쉬운단가_검토_A_데이터.md @@ -0,0 +1,251 @@ +# 쉬운 단가산출 검토 A — 데이터 · 계산 지도 (34-1 · sub4) + +조사만 · 파일 안 고침 · 저장·지우기 API 안 부름. 세기는 `resources/master_data/로직_*.json` 56 파일 · 로직 1,469 줄(2026-10-01 sub_laptop_4 판). +다시 세기 — `./venv/Scripts/python.exe tmp/쉬운단가_검토_A_세기.py` · `…_단계.py` · 최소 칸 시험 `…_최소칸.py`(메모리만 · 파일 안 씀). + +## 결론 셋 + +1. **형식 · 자리** — 로직 = JSON 한 줄(머리 + 입력 · 중간 · 호표 · 덧줄 · 결과 · 끝수). 층은 마스터 하나뿐(회사 · 개인 층 없음 · 프로젝트는 계산 때 닫힌 사본). 새 길이 쓸 집 = `로직_자체.json`(키 `GX`) — 지금 **0 줄 · 파일도 없음**. 기존 API 만으로 추가 · 고치기 · 지우기 · 시험 계산 · 고르기 후보 다 됨 → **새 API 불필요**. +2. **「인력 · 재료 · 기계 줄 × 수량 × 단가」 만으로 되는 로직 = 1.8 %(26)** · 엄격히(입력 · 중간 · 덧줄 없이 맨 수) 0.1 %(1). 마스터는 **표 찾기가 95 %(1,399)** — 표 찾기를 더하면 29.5 % · 기계(기계경비 로직 부름) 41.2 % · % 덧줄 58.3 % · 조건(만약) 89.7 % · 나머지 10.3 %. +3. **함정 둘** — ① 검사는 통과하는데 계산이 멈추는 꼴(호표 종류 「기계」 + `EQ` 키 → 「Decimal * dict」) · 기계는 반드시 「기계 시간당 경비 로직」 부르기로. ② 지금 화면 [저장](`/save`)은 정본 파일까지 고침 — 새 길은 `/logic/new · edit · delete`(자체만 · 정본 403)로 묶어야 안전. + +--- + +## 1. 저장 형식 · API · 권한 · 층 + +### 1-1. 자리 + +| 무엇 | 자리 | 근거 | +| --- | --- | --- | +| 정본 로직 | `resources/master_data/로직_<원문>_장_<장 제목>.json` 56 파일 · 산림 330 · 건설 1,139 | `_틀.md:22` | +| 자체 로직(새 길) | `resources/master_data/로직_자체.json` 한 파일 · 없으면 서버가 머리만 두고 만듦 | `M01_MasterData_Store_Make.py:18,135` | +| 키 | `_키대장.json` 다음 번호 — 정본 `GF`(산림) · `GC`(건설) · 자체 `GX` · 화면은 키를 안 만듦 | `_틀.md:33,40` · `_화면_계약.md:99` | +| git | `resources/master_data/` 는 git 추적(정크션 아님) · `로직_자체.json` 은 ignore 아님 → 만들면 커밋 대상 | `git check-ignore` 빈 답 | + +파일 머리 `{그룹: "로직", 원문, 차례, 판, 부문?, 줄: [...]}` — 줄 하나가 로직 하나. + +### 1-2. 칸 이름 (로직 한 줄 · 열 차례 그대로) + +| 칸 | 모양 | 줄 수 | 비고 | +| --- | --- | --- | --- | +| 키 | `GF000123` | 1,469 | 서버가 줌 | +| 원문번호 | 절 번호 `13-4-1` · 자체는 빈 글 가능 | 1,469 | 칸은 반드시 | +| 구분 · 상세구분 | 「산림품셈」·「13장 구조물」 · 자체는 서버가 「자체」·장 | 1,469 | 서버가 넣음 | +| 이름 | 글 | 1,469 | 필수 | +| 결과단위 | 「원/㎡」(돈 로직) · 「㎥/시간」(돈 아닌 로직) | 1,469 | `원` 으로 시작하면 돈 | +| 출처 | 「산림품셈 13-4-1」 · 「건설품셈 공통 8-4-1」 · 「자체」 | 1,469 | 모양 검사 | +| 소유 | 「공용」(정본 전부) · 「현장」(자체 기본) | 1,469 | 권한 아님 · 표시 | +| 비고 | 글 | 1,395 | 선택 | +| 입력 | `[{이름, 설명?, 단위?, 고르기? \| 범위?, 출처?, 비고?}]` | 1,469 | 빈 목록 가능 | +| 중간 | `[{이름, 식, 출처?}]` | 1,469 | 빈 목록 가능 | +| 호표 | `[{종류, 요소, 이름, 단위, 수량, 비목?, 출처?, 비고?}]` | 1,442 | 돈 로직 | +| 덧줄 | `[{이름, 식, 비목, 출처}]` | 1,442 | 빈 목록 가능 | +| 결과 | `{식, 출처}` | 27 | 돈 아닌 로직 | +| 끝수 | `null` · 글자(설명만) · 묶음 `{대상, 자리, 방법}` | 1,469 | 마스터는 null 1,432 · 글자 37 · 묶음 0 | +| 시험입력 | `{입력 이름: 값}` | 193 | 일괄 시험 전용 | + +근거 — `_틀.md:166-243`(7장) · `_틀.md:245-258`(8장 식) · `check_master.py:81`(로직 필수 칸). + +### 1-3. 짧은 예시 — 가장 단순한 정본 `GF000208` 암거이음받침 채움재(T=20㎜) + +```json +{ + "키": "GF000208", "원문번호": "12-34-4", "구분": "산림품셈", "상세구분": "12장 철근콘크리트", + "이름": "암거이음받침 채움재(T=20㎜)", "결과단위": "원/㎡", "출처": "산림품셈 12-34-4", "소유": "공용", + "비고": "해석: 원문 재료비 「JOINT FILLER」 뿐 — ㎡당 1㎡ · 설치 품 원문 없음", + "입력": [], "중간": [], + "호표": [{ "종류": "재료", "요소": { "구분": "도료·방수·접착", "상세구분": "방수·실링", "검색어": "JOINT FILLER" }, + "이름": "JOINT FILLER(T=20㎜)", "단위": "㎡", "수량": "1", "비목": "재료비" }], + "덧줄": [], "끝수": null +} +``` + +### 1-4. 불러오기 · 저장 · 지우기 API (`/api/m01`) + +| 일 | 길 | 받음 → 줌 | 근거 | +| --- | --- | --- | --- | +| 목록 | `GET /logics` | `sub · detail · q · blocked · owner` → `{logics: [{file, 키, 이름, 결과단위, 소유, blocked, reasons}]}` | `Router.py:180` · `Store.py:336` | +| 하나 | `GET /logic` | `key` → `{file, version, logic, blocked, reasons, prices}` | `Router.py:187` · `Store.py:376` | +| 견본 입력 | `GET /logic/auto` | `key` → `{값}` | `Router.py:192` | +| 새로 | `POST /logic/new` | `{logic, owner?}` → `{file, version, key, logic}` | `Router.py:240` · `Make.py:207` | +| 본뜨기 | `POST /logic/copy` | `{key, 이름?, owner?}` → 같음(정본도 됨) | `Router.py:245` · `Make.py:215` | +| 고치기 | `POST /logic/edit` | `{key, version, logic}` → `{file, version, logic}` · 정본 403 | `Router.py:250` · `Make.py:225,149` | +| 지우기 | `POST /logic/delete` | `{key, version}` · 정본 403 · 부르는 로직 · 담은 조합 있으면 422 | `Router.py:255` · `Make.py:274` · `_화면_계약.md:113` | +| 식으로 새로 | `POST /logic/draft` | `{text, decided, head?, save?}` | `Router.py:278` | +| 복사해 만들기 | `GET /logic/formula` · `POST /logic/formula/save · preview` | 별칭 꼴 식 | `Router.py:260-273` | +| 파일 묶음 저장 | `POST /save` | `{files: [{file, version, changes: [{op: edit·add·delete, key, row}]}]}` — **소유 막음 없음 · 정본 파일도 고침** | `Router.py:235` · `Store.py:632,665` | +| 이 로직 담은 조합 | `GET /logic/combos` | `key` | `Router.py:285` | + +- 판본 대조 — `version` = 파일 해시 16자 · 다르면 409 `{stale}`(`Store.py:52,667`). +- 검사 — 저장 직전 메모리에서 「고친 뒤 **새로 생긴** 걸림」만 막음(422 `{errors}`) · 하나라도 걸리면 아무것도 안 씀(`Store.py:665-699` · `Store_Cache.py:209`). +- 지금 화면 [저장]은 `/save` 길(`M01_MasterData_UI_LogicLab.ts:319,335`) — 정본도 바로 고침. + +### 1-5. 권한 + +- `/api/m01` 통째 = **시스템 관리자만**(`main.py:639-640` · `system_admin_only`) · 아니면 403. 회사 관리자 · 일반 사용자는 못 들어옴. +- `소유`(공용 · 현장)는 권한이 아니라 표시 · 고치기 막음은 「파일이 `로직_자체.json` 인가」 하나(`Make.py:149`). + +### 1-6. 층 + +| 층 | 로직 있나 | 근거 | +| --- | --- | --- | +| 마스터 | 있음 — 위 56 파일 + 자체 한 파일 | `_틀.md:3` | +| 회사 · 개인 | **없음** — M02 층 양식 종류는 `table · drawing · structure · area · material` 뿐 | `M02_Template_Layers.py:30` | +| 프로젝트 | 로직 원본 없음 · 집계 항목이 일위대가 조합의 로직 + 하위 로직 + 표 + 요소를 **닫힌 사본** `단가.json` 으로 떠서 계산(마스터 현재값 안 읽음) | `M02_Item_Prices.py:1-14,211` | + +→ 새 로직을 프로젝트에서 쓰려면 일위대가 조합(`일위대가조합.json` · `UA`)에 담고, 프로젝트가 사본을 다시 떠야 보임. + +--- + +## 2. 구성 요소 종류 + +지금 화면 낱말 — 「호표 줄 추가 · 설계 값 추가 · 표 찾기 추가 · 덧줄 추가」(`M01_MasterData_UI_Logic_Text.ts:127-130`). + +| # | 종류 | 무엇 | 사용자가 정해야 하는 칸 | 로직 수 | 줄 수 | +| --- | --- | --- | --- | --- | --- | +| 1 | 머리 | 로직 이름표 | 이름 · 결과단위 · 출처(「자체」 가능) · (원문번호 · 비고 · 끝수 선택) | 1,469 | — | +| 2 | 설계 값 · 고르기 | 설계자가 목록에서 고름(돌 종류 · 지역 · 기계) | 이름 · 고르기 목록 · (설명) | 1,090 | 2,603 | +| 3 | 설계 값 · 수 | 설계자가 수를 넣음(면적 · 높이) | 이름 · 단위 · (설명) | 392 | 752 | +| 4 | 설계 값 · 범위 | 수 + 원문 범위 막음 | 이름 · 범위 [아래, 위] | 134 | 153 | +| 5 | 호표 · 인력 | 직종 노임 × 품 | 직종(LB 키) · 수량 · 비목(노무비) · 이름 · 단위(인) | 1,378 | 3,462 | +| 6 | 호표 · 재료(고르기 조건) | 자재품목에서 검색어로 찾은 값 × 수량 | 구분 · 상세구분 · 검색어(· 규격 · 이름) · 수량 · 단위 · 비목(재료비) | 230 | 672 | +| 7 | 호표 · 재료(유가 키 `MO`) | 휘발유 · 경유 등 | 유가 키 · 수량 | — | 51 | +| 8 | 호표 · 기계 | **종류 「로직」** + `로직(GC00026x, 기계='분류번호', 지역=지역 …)` · 비목 칸 없음 → 노무비·재료비·경비로 나눠 얹음 | 기종(분류번호) · 지역(설계 값으로 넘김) · 수량(시간) | 500 | 1,043 | +| 9 | 호표 · 다른 로직 | 하위 로직 결과를 단가로(합판거푸집 · 철근가공 …) | 로직 키 · 넘길 입력 · 수량 | 13 | 32 | +| 10 | 표 찾기 | `찾기(표키, 조건=값…).값칸` — 소요량 · 계수 표에서 품·비율을 꺼냄 | 표 · 조건마다 값(고정 글 또는 설계 값) · 값 칸 | **1,399** | 중간 2,667 · 수량 2,593 · 덧줄 255 | +| 11 | 중간 값 | 「이름 = 식」 — 표 찾기 결과 보관 · 시공량 나누기 · 할증률 | 이름 · 식 | 1,182 | 3,166 | +| 12 | 덧줄 · % 줄 | 호표 밖 금액 — 「공구손료 및 경장비」 389 · 잡재료 · 잡품 · 소모자재 | 이름 · 기준(비목 합 또는 고른 인력 줄) · 비율(수 또는 표 찾기) · 비목 | 555 | 602 | +| 13 | 덧줄 · 그밖 | 기계손료(`EQ.손료계수 × 가격`) · 주재료비 × % · 제잡비 | 이름 · 식 · 비목 | — | 49 | +| 14 | 할증 | `수량 × (1 + 율/100)` — 율은 표 찾기 · 만약 | 율(수 또는 표) · 걸리는 줄 | 153 | 305 식 | +| 15 | 조건 · 만약 | `만약(조건, 참, 거짓)` · 비교 `== <=` | 조건(설계 값 == 값) · 참 값 · 거짓 값 | 537 | 중간 593 · 수량 498 · 덧줄 41 | +| 16 | 끊기 · 최소 · 최대 | 올림 · 버림 · 반올림 · 최소 · 최대 | 대상 · 자리 | 134 | 중간 188 · 결과 26 | +| 17 | 틀 키 `{입력}` | `EQ:{기계}.가격` · `LB:{직종}` · `MO:경유:{지역}` · 재료 조건 `"규격": "{관경}"` | 설계 값 이름 | 91 | — | +| 18 | 다른 로직 부름(식 안) | `로직(GF000114)` — 작업량 등 돈 아닌 로직 | 로직 키 · 넘길 입력 | 40 | 중간 40 · 덧줄 1 | +| 19 | 돈 아닌 결과 식 | 작업량 · 시간당 처리량(다른 로직이 부름) | 결과 식 · 결과단위 | 27 | 27 | +| 20 | 줄 금액 집기 | 덧줄에서 `줄.'호표 줄 이름'` | 줄 이름 | 3 | 4 | +| 21 | 끝수 묶음 | 계 끝 끊기 `{대상: 계, 자리: 0, 방법: 버림}` | 대상 · 자리 · 방법 | 0 | — | +| 22 | 시험입력 | 일괄 시험용 견본 입력 | 입력 이름 · 값 | 193 | — | + +- 비목 = 노무비 · 재료비 · 경비 셋뿐 · 덧줄 식에서 비목 합을 이름(`노무비`)으로 씀. +- 호표 종류 「기계」 줄은 마스터에 **0** — 기계는 모두 8번 꼴. 가장 많이 불리는 것 `GC000268` 기계 시간당 기계경비 562 회 · `GC000273` 163 · `GC000267` 158. +- 호표 「수량」 은 대개 중간 값 이름(「보통인부」 476 · 「특별인부」 234) — 중간에서 표를 찾아 담고 수량은 그 이름만 부르는 꼴. + +### 종류별 가장 짧은 실제 예 + +| 종류 | 키 · 이름 | 줄 모양 | +| --- | --- | --- | +| 표 찾기 수량 | `GF000040` 식재면 관리 | 호표 둘 · 수량 `찾기(QF000142, 구분='조경공').수량` | +| 기계 | `GF000249` 다짐(플레이트콤펙터) | 입력 지역 · 중간 `작업량 = 로직(GF000114)` · 호표 `로직(GC000272, 기계='1730-0015', 지역=지역)` × `1 / 작업량` | +| % 덧줄 | `GC000051` 보행자 안전통로 | 덧줄 `(비계공 * LB000006) * 찾기(QC000116, …).값 / 100` · 비목 경비 | +| 할증 + 조건 | `GF000025` 떼붙임(재배잔디) | 수량 `품 * (1 + 만약(비탈구배 == '해당 없음', 0, 찾기(QF000099, …).값) / 100)` | +| 조건 | `GF000231` 막돌쌓기 | 수량 `찾기(…).수량 * 만약(구분 == '붙임', 찾기(CF000148, …).적용 / 100, 1)` | +| 돈 아닌 결과 | `GF000133` 덤프트럭 시간당 작업량 | 결과 `반올림(60 * qt * f * E / Cm, 3)` | + +--- + +## 3. 쓰임 세기 (마스터 1,469) + +### 3-1. 단계별 누적 (뒤 단계는 앞 단계 것을 다 품음) + +| 단계 | 쓰는 것 | 로직 수 | 비율 | 누적 | +| --- | --- | --- | --- | --- | +| L0 | 인력 · 재료 줄 × 수량(수 · 설계 값 · 중간 산술) × 단가 + 비목 합 × 비율 덧줄 | 26 | 1.8 % | 1.8 % | +| L1 | + 표 찾기 | 407 | 27.7 % | 29.5 % | +| L2 | + 기계(기계경비 로직 부름 · 기종 고정) | 172 | 11.7 % | 41.2 % | +| L3 | + % 덧줄(고른 인력 줄 노임 × 비율) | 251 | 17.1 % | 58.3 % | +| L4 | + 기계 값 칸 직접(`EQ.손료계수`) | 3 | 0.2 % | 58.5 % | +| L5 | + 조건 · 끊기(만약 · 비교 · 최소 · 최대 · 올림) | 458 | 31.2 % | 89.7 % | +| L6 | 그밖 — 다른 로직 부름 · 틀 키 `{입력}` · `줄.` · 돈 아닌 결과 · 기계경비 로직 자신 | 152 | 10.3 % | 100 % | + +- 엄격한 「줄 × 맨 수 × 단가」(입력 · 중간 · 덧줄 없음) = **1 개(0.1 %)** — `GF000208`. +- 특징별(겹침 있음) — 표 찾기 1,399 · 조건 537 · 기계경비 부름 500 · 인력 노임 직접(덧줄) 398 · 틀 키 91 · 다른 로직 부름 40 · EQ 칸 37 · 결과 식 27 · `줄.` 3. + +### 3-2. 크기 분포 (10 = 10 이상) + +| 개수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10+ | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 호표 줄 | 30 | 183 | 498 | 272 | 160 | 116 | 66 | 34 | 32 | 15 | 63 | +| 설계 값 | 280 | 307 | 341 | 215 | 156 | 72 | 37 | 12 | 12 | 8 | 29 | +| 중간 | 287 | 364 | 298 | 268 | 113 | 63 | 21 | 15 | 14 | 7 | 19 | +| 덧줄 | 907 | 480 | 75 | 7 | — | — | — | — | — | — | — | + +→ 호표 1~5 줄 · 설계 값 0~4 개 · 덧줄 0~1 줄이 대부분. + +### 3-3. 가장 단순 3 · 가장 복잡 3 + +점수 = 설계 값 + 중간 + 호표 + 덧줄 + 2 × (찾기 · 로직 · 만약 부름 수). + +| 갈래 | 키 · 이름 | 설계 값 · 중간 · 호표 · 덧줄 · 부름 | +| --- | --- | --- | +| 단순 1 | `GF000208` 암거이음받침 채움재(T=20㎜) | 0 · 0 · 1 · 0 · 0 | +| 단순 2 | `GF000204` 전선관 설치(P.V.C ø54㎜) | 0 · 0 · 1 · 1 · 0 | +| 단순 3 | `GF000216` 조약돌 기초다짐 지름 9~15㎝(인력) | 1 · 0 · 1 · 0 · 0 | +| 복잡 1 | `GC000920` 터빈 설치(공정별) — JSON 19,944 자 | 31 · 7 · 12 · 0 · 557 | +| 복잡 2 | `GC000921` 발전기 설치(공정별) | 19 · 7 · 11 · 0 · 308 | +| 복잡 3 | `GC000914` 보일러 드럼 설치(공정별) | 20 · 12 · 17 · 0 · 275 | + +(다음 자리 — `GC000993` 플랜트 설치 소모자재 호표 40 줄 · `GC000510` 정사영상 · `GC000346` 터널굴착 1발파당 인력.) + +--- + +## 4. 계산 길 + +| 무엇 | 어디 | 근거 | +| --- | --- | --- | +| 계산 엔진 | **서버 단독**(파이썬) — `master_formula.run` · 브라우저는 `/calc` · `/text` 답을 찍기만(계산 자리 ③) | `master_formula.py:538` · `UI_Logic_Calc.ts:142,184` | +| 시험 계산 | `POST /calc {key, inputs, row?, file?, 고름?}` — 새 로직은 `key: ""` + `row` 통째 · 메모리에만 얹고 셈(파일 안 씀) | `Router.py:222` · `Store.py:524,543` · `_화면_계약.md:48-57` | +| 읽는 식 줄 | `POST /text` — 같은 몸 · 「단가 × 수량 = 금액」 줄 | `Router.py:228` · `Store.py:572` | +| 프로젝트 계산 | 사본 `단가.json` 으로 같은 `mf.run` | `M02_Item_Prices.py:211` | +| 답 모양 | 됨 `{ok, lines: [{이름, 단위, 수량, 단가, 금액, 비목}], sums: {노무비, 재료비, 경비, 계}, middle}` · 멈춤 `{ok: false, reason}`(200) | `Store.py:543-560` | + +### 4-1. 새 로직이 검사를 통과하는 최소 칸 (메모리 시험 `tmp/쉬운단가_검토_A_최소칸.py`) + +최소 통과 줄 = 머리 + 인력 호표 한 줄: + +``` +{원문번호: "", 구분, 상세구분, 이름, 결과단위: "원/㎡", 출처: "자체", 소유, 입력: [], 중간: [], + 호표: [{종류: "인력", 요소: "LB000002", 이름, 단위, 수량: "0.5", 비목: "노무비"}], 덧줄: [], 끝수: null} +``` +→ 시험 계산 됨 — 보통인부 0.5 인 × 172,068 = 86,034 원. + +| 뺀 · 바꾼 것 | 결과 | +| --- | --- | +| 원문번호 · 구분 · 상세구분 · 결과단위 · 출처 · 소유 · 입력 · 중간 · 끝수 **칸** 하나라도 없음 | 걸림 「칸 「X」 없음」 — 단 구분 · 상세구분 · 소유 · 키는 `/logic/new` 서버가 채움(`Make.py:154`) | +| 호표도 결과도 없음 | 걸림 「「호표」 도 「결과」 도 없음」(`check_master.py:316`) | +| 출처 = 빈 글 · 「내 메모」 | 걸림 「출처 모양」 — 「자체」 또는 「산림품셈 …」 꼴만(`check_master.py:63`) | +| 호표 비목 뺌(인력 · 재료) | 걸림 「비목 None」 | +| 호표 종류 ≠ 요소 그룹(인력에 EQ 키) | 걸림 「요소 그룹이 종류와 다름」 | +| 수량에 정의 안 된 이름 | 걸림 「모르는 이름 「면적」」 → 설계 값으로 만들면 통과 | +| 덧줄 칸 없음 · 호표 이름 · 단위 없음 · 호표 빈 목록 · 덧줄 출처 없음 | **통과**(검사가 안 봄) | +| 호표 종류 「기계」 + 요소 `EQ000001` | **검사 통과 · 계산 멈춤** 「unsupported operand … Decimal and dict」 — 새 길이 막아야 할 꼴 | +| 기계 줄 = `로직(GC000268, 기계='0201-0070', 지역='서울')` | 통과 · 계산 됨(노무비 · 재료비 · 경비로 나눠 얹힘) — 부를 로직의 입력을 **빠짐없이** 넘겨야 함(`master_formula.py:744`) | +| 재료 줄 = `{검색어: "시멘트"}` | 통과 · 계산 됨 — 단 검색어가 넓으면 엉뚱한 품목(「포시몰」)이 자동값 → 구분 · 상세구분 · 규격 조건 권장 | + +꼭 채울 것 정리 — **이름 · 결과단위(「원/…」) · 출처(「자체」) · 호표 줄마다 종류 · 요소 · 수량 · 비목(로직 줄 빼고) · 수량 식에 쓴 이름은 설계 값 또는 중간에 있어야 함**. 빈 칸 기본값: 원문번호 "" · 입력 [] · 중간 [] · 덧줄 [] · 끝수 null. + +--- + +## 5. 새 길이 지금 API 만으로 되나 + +| 일 | 지금 API | 됨? | 비고 | +| --- | --- | --- | --- | +| 목록 · 열기 | `GET /logics?owner=현장` · `GET /logic` | 됨 | 자체만 거름 가능 | +| 새로 | `POST /logic/new` | 됨 | 키 GX 서버 · 소유 현장 | +| 정본을 바탕으로 | `POST /logic/copy` → 자체로 | 됨 | 정본은 그대로 · 조합 · 다른 로직은 계속 정본 키를 봄 | +| 고치기 | `POST /logic/edit`(자체만) | 됨 | 정본은 403 — 본뜬 뒤 고침 | +| 지우기 | `POST /logic/delete`(자체만) | 됨 | 부르는 로직 · 담은 조합 있으면 422 · 화면은 `GET /logic/combos` 로 먼저 알림 | +| 시험 계산 | `POST /calc` · `/text`(`key ""` + `row`) | 됨 | 저장 전에도 | +| 인력 고르기 | `GET /pick?kind=job` | 됨 | 공표 직종 | +| 재료 고르기 | `GET /materials` · `GET /pick?kind=price` | 됨 | 구분 → 상세구분 → 후보 | +| 기계 고르기 | `GET /logic?key=GC000268` 의 입력 「기계」 고르기 목록 + `GET /elements?group=기계&q=` 이름 | 됨(두 번 부름) | 기종 목록이 기계경비 로직마다 다름(어느 로직을 부를지 고르는 일이 남음) | +| 표 찾기 | `GET /tables?group=소요량` · `GET /table/options` | 됨 | 조건 값 목록까지 | +| 저장 걸림 보이기 | 422 `{errors: [글…]}` | 됨 | 글이 키 · 엔진 말투 — 쉬운 말 바꾸기는 화면 몫 | + +- **새 API 필요 없음.** 만들면 좋은 것(필수 아님) 하나 — 「기계 고르기 한 번에」(기종 → 부를 기계경비 로직 키 · 넘길 입력을 짝지어 줌). 지금은 화면이 GC000267~276 열 개 가운데 고르는 규칙을 품어야 함. +- `/save` 는 쓰지 않는 것을 권함 — 소유 막음이 없어 정본 파일을 고치고 지울 수 있음(`Store.py:632`). `/logic/*` 길은 `로직_자체.json` 만 건드림(`Make.py:149`). +- 새 길이 「초등학생」 수준으로 덮을 범위 후보(브레인 판단 몫) — L0 ~ L3(호표 인력 · 재료 · 기계 + 표 찾기 + % 덧줄) = 마스터의 58 %. 조건 · 할증(L5)까지 = 90 %. + +## 덧 — 세는 법 + +- 「표 찾기」 = 식 나무에 `find` 마디 · 「조건」 = `만약 · 올림 · 버림 · 반올림 · 최소 · 최대` 부름 또는 비교 · 「기계경비 부름」 = `로직(…)` 대상이 `로직_건설품셈_08장_건설기계.json`(GC000267~276) · 「인력 노임 직접」 = 덧줄 · 중간 식의 고정 `LB · MT · MO` 키 · 해석은 엔진 `master_formula.parse · walk` 그대로. +- 「할증」 = 식 안 `(1 + …` 꼴(어림) · 「% 줄」 = 덧줄 식에 `/ 100`. diff --git a/docs/raw/M01_쉬운단가/쉬운단가_검토_C_갈래.md b/docs/raw/M01_쉬운단가/쉬운단가_검토_C_갈래.md new file mode 100644 index 000000000..cf2514bc0 --- /dev/null +++ b/docs/raw/M01_쉬운단가/쉬운단가_검토_C_갈래.md @@ -0,0 +1,282 @@ +# 쉬운 단가산출 검토 C — 실무 일위대가 모양 + 쉬운 제어 갈래 (sub7 · PLAN 34-1) + +조사 · 그림만 · 코드 안 고침. 그림 숫자는 실무 엑셀 호표 3(찰쌓기) + 공구손료 2% 가정. + +## 0. 한눈에 + +- **추천 = 갈래 B 「문장 카드」** — 줄 하나 = 쉬운 문장 하나(「석공이 [0.072]인 일함 = 18,643원」). 시작은 E 「비슷한 것 본뜨기」, 줄 더하기는 C 의 물음 셋, 맨 아래 실무 일위대가표 미리보기(읽기만). +- 까닭 — 지금 화면이 이미 실무 표 꼴이라 표(A)로는 같은 벽 · 카드 하나가 지금 형식의 줄 하나와 1:1 · 알림·잠금이 들어갈 자리가 카드 안에 있음 · 걸음은 표와 거의 같음(여섯 일 합 36 대 33). +- 큰 벽 — 정본 로직 수량의 97%가 식(숫자 146 줄뿐). 어느 갈래든 식은 「잠금 값」으로 보이고, 쉬운 길에서 새로 만드는 로직은 실무처럼 숫자 수량. + +## 1. 실무자가 일위대가를 적고 읽는 모양 + +근거: `resources/knowledge/original/실무문서/2024년 간선임도(기번3-울진.대흥)(공통)/…xlsx` 시트 `일위대가표`·`중기사용료`·`일위대가목록표`(STmate 출력) · `경쟁사 프로그램/STmate 분석/20_분석/31_일위대가_레시피_사전.md` · 산림품셈 1-2-6 · 건설품셈 1-3-1. + +### 1-1 일위대가표 칸 차례 (A~M 열) + +``` +명칭 | 규격 | 수량 | 단위 | 합계(단가·금액) | 노무비(단가·금액) | 재료비(단가·금액) | 경비(단가·금액) | 비고 +``` + +호표 하나의 모양 (일위대가표 16~22행): + +``` +제 3 호표 +찰쌓기(켜쌓기) L3=55cm이하 m2 대가 3 +건설표준품셈 7-1-2(찰쌓기) 0 ← 근거 줄(금액 0) +석공 0.072 인 258,935 18,643 258,935 18,643 0 0 0 0 노무 3 +보통인부 0.036 인 165,545 5,960 165,545 5,960 0 0 0 0 노무 6 +굴삭기+부착용 집게(0.6m3) 0.27 시간 105,164 28,394 55,700 15,039 18,296 4,940 31,168 8,415 중기 20 +합 계 52,995 39,641 4,939 8,415 +``` + +- % 줄 (146행): `공구손료 | 인건비의 % | 2 | % | 13,037.6(바탕 금액) | 260.7 | … 재료비 칸에 260.7 | 자재 24` +- 다른 호표 부르기 (89행): `찰쌓기(켜쌓기) | L3=55cm이하 | 1.57 | m2 | 52,995 | 83,202 | … | 대가 3호표` +- 중기사용료 호표 (불도우저 19ton /시간): 손료 0.1811 천원(경비) · 건설기계운전사 1인(노무) · 경유 25L(재료) · 잡품 주연료의 16%(재료) +- 목록표 칸: `호표 | 명칭 | 규격 | 단위 | 합계 | 노무비 | 재료비 | 경비 | 비고` + +### 1-2 실무 규칙 + +| 무엇 | 실무 모양 | +|---|---| +| 한 줄 | 무엇 · 규격 · 얼마(수량) · 단위 — 단가는 목록에서 옴 · 금액 = 수량 × 단가 | +| 비목 | 사람 줄은 노무비 칸만 · 재료는 재료비 · 기계(중기 호표)는 세 칸에 나뉨 | +| % 줄 | 명칭 = 공구손료·잡품·잡재료비 · 규격 = 「노무비의 %」「주연료의 %」 · 수량 = % 수 · 단가 = 바탕 금액 | +| 다른 일위대가 | 한 줄로 부름 · 비고 「대가 N호표」 · 조합 350 중 150(43%)이 2단 이상 | +| 근거 줄 | 「건설표준품셈 7-1-2」 금액 0 줄을 맨 위에 | +| 규격 갈래 | 규격만 다르면 호표 따로(기슭막이 H=1.5·2.0·2.5 = 호표 12·13·14) · 구성 같고 수량만 비례 | +| 수량 | **숫자** — 품셈 표에서 사람이 골라 적은 결과 | +| 줄 수 | 평균 4.9 · 4줄 최다(중기) · 최대 17 | +| 끝수 | 줄 금액 소수 첫째 · 비목 합 원 미만 버림 | +| 할증 | 재료 할증(시멘트 정치식 2·기타 3% 등, 건설품셈 1-3-1)은 수량에 녹이거나 따로 줄 · 품셈 항목에 들어 있으면 안 붙임 | +| 공구손료·잡재료 | 산림품셈 1-2-6 주재료비 2~5% · 항목마다 「인력품의 3%」(12-38) 등 · 실무 엑셀은 **재료비** 칸, 산림품셈 12-27 표는 **경비** — 줄마다 비목 고를 자리 필요 | + +### 1-3 실무자가 적는 차례 · 읽는 차례 + +``` +적기 ① 품셈 절 찾기 → ② 표에서 규격 맞는 줄의 품 숫자 → ③ 사람·재료·기계 줄 적기(단가는 목록이 채움) + → ④ % 줄(공구손료·잡품) → ⑤ 합계 확인 → ⑥ 다른 규격은 호표 복사 뒤 수량만 바꿈 +읽기 목록표 합계 → 호표 열어 큰 줄 → 비고로 단가 출처 → 근거 줄로 품셈 절 +``` + +## 2. 지금 로직 형식 (쉬운 길이 그대로 읽고 쓸 것) + +근거: `resources/master_data/_틀.md` 7·8·10장 · `M01_MasterData_UI_Logic_Api.ts` `LogicRow` · 로직 파일 1,469개 셈(전부 정본 · 공용). + +| 형식 칸 | 뜻 | 실무 대응 | 수 | +|---|---|---|---| +| 머리 | 이름 · 결과단위(원/㎡) · 출처 · 소유 | 호표 머리 줄 + 근거 줄 | — | +| 입력 | 설계 때 받을 값(뒷길이 · 돌 종류) | 없음 — 실무는 규격마다 호표 따로 | 1,189 로직 | +| 중간 | 이름 붙인 식 | 품셈 표를 읽는 과정 | 1,182 로직 | +| 호표 줄 | 종류(인력·재료·로직) · 요소 · 수량 · 비목 | 일위대가표 한 줄 | 5,260 줄 (인력 3,462 · 로직 1,075 · 재료 723 · 기계는 로직 줄로 부름) | +| 수량 | 숫자 146 · 이름 하나 1,957 · 찾기 하나 668 · 그 밖 식 2,489 | 수량 칸 숫자 | 숫자는 3% | +| 덧줄 | % 꼴 599 / 651 (바탕 = 사람 줄 합 321 · 이름 하나 176 · 그 밖 102) | % 줄 | 562 로직 | +| 결과 식 | 돈 아닌 로직(작업량) | 단가산출근거(Q식) | 27 | +| 끝수 | `{대상, 자리, 방법}` | 원 미만 버림 | 37 | +| 재료 요소 | 키 대신 검색어 묶음 | 명칭·규격 | — | + +서버 길(엔진 안 바꿈): `POST /calc`(저장 없이 셈) · `/save` · 자체 로직 만들기·본뜨기·고치기·지우기(`Store_Make`) · 쓰는 곳 찾기(`master_combo.using`). + +## 3. 대표 일 여섯 (모든 갈래 같은 예) + +예: 「찰쌓기(켜쌓기) L3=55cm이하 /㎡」 = 석공 0.072인 · 보통인부 0.036인 · 굴삭기+집게 0.27시간 · 공구손료 노무비의 2% + +| | 일 | 예 | +|---|---|---| +| ① | 새 로직 만들기 | 위 네 줄을 처음부터 | +| ② | 줄 추가 | 모르터바르기 0.009㎥ (다른 일위대가 부르기) | +| ③ | 수량 바꾸기 | 석공 0.072 → 0.08 | +| ④ | 단가 자료 바꾸기 | 굴삭기 0.6㎥ → 0.7㎥ (줄이 쓰는 요소를 바꿈 · 마스터 단가는 안 고침) | +| ⑤ | 줄 지우기 | 보통인부 줄 | +| ⑥ | 로직 지우기 · 되돌리기 | 자체 로직 지우기 / 방금 한 일 되돌리기 | + +걸음 = 누르기 한 번 또는 칸 하나 채우기(쳐서 엔터) · 저장 1 넣음 · 로직 열기는 뺌(①⑥은 목록에서 셈) · 지금 화면 걸음은 sub6 값. + +## 4. 갈래 다섯 + +### A. 엑셀 표 — 실무 일위대가표 그대로 + +``` +┌ 쉬운 단가산출 ─────────────────────────────────────── [되돌리기] [저장] ┐ +│ 찰쌓기(켜쌓기) L3=55cm이하 1 ㎡ 당 합계 53,788 원 │ +├──────────────┬────────────┬───────┬──────┬─────────┬─────────┬──────┤ +│ 명칭 │ 규격 │ 수량 │ 단위 │ 단가 │ 금액 │ │ +├──────────────┼────────────┼───────┼──────┼─────────┼─────────┼──────┤ +│ 석공 │ │ 0.072 │ 인 │ 258,935 │ 18,643 │ [×] │ +│ 보통인부 │ │ 0.036 │ 인 │ 165,545 │ 5,960 │ [×] │ +│ 굴삭기+집게 │ 0.6㎥ │ 0.27 │ 시간 │ 105,164 │ 28,394 │ [×] │ +│ 공구손료 │ 노무비의 % │ 2 │ % │ 39,641 │ 793 │ [×] │ +│ (여기에 이름을 쳐서 줄 더하기 …) │ +├──────────────┴────────────┴───────┴──────┴─────────┴─────────┴──────┤ +│ 노무비 39,641 · 재료비 5,732 · 경비 8,415 │ +└──────────────────────────────────────────────────────────────────────┘ +``` + +- 걸음: ① 17 · ② 4 · ③ 3 · ④ 4 · ⑤ 2 · ⑥ 3 / 1 +- 형식: 줄 = 호표 줄 · % 줄 = 덧줄(`노무비 * 2 / 100`) · 명칭 후보가 일위대가면 종류 「로직」 · 비목 칸은 숨김(줄 종류로 정함) +- 못 덮음: 식 수량 → 칸에 회색 「자동 0.50」 · 입력·중간 → 표 위 접힌 띠 +- 좋음: 인쇄 일위대가표와 같은 모양 · 고치기 걸음 가장 적음 · 한 화면에 전체 +- 나쁨: **지금 화면(`Logic_Edit` 「실무 단가산출 상세(호표) 모양」)이 이미 표 꼴 — 표만으로 어려움이 안 풀린 길** · 칸 머리를 알아야 읽힘 · 칸 안에 알림 자리 없음 · 휴대폰 폭 안 맞음 + +### B. 문장 카드 — 빈칸 채우기 + +``` +┌ 쉬운 단가산출 ──────────────────────────────────────── [↶ 되돌리기] [저장] ┐ +│ 이 일의 이름 [찰쌓기(켜쌓기)] 크기 [L3=55cm이하] [1 ㎡ ▾] 당 │ +│ ▶ 1㎡ 만드는 데 53,788 원 │ +├────────────────────────────────────────────────────────────────────────────┤ +│ 【사람】 [석공 ▾] 이 [0.072] 인 일함 = 18,643 원 [지움] │ +│ 【사람】 [보통인부 ▾] 이 [0.036] 인 일함 = 5,960 원 [지움] │ +│ 【기계】 [굴삭기+집게 0.6㎥ ▾] 를 [0.27] 시간 씀 = 28,394 원 [지움] │ +│ 【덧붙임】 [사람 품값 ▾] 의 [2] % 를 [공구손료] 로 더함 = 793 원 [지움] │ +│ │ +│ [+ 사람] [+ 재료] [+ 기계] [+ 다른 일위대가] [+ 덧붙임 %] │ +├────────────────────────────────────────────────────────────────────────────┤ +│ ▸ 실무 일위대가표로 보기 (읽기만 · 1-1 모양) │ +└────────────────────────────────────────────────────────────────────────────┘ + +잠금 카드 (정본을 본뜬 로직): +│ 【사람】 [석공 ▾] 이 (자동 0.50 · 산림품셈 13-4-1 표에서) 인 일함 = 129,468 원 │ +│ └ [숫자로 바꾸기] [그대로 둠] │ +잘못 넣음: +│ 【사람】 [석공 ▾] 이 [0.72] 인 일함 ⚠ 1㎡ 에 석공 0.72인은 많음 — 0.072 ? │ +``` + +- 걸음: ① 20 · ② 5 · ③ 3 · ④ 3 · ⑤ 2 · ⑥ 3 / 1 +- 형식: 카드 = 호표 줄 / 덧줄 / 로직 줄 1:1 · 【덧붙임】 바탕 「사람 품값」 = 사람 줄 합(덧줄 321개 꼴) · 「노무비·재료비·경비·주재료비」 = 이름 하나(176개 꼴) +- 못 덮음: 식 수량 → 잠금 값 + 「숫자로 바꾸기」 · 그 밖 덧줄 → 잠금 카드 「자동 덧붙임」 +- 좋음: 칸 머리 없이 문장으로 읽힘 · 알림·잠금이 카드 안에 들어감 · 휴대폰 폭 맞음 · 카드 순서 ▲▼ +- 나쁨: 줄 17개 로직은 길어짐(카드 한 줄 접기로 보완) · 실무 표와 모양 다름(아래 미리보기로 보완) + +### C. 단계 안내 — 마법사 + +``` +┌ 새 일위대가 만들기 ─────────────────────────── 4 / 7 단계 ┐ +│ │ +│ 이 일에 기계가 들어가나요? │ +│ │ +│ [ 굴삭기+집게 0.6㎥ ▾ ] [ 0.27 ] 시간 = 28,394 원 │ +│ [ + 기계 하나 더 ] │ +│ │ +│ 지금까지 1㎡ 당 52,995 원 │ +│ │ +│ [ ← 앞으로 ] [ 기계 없음 ] [ 다음 → ] │ +└───────────────────────────────────────────────────────────┘ +단계: ① 이름·단위 ② 사람 ③ 재료 ④ 기계 ⑤ 다른 일위대가 ⑥ 덧붙임(%) ⑦ 확인·저장 +``` + +- 걸음: ① 24 · ② 6 · ③ 5 · ④ 5 · ⑤ 4 · ⑥ 3 / 1 (고치기 = 단계로 건너뛰기 → 고침 → 확인 → 저장) +- 형식: 단계마다 호표 줄 종류 하나 · 끝 단계에서 한 번에 씀 +- 못 덮음: B 와 같음 · 줄 차례는 종류별로 묶임(지금 상세 화면 묶음과 같음) +- 좋음: 한 화면 한 물음 — 가장 「초등학생」 · 길을 잃지 않음 · ① 에 강함 +- 나쁨: 고치기가 느림 · 전체가 끝 단계에서만 보임 · 단계 사이 오감이 잦음 + +### D. 블록 끌어다 놓기 + +``` +┌ 서랍 ──────────┐┌ 판 ─────────────────────────────────── [↶] [저장] ┐ +│ [▭ 사람] ││ ┏━ 찰쌓기(켜쌓기) L3=55cm이하 · 1㎡ ━━━━━━━━━━━━━┓ │ +│ [▭ 재료] ││ ┃ ▭ 사람 [석공] [0.072] 인 18,643원 ┃ │ +│ [▭ 기계] ││ ┃ ▭ 사람 [보통인부] [0.036] 인 5,960원 ┃ │ +│ [▭ 다른 일위대가]││ ┃ ▭ 기계 [굴삭기+집게] [0.27] 시간 28,394원 ┃ │ +│ [▭ 덧붙임 %] ││ ┃ ▭ % [사람 품값] 의 [2] % 793원 ┃ │ +│ ││ ┗━ 합계 53,788원 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ │ +│ [휴지통] ││ │ +└─────────────────┘└───────────────────────────────────────────────────┘ +``` + +- 걸음: ① 20 · ② 5 · ③ 3 · ④ 4 · ⑤ 2 · ⑥ 3 / 1 +- 형식: 블록 = 카드 · 판의 차례 = 호표 줄 차례 +- 못 덮음: B 와 같음 +- 좋음: 스크래치처럼 어린이에게 익숙 · 지우기가 휴지통으로 눈에 보임 +- 나쁨: 호표는 일렬 목록이라 블록이 카드보다 더 주는 것 없음 · 끌기가 터치패드·키보드에 약함 · 만들기 품 가장 큼 + +### E. 비슷한 것 골라 고치기 — 본뜨기 (입구) + +``` +┌ 무엇과 비슷한가요? ────────────────────────────────────────────────┐ +│ [ 찰쌓기 찾기 ] │ +│ │ +│ ○ 찰쌓기(켜쌓기) L3=55cm이하 /㎡ 52,995원 석공 · 보통인부 · 굴삭기 │ +│ ○ 메쌓기(켜쌓기) L3=55cm이하 /㎡ 68,835원 석공 · 보통인부 · 굴삭기 │ +│ ○ 돌쌓기 메쌓기(인력) [정본] /㎡ 설계 값 필요 석공 · 보통인부 │ +│ │ +│ [ 이것으로 시작 → ] │ +└────────────────────────────────────────────────────────────────────┘ +→ 고치기 화면(A 또는 B) · 위 띠 「본뜬 것: 찰쌓기(켜쌓기)」 · 바뀐 칸 노랑 +``` + +- 걸음: ① 9 (비슷한 것이 있을 때 · 찾기 1 · 고르기 1 · 시작 1 · 이름 1 · 수량 2칸 4 · 저장 1) · ②~⑥ 은 고치기 화면 걸음 +- 형식: 지금 본뜨기 서버 길 그대로(`Store_Make` · `LogicLab_Copy`) +- 좋음: 실무 습관 그대로(호표 복사 뒤 수량만) · 빈 종이로 시작하지 않음 +- 나쁨: 혼자 서지 못함 · 정본을 본뜨면 잠금 값이 따라옴 + +## 5. 갈래 비교 + +| | A 표 | **B 문장 카드** | C 마법사 | D 블록 | E 본뜨기(입구) | +|---|---|---|---|---|---| +| ① 새로 | 17 | 20 | 24 | 20 | 9 | +| ② 줄 추가 | 4 | 5 | 6 | 5 | 고치기 화면 | +| ③ 수량 | 3 | 3 | 5 | 3 | 〃 | +| ④ 단가 자료 | 4 | 3 | 5 | 4 | 〃 | +| ⑤ 줄 지우기 | 2 | 2 | 4 | 2 | 〃 | +| ⑥ 지우기 / 되돌리기 | 3 / 1 | 3 / 1 | 3 / 1 | 3 / 1 | 3 / 1 | +| 여섯 합 | 33 | 36 | 47 | 37 | — | +| 품셈 몰라도 읽힘 | 중 | 상 | 상 | 상 | 상 | +| 실무 표 모양 | 상 | 중(미리보기) | 하 | 중 | — | +| 한 화면 한 가지 | 하 | 중 | 상 | 중 | 상 | +| 알림 자리 | 하 | 상 | 상 | 중 | — | +| 휴대폰 폭 | 하 | 상 | 상 | 하 | 상 | +| 만들기 품 | 하 | 중 | 중 | 상 | 하 | +| 지금 형식 읽고 씀 | 됨 | 됨 | 새로 만들기만 자연 | 됨 | 됨 | + +## 6. 못 덮는 형식 요소와 할 일 (모든 갈래 공통) + +| 요소 | 수 | 쉬운 길에서 | 그때 할 일 | +|---|---|---|---| +| 식 수량(찾기·만약·이름) | 5,114 줄 | 잠금 값 「자동 0.50 · 산림품셈 13-4-1 표」 | 「숫자로 바꾸기」(확인 한 번) 또는 「표에서 고르기」 = 조건을 고정값으로 넣은 찾기(`찾기(QF…, 뒷길이=45, 돌='깬돌').석공`) | +| 입력(설계 때 받을 값) | 1,189 로직 | 위 띠 「설계 때 정하는 값: 뒷길이 · 돌」 읽기만 · 시험값만 넣어 금액 봄 | 새 입력 만들기는 지금 화면 | +| 중간 식 | 1,182 로직 | 숨김(잠금 값 안에서만 보임) | 지금 화면 | +| 덧줄 % 꼴 | 599 줄 | % 카드 · 율이 찾기면 잠금 % | — | +| 덧줄 그 밖 꼴(손료 식 등) | 52 줄 | 잠금 카드 「자동 덧붙임 · 금액」 | 지금 화면 | +| 로직 부르기 + 넘길 값 | 1,075 줄 | 다른 일위대가 카드 · 받는 값은 카드 안 고르기 칸 | 넘길 값이 식이면 잠금 | +| 결과 식(작업량 · Q식) | 27 로직 | 목록에 회색 「쉬운 길로 못 엶」 | 지금 화면 | +| 끝수 묶음 | 37 로직 | 읽기만 한 줄 「합계 원 미만 버림」 | 새 로직은 엔진 기본 | +| 정본(공용) | 1,469 로직 | 읽기만 + [본떠 만들기] | 정본은 안 고침 | +| 재료 요소 | 723 줄 | 이름 쳐서 고르기 → 검색어 묶음으로 씀 | — | +| 로직 지우기 | 자체만 | 쓰는 곳(다른 로직 · 조합)이 있으면 「○곳에서 씀 — 먼저 빼기」 | — | + +## 7. 「초등학생」 원칙 + +1. **낱말** — 키·식·비목·호표·덧줄 안 씀 → 사람 · 재료 · 기계 · 다른 일위대가 · 덧붙임(%) · 사람 품값 · 재료값 · 기계·경비. +2. **한 화면 한 가지 일** — 고치기 화면에 목록·시험 계산·식 풀이를 같이 두지 않음. +3. **결과 금액이 바로 보임** — 줄마다 금액 · 맨 위 큰 합계 · 바뀐 금액은 잠깐 칠함. +4. **고르기가 쓰기보다 먼저** — 이름은 후보에서 · 단위는 고른 것이 정함 · 숫자 칸만 침. +5. **보기 글** — 빈 칸에 회색 「예: 0.072」. +6. **잘못 넣으면 바로 그 자리에 한 줄** — 숫자 아님 · 0 · 음수 · 너무 큼(1㎡ 에 사람 10인 넘음 등) · 같은 이름 · 빈 이름. +7. **되돌리기 늘 보임** — 줄 지우기는 묻지 않고 되돌리기로 · 로직 통째 지우기만 확인 한 번. +8. **저장 전엔 아무것도 안 바뀜** — 「저장 안 함」 표시 · 저장 안 하고 닫으면 물음. +9. **정본은 안 깨짐** — 정본은 읽기 + 본뜨기만. +10. **어려운 것은 잠금** — 식·표 찾기는 잠금 값으로 · 열어 보기는 되지만 고칠 필요 없음. +11. **실무와 같은 차례** — 이름 · 크기(규격) · 얼마 · 단위 · 금액 · 인쇄 일위대가표와 같은 숫자. +12. **큰 단추 · 글 크게 · 색만으로 뜻 안 전함** — 글 + 표시 함께 · 밝음 · 어두움 둘 다. + +## 8. 추천 — B 문장 카드 (E 입구 · C 물음 셋 · 실무 표 미리보기) + +까닭: + +1. 지금 화면은 이미 실무 표 꼴 — 표(A) 모양만으로는 어려움이 안 풀렸음. 바꿀 것은 모양이 아니라 **읽는 법**(칸 머리 → 문장). +2. 카드 하나 = 지금 형식의 줄 하나(호표 줄 · 덧줄 · 로직 줄) — 그대로 읽고 씀 · 엔진 안 바꿈. +3. 「석공이 0.072인 일함 = 18,643원」은 품셈을 몰라도 읽힘 — 초등학생 원칙 1·3·11. +4. 알림·잠금·「숫자로 바꾸기」가 들어갈 자리가 카드 안에 있음 — 표 칸에는 없음. +5. 걸음은 표와 거의 같음(여섯 합 36 대 33) · 마법사보다 11 적음. +6. 블록(D)의 쉬움을 끌기 품 없이 얻음 — 호표는 일렬이라 블록 = 카드 + 끌기. +7. 실무 습관(비슷한 호표 복사 뒤 수량만)은 E 입구로 · 처음 쓰는 사람은 [+ 사람] 뒤 C 물음 셋(무엇 → 어떤 것 → 얼마). + +브레인 정할 것: + +- **바로 보이는 금액** — 숫자 줄은 화면에서 곱하고 식 줄은 `/calc` 를 뒤에서(최신 응답만) · CLAUDE.md 5장 「조작 중 네트워크 왕복 금지」와 맞출 길. +- **「숫자로 바꾸기」 허용** — 정본을 본뜬 자체 로직에서 식을 숫자로 덮는 일(표 연결이 끊김). +- **공구손료 비목 기본** — 실무 엑셀 재료비 칸 · 산림품셈 12-27 경비(원문 대 실무). +- **「지금 화면에서 고치세요」 길** — 폴더 밖 참조 한 곳 원칙과 맞출 방법(글 + 키 복사만 · 링크 없음 등). +- **쉬운 길 새 로직에 입력을 둘지** — 실무는 규격마다 호표 따로라 입력 없이도 됨. diff --git a/docs/raw/M01_쉬운단가/쉬운단가_검토_D_지난시도.md b/docs/raw/M01_쉬운단가/쉬운단가_검토_D_지난시도.md new file mode 100644 index 000000000..30d4841f5 --- /dev/null +++ b/docs/raw/M01_쉬운단가/쉬운단가_검토_D_지난시도.md @@ -0,0 +1,96 @@ +# 쉬운 단가산출 검토 D — 지난 시도에서 배우기 (34-1 · sub8 · 10-01) + +조사만 · 코드 안 고침. 근거 = `git log -- M01_MasterData`(133 커밋) · `docs/raw/plans/2026-09-22·09-25·10-01` · `resources/master_data/ref/_설계_로직_만들기.md`·`_검증_테스트_컨테이너.md`·`_분석_로직컨테이너_통합.md`·`_검증_화면글.md`·`_검증_화면늦음.md` · 지금 코드 머리 주석 · 사용자 대화 기록(시각은 한국 시각). + +## 0. 한눈에 + +- 열흘(09-19 ~ 09-30) 동안 시도 열넷. 큰 갈아엎기 셋 — ① 09-20 밤 방식 A·B·C ② 09-21 낮 흐름 그림 + 마법사 모달 ③ 09-21 밤 「식으로 새로 만들기」 · 「본떠 만들기」. +- 09-21 밤 뒤로는 **보기(읽기)만 다듬음** — 보기 쪽 파일 고친 커밋 24 · 만들기·고치기 파일 고친 커밋 2(둘 다 이름 바꾸기·합치기). 사용자가 어렵다는 **추가 · 삭제 · 수정 길은 09-21 모습 그대로**. +- 지금 남은 만들기·고치기 길 = 식 글자 셋(식으로 새로 만들기 · 본떠 만들기 별칭 식 · 자체 로직 편집기). + +## 1. 시도마다 한 줄 + +| # | 언제 · 커밋 | 시도 | 풀려던 것 | 사용자에게 요구한 것 | 남은 어려움 · 근거 | 지금 | +|---|---|---|---|---|---|---| +| 1 | 09-19 `3a36a037` `10598f36` | 호표 편집기(옛 로직 칸 · `Logic_Edit`) | 화면에서 로직 고치기 · 시험 계산 | 줄마다 종류 · 요소 키 · **수량 식 글자** · 중간 값 · 결과 식 · 덧줄 · 끝수 칸 · 요소 찾기 창 | 사용자 09-21 「중간 값과 덧줄, 끝수 등 의미가 이해하기 어려움」 · 정본도 바로 고쳐 저장됨 → 사용자 확정으로 버림(7-1) | 옛 컨테이너는 `old_code/` · 편집기는 **자체 로직 고치기로 살아 있음** | +| 2 | 09-20 `292568e6` | 방식 A 질문·답 마법사(테스트 컨테이너) | 식 없이 입력만 물어 계산 | 공종 → 조건 질문 하나씩 → 재료·기계 고르기 | 읽기·계산만 · 로직을 만들지 못함 — 사용자 09-21 07:39 「신규 등록일 경우 첫번째 방식이 괜찮고 … 문제는 로직생성 … 누락」 | 09-21 걷음(`f458da7f`) | +| 3 | 09-20 `2436899c` | 방식 B 호표 + 옆 설명 카드 | 「이 수량은 어디서 왔나」 | 줄 누름 → 옆 카드(원문 표 · 할증 · 쉬운 말 풀이) · 식 고치기는 고급 뒤 | 화면 확인 없이 typecheck 만으로 마감(커밋 글) · 사용자 09-21 08:06 「A, B, C 화면 구성 삭제」 | 카드 속은 `Logic_Note` 로 남아 모달이 씀 | +| 4 | 09-20 `17838d00` | 방식 C 흐름 그림(설계 값 → 표 찾기 → 수량 → × 단가 → 할증·덧줄 → 비목 합계 → 계) | 계산 흐름을 한눈에 | 상자 누름 → 값 · 출처 | 사용자 09-21 07:39 「등록 후 전체를 볼 때는 … 칸반보드 타입이 눈에 잘 들어옴」 → 채택(09:13) → 10시간 뒤(19:17) 삭제 지시 「기존 일위대가 로직을 기준으로 개선」(까닭 글 없음 · 실무 호표 모양과 다른 탓으로 보임 — 추정) | 09-21 걷음(`5b693242`) | +| 5 | 09-21 `946425af` `beea3fac` | 새로 만들기 모달 = 방식 A 만들기(`Wizard` 9 파일 1,885 줄) | 품셈 모르는 사람이 빈 화면에서 로직 만들기 | **여덟 걸음** 이름 → 원문 절 → 중간 값 → 호표 줄 → 설계 입력 → 할증·끝수 → 시험 계산 → 저장 · 수량 = 직접 값 / 표에서 찾기 / 다른 로직 블록 · 블록 두 겹 넘으면 고급 | 금액은 맞음(메쌓기 132,132.78) · 걸음 길고 품셈 속 낱말(원문 절 · 중간 값 · 할증·끝수) · 사용자가 같은 날 「수식베이스」로 갈음(09-21 19:17 7번 · 까닭 글 없음) | 09-21 걷음 | +| 6 | 09-21 `98e40f44` `f2052b12` `83752f86` `ce518434` | 흐름 그림을 기본 보기로 + 상자 고치기 + 본떠 만들기 · 컨테이너 셋(기존 · 하이브리드 · C 단독) | 보기·고치기를 한 그림에서 | 상자 안 [고치기] · 정본은 본뜬 뒤 | 사용자 09-21 12:08 「분명히 기존의 방식을 유지하고 하위에 추가 컨테이너로 구현해달라고 했는데」 — 기본 보기를 바꿔 지시 어긋남 · 7시간 뒤 둘 다 삭제 | 09-21 걷음 | +| 7 | 09-21 `4a93cfdf` `42243ba1` | 「로직 개선 시험」 상세 = 컨테이너 넷 · 인력·재료·경비 묶음 · 줄 누르면 자료 모달 | 읽기 쉽게 | 줄 누름 → 모달 | 사용자 09-24 「재료 그룹 항목들은 무반응」 · 표 하나(QF000357)로 뭉침 → 고침 · **읽기용 — 추가·삭제·수정 안 다룸** | 지금 「단가산출 로직」 | +| 8 | 09-21 `448ef666` `c4a5087f` · 09-22 `abd37e89` | 텍스트 수식(두 칸 · 이름 식 / 값 식) | 중간 값 · 덧줄 · 끝수를 줄 글에 녹여 읽게 | 처음엔 [계산] 눌러야 보임 | 사용자 09-22 「내가 해당 단가산출을 접근했을때 바로 보여줘야지」 → 고침 · 이름 식 별칭 안 읽힘(표 키 1,188 · 번호 별칭 654) → 고침 · 그래도 꼴은 `석공노임 * 메쌓기인력.석공 * (1 + 증가율 %) = 석공비` — 점 · 괄호 · % 식 | 있음 | +| 9 | 09-21 `e9447ae7` `be8868ca` | 식으로 새로 만들기(`LogicLab_New*` 4 파일) | 완전 새 로직 — 사용자 제안(09-21 7번 「A X B - C = D … 분석 … 변수 정의」) | `이름 = 식` 줄 적기 → [분석] → 변수마다 「마스터 요소 / 설계 입력 / 고정값 / 표 찾기」 → 단위 → 비목 → 표 찾기는 표 · 값 칸 · **조건 칸마다 식** → 이름 · 결과 단위 · 소유(글자 칸) → 시험 계산 → 저장 | 첫 칸 보기 글부터 식(`잡재료비 = 노무비 * 0.05`) · 변수 갈래 넷 · 비목 · 금액은 ④ 걸음에서야 | 있음(막대 「식으로 새로 만들기」) | +| 10 | 09-21 `e73ef5d3` `c57f0ea0` | 본떠 만들기(복사해서 만들기 · `LogicLab_Copy` 391 줄) | 정본은 못 고침(사용자 확정 3-0) → 수정 = 복사본 | 별칭 꼴 **식 줄 글 칸** 고치기 · 표 바꾸기 모달 · 「그대로 부르기 / 같이 복사하기」 · 소유 · 시험 계산 · 저장 | 식을 직접 고침 · 갈래 말(별칭 · 같이 복사) · 저장 뒤 다른 편집기(#1)로 열림 → **수정 길 두 벌** | 있음(막대 「본떠 만들기」) | +| 11 | 09-21 `cd2e8df3` · 09-22 `f7dd8668` | 알약 — 모달 안 알약 → 수량 칸 안 알약 + 사칙연산 | 계산에 든 표를 하나씩 | 알약 누름 → 그 표 모달 | 사용자 09-22 「모달창 내부 알약을 외부로」 · 알약 글이 처음엔 키(「표 QF000421」) → 「찾은 줄 · 칸」으로 고침 · 같은 표 알약 겹친 로직 564(3장 실측) · **읽기 다듬기** | 있음 | +| 12 | 09-22~24 `79c42224` `cb1b82c1` `4eb81f2b` `f29dc14c` | 열자마자 자동값으로 계산 · 견본 딱지 | 비어서 멈춘 화면(멈춤 180) 없애기 | 없음(자동) | 규칙은 사용자가 정함(09-24 「숫자는 낮은 값 · 글은 첫째 · 참거짓은 거짓」) · 견본 딱지는 「뜻 없음」으로 없앰 · 1,354 멈춤 0 | 있음 — **살릴 것** | +| 13 | 09-24 `f21a6cfb` `af842c03` | 시험 계산 재료·기계 고르기 = 마스터 표 모달 | 키 대신 이름 · 드롭다운 걷음 | 「품목 고르기」 → 표 모달 → 한 줄 | 단위 다르면 경고 딱지 · 저장 안 함 | 있음 — **살릴 것** | +| 14 | 09-24 5·6장 | 무작위 · 전수 점검(1,354) | 보이는 글의 흠 | — | 보이는 글에 엔진 날식이 계속 샘 — 「만약(지게차 == '사용', …)」 · 「로직(GC000268, 기계='0602-0025', 지역=지역)」 · 「{연료}:{지역}」 · `Decimal('100')` · `MT000018.거래가격` — 다 고쳤으나 **식을 보이는 화면은 샘을 끝없이 막아야 함** | 끝 | + +이름 바꾸기도 세 번 — 일위대가 로직 → 단가산출 로직(09-21) · 일위대가 호표 → 단가산출 상세(09-21) · 로직 개선 시험 → 단가산출 로직(09-22). 사용자도 되물음(09-21 23:17 「단가산출 조직을 단가산출 상세로 바꾸는건 아니지?」). + +## 2. 공통 원인 다섯 + +1. **낱말이 만든 사람 말** — 호표 · 덧줄 · 끝수 · 중간 값 · 비목 · 몫 · 별칭 · 정본 / 자체 · GX · 키 · 표 찾기 · 값 칸 · 조건 칸 · 소유(현장 / 공용) · 마스터 요소 · 설계 입력. 근거 — 사용자 「중간 값과 덧줄, 끝수 등 의미가 이해하기 어려움」(09-21) · 같은 표를 「호표」·「단가산출 상세」 두 이름(`_검증_화면글.md` ①) · 이름 세 번 바뀜. +2. **만들기·고치기가 끝내 식 글자** — 지금 남은 길 셋이 모두 식 칸(`이름 = 식` · 별칭 식 · 수량 식·결과 식). 식 없는 시도(#2 · #5 블록)는 하루 안에 걷힘. 식을 보이니 엔진 날식이 화면에 새어 수십 건 막음(#14). +3. **한 화면 · 한 일에 너무 많음, 길은 여러 벌** — 막대 단추 늘 여섯(목록 · 식으로 새로 만들기 · 로직 지우기 · 고친 것 버리기 · 저장 · 본떠 만들기) · 상세 컨테이너 넷 + 편집기 + 접힌 소계 표 · 마법사 여덟 걸음 · 수정 길 둘(#10 별칭 식 ↔ #1 원문 식) · 저장 길 셋(`/save` · `/logic/formula/save` · `/logic/draft` save) · 시험 계산 입력 많게는 19칸(GF000181 맨홀). +4. **결과 · 뒷일이 바로 안 보이고 되돌리기 거침** — 예전 텍스트 수식은 [계산] 뒤에만(사용자 09-22 지적 · 지금은 고침) · 식으로 새로 만들기는 변수를 다 정한 ④ 걸음에서야 금액 · 「로직 지우기」는 표시만 하고 [저장]을 또 눌러야 지워짐 · 「고친 것 버리기」는 통째(한 걸음 되돌리기 없음) · 지우기 전 「이 로직을 누가 쓰나」 안 보임(길 `/logic/combos` 는 있으나 화면이 안 부름). +5. **쉬움을 잰 적 없음** — 검증 줄이 모두 「금액 같음 · typecheck · 날글 0」 · 대표 일을 몇 걸음에 끝내나 · 처음 쓰는 사람이 되나는 안 잼 · 방식 B 는 화면 확인 없이 마감 · 시도 수명 짧음(A·B·C 12시간 · 흐름 그림·마법사 10시간 · 하이브리드·C 단독 7시간) · 09-21 뒤 고친 것은 보기 쪽 24 대 만들기·고치기 2(이름만). + +정해진 틀(원인 아님 · 새 길이 안고 갈 것) — 정본은 못 고침(사용자 확정 09-21) → 수정은 늘 「복사본 만들기」부터. 새 길은 이 걸음을 사용자가 의식하지 않게 한 단추로 감쌀 자리. + +## 3. 새 길이 피할 것 + +- 기본 화면에 식 글자 칸(`이름 = 식` · `찾기(…)` · `만약(…)` · 별칭 식) — 식은 보기 한 줄까지만. +- 위 1번 낱말 — 화면 글은 일상 말로(무슨 말로 바꿀지는 브레인 · 사용자 몫). +- 단추를 늘 다 보이기 — 그 순간 할 수 있는 것만(정본을 연 채 「로직 지우기」가 보이는 일 같은 것). +- 같은 일을 두 길로 — 추가 · 삭제 · 수정 저마다 한 길 · 저장 한 길. +- 지우기를 「표시 → 저장」 두 단계로 · 지우기 전에 쓰는 곳(부르는 로직 · 담은 조합)을 안 보이기. +- 일반 저장 길 `/save` 로 로직 쓰기 — 이 길은 정본을 가리지 않음(코드 읽기 `M01_MasterData_Store.py` `_apply` · **실측 안 함**). 지금 화면 「로직 지우기」도 이 길이라 정본 지우기가 막히는지 확인 필요(브레인 판단). +- 품셈 속 걸음(원문 절 · 중간 값 · 할증·끝수)을 사용자 앞에 늘어놓는 긴 마법사. +- 엔진 날식 · 키(`GC000268` · `QF000421` · `MT000018.거래가격` · `{지역}`)가 화면 글로 새는 것 — 서버 조각 글만 찍음. +- 지금 화면 손대기 — 09-21 낮 기본 보기를 바꿔 버린 일(사용자 12:08 지적)(지시 어긋남)의 되풀이 금지 · 34장 확정대로 `EasyCalc/` 안에서만. +- 「금액 같음」만으로 끝내기 — 34-4 대표 일 여섯 걸음 수 · 예외로 잼. + +## 4. 새 길이 살려 쓸 것 + +### 4-1. 서버 길(`/api/m01` · 엔진 그대로) + +| 길 | 하는 일 | 새 길 쓰임 · 주의 | +|---|---|---| +| `GET /logics?owner=` | 로직 목록 · 소유 거름 | 첫 부름 5.6초 · 다음 0.6초(`_검증_화면늦음.md`) — 첫 화면 기다림 글 필요 | +| `GET /logic?key=` | 로직 한 줄 | 열기 | +| `GET /logic/auto?key=` | 자동값(고르기 첫째 · 수 가장 낮은 값) | 열자마자 계산된 모습 | +| `POST /calc` | 저장 전 초안(`key` "" · `row`)도 계산 · `고름` · 빈 값은 그 줄만 비움 | 고치는 즉시 금액 보이기 — 핵심 | +| `POST /text` | 사람이 읽는 줄 · 조각(알약 · 날식 걸러짐) · 이름 식 / 값 식 | 「어떻게 셈했나」 한 줄 | +| `POST /logic/new` · `/logic/copy` · `/logic/edit` · `/logic/delete` | 자체 로직 전용 · 키 GX 서버 발급 · 정본 403 · 낡은 판본 409 · 검사 422 · 부르는 로직 있으면 지우기 422 | **지금 어느 화면도 안 부름** · 시험 `test_m01_make.py` 8 — 새 길의 추가 · 수정 · 삭제 한 길로 알맞음 | +| `GET /logic/combos?key=` | 이 로직을 담은 일위대가 조합 | 지우기 전 알림 · 지금 안 부름 · 조합이 M02 층으로 옮겨진 뒤 답이 맞는지 확인 필요 | +| `GET /sections` · `/tables?section=` · `GET /table/options` · `GET /table` | 원문 절 · 절의 표 · 표 조건 값 목록 · 표 통째 | 고르기 목록(식 대신 고르기) | +| `GET /elements` · `/pick` · `/materials` · `/rows` | 요소 찾기 · 직종 · 재료 후보 · 마스터 표 | 사람 · 재료 · 장비 고르기 | +| `GET /logic/formula` · `POST /logic/formula/preview` · `/logic/formula/save` | 별칭 식 펴기 · 되돌리기 · 저장 | 화면에 식을 안 보여도 「복사해서 한 칸만 바꾸기」 속 일꾼으로 | +| `POST /logic/draft` | 식 → 변수 뽑기 · 단위 검사 · 물고 도는 식 막기 · 저장 | 고르기로 조립한 식의 검사용 | + +### 4-2. 화면 함수(부를 만한 것) + +| 파일 | 함수 | 하는 일 | +|---|---|---| +| `M01_MasterData_UI_Logic_Api.ts` | `fetchLogics` · `fetchLogic` · `fetchAuto` · `runCalc` · `runText` · `searchElements` · `fetchMaterials` · `copyLogic` · `fetchLogicFormula` · `previewLogicFormula` · `saveLogicFormula` · `draftLogic` · 타입 `LogicRow` · `HoLine` · `LogicInput` · `CalcAnswer` · `TextLine` | 서버 길 부르기 · 로직 모양 | +| `M01_MasterData_Api_Fetch.ts` | `fetchTables` · `fetchTable` · `fetchRows` · `fetchPick` · `searchMaterials` | 표 · 마스터 줄 · 직종 · 재료 찾기 | +| `M01_MasterData_UI_Logic_Money.ts` | `formatMoney` · `formatPrice` | 돈 정수 · 200원 미만 단가 유효숫자 | +| `M01_MasterData_UI_Logic_Text.ts` | `plainReason` · `safeReason` | 멈춤 까닭 쉬운 말 · 날글 거름 | +| `M01_MasterData_UI_Logic_Note.ts` | `loadTable` · `matchRow` · `explain` | 원문 표 읽기 · 걸린 줄 · 식 풀이 | +| `M01_MasterData_UI_Logic_PickTable.ts` | `openPickTable` | 재료 · 기계 표 모달(검색 칸 채워 엶 · 잡힌 줄 칠함) | +| `M01_MasterData_UI_LogicLab_Modal.ts` | `openMaterialModal` · `openTableModal` · `openLogic` | 줄 자료 · 표 모달 | +| `M01_MasterData_UI_LogicLab_Pill.ts` | `pillButton` · `fragmentRow` | 조각 → 알약 · 글자 줄 | +| `ui_template/` | `createButton` · `createInputField` · `createSelectField` · `showConfirmDialog` · `showToast` · 항목 고르기 모달 · 공용 나무 보기(21-5) | 공용 틀 | + +주의 — `LogicLab_*` 는 지금 화면과 같이 바뀌는 파일. `EasyCalc/` 는 `Logic_Api` · `Api_Fetch` · `Logic_Money` · `Logic_Text` · `ui_template` 처럼 덜 바뀌는 것만 부르는 편이 폴더째 지우기 · 지금 화면 고치기 양쪽에 안전. + +### 4-3. 살릴 생각(사용자가 좋다고 한 것) + +- 한 번에 질문 하나(방식 A) — 「신규 등록일 경우 첫번째 방식이 괜찮고」(09-21). +- 한눈에 보는 흐름(방식 C) — 「등록 후 전체를 볼 때는 … 눈에 잘 들어옴」(09-21). +- 인력 · 재료 · 경비 세 묶음 + 소계(09-21 사용자 지시 · 지금 화면). +- 열자마자 계산된 모습 · 돈은 정수(09-24 사용자 규칙). +- 표는 누르면 그 표만 · 재료는 키 아닌 이름 · 고르기는 마스터 표 모달. +- 값이 비면 그 줄만 비우고 계속(전체 멈춤 없음).