chore(plan): 10-10 둘째 묶음 요구 31 · 32 · 조사 AA(설계내역서 자유 편집 · 184장)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
This commit is contained in:
@@ -43,3 +43,7 @@
|
||||
28. 지제단가대비표에는 수량열이 빠지는게 맞음.
|
||||
29. 원가검토 페이지의 상위탭과 하위탭의 구성을 하려고 함. 양식은 B08의 페이지 구성을 보면됨.
|
||||
30. 원가검토 페이지의 탭구성, 일위대가(일위대가목록표, 일위대가표), 단가산출(단가산출근거목록표, 단가산출근거), 중기(중기목록표, 중기사용료, 중기시간금액집계표, 경비목록표, 경비수량금액집계표), 재료(재료비목록표, 자재단가목록표, 재료비수량금액집계표), 노무(노무비목록표, 노무비수량금액집계표)<<<지정안된 항목들은 상위탭임.
|
||||
|
||||
## 추가 (182장 뒤 · 23번 보충)
|
||||
31. 설계 내역서의 내용은 기본적으로 들어간 내용은 고정이 아님. 초기에 기본적으로 만드는 로직은 있지만 이걸 사용자가 수정할 수 있어야하며 추가하는 행과 삭제도 자유로워야함. 다시 말해 자유롭게 작성이 되고 단가 산출과 일위대가에 연결할 수 있어야한다는 것임.
|
||||
32. 추가로 특정 셀의 텍스트 입력으로 마우스 우클릭이 브라우져 옵션이 보임. 우리프로그램에서는 우클릭으로 브라우져 옵션보이기는 없는 상태임.참고
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
# 조사 AA — B09 설계내역서 자유 편집 (10-10 · 요구 31 · PLAN 184 · 읽기 전용 조사 에이전트)
|
||||
|
||||
| 약칭 | 뜻 |
|
||||
|---|---|
|
||||
| `B09/` | `B09_Estimation/B09_Estimation_` |
|
||||
| 자동 줄 | 기본 로직이 B08 수량으로 짠 줄(`sec:` 제목 · `earth:` · `st:` · `haul:` · `mat:` · `fee`) |
|
||||
| 수기 줄 | 166-2 · 182 사용자 줄(`hand:` · `user.bill.rows`) |
|
||||
| 덮개 | 사용자 값 `user_values.json` 의 `bill`(고친 칸 · 차례 · 지운 표시) |
|
||||
| 짝 | 파이썬 · TS 같은 식(CLAUDE.md 5장 계산 자리 ①) |
|
||||
|
||||
## 0. 지금 구조 지도
|
||||
|
||||
| 자리 | 파일:줄 | 줄 수 |
|
||||
|---|---|---|
|
||||
| 자동 줄 짜기(서버 단독) — 토공 17 `EARTH` · 구조물 열 · 운반 6 `HAUL` | `B09/Bill_Items.py:25-43 · 46 · 50-57 · 66-148` | 154 |
|
||||
| 토공 · 운반 연결 = `ref: None` · 호표 단가 = 빈 묶음 | `B09/Bill_Items.py:80 · 134 · 151-154` | — |
|
||||
| 공종 나무 고정 14 · 직접비 = 맨 위 1~4 | `B09/Calc_Bill.py:36-53` ↔ `.ts:31-47` | 377 ↔ 363 |
|
||||
| 항목 셈 · 수량 덮기(`qty_auto`) | `B09/Calc_Bill.py:72-98` ↔ `.ts:64-89` | — |
|
||||
| 대비표 「별도」 → 4 자재대 · 「관급」 → 관급자재대 | `B09/Calc_Bill.py:101-121 · 270-273` ↔ `.ts:91-110 · 261-265` | — |
|
||||
| 연결 → 단가 하나(dg · sg · logic · hopyo) | `B09/Calc_Bill.py:129-144` ↔ `.ts:118-135` | — |
|
||||
| 구조물 열 → 대가 블록마다 한 줄 · 키 꼬리 = 「대가n」 | `B09/Calc_Bill.py:223-245(:237)` ↔ `.ts:214-238(:228)` | — |
|
||||
| 수기 줄 끼움(`after`) · 레벨(`parent` · 묶음 합) | `B09/Calc_Bill.py:147-220 · 274-280` ↔ `.ts:138-211 · 266-270` | — |
|
||||
| 조달수수료 줄 · 공종 합(자기 + 부모 하나) · 제목 줄 · `sums` | `B09/Calc_Bill.py:281-365` ↔ `.ts:271-351` | — |
|
||||
| 저장 다듬기 — `hand:` 키 · 아는 공종만 · `qty` 수만 | `B09/Store.py:95-143` | 213 |
|
||||
| 표 · 고칠 칸(자동 줄 = 수량만) · 레벨 class · 「연결 ▾」(수기 항목만) | `B09/UI_Tabs_Bill.ts:29-95` | 97 |
|
||||
| 우클릭 — 줄 추가 · 레벨 · 연결 · 지우기(수기 줄만) · 자동 줄 = 「수량 자동으로」뿐 | `B09/UI_Tabs_Bill_Edit.ts:108-145 · 172-206 · 310-336` | 386 |
|
||||
| 연결 고르기 창(dg · sg 목록 · M01 로직) | `B09/UI_Tabs_Bill_Edit.ts:209-307` | — |
|
||||
| 캐시 `b09-estimation`(user 통째) · [저장] PUT · 자동저장 없음 · [초기화] 없음 | `B09/UI_Shell.ts:170-179 · 258-290` | 334 |
|
||||
| 레벨 CSS lv1~6 | `B09/UI_Page.css:48-81` | 114 |
|
||||
|
||||
흐름 — GET 때 서버가 B08 → 자동 줄(`Router.py:115`) → 셈(`Router.py:64-81` · 두 번 셈 `:84-94`) · 조작 중 = 브라우저 짝 셈(`UI_Shell.ts:116-145`) · [저장] = 덮개만 PUT → 서버 정본 다시 셈(`Router.py:139-147`). 내역 결과는 저장 안 함.
|
||||
|
||||
### 검증 프로젝트 실측(읽기만 · GET 셈 그대로 · 스크래치 = 시스템 임시 폴더)
|
||||
|
||||
| 프로젝트 | 줄 | 제목 | 항목(토공 · 구조물 · 운반 · 자재 · 조달) | 단가 있는 항목 | 빈 줄 | `sums` | 덮개 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 검증_랩탑메인 | 40 | 14 | 26 (17 · 1 · 6 · 1 · 1) | 2 | 23 | 넷 다 None | 없음 |
|
||||
| 엄상준_검증 | 47 | 14 | 33 (17 · 7 · 6 · 2 · 1) | 2 | 29 | 넷 다 None | 없음 |
|
||||
|
||||
- 토공 · 운반 23 줄 = 단가 원천 없음(호표 빈 묶음) → 빈 줄 → 원가계산서 전부 빈칸. 자동 줄에 연결을 못 다는 것이 31번의 실제 막힘.
|
||||
- 구조물 키 = `st:pipe:revet|돌쌓기(찰)|1.5#대가4` 꼴 — 대가 번호가 키에 듦 → 번호가 밀리면 덮개(지금 `bill.qty`도)가 엉뚱한 줄 · 고아.
|
||||
- 랩탑 storage 의 `user_values.json` = 0 개(옛 덮개 옮길 자료 없음 · 데스크탑 미확인).
|
||||
|
||||
## 1. 내역서를 읽는 곳
|
||||
|
||||
| 읽는 곳 | 파일:줄 | 받는 것 | 자유 편집 영향 |
|
||||
|---|---|---|---|
|
||||
| 총괄 · 원가계산서 셈(짝) | `B09/Calc_Total.py:128-143` ↔ `.ts:108-121` · 부름 `Router.py:78-80` · `UI_Shell.ts:143` | `bill.sums` 넷(재료 · 노무 · 경비 = 직접비 합 · `supply_net` = 관급 순자재대)만 | `sums` 꼴 지키면 안 고침 · 직접비 판정만 셈 안에서 바뀜 |
|
||||
| 관급자재대 · 조달수수료 | `B09/Calc_Total.py:205-209` | `supply_net` + 율(조달수수료는 따로 셈 · 내역 fee 줄 안 읽음) | 관급 줄이 관급 묶음 밖으로 나가면 금액 어긋남 → 막음 |
|
||||
| 총괄 「가. 순공사비계」 줄 | `B09/UI_Tabs_Total.ts:151-155` | `total.sums` | 없음 |
|
||||
| 집계표 넷 역전개 | `B09/Summary.py:47-66` | 항목 줄(`kind == item`) 수량 × `ref`(material · 호표 키) | 자동 줄에 연결 = 역전개에 듦(바라던 것) · 묶음 줄 안 셈 그대로 |
|
||||
| 재료비목록표 수량(183-1 두 번 셈) | `B09/Router.py:84-94` → `Calc_Base.py:338` | 역전개 총수량 | 위와 같음 · 서버만 |
|
||||
| 재료비목록표 「쓰는 곳」 | `B09/UI_Tabs_Base.ts:239-240` | 항목 `ref.tab == material` → 「내역 자재대」 | 없음 |
|
||||
| 산근 손 로직 · 단가 수요 | `B09/Sangeun.py:477-489 · 496` · `Router.py:97-102` | `user.bill.rows[].ref.tab == logic` | 자동 줄 로직 연결도 같은 자리면 그대로 · 「쓰는 곳」 글만 이름 없을 때 키 |
|
||||
| 연결 점검 「연결 없음」 | `B09/UI_Tabs.ts`(gaps) | 셈 `gaps` | 지운 줄 = gaps 없음 |
|
||||
|
||||
## 2. 설계안 비교
|
||||
|
||||
공통 전제 — 초기값 = 기본 로직이 지금 B08 로 짠 내역(지금처럼 GET 때 셈 · 저장 안 함). 작업본 = 덮개(`user_values.json`). 캐시 = `b09-estimation`. 덮개가 비면 = 초기값 표. [저장] 때 서버는 B08 원천 + 덮개로 다시 셈(금액 · 원천 수량을 브라우저에서 받아 적지 않음).
|
||||
|
||||
| | 안 A 덧칠 넓힘 | 안 B 통째 굳힘 | ⬜ 안 C 차례표 + 원천 덮개(추천) |
|
||||
|---|---|---|---|
|
||||
| 저장 꼴 | `qty` → `edit{키: 칸}` · `gone[]` · `move{키: section · after}` · 수기 줄 + 새 공종 줄 | 첫 손질 때 표 전체 값(이름 · 수량 · 연결)을 줄 목록으로 복사 · `src` 키 | `{v: 2, rows: [표 차례 전체 {key, parent, 고친 칸만}], gone: [자동 키]}` |
|
||||
| B08 수량 바뀜 | 고친 칸 아니면 따라감 | 줄마다 「따라감」 표시 따로 · 이름 · 연결 개선은 안 들어옴 | 칸 없음 = 원천 따라감 · 칸 있음 = 지킴(이름 · 규격 · 단위 · 연결도) |
|
||||
| 지운 자동 줄 | `gone` | 목록에 없음 · 새 줄 판정 따로 | `gone` |
|
||||
| 차례 · 레벨 | 기본 차례 + `after` 끈 + `parent` — 두 벌 | 목록 차례 하나 | 목록 차례 + `parent` 하나 |
|
||||
| 새 1단 공종 | SECTIONS 밖 갈래 · 공종 합 · 다듬기 · 레벨 셈 모두 덧갈래 | 됨 | 됨(맨 위 묶음 줄 · `cost`) |
|
||||
| 서버 정본 | 맞음 | 굳힌 원천 수량이 낡음 · 받아 적는 꼴 | 맞음(받는 것 = 차례 · 고친 칸뿐) |
|
||||
| 고칠 양 | 작음 | 큼 | 중간(셈 뼈대 한 번 바꿈) |
|
||||
| 위험 | 끈 대상 지움 · 자동 줄 사라짐 → 자리 튐 · 갈래 쌓임 | 기본 로직 고침이 옛 프로젝트에 안 닿음 | 셈 짝 큰 손질 · 옛 덮개 읽기 |
|
||||
|
||||
### 추천 안 C 세부
|
||||
|
||||
- 저장 꼴 — `rows` = 표 차례(부모 먼저 · 자손 이어서) · `parent` 없음 = 맨 위 · 제목 · 묶음 = `kind: "group"`(기본 제목 `sec:*` 포함) · 맨 위 묶음 `cost` = `direct`(기본) | `supply`(`sec:G` 하나) · 자동 줄 칸 = 없음(원천) / 값 / null(일부러 빈칸) 셋 갈래 · 수기 줄 = 모든 칸.
|
||||
- 셈(짝 ①) 1 — 기본 나무 = 지금 그대로(SECTIONS + 자동 줄 기본 차례) → 덮개 비면 지금 표와 같은 값.
|
||||
- 셈 2 — v2 면 `rows` 차례 · 부모로 다시 세움 · `gone` 뺌 · `rows` 에 없는 자동 줄(새 구조물 열 · 대비표 새 표시) = 기본 제목 끝(제목 지웠으면 표 끝) + 비고 「새 자동 줄」 · 원천이 안 낸 키 = 안 보임(자리만 남음).
|
||||
- 셈 3 — 칸 덮기 = 고친 칸 앞섬 · `auto_{칸}`(지금 `qty_auto` 넓힘)로 원천 값 남김 · 연결 덮기 = `ref_price` 하나(구조물 블록 단가보다 사용자 연결 앞섬).
|
||||
- 셈 4 — 모든 묶음 = 자손 항목 합 + 「빈 줄 n」(`_nest` 일반화 · 공종 합 자기 + 부모 하나 규칙 없앰) · `level` = 깊이 · 번호 = 레벨 1 · 2 묶음 차례 자동(관급 번호 없음).
|
||||
- 셈 5 — `sums` = `cost: direct` 맨 위 묶음 자손 항목 합(지금 `DIRECT` 1~4 자리) · `supply_net` = `supply` 묶음 자손 항목 재료비 · 조달수수료 줄 = `supply` 묶음 끝 고정 → `Calc_Total` 안 고침.
|
||||
- 셈 6 — 옛 꼴(v 없음 · `qty` · 수기 줄 `section` · `after`) = 지금 규칙으로 읽음 · 첫 손질 때 v2 로 굳음.
|
||||
- 구조물 키 꼬리 = 대가 블록 키(`Calc_Bill.py:237` ↔ `.ts:228`) — 번호 밀림에 덮개 안 흔들림.
|
||||
- 화면 — 모든 줄 우클릭: 위 · 아래 · 하위 줄 추가 · 새 공종(맨 위 묶음) 추가 · 위로 ↑ · 아래로 ↓(같은 부모 형제와 자손째) · 들여쓰기 → · 내어쓰기 ← · 묶음 줄로 · 항목으로 · 연결 ▸ · 연결 풀기 · 자동 값으로 되돌리기(그 줄 고친 칸 지움) · 줄 지우기.
|
||||
- 화면 — 고칠 칸 = 모든 항목 줄 명칭 · 규격 · 단위 · 수량 · 묶음 줄 이름 · 「연결 ▾」 = 모든 항목 줄 · 고친 칸 = 칸 강조(공용 표 `cellClass` · 183-3) + 풍선 「자동 값 …」.
|
||||
- 화면 — 첫 손질 = 보이는 줄의 키 · 부모 · 차례만 v2 `rows` 로 굳힘(자동 줄 값은 안 옮김).
|
||||
- [내역 초기화] — 확인 창(`ui/elements.ts:317` `showConfirmDialog`) → `bill` 뺀 user 로 PUT → 서버 정본(덮개 오버레이 · 5장 허용 자리).
|
||||
- 안 깨짐 — `mat:` 관급 줄 = 관급 묶음 밖 못 옮김 · 지우기 = 대비표 「관급 · 별도」 표시 풀기로 이음(주인 = 대비표) · 별도 자재 줄 = 직접비 묶음 안 어디든 · `fee` · `sec:G` = 옮기기 · 지우기 · 연결 없음 · `mat:` · `fee` = 연결 메뉴 없음(단가 주인 = 대비표 · 율).
|
||||
- 5장 지킴 — 캐시 즉시 · 자동저장 없음 · 덮개 오버레이는 [저장] · [초기화]만 · 셈 = 짝 ①(조작 중 브라우저 · [저장] 서버 정본).
|
||||
|
||||
## 3. 고칠 파일 · 시험 · 나눌 경계
|
||||
|
||||
| 파일 | 지금 | 뒤(추정) | 700 | 고칠 것 |
|
||||
|---|---|---|---|---|
|
||||
| `B09_Estimation/B09_Estimation_Calc_Bill.py` | 377 | 440 | 없음 | 나무 다시 세움 · 칸 덮기 · gone · 새 자동 줄 자리 · 묶음 합 · cost 합 · 번호 · 블록 키 · 옛 꼴 |
|
||||
| `B09_Estimation/B09_Estimation_Calc_Bill.ts` | 363 | 425 | 없음 | 위와 같음(짝) |
|
||||
| `B09_Estimation/B09_Estimation_Store.py` | 213 | 250 | 없음 | `clean_bill` v2(아무 자동 키 · 칸 셋 갈래 · `gone` · `cost` · 부모 키) · 옛 꼴 통과 |
|
||||
| `B09_Estimation/B09_Estimation_Sangeun.py` | 563 | 565 | 없음 | `hand_sources` 쓰는 곳 글(이름 없으면 셈 이름) |
|
||||
| `B09_Estimation/B09_Estimation_UI_Tabs_Bill_Edit.ts` | 386 | 480 | 없음 | 메뉴 전 줄 · 위로 · 아래로 · 새 공종 · 굳힘 · 칸 고침 v2 · 자동 값으로 · 관급 · fee 막음 |
|
||||
| 새 `B09_Estimation/B09_Estimation_UI_Tabs_Bill_Link.ts` | — | 110 | 없음 | 연결 고르기 창 떼어 냄(`Bill_Edit.ts:209-307`) — Edit 500 넘으면 |
|
||||
| `B09_Estimation/B09_Estimation_UI_Tabs_Bill.ts` | 97 | 115 | 없음 | 고칠 칸 · 「연결 ▾」 전 항목 · 칸 강조 · 풍선 · 안내 글(「엑셀 꼴 고정」 지움) |
|
||||
| `B09_Estimation/B09_Estimation_UI_Shell.ts` | 334 | 350 | 없음 | 좌측 [내역 초기화] |
|
||||
| `B09_Estimation/B09_Estimation_UI_Page.css` | 114 | 122 | 없음 | 고친 칸 강조 |
|
||||
| `Calc_Total` · `Summary` · `Router` · `UI_Tabs_Base` · `UI_Tabs_Total` | — | — | — | 안 고침(`sums` · 항목 줄 꼴 그대로) |
|
||||
|
||||
시험
|
||||
|
||||
| 시험 | 할 것 |
|
||||
|---|---|
|
||||
| `test_145_3_b09_bill.py:218-235` | 블록 키 꼬리 「대가n」 → 블록 키 · 나머지(제목 · sums · 거울)는 덮개 빈 꼴이라 그대로 통과해야 함 |
|
||||
| `test_166_2_b09_bill_hand.py:92-135 · 197-231` | 옛 꼴(qty · after) = 「옛 꼴 읽기」 판정으로 남김 · 메뉴 글(자동 줄도 전체 메뉴) 고침 |
|
||||
| `test_182_b09_bill_level.py:94-146 · 197-` | 제목도 묶음 합 규칙 · 레벨 값 · 메뉴(자동 줄 · 제목) 고침 |
|
||||
| 돌리기만 | `test_145_4` · `test_145_5` · `test_183_b09_material_list` · `test_155` · `test_145_2`(한 바퀴) · `test_171_1` · `test_181_1` · `test_183_3` |
|
||||
| 새 `test_184_2_b09_bill_free.py` | 덮개 빈 꼴 = 지금 표 · 자동 줄 칸 덮기(이름 · 규격 · 단위 · 수량 · 연결) · B08 수량 바뀜 = 안 고친 칸 따라감 · 고친 칸 지킴 · null = 빈칸 · gone 안 살아남 · 새 자동 줄 기본 자리 · 원천 사라진 줄 안 보임 · 새 1단 공종 → `sums` 듦 · 관급 갈래 `supply_net` · fee 끝 자리 · 위로 · 아래로 · 들여 · 내어 · 지우기 · 옛 꼴 → v2 · 블록 키 · TS 거울 · 다듬기 왕복 · 자동 줄 로직 연결 → `sg_hand` · 메뉴 TS · [내역 초기화] 배선 |
|
||||
|
||||
나눌 경계(두 창 가능 · 차례 있음)
|
||||
|
||||
- 창 ① 셈 · 저장 — `Calc_Bill` 짝 · `Store` · `Sangeun` 한 줄 · 셈 · 거울 · 다듬기 시험. 짝 둘은 한 창이 함께.
|
||||
- 창 ② 화면 — `UI_Tabs_Bill` · `Bill_Edit`(+ `Bill_Link`) · `UI_Shell` · CSS · 메뉴 · 굳힘 · 초기화 TS 시험.
|
||||
- 계약 = `user.bill` v2 꼴 + 셈 출력 줄 칸(모든 줄 `parent` · `auto` 표시 · `auto_{칸}` · `level` · `no` · `cost`) — PLAN 184 절에 먼저 적음 · ② 는 가짜 rows 로 시험 → ① push 뒤 ② 합침.
|
||||
- 184-1(`2d11682d2` · `Bill_Edit.ts` 끝 우클릭)은 이미 이 줄에 있음 → 그 뒤에서 시작.
|
||||
- 크기 — 한 창이면 하루 안 큰 장 하나(셈 짝 뼈대 + 메뉴) · 나누면 ① 반 · ② 반.
|
||||
|
||||
## 4. ⬜ 정할 것
|
||||
|
||||
- ⬜ AA-a 설계안 — 추천 안 C(차례표 + 원천 덮개).
|
||||
- ⬜ AA-b 초기값 · [초기화] — 추천 초기값 = 기본 로직이 지금 B08 로 짠 내역(저장 안 함) · [초기화] = 덮개 지움(`initial_snapshot/` 안 씀 · 5장 초기값 층 자리 그대로).
|
||||
- ⬜ AA-c B08 바뀜 — 추천 안 고친 칸 따라감 · 고친 칸 지킴(수량 · 이름 · 규격 · 단위 · 연결 같은 규칙).
|
||||
- ⬜ AA-d 원천에서 사라진 자동 줄 — 추천 안 보임(자리만 남음 · 다시 생기면 그 자리) / 고친 칸 있으면 빈칸 줄로 남김.
|
||||
- ⬜ AA-e 새 자동 줄 자리 — 추천 기본 제목 끝 + 비고 「새 자동 줄」.
|
||||
- ⬜ AA-f 새 1단 공종 돈 갈래 — 추천 순공사비(직접비)에 듦 · 관급 갈래 = 관급자재대 하나.
|
||||
- ⬜ AA-g 관급 자재 줄 — 추천 관급자재대 밖 못 옮김 · 지우기 = 대비표 표시 풀기 / 자유(금액 어긋남 감수).
|
||||
- ⬜ AA-h 묶음 줄 지우기 — 추천 자식 위로 올림(182 그대로) / 자손째 지움(확인 창).
|
||||
- ⬜ AA-i 옮기기 — 추천 메뉴 위로 ↑ · 아래로 ↓ + 들여 · 내어쓰기 / 끌어 놓기(공용 표 창 그리기라 큼).
|
||||
- ⬜ AA-j 깊이 한도 — 추천 5 레벨(CSS lv1~6 있음 · 지금 최대 5).
|
||||
- ⬜ AA-k 번호 — 추천 레벨 1 · 2 묶음 차례 자동(1 · 1.1 · 관급 없음) / 사용자가 이름에 씀.
|
||||
- ⬜ AA-l 구조물 줄 키 — 추천 꼬리 = 대가 블록 키(번호 밀림 막음).
|
||||
- ⬜ AA-m [내역 초기화] 자리 — 추천 좌측 패널 단추 + 확인 창 · 바로 PUT / 제목 줄 우클릭 → 캐시만.
|
||||
- ⬜ AA-n 옛 덮개(166-2 · 182 저장) — 추천 지금 규칙으로 읽고 첫 손질 때 v2(랩탑엔 자료 0 · 데스크탑 견본 대비).
|
||||
Reference in New Issue
Block a user