knowledge(요구): 요구서 621 · 분석 셋 — 경쟁사 출력 불러오기 단계 체계 · 요소 기준 연결 · 엑셀 세 보기 · 호표 참조 · 하이라이트
PLAN 776~779 짝 · 정함(브레인) 여섯 · 사용자 물음 둘(778-3 · 4 만 기다림) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,321 @@
|
||||
# 분석 621-A — 경쟁사 출력 불러오기 분석 단계 체계 · 호표 참조(요구 621-1 · 621-4 · 조사 · 읽기만)
|
||||
|
||||
조사 = 코드 따라감 + 여덟 파일(`resources/tester/helper_m02_hopyo_golden.py` FILES)을 지금 파서 그대로 부름(`tmp/brain_621/A/probe621.py` → `out621.json` · `probe621b.py` → `out621b.json` · `probe621c.py` 단계 지문 · 시간). 코드 · storage · git · DB 안 고침. 경로 약어 `M02/` = `M02_MasterTemplete/` · 파일 이름 `M02_Hopyo_` 머리 뺌(예 `Build.py` = `M02/M02_Hopyo_Build.py`).
|
||||
|
||||
## 0. 요약 열 줄
|
||||
|
||||
1. 흐름 = 올림(읽기 · 판별 · 격자 · HP 저장) → 뒤 셈(지문 · 순위 · 판정 → 맞춤셈 캐시) → 보기(줄마다 갈래 · 장부 · 판정 조립) → 만들기(일위대가 SC · 단가산출 SK · 별칭 장부) → [끝내기] — 서버 27 파일 8,120 줄 · 700 줄 넘는 파일 없음(가까움 = `Build.py` 608 · `M02_Labor_Router.py` 624 · `Hopyo_Api.ts` 676 · `Hopyo_Check.ts` 663).
|
||||
2. 두 형식은 읽기 직후 이미 거의 같은 꼴(HP) — 호표 · 줄 칸 공통 · 갈림은 **단가산출 블록 안 하나**(EST = 글만 · STmate = 글 + `자원`).
|
||||
3. 그 갈림이 읽기 뒤로 샘 — 지문(`Finger.py:138` `자원` 있음 if · 풀이 두 벌) · 몫(`Shares.py:94` · `:145` 두 벌) · 직접 호표 근거글(`Finger.py:283`) · 블록 글 단가(`Elem.py:28` EST 꼴 정규식) · 끝수 대조 셋(`Build.py:460-462`) · 줄 갈래 규칙도 세 곳(`Excel.py:145` · `Stmate.py:168` · `Finger.py:303` — 1,350 줄 중 차이 0).
|
||||
4. 같은 일 두 번 = 엑셀 두 번 열기(거창 읽기 3.3 초 + 격자 3.9 초) · 블록 글 세 번 풂 · 기계 셋 줄 세 번 하나로 · 보기 한 번에 HP 세 번 읽고 두 번 해시 · 하위 먼저 차례 서버 · 화면 두 벌 · 조항 견줌 대체 몸(안 씀).
|
||||
5. 실측(여덟 파일) = 호표 245 · 줄 1,350 · 블록 459(불림 206) · 셈 단위 275 · STmate 자원 639 — 형식에만 = STmate 코드 · 근거글 · 블록 규격 / EST 검산 · 총괄표 · 비고 참조 표지 · 블록 금액 · 블록 단가는 둘 다 엑셀에 있으나 읽기가 버림.
|
||||
6. 공통 중간 꼴 가능 — Book(호표 · 줄 · 블록 · 블록 항목) 하나에 두 형식이 다 담김 · EST 블록 글 풀이를 정규화 단계로 올리면 지문 단계부터 형식 모름.
|
||||
7. 제안 단계 = ① 읽기 · 판별 ② 정규화(Book · 갈래 한 번) ③ 지문 ④ 요소 연결 ⑤ 구조 맞춤 ⑥ 만들기 + 보기 조립 — 옮기기 전 여덟 파일 단계 출력 고정 시험(S1 Book · S2 셈 단위 지문 ≈ 17 초) · 지문 해시 그대로 = 지킴 선.
|
||||
8. 요구 4 지금 = 이미 「두 개」 — 하위 호표 = 자기 일위대가(SC) 따로 · 부모 줄 = 그 SC **사본 블록**(740-1 · 원본 연결 없음) · 하위 먼저(`Build.py:545-562` · `Hopyo_Sheet.ts:127`) · 하위 확인 전 = 409 「제N호표 먼저 확인」 · 「한 개」로 납작해지는 길 = [구조물 조합으로] · 붙여넣기 · B09 통째(하위 미확인 → 엑셀 단가 고정 줄).
|
||||
9. 호표 참조 실측 = 참조 줄 90 · 부르는 호표 60 · 불리는 호표 54 · 깊이 최대 3 · 순환 · 자기 참조 · 못 찾음 · 단위 다름 · 한 호표 같은 하위 둘 모두 0 — 막힘 = 다시 불러오면 SC 늘 새로(SK 만 733 재사용) · 하위 실패 연쇄 · 사본이라 하위 고쳐도 부모 그대로.
|
||||
10. 정할 것 셋 = 부모 줄 꼴(가 사본 유지 · 권함 / 나 살아 있는 참조 / 다 고정 줄 + 이음) · 하위 함께 만들기(권함) · 다시 불러올 때 같은 내용 SC 씀(권함) — 일감 = 창 넷(W1 고정 시험 S → W2a 읽기 · 정규화 M → W2b 지문 형식 모름 M · W3 요구 4 · 만들기 M 병행).
|
||||
|
||||
---
|
||||
|
||||
## A. 지금 흐름 지도
|
||||
|
||||
### A-1. 엑셀 올림 → [끝내기] 단계
|
||||
|
||||
| # | 단계 | 길(서버) · 화면 | 파일 · 함수 | 하는 일 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | 올림 | 마법사 ① `Hopyo_Wizard.ts` → `POST /layers/{층}/hopyo` | `M02_Labor_Router.py:285` → `_upload` `:231-247` | 지문(`Store.fingerprint` `Store.py:68`) · 하루 지난 HP 끝냄(`Forget.sweep` `Forget.py:158`) · 같은 지문 작업 중 = 이어서(`:234`) |
|
||||
| 1-1 | 읽기 · 판별 | 〃 | `Excel.read_book` `Excel.py:242` → `_sheets` `:83-115`(STmate 판별 `:95` · 넘김 `:245` → `Stmate.read` `Stmate.py:239`) | EST = 머리 글로 열 찾기(`Excel.py:118`) · 호표 · 줄 · 갈래(`kind_of` `:145`) · 블록(`Basis.read` `Basis.py:101`) · 이름 이음(`_by_name` `:225`) · 검산(`:298-304`) / STmate = 고정 열 · 코드(`Stmate.py:33-43`) · 목록표(`:70`) · 블록 + 자원(`:88-164`) · 갈래(`_kind` `:168`) |
|
||||
| 1-2 | 격자 | 〃 | `Grid.read` `Grid.py:247` | 엑셀 다시 엶(xlsx `Grid.py:218` → `Excel._sheets` · xls `:169` formatting_info) → 보기용 Workbook |
|
||||
| 1-3 | 저장 | 〃 | `Store.save` `Store.py:111-140` | `실무자료/HP-######.json` · `격자/HP-######.json` · `불러옴.json` 번 |
|
||||
| 1-4 | 뒤 셈 예약 | 〃 | `Fit.ensure` `Fit.py:408` → 스레드 `run_job` `:362` | 셈 단위(`units` `:303` = 블록 + 부르는 줄 · 블록 없는 기계 줄 · 직접 줄 호표) 마다 `Verdict.block` |
|
||||
| 2 | 맞춤 셈(뒤) | — | `Verdict.block` `Verdict.py:98-157` | 지문 `Finger.excel` `Finger.py:135` → 이름 · 근거 차례 `Match.b_order` `Match.py:391`(`Basis.candidates` `Basis.py:220` · `Match.candidates` `:294` · `Basis.merge`) → 지문 순위 `Fit.rank/fuse/sure` `Fit.py:227-264`(우리 지문 `Ours` · 손잡이 `Fit.py:35-60`) → 조합 `Combine.solve` → 옵션 거꾸로 `Option.find` `Option.py:445` → 판정 `judge` `Verdict.py:160` · 후보 `:183` |
|
||||
| 2-1 | 캐시 | — | `Fit._put` `Fit.py:387` | `tmp/m02_hopyo/맞춤_<HP16>_<판>_<CALC_VERSION>.json`(20 블록마다 덮음 `:380`) |
|
||||
| 3 | 보기(파일) | `GET /hopyo/{키}` · `/hopyo-grid/{키}` | `Match.view` `Match.py:449` → `Line.Ctx` `Line.py:52-67` · `hopyo_view(full=False)` | 호표마다 [체크 제안 수, 줄 수] · 연결할 · 연결된 |
|
||||
| 3-1 | 보기(호표) | `GET /hopyo/{키}/{번}?to=` → 확인 창 `Hopyo_Check.ts` | `Line.hopyo_view` `Line.py:397` → `match_line` `:244-283` | 줄마다 차례: % → 호표(`:251-260`) → 노임 → 장부 뺌 · 짝(`Ledger.recall`) → 자재(`_material` `:207` · `Material`) → 숫자 판정(`_numeric` `:153` · 캐시) → 이름 · 근거만(`_names_only` `:188`) → 묶음 표시(`_grouped` `:296`) · 통째(`whole` `:378`) |
|
||||
| 3-2 | 미리 셈 | `POST …/guess` | `Line.guess` `Line.py:422-474` | 고른 로직 · 옵션으로 엔진 한 번(캐시 없으면 지문 다시 셈 `:436-446`) |
|
||||
| 4 | 만들기(호표 하나) | 확인 창 · 엑셀 보기 [저장](`Hopyo_Sheet.ts:431` · 하위 먼저 `buildOrder` `:127`) → `POST /hopyo-build` | `Build.build` `Build.py:528` → `Builder.check` `:220` → `Builder.build` `:263-405` | 체크 줄 = 로직 · 자재 · 호표 · 이음 · 전국 / 안 체크 = 하위 참조(`_kid` `:415`) · SK 참조(`SkLink.sk_line` `SkLink.py:62`) · 고정 줄(`Fixed.line_of` `Fixed.py:143` · 이음 `Linker` `:71`) · 남은 줄 409(`:391`) · 로직 자재 겹침(`_inside` `:432`) · 장부(`Ledger.write`) · 저장(`_save` `:100` → 740-1 펼침 `M02_Labor_Ref.py:198-201`) · 대조(`compare` `:495`) |
|
||||
| 4-1 | 미리 보기 | `POST /hopyo-unlinked` · 띠 `Hopyo_Left.ts` | `Build.unlinked` `Build.py:513` | 쓰기 없이 남은 줄 |
|
||||
| 4-2 | 모두 고정 | 엑셀 보기 [모두 고정으로 들여오기] → `POST /hopyo-build-all` | `Build.build_all` `Build.py:565`(strict · `_order` `:545`) | 하위 먼저 · 확인된 것 그대로 · 남은 줄 있는 호표 = 실패 |
|
||||
| 4-3 | 단가산출 | 마법사 단가산출 칸 `Hopyo_WizardSk.ts` → `POST /hopyo/{키}/sangeun` | `Sangeun.build` `Sangeun.py:263` → `SkPatch.plan` → `Maker.write` `:213`(733 같은 내용 재사용 `:232`) | 블록마다 기초 · SK · 고름 대기 · 장부 |
|
||||
| 4-4 | 구조물 조합으로 | 확인 창 → `POST /hopyo-item` | `Item.make_item` `Item.py:90`(`Builder.build(save=False)` `:85-87`) | SC 안 만들고 구조물 조합 항목 |
|
||||
| 4-5 | 붙여넣기 | `POST /hopyo-paste` | `Paste.read_text` `Paste.py:158` → `Store.save` → `build_all`(strict 아님 `:315`) → `finish` `:316` | 셋째 읽기 길(두 꼴 짐작) |
|
||||
| 4-6 | 장부 · 다시 잇기 | `GET · PUT /hopyo-ledger` · `/hopyo-relink` | `Ledger.rows · put` · `Relink.rows · apply` | 만든 뒤 |
|
||||
| 5 | [끝내기] | 마법사 ③ → `DELETE /hopyo/{키}` | `Forget.finish` `Forget.py:134` | 만든 SC · SK 엑셀 사본 칸 걷음(`strip_sc` `:60` · `strip_sk` `:76`) · HP · 격자 · 맞춤셈 캐시 지움 |
|
||||
|
||||
### A-2. 형식 갈림이 읽기 뒤에도 있는 곳(전부)
|
||||
|
||||
| # | 자리 | 무엇 | 단계 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | `Excel.py:95-96` · `:245-246` · `Stmate.py:27`(서로 부름) | EST 읽기 안에서 STmate 판별 · 넘김 | ① 제자리(정상) |
|
||||
| 2 | `Grid.py:27` · `:233` | 두 꼴 시트 이름 · STmate 숨은 칸 거름 | ① 격자(정상) |
|
||||
| 3 | **`Finger.py:138-142`** | 블록에 `자원` 있으면 STmate 풀이 · `글` 이면 EST 글 풀이 · 없으면 기계 줄 | ③ 지문 — 새는 곳 중심 |
|
||||
| 4 | `Finger.py:158-235` ↔ `:238-276` | 풀이 두 벌 — EST 글 정규식(`_COLON` · `_MAT` · 노무비 줄 우선순위) / STmate 자원 품(세 줄 같은 품 한 번) | ③ |
|
||||
| 5 | `Shares.py:94-142` ↔ `:145-177`(부름 `Finger.py:234` · `:275`) | 몫(절) 두 벌 · STmate 쪽은 옛 정수 절 갈래까지 | ③ |
|
||||
| 6 | `Finger.py:283-284` | 직접 줄 호표 출처 = `근거글`(STmate 만 있는 칸) | ③ |
|
||||
| 7 | `Finger.py:303-309` ← `Line.py:247` · `Fit.py:310` · `Build.py:201` · `:418` · `:556` · `Fixed.py:93` · `:155` · `:162` · `:164` · `SkLink.py:123` | 줄 갈래 다시 판정(노임 올림 · 괄호 글 풂) — 읽기 규칙(`Excel.py:160` 정확 이름 · `Stmate.py:43` L 코드)과 셋째 규칙 | ② 일이 ③~⑥ 에 흩어짐 |
|
||||
| 8 | `Elem.py:28-39`(부름 `SkPatch.py:469`) | 블록 글을 EST 꼴 「이름 단가 × 식」으로 풀어 단가 — STmate 는 단가 칸이 따로 있는데 안 읽음 → 블록 99 중 51 만 단가 | ④ 못옮김 후보 차례 |
|
||||
| 9 | `Build.py:460-462` · `:465-479` · `:504-506` | 엑셀 끝수 꼴(EST 비목 합 내림 · STmate 줄 반올림 · 하나 더)을 셋 다 셈 · 엑셀과 1 원 안인 쪽 고름 — 꼴을 몰라서 | ⑥ 대조 |
|
||||
| 10 | `Paste.py:7-10` · `:82` · `:119` · `:220` · `:227` | 붙여넣기 = 셋째 읽기 · 두 꼴 짐작 | ① |
|
||||
| 11 | `Excel.py:298-304` ↔ `Stmate.py:18` · `:266` | 검산 · 총괄표 = EST 만 | ② |
|
||||
| 12 | `Excel.py:225-238` | 이름 이음(비고 빈 줄 → 블록) = EST 만 — 여덟 파일 0 줄 | ② |
|
||||
| 13 | `resources/tester/helper_m02_hopyo_golden.py:70-86` | 시험 도우미가 EST 블록 글을 다시 채움 — 지금 EST 블록 223 개 모두 `글` 있음 → 죽은 갈래 | 시험 |
|
||||
| 14 | `B09_Estimation/B09_Estimation_Bill_Hopyo.py:51-55` | 내역 대가 번을 호표 코드로 채움(STmate 꼴) | B09(밖) |
|
||||
|
||||
### A-3. 같은 일 두 번
|
||||
|
||||
| # | 일 | 자리 | 실측 · 영향 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 엑셀 두 번 열기 | `Excel._sheets` `Excel.py:83` + `Grid._xlsx` `Grid.py:218`(같은 함수 다시) · xls `Grid.py:169`(formatting_info 로 다시) | 거창(xlsx) 읽기 3.28 초 + 격자 3.87 초 · 나머지 0.04~0.6 초 |
|
||||
| 2 | 줄 갈래 세 규칙 | `Excel.py:145-164` · `Stmate.py:168-177` · `Finger.py:303-309` | 1,350 줄 중 결과 차이 0(규칙은 다름 — 괄호 글 이름) |
|
||||
| 3 | 블록 글 세 번 풂 | `Finger._text` `Finger.py:158` · `Shares.sections` `Shares.py:94` · `Elem.prices` `Elem.py:28` | 직종 줄 정규식이 둘(`Finger._COLON` + `trade_names` ↔ `Shares._TRADE` + `trade`) |
|
||||
| 4 | 기계 노 · 재 · 경 셋 줄 → 하나 세 번 | `Stmate.py:145-146` · `Finger.py:260-262` · `Shares.py:167-169` | |
|
||||
| 5 | 블록 직종 두 번 | `Basis.read` `Basis.py:146-149` · `Stmate._blocks` `Stmate.py:162-163` → 지문은 `Finger` 가 다시 뽑음 | |
|
||||
| 6 | 조항 견줌 두 벌 | `Match.clause` 대체 몸 `Match.py:363-380`(`hasattr` 가드 · 늘 `Basis.clause`) · 조항 오타 정규식 둘 `Basis.py:37` · `Match.py:346` | 대체 몸 = 안 도는 코드 |
|
||||
| 7 | 보기 한 번에 HP 세 번 읽기 · 두 번 해시 | `Line.Ctx` `Line.py:58`(읽기) · `:63` `fit.ensure` → `status` → `result` → `cache_path` HP sha256 `Fit.py:298-300` · `:64` `fit.result` 다시 | HP 안 `지문` 칸(올린 엑셀 sha) 이 있는데 HP JSON 을 다시 해시 |
|
||||
| 8 | 하위 먼저 차례 두 벌 | 서버 `Build._order` `Build.py:545-562` · 화면 `buildOrder` `Hopyo_Sheet.ts:127-137` | |
|
||||
| 9 | 확인된 SC 훑기 | `Builder.__init__` → `confirmed` → 층 `precombo/SC-*.json` 전부 읽음(`Build.py:72-97` · `:163`) · `_save` 다시(`:108-116`) · `build_all` 호표마다 | 호표 수 × 층 SC 수 |
|
||||
| 10 | 맞춤셈 따로 셈 | 캐시 없을 때 `Sangeun.plan` `Sangeun.py:205-207` · `Line.guess` `Line.py:436-446` | |
|
||||
| 11 | 숫자 · 글 도우미 | `_flat` · `_text` · `_num` 이 `Excel` · `Stmate` · `Basis` · `Finger` · `Fixed` 에 따로 | B09 가 `Excel._flat · _text · _money · _cell · _num · _out` 을 빌려 씀(`B09_Estimation_Bill_Excel.py:92-233`) |
|
||||
|
||||
### A-4. 캐시 · 저장 자리
|
||||
|
||||
| 무엇 | 자리 | 쓰는 곳 | 지움 |
|
||||
| --- | --- | --- | --- |
|
||||
| 읽은 결과(HP) | 층 `실무자료/HP-######.json` | `Store.save` `Store.py:111` | [끝내기] · 하루 지남(`Store.EXPIRE` `:31`) |
|
||||
| 격자 | 층 `실무자료/격자/HP-######.json` | `Store.py:135-137` | 같이 |
|
||||
| 키 번 | 층 `실무자료/불러옴.json` `{번}` | `Store.py:100` | 안 지움(키 다시 안 씀) |
|
||||
| 별칭 장부 | 층 `실무자료/맞춤.json` | `Ledger.write` · `Store.remember` `Store.py:170` | 안 지움 |
|
||||
| 우리 지문 | `tmp/m02_hopyo/우리지문_<판>.json` | `Ours` `Ours.py:8` · `:57` · 시동 `M02_Labor_Router.py:223` | 판 바뀌면 안 씀 |
|
||||
| 맞춤셈 | `tmp/m02_hopyo/맞춤_<HP16>_<판>_<CALC_VERSION>.json` | `Fit.py:298-300` · `:387` | [끝내기](`Forget.py:124-131`) |
|
||||
| 메모리 | `Basis._trade_names` · `_ours` · `Match._targets` · `Fit._STATE` · `Ours` 표 | lru_cache(M01 판 id 열쇠) | 프로세스 |
|
||||
| 화면 | sessionStorage `m02-hopyo-check:{층}:{주인}:{키}:{번}`(`Hopyo_Check.ts:10`) · `m02-hopyo-ledger:{층}:{주인}`(`Hopyo_Ledger.ts:8`) · 못옮김(`Hopyo_Lost.ts:37`) · 붙여넣기 열 짝 localStorage | | 만들기 성공 · [저장] |
|
||||
| 만든 것 | 층 `precombo/SC-*.json`(본뜬 = 「HP-###### 제N호표」) · `sangeun/SK-*.json`(본뜬 = 「HP-###### 단산N」 · `또`) · 구조물 조합 항목 | `Build._save` · `Sangeun.Maker.write` · `Item` | 안 지움(사본 칸만 걷음) |
|
||||
|
||||
### A-5. 파일별 줄 수(700 줄 제한)
|
||||
|
||||
| 파일 | 줄 | 단계 | 파일 | 줄 | 단계 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| `Build.py` | **608** | ⑥ | `Basis.py` | 295 | ② + ⑤ |
|
||||
| `Match.py` | 501 | ⑤ + 보기 문 | `Material.py` | 290 | ④ |
|
||||
| `Option.py` | 497 | ⑤ | `Grid.py` | 257 | ① |
|
||||
| `SkPatch.py` | 477 | ⑥ | `Stmate.py` | 267 | ② |
|
||||
| `Line.py` | 474 | 보기 | `Words.py` | 247 | 공용 |
|
||||
| `Fit.py` | 421 | ⑤ + 뒤 셈 | `Verdict.py` | 213 | ⑤ |
|
||||
| `Ours.py` | 363 | ⑤ | `Forget.py` | 205 | 끝냄 |
|
||||
| `Excel.py` | 325 | ①② | `Fixed.py` | 186 | ④ + ⑥ |
|
||||
| `Combine.py` | 325 | ⑤ | `Store.py` | 182 | 보관 |
|
||||
| `Paste.py` | 317 | ① + ⑥ | `Shares.py` | 177 | ③ |
|
||||
| `Sangeun.py` | 313 | ⑥ | `Item.py` | 154 | ⑥ |
|
||||
| `Finger.py` | 309 | ③ | `Relink.py` | 152 | ⑥ 뒤 |
|
||||
| `Ledger.py` | 309 | ④ 기억 | `SkLink.py` | 131 · `Elem.py` 125 | ⑥ · ④ |
|
||||
|
||||
- 합 27 파일 8,120 줄. 길 `M02_Labor_Router.py` 624(hopyo 길 ≈ 400 줄 `:212-624`). 화면 `Hopyo_*.ts` 14 파일 4,802 줄 — `Hopyo_Api.ts` 676 · `Hopyo_Check.ts` 663 · `Hopyo_Sheet.ts` 592.
|
||||
- 서로 부름(고리) = `Excel` ↔ `Stmate` · `Basis` ↔ `Match` · `Fit` ↔ `Verdict`(늦은 import `Fit.py:282`) · `Match` ↔ `Line`(`Match.py:439`) · `Build` ↔ `SkLink` ↔ `Sangeun`.
|
||||
- 단계가 섞인 파일 = `Line.py`(갈래 · 장부 · 자재 맞춤 · 판정 캐시 · 만든 SC 확인을 한 함수 `match_line` 에서) · `Basis.py`(EST 블록 읽기 + 근거 후보) · `Match.py`(이름 후보 + 보기 문 `view` · `picks`) · `Fixed.py`(이음 + 고정 줄).
|
||||
- 시동 덧(병행 개발 흔적) = `_later` importlib 가드(`M02_Labor_Router.py:214-219` · `:223` · `:245` · `:257`) · `inspect.signature` 가드(`:333`) · 안 쓰는 몸 칸 `새로`(`:404`).
|
||||
|
||||
---
|
||||
|
||||
## B. 두 형식 실제 비교(여덟 파일 · 지금 파서)
|
||||
|
||||
### B-1. 파일마다
|
||||
|
||||
| 파일 | 꼴 | 호표 | 줄 | 블록(불림) | 호표 참조 줄 | 자원 줄 | 직접 줄 호표 | 검산 어긋남 · 총괄표 | 읽기 · 격자 초 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 북부청임도 | EST | 68 | 415 | 95(49) | 1 | — | 0 | 0 · 67 | 0.26 · 0.09 |
|
||||
| 북부청사방 | EST | 27 | 201 | 67(45) | 2 | — | 1 | 0 · 27 | 0.04 · 0.04 |
|
||||
| 거창 | EST(xlsx) | 14 | 68 | 61(13) | 12 | — | 5 | 0 · 14 | 3.28 · 3.87 |
|
||||
| 봉화 | STmate | 45 | 209 | 65(31) | 22 | 179 | 15 | — | 0.27 · 0.23 |
|
||||
| 동부청영월 | STmate | 23 | 138 | 69(35) | 3 | 212 | 2 | — | 0.43 · 0.61 |
|
||||
| 울진대흥 | STmate | 34 | 171 | 47(14) | 28 | 106 | 16 | — | 0.16 · 0.20 |
|
||||
| 영덕계류 | STmate | 9 | 31 | 15(2) | 3 | 32 | 7 | — | 0.11 · 0.17 |
|
||||
| 울진소광 | STmate | 25 | 117 | 40(17) | 19 | 110 | 9 | — | 0.11 · 0.17 |
|
||||
| 합 | | 245 | 1,350 | 459(206) | 90 | 639 | 55 | | |
|
||||
|
||||
- 줄 갈래 합 = 단가산출 735 · 자재 219 · 별도계상 135 · 노임 105 · 호표 90 · 기계 36 · % 30 — 읽기 갈래와 `Finger.kind_of` 결과 차이 0.
|
||||
- 셈 단위(`Fit.units`) 275 = 블록 206 · 직접 줄 호표 55 · 블록 없는 기계 줄 14.
|
||||
- 블록 지문 길 = EST 107 블록 모두 `글` 풀이 · STmate 99 블록 모두 `자원` 풀이 · 「숫자 없음」 1(소광).
|
||||
- 블록 글 단가(`Elem.prices`) = EST 107/107 · STmate 51/99(봉화 17/31 · 영월 20/35 · 대흥 7/14 · 영덕 0/2 · 소광 7/17).
|
||||
|
||||
### B-2. 칸 나란히(호표 · 줄 · 블록 · 블록 줄)
|
||||
|
||||
| 칸 | EST(엑셀꼴 · `Excel.py`) | STmate(`Stmate.py`) | 같은 꼴로? |
|
||||
| --- | --- | --- | --- |
|
||||
| **시트** | 「일위대가」 + 「단가산출」 + 「일위대가총괄표」 | 「일위대가표」 + 「단가산출근거」 + 목록표 다섯 | 판별만 다름 |
|
||||
| 열 찾기 | 머리 글(호표 · 품명 · 규격 · 수량 · 단위 · 비고 · 합계 · 노무비 …) `Excel.py:118` | 고정 열(A 이름 · B 규격 · C 수량 · D 단위 · E/G/I/K 단가 · 다음 열 금액 · M 비고) `Stmate.py:41-42` + 숨은 코드 칸 | 어댑터 안 |
|
||||
| **호표** 번 | 「제N호표」(호표 열) | 「제N호표」(A 열) | 같음 |
|
||||
| 호표 코드 | 없음 | `B#####`(245 중 STmate 136/136) | STmate 만 |
|
||||
| 이름 · 규격 · 단위 | 머리 줄 같은 줄 | 머리 다음 줄 | 같음 |
|
||||
| 호표 금액(1 단위) | 머리 줄 금액 열 | 「합계」 줄 | 같음 |
|
||||
| 근거글 | 없음 | 코드 없는 글 줄(봉화 7 · 대흥 13 · 영덕 6 · 소광 11 호표) | STmate 만 |
|
||||
| **줄** 이름 · 규격 · 수량 · 단위 | 열 머리로 | 고정 열 | 같음 |
|
||||
| 단가 · 금액(계 · 노 · 재 · 경) | 단가 열 · 다음 열 금액 | 같음 | 같음 |
|
||||
| 비고 | **참조 표지** 「단산46참조」 · 「일위4참조」 | 잡글 「2024.01」 · 「01000000011」 · 「2024년 개정」 | 뜻이 다름 — EST 는 참조로 풀고 원문만 둠 |
|
||||
| 코드 | 없음 | 모든 줄 `L/M/X/D/B/S/W/PR…` | STmate 만 |
|
||||
| 참조 | 비고 → `{종류 단산·일위, 번}` | 코드 → `{종류, 번, 코드}`(일위 번 = 호표 코드 표 `Stmate.py:246-250`) | 같은 꼴(코드는 덤) |
|
||||
| 갈래 | 단위 · 참조 · 단가 칸 · 직종 이름(`Excel.py:145`) | 코드 머리 글자(`Stmate.py:168`) | 결과 같은 꼴 · 판정 규칙만 다름 |
|
||||
| 근거 | 블록 `{출처, 직종, 행}` | 같음 | 같음 |
|
||||
| 이음 | 「이름」(여덟 파일 0) | 없음 | EST 만 |
|
||||
| **블록** 번 | 머리 「N.이름[단위]」 N(시트 차례) | D 코드 숫자(봉화 `D00096` → 96) | 번 공간만 다름 · 꼴 같음 |
|
||||
| 블록 코드 | 없음 | `D#####` | STmate 만 |
|
||||
| 블록 이름 · 단위 | 머리 글 | 목록표(없으면 머리 이름 줄) | 같음 |
|
||||
| 블록 규격 | 없음(이름 안 괄호) | 목록표 C 열 | STmate 만 |
|
||||
| 블록 금액 | `Basis.read` 가 읽고 `read_book` 이 버림(`Excel.py:309`) | 머리 줄 C~F 열에 있음 · 안 읽음 | **둘 다 있음 · 둘 다 버림** |
|
||||
| 글 | 산출근거 열 몸 줄(거창 = 줄 칸 이어 붙임 `Basis.py:116-117`) | B 열 글(소계 · 계 뺌) | 같음 |
|
||||
| 출처 · 직종 | 글에서(`Basis.sources` · 「이름 : 수」 줄) | 글에서 · 자원 L 이름 | 같음 |
|
||||
| **블록 줄(자원)** | 없음 — 글 속 「직종 : 단가 × 식 = 금액」 · 「노무비 : 단가 ÷ Q」 · 「이름 단가 × 수량」을 지문 단계가 풂 | `자원 [{갈래 L/M/X/S, 코드, 이름, 규격, 품, 절}]` | 정규화하면 같은 꼴 |
|
||||
| 블록 줄 품 | 글 식 풀이(`Words.parse_rhs` · 못 풀면 금액 ÷ 단가 「역산」 — 여덟 파일 0) | H 열 수 | 같음 |
|
||||
| 블록 줄 단가 · 금액 | 글 안 수 | I~L 열 단가 · C~F 열 금액 — **안 읽음** | 둘 다 담을 수 있음 |
|
||||
| 블록 줄 절 | 글 「1.」 · 「가.」 제목 | 앞 번호 절 제목(`Stmate.py:140-141`) | 같음 |
|
||||
| **검산** | 줄 · 호표 · 총괄표(어긋남 0 · 총괄표 67 · 27 · 14) | 안 함 | EST 만 |
|
||||
|
||||
### B-3. 공통 중간 꼴(Book) — 담을 수 있음
|
||||
|
||||
```
|
||||
Book { 판, 꼴 EST|STmate|붙여넣기, 시트, 검산?,
|
||||
호표: [{번, 코드?, 이름, 규격, 단위, 금액{계,노무비,재료비,경비}, 행, 근거글[],
|
||||
줄: [{차례, 이름, 규격, 수량, 단위, 단가{4}, 금액{4}, 비고, 코드?, 행,
|
||||
갈래(한 번 정함), 직종?, 참조?{종류, 번, 코드?}, 근거?{출처, 직종, 행}, 이음?}]}],
|
||||
단산: [{번, 코드?, 이름, 규격?, 단위, 행, 금액?{4}, 출처, 직종, 글[],
|
||||
항목: [{갈래 L|X|M|S, 이름, 규격, 품, 밑품, 인자[], 절, 단가?{4}, 코드?, 어떻게 식|QTY|역산}]}] }
|
||||
```
|
||||
|
||||
- 지금 HP 꼴(`Excel.py:311-317` · `Stmate.py:261-267`)에 `블록.항목` · `블록.금액` · `줄.갈래(한 번)` · `줄.직종` 만 더하면 됨 — 호표 · 줄은 이미 공통.
|
||||
- EST `항목` = 지금 `Finger._text` 가 지문 단계에서 하는 글 풀이를 정규화 단계로 올린 것 · STmate `항목` = `자원` + 단가 · 금액 칸.
|
||||
- 줄에 기대는 것만 지문 단계에 남김 — 섞음 율(`rates_in(줄 이름 · 규격)` `Finger.py:169` · `:251-253`) · 그래서 항목에 `인자`(식의 곱 수 · 절 율)를 남겨 지문 단계가 가름.
|
||||
- 형식에만 있는 정보(덤 칸으로 둠 · 뒤 단계 판단엔 안 씀): STmate 코드 · 근거글 · 블록 규격 / EST 검산 · 총괄표 · 비고 참조 표지 원문 · 이름 이음.
|
||||
- 새로 얻는 것 = STmate 블록 줄 단가(못옮김 후보 정렬 `Elem` 이 99 블록 모두 씀) · 두 형식 블록 금액(만든 SK ↔ 엑셀 블록 금액 대조 — 지금 SC 만 대조 `Build.compare`).
|
||||
|
||||
---
|
||||
|
||||
## C. 제안 — 단계 체계
|
||||
|
||||
### C-1. 단계 · 입력 · 출력
|
||||
|
||||
| 단계 | 입력 | 출력 | 형식 앎 | 지금 파일 → 갈 곳 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| ① 읽기 · 판별 | 파일 바이트 · 이름 | `Sheets {꼴, 시트: {이름: 줄 목록}, 책}`(한 번 연 책 · 격자도 이것으로) | 앎 | `Excel._sheets` · `Stmate.is_stmate` · `Grid` 의 다시 열기 → 한 번 열기(`Excel.py` 안 또는 새 `Read.py`) · `Grid.read` 는 `Sheets.책` 받음 |
|
||||
| ② 정규화(어댑터) | Sheets | **Book**(B-3) · 줄 갈래 한 번 · 블록 항목 | 앎(어댑터마다) | EST = `Excel.read_book` + `Basis.read`(떼어 옴) + `Finger._text` · `Shares.sections` 글 풀이 / STmate = `Stmate.read` + `Finger._stmate` · `Shares.sections_stm` + 단가 · 금액 칸 / 붙여넣기 = `Paste.read_text`(같은 Book) · 갈래 규칙 셋 → 하나(노임 올림 `Finger.kind_of` 규칙을 어댑터로) |
|
||||
| ③ 지문 | Book 블록 · 부르는 줄 | 지문 `efp`(인력 · 장비 · 자재 · 율 · 계수 · 조건 · 몫 · 출처) | 모름 | `Finger.excel` = 항목 모음 + 줄 율만 · `Shares` 한 벌(항목 절) · `Finger.kind_of` = 읽은 갈래 그대로(한 줄) |
|
||||
| ④ 요소 연결 | 줄 · 블록 항목 | 줄 · 항목마다 M01 키 `{LB·EQ·MT, 확정?, 후보[]}` | 모름 | `Fixed.Linker` · `Material` · `Elem`(단가 = 항목 단가) · `Ledger.recall` · `SkPatch` 못옮김 후보 — 자리 그대로(요구 621-2 「요소 기준 연결」이 이 단계) |
|
||||
| ⑤ 구조 맞춤 | 지문 · 줄 | 맞춤셈 칸 `{지문, 차례, 옵션, 조합, 판정, 후보}` · 캐시 | 모름 | `Match.b_order` · `Basis.candidates` · `Fit` · `Verdict` · `Combine` · `Option` · `Ours` · `Words` — 그대로 · `Match.clause` 대체 몸 지움 |
|
||||
| ⑥ 만들기 | Book · 맞춤셈 · 사용자 고름 | SC · SK · 구조물 조합 항목 · 장부 줄 | 모름 | `Build`(대조 `compare` · `_excel_round` · `excel_given` 떼어 냄) · `SkLink` · `Sangeun` · `SkPatch` · `Fixed.line_of` · `Item` · `Relink` |
|
||||
| 보기 조립 | ②~⑥ 출력 | 화면 응답 | 모름 | `Line`(단계 출력만 읽음 · `Ctx` 한 번 읽기) · `Match.view` · `picks` · 길 |
|
||||
| 둘레 | | | | `Store`(HP 판 칸) · `Forget` 그대로 |
|
||||
|
||||
- 끝수 대조(`Build.py:460-462`)는 Book `꼴` 로 규칙 하나를 고르게 함(셋 다 셈 → 꼴 규칙 + 못 맞으면 나머지).
|
||||
- 지금 HP(작업 중 · 하루) 는 판 칸이 없음 → 새 판 Book 을 못 읽으면 끝냄 + 「다시 올림」 안내(원본 엑셀 안 둠 · 하루짜리라 옛 꼴 읽기 갈래를 두지 않음).
|
||||
|
||||
### C-2. 지울 것 · 나눌 것
|
||||
|
||||
| 갈래 | 자리 | 까닭 |
|
||||
| --- | --- | --- |
|
||||
| 지움 | `Match.clause` 대체 몸 `Match.py:363-380` · 오타 정규식 하나 `Match.py:346` | 늘 `Basis.clause` |
|
||||
| 지움 | `Finger._stmate` / `_text` 두 벌 → 어댑터로 옮긴 뒤 지문 한 벌 · `Shares.sections_stm` 옛 정수 절 갈래 | ③ 형식 모름 |
|
||||
| 지움 | `Grid._xlsx` 의 `Excel._sheets` 다시 부름 `Grid.py:218` | 한 번 열기 |
|
||||
| 지움 | `_later` · `inspect.signature` 가드 `M02_Labor_Router.py:214-219` · `:245` · `:257` · `:333` · 몸 칸 `새로` `:404` | 병행 개발 흔적 · 엔진 있음 |
|
||||
| 지움 | 시험 도우미 EST 글 다시 채움 `helper_m02_hopyo_golden.py:75-86` | 죽은 갈래 |
|
||||
| 바꿈 | `Fit.cache_path` HP 다시 해시 `Fit.py:298-300` → HP `지문` 칸 | 보기마다 해시 둘 |
|
||||
| 바꿈 | 화면 `buildOrder` `Hopyo_Sheet.ts:127` | 서버 `_order` 한 벌(차례를 응답에 실음) — 작음 · 뒤 |
|
||||
| 나눔 | `Build.py` 608 → 대조(`CUTS` · `_excel_round` · `excel_given` · `compare` `:460-510` ≈ 50 줄) 새 파일 | 700 가까움 · 요구 4 줄이 더해짐 |
|
||||
| 나눔 | `Basis.py` → EST 블록 읽기(`:49-150`)는 EST 어댑터 · 근거 후보(`:153-295`)는 ⑤ | 단계 섞임 |
|
||||
| 남김 | `Excel._flat · _text · _money · _cell · _num · _out · DRM` 이름 | B09 가 빌려 씀(`B09_Estimation_Bill_Excel.py`) · `read_book` · `Build._order` · `Builder` · `_origins` · `Paste.read_text · cells · fixed_lines` 도 B09 가 부름 |
|
||||
|
||||
### C-3. 단계별 시험 · 결과 같음 지키기
|
||||
|
||||
| 단계 | 고정할 출력(여덟 파일) | 지금 시험 | 새로(W1) | 시간 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| ① | 시트 목록 · 연 횟수 | `test_m02_hopyo_excel` · `_stmate` · `_grid` · `test_704_3_hopyo_grid` | 파일마다 시트 · 격자 시트 이름 | 짧음 |
|
||||
| ② | Book 공통 칸 투영 해시(지금 HP 칸만) · 호표 · 줄 · 블록 수 · 갈래 · 참조 분포(B-1 표) | excel(북부청 68 호표 검산 0) · stmate(여섯 파일 호표 수) | S1 = 투영 해시 + 수 | 6.5 초 |
|
||||
| ③ | 셈 단위 275 개 지문 해시 | `test_m02_hopyo_finger` | S2 = 단위마다 지문 해시(지금 값: 북부청임도 `a46a46c78ed3` · 봉화 `47de2e39651b` …) | 10.8 초 |
|
||||
| ④ | 이음 · 이음후보 수 | `test_705_3_hopyo_fixed`(북부청 이음 13 · 후보 31) · `test_729_hopyo_sk_link` | 그대로 | |
|
||||
| ⑤ | 판정 분포 · 골든 1위 | `test_m02_hopyo_golden`(2~4 분 · 1위 163/177) · `test_m02_hopyo_seam`(북부청 맞음 122 · 다른 점 86 · 후보 60) · `test_m02_hopyo_fit` | 그대로(마지막에 한 번) | 분 |
|
||||
| ⑥ | build_all 수 · SK 갈래 | `test_705_3`(EXPECT 거창 14/68/56/12 · 영월 23/138/135/3 …) · `test_729`(기초 80 · SK 37 · 고름 대기 89) · `test_m02_hopyo_build` · `test_718_1` · `test_743_1` · `test_572_hopyo_same` | 호표 참조 그래프(D 실측) | |
|
||||
|
||||
- 지킴 규칙 — 옮기는 커밋마다 S1(투영) · S2 해시 그대로 · Book 칸은 더하기만(빼기 · 이름 바꾸기 없음) · S2 가 바뀌면 그 커밋은 되돌림 감.
|
||||
- 의도한 변화(STmate 블록 단가 읽기 등)는 S1 투영 밖 새 칸 · S2 에 안 닿음(지문은 단가 안 씀 `Finger.py:2`) → 해시로 「안 닿음」 확인.
|
||||
- 시험 파일은 `resources/tester` 지킴 시험만(서버 없이 도는 읽기 · 지문) · 해시 표는 `fixtures/` · 측정 원본 JSON 은 tmp.
|
||||
|
||||
---
|
||||
|
||||
## D. 요구 4 — 호표가 다른 호표를 참조할 때
|
||||
|
||||
### D-1. 지금 만들기 때 일
|
||||
|
||||
| 자리 | 일 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 읽기 | EST = 비고 「일위N참조」 → `참조 {일위, N}` · STmate = 줄 코드 `B#####` → 호표 코드 표로 번 | `Excel.py:41` · `:283-285` · `Stmate.py:231-233` · `:246-250` |
|
||||
| 보기(확인 창) | 상태 「호표」 · 체크 제안 = 만들 층에 그 하위 SC 가 확인됨 + 단위 환산 배 확실 · 아니면 글 「제N호표 먼저 확인」 | `Line.py:251-260` |
|
||||
| 체크한 호표 줄 | 하위 SC 확인 안 됨 = 409 「제N호표 먼저 확인」 · 자기 담음 400 · 됨 = 참조 줄 `{참조 {층, 주인, SC 키}, 수량 = 엑셀 수량 × 배}` | `Build.py:185-191` · `:309-317` |
|
||||
| 체크 안 한 호표 줄 | `_kid` — 확인된 하위 · 단위 배 1 · 그 호표 안 처음 = 참조 · 아니면 고정 줄(엑셀 단가 그대로 · 이음 없음) → 남은 줄 「하위 호표 확인 전 · 단위 다름」 → 409 | `Build.py:357-366` · `:415-430` · `SkLink.py:32` · `Build.py:391-392` |
|
||||
| 저장 | 참조 줄 → **사본 블록**(하위 SC 몸 통째를 그 줄 `{층 사본, 주인 몸 지문, 키 하위 SC, 몸}` 에 담음 · 원본 연결 없음 · 740-1 「서로 독립 — 연결 고리 = M01 키만」) | `M02_Labor_Ref.py:198-201` · `:45` · `:112-127` · `M02_Library_Flat.py:9-13` · `:359-389` · 시험 `test_m02_hopyo_build.py:256-258` |
|
||||
| 확인 순서 | [모두 고정] = 서버 `_order` 하위 먼저(고리 끊음) · [저장](고른 호표) = 화면 `buildOrder` 하위 먼저 · 고르지 않은 하위 = 안내 「하위 호표를 함께 고르거나 먼저 저장」 · 확인 창 하나씩 = 사용자가 차례 맞춤 | `Build.py:545-562` · `:584-603` · `Hopyo_Sheet.ts:127-137` · `:470-510` |
|
||||
| 결과 | **하위 = 자기 일위대가(SC) 따로 + 부모 안 사본** — 이미 두 개 · 단 부모는 하위를 「잇지」 않고 「베껴 담음」 → 하위를 고쳐도 부모 그대로 · 부모를 열면 하위 줄이 안에 펼쳐 보임(화면 확인 안 함 · 코드 기준) | `test_705_3_hopyo_fixed.py:51-56`(호표참조 거창 12 · 영월 3 · 대흥 28 · 소광 19 · 북부청 1 — 모두 이어짐) |
|
||||
| 「한 개」로 납작해지는 길 | 막지 않는 길(strict 거짓 · save 거짓)에서 하위가 확인 안 됐을 때 = 엑셀 단가 고정 줄 한 줄 — [구조물 조합으로](`Item.py:85-87`) · 붙여넣기(`Paste.py:315`) · B09 통째(`B09_Estimation_Bill_Hopyo.py:114-117` · 하위 실패 때) | `Build.py:391`(`save and self.strict` 일 때만 막음) |
|
||||
|
||||
### D-2. 여덟 파일 호표 참조 실측
|
||||
|
||||
| 파일 | 참조 줄 | 부르는 호표 | 불리는 호표 | 깊이 최대(분포) |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 북부청임도 | 1 | 1 | 1 | 2(1단 67 · 2단 1) |
|
||||
| 북부청사방 | 2 | 2 | 2 | 2(25 · 2) |
|
||||
| 거창 | 12 | 6 | 6 | **3**(8 · 4 · 2) |
|
||||
| 봉화 | 22 | 18 | 19 | **3**(27 · 14 · 4) |
|
||||
| 동부청영월 | 3 | 3 | 2 | **3**(20 · 2 · 1) |
|
||||
| 울진대흥 | 28 | 17 | 8 | 2(17 · 17) |
|
||||
| 영덕계류 | 3 | 2 | 3 | 2(7 · 2) |
|
||||
| 울진소광 | 19 | 11 | 13 | **3**(14 · 10 · 1) |
|
||||
| 합 | 90 | 60 | 54 | 3 |
|
||||
|
||||
- 순환 0 · 자기 참조 0 · 못 찾은 하위 0 · 단위 다름(배 ≠ 1) 0 · 한 호표 안 같은 하위 둘 0 — 참조 깊이 상한 8(`M02_Labor_Ref.py:38`)과 먼 거리.
|
||||
|
||||
### D-3. 막힘
|
||||
|
||||
| # | 막힘 | 근거 | 크기 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | **이미 있는 같은 일위대가** — 다시 불러오면 HP 키가 새로(번 다시 안 씀) → 본뜬 키 다름 → SC 늘 새로 · SK 는 733 같은 내용 재사용 있음 · SC 는 없음 → 흔한 하위(합판거푸집 등)가 불러올 때마다 늚 | `Build.py:100-122` · `Store.py:124-126` · `Sangeun.py:232-237` · 지문은 SC 도 됨 `M02_Library_Same.py:3-8` | 큼 |
|
||||
| 2 | [끝내기] 뒤 본뜬 → 출처만(키 뺌) → `confirmed` 가 못 찾음 → 다음 불러오기 = 하위 · 부모 모두 새로 | `Forget.py:37-41` · `Build.py:91-97` | 1 과 같은 뿌리 |
|
||||
| 3 | 하위 실패 연쇄 — 하위가 남은 줄로 실패 → 부모 호표 줄 이음 없는 고정 → 부모도 실패 · 결과 표 까닭이 「하위 호표 확인 전 · 단위 다름」 하나 | `Build.py:357-366` · `SkLink.py:32` | 중 |
|
||||
| 4 | 사본이라 하위를 고쳐도 부모 그대로 · 부모 안 사본 키 = 하위 SC 키(출처)뿐 | 740-1 `M02_Library_Flat.py:9-13` | 정책 |
|
||||
| 5 | 단위 다른 참조 — 자동(`_kid`)은 배 1 만 · 손 체크는 배 받음 | `Build.py:424` · `:190` | 작음(실측 0) |
|
||||
| 6 | 한 호표 안 같은 하위 둘 — 둘째 = 고정 줄 · 펼침 겹침 막음과 같은 뿌리 | `Build.py:424` · `M02_Library_Flat.py:380-381` | 작음(실측 0) |
|
||||
| 7 | 층 — 하위 확인 = 같은 만들 층 + 같은 원본 층만 · 위 층(회사 · 마스터)에 같은 하위가 있어도 안 씀(SK 는 위 층 알림만) | `Build.py:85-97` · `:163` · `Sangeun.py:217` · 참조는 위 층만 `M02_Labor_Ref.py:16` · `:137` | 작음 |
|
||||
|
||||
### D-4. 두 일위대가로 가져오는 길(안)
|
||||
|
||||
| 안 | 부모 줄 꼴 | 좋음 | 나쁨 · 위험 | 크기 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| **(가) 지금 꼴 유지 + 보이기 · 막힘 풂 — 권함** | 하위 SC 따로 + 부모 사본 블록(740-1 그대로) | 740-1 결정 · B09 굳힘 · 733 지문 · 초기화(`Library_Flat.reset`) 안 건드림 | 하위 고침이 부모에 안 번짐(지금과 같음) | M(아래 넷) |
|
||||
| (나) 부모 줄 = 하위 SC 살아 있는 참조(실무자료로 만든 SC 끼리 740-1 예외) | 참조 | 하위 고치면 부모 따라감 | 740-1 「서로 독립」 뒤집음 · 펼침 · 초기화 · 733 지문 · 층 복사 · B09 굳힘 모두 갈래 하나씩 | L |
|
||||
| (다) 부모 줄 = 엑셀 단가 고정 줄 + 이음 = 하위 SC 키 | 고정 + 이음 | 금액 = 엑셀 그대로 · [다시 잇기](705-2)로 하위 값 받음 | 고정 줄 이음 칸에 SC 갈래 새로(`M02_Labor_Fixed` · `Relink`) · 부모 안에 하위 구성이 안 보임 | M |
|
||||
|
||||
(가) 할 일:
|
||||
1. 하위 함께 만들기 — 확인 창 · [저장]에서 확인 안 된 하위가 있으면 409 대신 그 하위 나무를 [모두 고정] 꼴로 먼저 만들고 부모 만듦(`Build.build` 앞에 `_order` 부분 나무 · 하위 실패면 그 하위 남은 줄을 띠 `Hopyo_Left.ts` 로).
|
||||
2. 같은 내용 SC 재사용 — `Build._save` 에 `M02_Library_Same.find_same(precombo)`(SK 꼴 `Sangeun.Maker.write` `:232-237` 그대로 · 본뜬 `또`) → 다시 불러와도 하위 · 부모가 안 늚.
|
||||
3. 보이기 — 결과 표(`Hopyo_Sheet.ts` · 마법사)에 「제3호표 → SC-12 · 하위 제4호표 SC-11(사본 담음)」 · 확인 창 호표 줄 글 「하위 일위대가 SC-11 사본」(`Line.py:259`) · 연쇄 실패 까닭 「하위 제N호표 실패」 따로(`SkLink.py:32`).
|
||||
4. 납작해지는 길 막음 — [구조물 조합으로] · 붙여넣기 · B09 에서도 확인 안 된 하위는 먼저 만듦(1 과 같은 함수) · 못 만들면 지금처럼 고정 줄 + 까닭.
|
||||
|
||||
### D-5. 사용자가 정할 것
|
||||
|
||||
| # | 물음 | 갈래 | 권함 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 하위 호표를 부모 안에 어떻게 담나 | (가) 하위 일위대가 따로 + 부모 안 사본(지금 · 하위 고쳐도 부모 그대로) · (나) 부모가 하위를 연결(하위 고치면 부모 바뀜 · 740-1 「서로 독립」 뒤집음) · (다) 부모엔 엑셀 금액 한 줄 + 하위 연결 표시 | **(가)** |
|
||||
| 2 | 하위를 아직 안 만든 채 부모를 만들 때 | (ㄱ) 지금처럼 막고 「제N호표 먼저 확인」 · (ㄴ) 하위를 엑셀 숫자 그대로 먼저 만들고 부모 만듦 | **(ㄴ)** |
|
||||
| 3 | 같은 엑셀을 다시 불러올 때 같은 내용 일위대가 | (ㄱ) 이미 있는 것 씀(단가산출과 같은 규칙) · (ㄴ) 늘 새로 | **(ㄱ)** |
|
||||
|
||||
- 정해 둔 것(권함대로 진행 · 물음 아님): Book 판 바뀜 = 작업 중 옛 HP 끝냄 + 다시 올림 안내 · STmate 블록 단가 · 금액 새로 읽음 · 끝수 대조는 꼴 규칙 먼저.
|
||||
|
||||
---
|
||||
|
||||
## E. 일감 나눔(파일 경계)
|
||||
|
||||
| 창 | 맡을 파일 | 일 | 크기 | 앞 조건 | 시험 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| **W1 단계 고정** | 새 `resources/tester/test_621_hopyo_stages.py` · `resources/tester/fixtures/m02_hopyo_stages.json` · `helper_m02_hopyo_golden.py`(죽은 갈래 `:75-86`) | 여덟 파일 S1(Book 투영 해시 · 수 · 갈래 · 참조 분포) · S2(셈 단위 275 지문 해시) · 호표 참조 그래프(D-2) 고정 · ≈ 20 초 · 코드 안 고침 | S | 없음 · 맨 먼저 | 그 시험 |
|
||||
| **W2a 읽기 · 정규화** | `Excel.py` · `Stmate.py` · `Basis.py`(읽기 떼어 감) · `Grid.py` · `Store.py`(판 칸) · `Paste.py`(Book 꼴만) | ① 한 번 열기 · 격자 같은 책 · ② Book(블록 항목 · 줄 갈래 한 번 · STmate 블록 단가 · 금액 · 블록 금액) · 판 바뀜 처리 · B09 가 빌리는 이름 그대로 | M | W1 | W1 · excel · stmate · basis · grid · 704_3 · 705_2 paste · B09 bill 시험 |
|
||||
| **W2b 지문 형식 모름** | `Finger.py` · `Shares.py` · `Elem.py` · `Match.py`(clause 대체 몸) · `Fit.py`(cache_path) | ③ 지문 = 항목 모음 + 줄 율 · 몫 한 벌 · `kind_of` 한 줄(부르는 곳 안 고침) · Elem 단가 = 항목 단가 · 중복 해시 걷기 | M | W2a 끝 | W1(S2 해시 그대로) · finger · fit · match · option · 729 · golden(마지막 한 번) |
|
||||
| **W3 요구 4 · 만들기** | `Build.py`(+ 대조 새 파일) · `Line.py` · `SkLink.py`(까닭 글) · `Item.py` · `Hopyo_Sheet.ts` · `Hopyo_Check.ts`(글) · `M02_Labor_Router.py`(가드 걷기) | D-4 (가) 넷 · `Line.Ctx` 한 번 읽기 · 대조 떼어 냄(608 → 560 안) · 길 가드 걷기 | M | W1 · D-5 결정 · W2a 와 병행(파일 안 겹침) | build · 705_3 · 718_1 · 743_1 · 572 · 729 · m02_hopyo_screen · 729_3 left screen · B09 bill hopyo 시험 · ORCA 사진(결과 표) |
|
||||
|
||||
- 차례 = W1 → (W2a ∥ W3) → W2b. W2b 와 W3 은 파일 안 겹침(`Fit.py` · `Match.py` = W2b · `Line.py` · `Build.py` = W3).
|
||||
- 겹침 주의 = `Paste.py`(W2a 읽기 부분만) · W3 은 `Paste.py` 안 만짐(하위 먼저 = `Build` 쪽 함수로 해결) · `Finger.kind_of` 부르는 곳(`Line` · `Fit` · `Build` · `Fixed` · `SkLink`)은 아무 창도 안 고침(한 줄 함수 몸만 바꿈).
|
||||
- 마지막 = 골든(2~4 분) 한 번 · 결과 같음 확인 뒤 W1 해시 표를 새 판으로 굳힘(투영 밖 새 칸만 늚).
|
||||
@@ -0,0 +1,265 @@
|
||||
# 분석 621-B — 경쟁사 단가산출을 「요소 기준」으로 잇기 (조사 · 읽기만)
|
||||
|
||||
조사 = 여덟 파일(`resources/tester/helper_m02_hopyo_golden.py` FILES) · 일위대가가 부르는 산근 블록 206 · 골든 177 줄을 지금 함수 그대로 불러 셈. 일회 스크립트 · 결과 = 이 폴더(`dump.py` → `dump.json` · `probe621.py` → `out621.json` · `rows621.py` → `rows621.json` · `elem621.py` → `elem621.json` · `agg621.py` · `rerank621.py` · `pct621.py`) · 우리 지문 캐시 = 사본 `cache/`(판 a1d8ce489bf64cbf · 585 와 같은 판). 코드 · storage · git · DB 안 고침.
|
||||
|
||||
## 0. 요약
|
||||
|
||||
1. 사용자 관찰 맞음 — 경쟁사 두 프로그램의 단가산출 = 자유 글 + 줄마다 노임 · 자재 · 기계 목록 연결 · 품셈은 붙여 넣고 고치는 참고 글 · 우리 「기초」 같은 꼴 없음(EST 산근 LinkIndex · 1-A · 1-B).
|
||||
2. 블록 206 = 품셈 그대로 80(39 %) · 품만 다름 50(24 %) · 줄 더함 · 뺌 59(29 % · 더한 줄 94 중 장비 69) · 단위 달라 견줌 못함 17 · 요소 × 수량만 늘어놓은 꼴 59(품셈 인용 52) · 다른 블록 부름 3.
|
||||
3. 일위대가가 단가산출 일을 한 흔적 = 호표 245 중 노임 · 기계 품 줄 59(24 %) · 근거글 품셈 인용 34 — STmate 49 / 136 · EST 10 / 109 → 「구분 없이」는 STmate 쪽에 몰림.
|
||||
4. 블록 줄 762 → M01 요소 직접 잇기(지금 함수) = 인력 95 % · 장비 32 % · 자재 11 % · % 줄 152 는 요소 아님 → 자동 유일 49 % · 장비 괄호 낱말 규칙(타이어 · 무한궤도 · 습지 + 부속 뺌)을 넣으면 장비 94 % · 전체 63 %.
|
||||
5. 곁 흠 둘 — (가) 「굴착기(타이어형)」 42 줄을 지금 길(Elem 1위 · 기계경비 기초 옵션)이 모두 무한궤도로 고름(`Match.words` 괄호 글 뗌 · `Combine.MACHINE` 굴착기 = 무한궤도) (나) SK 더한줄 「기계 · EQ 키」(못옮김 기계 잇기 길)는 셈 오류(Decimal × dict).
|
||||
6. 기초 세부 줄 ↔ 블록 줄 「줄 대 줄」 순위 = 골든 1위 86 / 177(49 %) · 지문 점수로 동점 가름 109 · 이름 · 조항 섞음 136 — 지금 162(92 %)보다 나쁨 · 지금 다섯 안을 줄 점수로 다시 세우면 159 → 119 · 정답 기초와 품까지 같은 줄 0 개 = 69 줄(39 %).
|
||||
7. 요소만으로 만들면 잃는 것(지금 기초 · SK 117 블록) = 덧줄(공구손료 등) 86 · 옵션 109 · 하위 로직(기계경비 · 작업량) 50 · 기준단위 배 ≠ 1 13 · 품셈 개정 따라감 · 근거 조항 — 얻는 것 = 순위 틀림 없음 · 경쟁사와 같은 꼴.
|
||||
8. 지금 SK 꼴로 담기 = 바탕 없는 SK + 더한줄 인력(LB) · 재료(MT) · 로직(기계경비 기초 + 기계 옵션) 담김 · % 줄 못 담음(비율 고정 금지) · 기계 EQ 직접 줄 셈 안 됨 · 근거 꼬리표 = `본뜬` 칸(꼴 안 바꿈).
|
||||
9. 권함 = 섞음 「기초 먼저 · 못 맞으면 요소」 — 맞음 · 다른 점 117 블록 그대로 · 고름 대기 89 중 요소 다 유일 · % 줄 없음 62 블록(부르는 줄 244)을 요소 SK + 근거 꼬리표(1위 기초 · 골든 1위 맞음 33 / 37)로 → 단가산출 줄 자동 417 → 661 / 735(57 → 90 %).
|
||||
10. 사용자가 정할 것 = 고름 대기 요소 SK 자동(지금 규칙 「바탕 없는 SK 로 몰래 채우지 않음」을 바꿈) · % 줄 담는 법 · 일감 넷 = 장비 잇기 규칙(S) · 기계 더한줄 셈(S) · 요소 SK 서버(M) · 화면 꼬리표(M).
|
||||
|
||||
---
|
||||
|
||||
## 1. 사용자 관찰 확인 — 실제 자료
|
||||
|
||||
### 1-1. 경쟁사 꼴(지식DB)
|
||||
|
||||
| 프로그램 | 단가산출(산근) 꼴 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| EST | 줄마다 글 계산 + 연결 단가 표지 — LinkIndex 105 기계목록 · 6 노임 · 5 자재 · 51 · 52 행 = 다른 항목 노 · 재 · 경을 그대로 받음 | `resources/knowledge/original/경쟁사 프로그램/EST Plus 2/REA 분석/09_수식집계_변경저장_추적_20261029/ESTPlus2_산근LineData_수량연결_정적분석_20261029.md:25` · `:42` |
|
||||
| EST | 품셈 = 「붙여 넣고 고치는 참고 글」 · 단가산출 = 자유 글 + 수식 편집기 | `docs/raw/요구_내역서/_분석_내역1-A_EST.md:25-26` |
|
||||
| STmate | 품셈 = 씨앗 · 정본 = 프로젝트 사본 · 일위대가 = 행 목록 편집 · 단가산출 = 글 식 편집기 | `docs/raw/요구_내역서/_분석_내역1-B_STmate.md:11-12` · `:88` |
|
||||
| 둘 다 | 장비 = 한 덩어리 + 노 · 재 · 경 칸 | `docs/raw/요구_내역서/_분석_내역14-6_EST_장비줄.md` ① 1 · 3 |
|
||||
|
||||
→ 경쟁사 쪽에는 「기초(품셈 로직)」라는 덩어리가 없음. 단가산출 · 일위대가 모두 「요소 연결 줄 목록」 · 단가산출은 그 위에 글 식이 더 붙은 것.
|
||||
|
||||
### 1-2. 산근 블록 206 꼴 (지금 판정 · `SkPatch.plan` 줄비교 기준)
|
||||
|
||||
| 꼴 | 블록 | 기초 | SK | 고름 대기 | EST꼴 107 | STmate 99 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| A 품셈 그대로(맞음 · 견줘 차이 없음) | 80 | 80 | — | — | 49 | 31 |
|
||||
| B 구성 같음 · 품만 다름 | 47 | — | 22 | 25 | 27 | 23 |
|
||||
| B0 숫자 하나뿐 · 모두 같음(`Fit.single` 이 막음) | 3 | — | — | 3 | (B 에 셈) | |
|
||||
| C 줄 더함 · 뺌 | 59 | — | 15 | 44 | 23 | 36 |
|
||||
| └ 엑셀이 더함 · 우리만 · 둘 다 | 30 · 16 · 13 | | 10 · 3 · 2 | 20 · 13 · 11 | | |
|
||||
| D 단위 성격 달라 견줌 못함 | 17 | — | — | 17 | 8 | 9 |
|
||||
| 합 | 206 | 80 | 37 | 89 | 107 | 99 |
|
||||
|
||||
- 고름 대기 꼴은 1위 후보와 견준 것(746-1 `줄비교` · `M02_Hopyo_SkPatch.py:375-389`) — 골든 고름 대기 60 줄 중 1위 맞음 50.
|
||||
- 판정 수 = 585 · 746-1 기록과 같음(기초 80 · SK 37 · 고름 대기 89). 지금 판정 상태 = 맞음 77 · 다른 점 45(→ SK 37 · 기초 3 · 대기 5) · 후보 84.
|
||||
|
||||
### 1-3. 블록 줄 갈래 (SK + 고름 대기 126 블록 줄비교 합)
|
||||
|
||||
| 갈래 | 같음(품 0.5 % 안) | 품다름 | 엑셀만(더한 줄) | 기초만(뺀 줄) |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 인력 | 32 | 92 | 6 | 23 |
|
||||
| 장비 | 16 | 46 | 69 | 27 |
|
||||
| 자재 | 1 | 10 | 19 | — |
|
||||
| 합 | 49 | 148 | 94 | 50 |
|
||||
|
||||
- 사용자가 더한 줄은 장비가 73 %(상차 굴착기 · 운반 덤프 · 집게) — 품셈 한 항목에 「채집 + 상차 + 운반」을 한 블록으로 묶는 꼴. 조합 둘 넘게 체크된 블록 14(`Verdict` 조합).
|
||||
- 짝 지은 줄 197 중 품까지 같은 줄 49(25 %) — 「같은 항목 · 다른 품」이 가장 흔함(585 C-4 와 같음).
|
||||
|
||||
### 1-4. 「일위대가처럼 쓴 단가산출」 · 「단가산출 부르는 단가산출」
|
||||
|
||||
| 잼 | 수 | 예 |
|
||||
| --- | --- | --- |
|
||||
| Q · 작업량 · 나눗셈 식 있음 | 147 | 굴착기 Q = 3,600 × q × K … ÷ Cm |
|
||||
| 식 없이 「요소 × 수량」만 늘어놓음 | 59(품셈 인용 52 · 인용 없음 7) | 철근가공조립 · 합판거푸집 · 유로폼 · 강관비계 · 잔토처리(인력) · 글자새김 — 품셈 표 값을 그대로 옮긴 일위대가 꼴 |
|
||||
| 블록 안에서 다른 블록 값을 부름(값 같음 대조) | 3 | 울진대흥 2200 · 울진소광 492 · 918 「콘크리트믹서사용 : 8,029 × 1」 — EST꼴 0 |
|
||||
| % 줄(공구손료 · 잡재료 · 소모자재 · 부자재 등) 있음 | 105 블록 · 152 줄 | 「인부소계 × 2 %」 · 「주자재비 × 9 %」 · 「주재료의 55 %」 |
|
||||
|
||||
- 가름기 = `rows621.py` `classify_text` · `stm_items`(줄 글 정규식 · STmate = 자원 L · X · M · S) · 요소 줄 수는 지금 함수 `Finger.excel`(`M02_Hopyo_Finger.py:135-276`) 그대로.
|
||||
|
||||
### 1-5. 일위대가 쪽에서 단가산출처럼 쓴 흔적 (호표 245)
|
||||
|
||||
| 흔적 | 호표 | 예 |
|
||||
| --- | --- | --- |
|
||||
| 노임 · 기계 품 줄을 바로 적음(단가산출 없이) | 59(`Finger.direct` 지문 55) | 영덕계류 5호 돌붙임 = 석공 0.12인 · 보통인부 0.03인 · 굴착기(타이어) 0.24시간 |
|
||||
| 근거글(호표 머리 글) | 37 — 품셈 인용 34 | 「건설표준품셈 7-2-1(메붙임)」 |
|
||||
| 규격 칸에 품 셈 「3인/230주」 | 3 | 영덕계류 12호 굴취(관목) |
|
||||
| 단가산출 줄만으로 된 호표 | 21 | 북부청 다수 |
|
||||
| 파일별 노임 · 기계 직접 줄 호표 | EST 북부청임도 3/68 · 북부청사방 2/27 · 거창 5/14 · STmate 봉화 15/45 · 영월 2/23 · 울진대흥 16/34 · 영덕 7/9 · 울진소광 9/25 | |
|
||||
|
||||
### 1-6. 판단
|
||||
|
||||
- 맞음 — 단가산출 셋 중 하나 넘게 품셈 꼴에서 줄을 더하거나 뺌(59) · 셋 중 하나 가까이가 요소 × 수량 나열(59) · 일위대가 넷 중 하나가 품셈 품을 바로 적음(59).
|
||||
- 다만 39 %(80)는 품셈 그대로 · EST 사용자(북부청)는 일위대가 = 단가산출 줄 + 자재로 거의 갈라 씀 · 섞어 쓰는 쪽 = STmate 사용자.
|
||||
|
||||
---
|
||||
|
||||
## 2. 요소 기준 연결 — 설계 · 실측
|
||||
|
||||
### 2-1. 설계(블록 줄 → M01 요소)
|
||||
|
||||
| 블록 줄 갈래 | 잇는 곳 | 지금 함수 | 담는 SK 더한줄 |
|
||||
| --- | --- | --- | --- |
|
||||
| 노무(인력) | LB 키 — 이름 · 옛이름 | `Basis.trade_names` · `Fixed.Linker.labor` | `{종류: 인력, 요소: LB…, 수량 = 엑셀 품}` |
|
||||
| 기계(장비) | EQ 키 → 기계경비 기초(GC000267 · 268 …) + `기계` 옵션 | `Fixed.Linker._machine`(`M02_Hopyo_Fixed.py:105-116`) · `Elem.machines`(`M02_Hopyo_Elem.py:93-113`) · `SkPatch._add_machine`(`M02_Hopyo_SkPatch.py:295-310`) | `{종류: 로직, 로직: GC…, 입력값: {기계: …}, 수량 = 시간}` |
|
||||
| 자재 · 별도계상 | MT 키 | `Match._exact` › `Material.sure` › `Material.candidates`(`M02_Hopyo_Material.py:206-276`) | `{종류: 재료, 요소: MT…, 별도계상?}` |
|
||||
| 경비(STmate S · 운반비) | 없음(M01 경비 요소 없음) | — | 고정 줄(금액) |
|
||||
| % (공구손료 · 잡재료) | 요소 아님 — 덧줄(기준 비목 × 율) | — | 담을 자리 없음(2-6) |
|
||||
| 하위 블록 | 그 블록 SK 참조 | — | `{참조: {키: SK-…}}` |
|
||||
|
||||
### 2-2. 실측 — 블록 줄 762 (206 블록)
|
||||
|
||||
| 갈래 | 줄 | 유일 | 여럿 · 후보만 | 없음 | 못 잇는 까닭 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 인력 → LB | 314 | 299(95 %) | 15 | — | 「작업반장」 LB 이름 둘 |
|
||||
| 장비 → EQ(지금 함수) | 183 | 59(32 %) | 여럿 114 · 갈래만 10 | — | 같은 갈래 · 규격에 이름 여럿(타이어 · 무한궤도 · 습지 · 부착물) 114 · 규격 표기 다름 5 · 규격 수 없음 5 |
|
||||
| 장비 → EQ(괄호 낱말 규칙 · 시험) | 183 | 172(94 %) | 여럿 1 · 갈래만 10 | — | 남은 11 = 「부착용집게 0.7~0.8」 · 「물탱크 5500ℓ」 · 「1.0+브레이카」 · 「펌프차 41m」 · 「커터 320-440mm」 · 「자동덮개 15톤용」 |
|
||||
| 자재 → MT | 89 | 10(11 %) | 후보만 76 | 3 | 이름 꼴 다름 54(「내수합판1급(12mm1220×2440)」 ↔ 「합판(내수), 서울 12t×1220×2440mm」) · 같은 이름 · 규격 여럿 15(지역 · 관급 변형 · 페인트 색) · 이름 맞음 규격 다름 7 · 우리에 없음 3(강관써포트 · 떼) |
|
||||
| 별도계상 → MT | 20 | 2 | 후보만 18 | — | 「레미콘」 · 「철근」 규격 없음 |
|
||||
| 경비(S) | 1 | — | — | 1 | M01 에 경비 요소 없음 |
|
||||
| % | 152 | 요소 아님 | | | 덧줄 율 |
|
||||
| 하위 | 3 | 블록 참조 | | | |
|
||||
| 합 | 762 | 370(49 %) · 규칙 뒤 483(63 %) | | | |
|
||||
|
||||
- 585 C-2(인력 95 % · 장비 32 % · 자재 10 %)와 같은 값 — 같은 함수 · 같은 판.
|
||||
- 자재 후보 1위는 대체로 맞는 품목(합판(내수) 12t · 각재(외송) · 유로폼패널 600×1200 · 고장력볼트 M20×60)이나 틀린 1위도 섞임(「합판(내수) 12×1220×2440」 → 「MA콘400」) — 정답 표 없음 · 자재는 사용자 고름 몫.
|
||||
- 자재 줄 21 은 `Finger` 가 못 읽음(가름기만 읽음) — 거창 「28,500. ×」 끝 점 꼴 14 · 북부청 이름 속 「=」(「도로반사경(…)(D=1000mm(STS)」) · 「매/㎡」 7(`M02_Hopyo_Finger.py:56-58` `_MAT`).
|
||||
|
||||
### 2-3. 장비 자세히 — 기계경비 기초 길도 같은 흠
|
||||
|
||||
| 길 | 잇힘 | 「굴착기(타이어형)」 줄 |
|
||||
| --- | --- | --- |
|
||||
| `Linker._machine`(갈래 + 규격 수 같음 · 하나일 때만) | 59 | 여럿 → 못 이음 |
|
||||
| `Elem.machines` 1위(이름 낱말 덤 · `Elem.py:98` · `:107`) | 183 모두 1위 있음 | 42 줄 모두 「굴착기(무한궤도)」 1위 |
|
||||
| `SkPatch._add_machine`(기계경비 기초 옵션 거꾸로 · 수준 ≤ 1) | 176(96 %) | 42 줄 모두 무한궤도 기계(0201-0060) |
|
||||
| 괄호 낱말 규칙(시험) | 172 | 「굴착기(타이어) 0.6㎥」(EQ000026) |
|
||||
|
||||
- 까닭 = `Match.words` 가 괄호 글을 뗌(`M02_Hopyo_Match.py:47` · `:88`) → 「타이어형」 사라짐 · 기계경비 기초 첫 후보 = `Combine.MACHINE` 굴착기 = GC000267 「굴착기(무한궤도)」(`M02_Hopyo_Combine.py:29`).
|
||||
- 금액 차 예 — 엑셀 굴삭기(타이어형) 0.6㎥ 시간당 105,932(노 59,020 · 재 19,792 · 경 27,120 · 14-6 2-2) · 무한궤도 기계로 잇으면 재 · 경이 달라짐. 지금 SK 의 「엑셀만 장비」 더한줄에도 같은 흠.
|
||||
|
||||
### 2-4. 블록 단위 — 요소만으로 사람 손 없이 끝나나
|
||||
|
||||
| 조건 | 블록 | 부르는 일위대가 줄(735) |
|
||||
| --- | --- | --- |
|
||||
| 지금 길(기초 · SK 자동) | 117(57 %) | 417(57 %) |
|
||||
| 요소 모두 유일(지금 함수) | 60 | — |
|
||||
| └ + % · 하위 · 경비 줄 없음 | 37 | 116 |
|
||||
| 요소 모두 유일(장비 규칙) | 122 | — |
|
||||
| └ + % · 하위 · 경비 줄 없음 | 86 | 331 |
|
||||
| 인력 · 장비 유일 · 자재는 사용자 고름 | 185 | — |
|
||||
| └ + % · 하위 · 경비 줄 없음 | 91 | — |
|
||||
| 고름 대기 89 중 요소 모두 유일(장비 규칙) + % 없음 | **62** | **244** |
|
||||
|
||||
- 요소만 길은 % 줄(105 블록)이 막음 — 품셈 그대로(A) 80 중 64 가 % 줄을 가짐(기초 덧줄이 담는 몫).
|
||||
- 고름 대기는 단순한 블록이 많음(잔토처리 · 되메우기 · 터파기(인력) · 조약돌 채집운반 · 흙깎기) — 요소 하나 ~ 넷 · % 없음.
|
||||
|
||||
---
|
||||
|
||||
## 3. 우리 기초 세부 줄 ↔ 엑셀 블록 줄 (사용자 뜻일 수 있는 견줌)
|
||||
|
||||
### 3-1. 방법
|
||||
|
||||
- 우리 쪽 = 기초 1,436 의 변형마다 노무(직종 품) · 기계(갈래 · 규격 · 시간) · 자재(이름 · 수량)(`M02_Hopyo_Ours.py:119-190` `_engine` · 캐시 지문).
|
||||
- 엑셀 쪽 = `Finger.excel` 지문(지금 맞춤과 같음).
|
||||
- 줄 짝 = 같은 직종 · 같은 장비 갈래(+ 규격 겹침) · 자재 낱말 겹침 · 같음 = 품 3 % 안(밑품 · 섞기 전 품 포함) · 우리만 자재는 안 셈(`SkPatch` 와 같음).
|
||||
- 줄 점수 = (2 × 같음 + 품다름) ÷ (엑셀 줄 + 우리 줄) · 변형 가운데 최고 · 스크립트 `probe621.py` `line_score`.
|
||||
|
||||
### 3-2. 골든 177 — 1위 맞음
|
||||
|
||||
| 순위 길 | 1위 | 다섯 안 | 지금과 |
|
||||
| --- | --- | --- | --- |
|
||||
| **지금**(지문 + 이름 · 근거 차례 + 같음 고정 + 조합 + 옵션 거꾸로) | **162**(92 %) | 173 | — |
|
||||
| 지문 점수만(`Fit.score_pair` · 차례 덤 없음) | 142 | — | −20 |
|
||||
| 줄 대 줄만(동점 = 목록 차례) | 86(49 %) · 동점 무리에 정답 110 · 유일하게 맞음 66 | — | −76 |
|
||||
| 줄 점수 먼저 · 지문 점수로 동점 가름 | 109 | 148 | −53 |
|
||||
| 줄 점수 × 6 + 이름 · 조항 · 조건 · 단위 · 율(지금 무게) | 136 | 154 | −26 |
|
||||
| 지금 다섯 안을 줄 점수로 다시 세움(174 줄) | 119 | — | 고침 2 · 깨짐 42 |
|
||||
|
||||
### 3-3. 왜 나쁜가
|
||||
|
||||
- 정답 기초와 품까지 같은 줄 0 개 = 69 줄(39 %) · 정답 줄 점수 중앙 0.64 — 실무 품은 품셈 판 · 설계자 손질로 거의 다 다름.
|
||||
- 정답보다 줄 점수가 높은 다른 기초 67 줄 — 예 「구조물되메우기(인력100%)」 → GF000078 보통인부 품 한 줄 같음 = 1.0 · 정답 0.67 · 「철근가공조립」 → GF000187 · GF000159(같은 줄 하나) · 동점 24 줄.
|
||||
- 요소 집합이 같은 기초가 많음(585 C-3 중앙 10) — 가르는 것은 이름 · 조항 · 조건(지금 무게 `M02_Hopyo_Fit.py:35-44`).
|
||||
- 결론 — 줄 대 줄 견줌은 「순위 열쇠」로 못 씀 · 고른 뒤 「보여주기」(746-1 `줄비교` · `SkPatch.compare` `:362-372`)로는 이미 씀.
|
||||
|
||||
---
|
||||
|
||||
## 4. 무엇을 잃고 얻나 · 지금 SK 꼴로 담기
|
||||
|
||||
### 4-1. 요소만으로 만들 때 (지금 기초 · SK 로 가는 117 블록 기준)
|
||||
|
||||
| 잃음 | 수 | 까닭 |
|
||||
| --- | --- | --- |
|
||||
| 품셈 근거(원문 번호 · 조항) | 117 | 바탕 없음 → 어느 품셈 절인지 문서에 없음 |
|
||||
| 덧줄(공구손료 · 잡재료 = 비목 × 율) | 86 | 바탕 없는 SK 에 율 줄 못 담음 → 금액 고정 줄로만 = 노무비 바뀌어도 안 따라감 |
|
||||
| 옵션(토질 · 규격 · 보정) | 109 | 입력 없음 → 설계 때 옵션 고르기 · 일위대가 규격 칸 옵션 없음 |
|
||||
| 하위 로직(기계경비 · 작업량) | 50 | 작업량 Q 식이 사라지고 결과 품만 남음 |
|
||||
| 기준단위 배 ≠ 1 | 13 | 10㎡ · 100본 당 머리 없음 |
|
||||
| 개정 추적(`바탕판` · 짝잃음 알림) | 117 | M01 품셈 개정 때 알림 없음 |
|
||||
| 기초 바뀜 따라감 | 기초 80 은 전부 · SK 37 은 바탕 줄 133 중 덮개 61 · 뺀줄 7 → 따라가는 몫 중앙 50 % | 요소 SK = 0 %(단가만 따라감) |
|
||||
| 금액 재현 | 같음 | 두 길 모두 엑셀 품 그대로 + 우리 단가 — 다른 점은 % 줄 |
|
||||
|
||||
| 얻음 | 수 | 까닭 |
|
||||
| --- | --- | --- |
|
||||
| 순위 틀림 위험 없음 | 골든 1위 틀림 15 줄 → 0 | 기초를 고르지 않음 |
|
||||
| 고름 대기 줄어듦 | 89 → 27(섞음 · 2-4) | 요소 키가 유일하면 끝 |
|
||||
| 경쟁사 · 실무자 그림과 같음 | — | EST · STmate 산근 = 요소 연결 줄 |
|
||||
| 「더한 줄」 자연스러움 | 더한 줄 94 | 바탕 없이 줄 목록 |
|
||||
|
||||
### 4-2. 지금 SK 자료 꼴로 담을 수 있나
|
||||
|
||||
| 담을 것 | 지금 꼴 | 됨 | 근거 |
|
||||
| --- | --- | --- | --- |
|
||||
| 바탕 없는 SK | `바탕: null` · 더한줄만 셈 | 됨 | `M02_Sangeun_Doc.py:3-20` · `:486-496` `empty_row` |
|
||||
| 인력 · 재료 줄 | 더한줄 `{종류: 인력 · 재료, 요소: LB · MT}` | 됨 | `:183-195` |
|
||||
| 기계 = EQ 키 바로 | 더한줄 `{종류: 기계, 요소: EQ…}` | **안 됨** — 단가 없으면 셈 오류 「unsupported operand type(s) for *: 'decimal.Decimal' and 'dict'」(메모리 셈 실측 · EQ 값 = 손료 · 연료 묶음 `master_material.py:258-259` → `master_formula.py:616-619`) | 기계는 기계경비 기초 로직 줄로(`SkPatch._add_machine` 꼴) |
|
||||
| % 줄 | 고정 비율 줄 | **안 됨** — 「비율 고정 줄은 단가산출에 못 담음 — 덧줄 율로」 · 덧줄은 바탕에서만 | `:171-172` |
|
||||
| 경비(운반비) | 고정 줄(금액) | 됨(값 고정) | `:163-172` |
|
||||
| 하위 블록 | 더한줄 `{참조: SK-…}` | 됨 | `:159-163` |
|
||||
| 근거 꼬리표(기초 키 · 셈 밖) | 문서 `본뜬` · 줄 `본뜬` 묶음 그대로 통과 | 됨(꼴 안 바꿈) | `:198` · `:321` |
|
||||
|
||||
- 지금 규칙 = 「고름 대기 = SK 안 만듦(바탕 없는 SK 로 몰래 채우지 않음)」(`M02_Hopyo_Sangeun.py:6-7`) — 요소 SK 자동은 이 규칙을 바꾸는 일.
|
||||
- 곁 흠(나) 자리 — 못옮김 「기계」 잇기 `LINK 기계 → (기계, EQ)`(`M02_Hopyo_SkPatch.py:50-54`) → `_Plan.link` 가 `{종류: 기계, 요소: EQ…}` 더한줄(`:189-211`) → 셈 오류. 시험 `test_729_hopyo_sk_link.py` 는 자재 잇기만 봄(기계 = 400 틀림 길만).
|
||||
|
||||
### 4-3. 섞음 — 요소 SK + 근거 꼬리표
|
||||
|
||||
- 문서 `본뜬.근거 = {로직: 1위 기초, 판정: 후보, 줄비교 수}` · 셈 밖(보기 · 찾기용).
|
||||
- 꼬리표 정확도 = 고름 대기 62 블록에 드는 골든 37 줄 중 1위 맞음 33(89 %).
|
||||
- [기초로 바꾸기] = 그 기초로 `SkPatch.plan(pick = {로직})`(`:411-477` · 이미 있는 길) → 바탕 + 덮개 SK 로 갈아탐(엑셀 품 그대로).
|
||||
|
||||
---
|
||||
|
||||
## 5. 권함 · 갈래 · 정할 것 · 일감
|
||||
|
||||
### 5-1. 권함 — (가) 섞음 「기초 먼저 · 못 맞으면 요소」
|
||||
|
||||
- 맞음 · 다른 점(기초 80 · SK 37) = 지금대로(근거 · 옵션 · 덧줄 · 개정 따라감 유지).
|
||||
- 고름 대기 89 중 요소 모두 유일 · % · 하위 · 경비 줄 없음 62 = 바탕 없는 요소 SK(인력 LB · 기계경비 기초 + 기계 · 재료 MT · 엑셀 품 그대로) + 근거 꼬리표.
|
||||
- 나머지 고름 대기 27 = 지금처럼 기초 고름(746-1 줄비교 보기) 또는 요소 고름.
|
||||
- 찾기 · 판정 문턱 안 바꿈(골든 1위 162 그대로).
|
||||
|
||||
### 5-2. 갈래
|
||||
|
||||
| 갈래 | 무엇 | 자동 단가산출 줄(735) | 장점 | 단점 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| **(가) 섞음(권함)** | 기초 먼저 · 대기 중 깨끗한 블록은 요소 SK | 661(90 %) | 근거 · 옵션 · 덧줄은 기초 117 블록에 남음 · 대기 줄 318 → 74 · 경쟁사 그림과 가까움 | 두 꼴 SK 가 섞임 · 요소 SK 62 는 품셈 개정 안 따라감 · 「몰래 채우지 않음」 규칙 바꿈 |
|
||||
| (나) 요소 먼저 | 모든 블록을 요소 SK + 근거 꼬리표 | 331(45 % · % 없는 블록만) | 순위 틀림 없음 · 꼴 하나 · 사용자 말 그대로 | % 줄 105 블록 못 담음(율 줄 새로 만들어야 · L) · 덧줄 86 · 옵션 109 · 근거 · 개정 추적 잃음 · 자재 고름 79 줄 늘어남 |
|
||||
| (다) 지금대로 | 기초 · SK · 고름 대기(746-1 줄비교 보기) | 417(57 %) | 일 없음 · 근거 다 남음 | 고름 대기 318 줄 사용자 몫 |
|
||||
| (라) 줄 대 줄 순위 | 기초를 세부 줄 견줌으로 찾음 | — | 사용자 뜻에 가까워 보임 | 골든 1위 162 → 86 ~ 136 — 실측으로 버림 |
|
||||
|
||||
### 5-3. 사용자가 정할 것
|
||||
|
||||
1. 고름 대기 중 요소가 다 이어지는 블록(62)을 — ① 요소 SK 로 자동 만듦(권함) ② 미리 고름 점만 · 사용자가 눌러 만듦 ③ 지금처럼 기초 고름만.
|
||||
2. 요소 SK 의 % 줄 — ① % 있는 블록은 요소 SK 대상에서 뺌(권함 · 지금 꼴 그대로) ② 금액 고정 줄로 담음(노무비 바뀌어도 안 따라감) ③ 더한줄 「율 줄」(기준 비목 × %) 새로 만듦(L · 짝 · B09 굳힘까지).
|
||||
3. 근거 꼬리표 — 1위 기초 키를 보여 줄지 · [기초로 바꾸기] 단추를 둘지.
|
||||
|
||||
(장비 = 기계경비 기초 줄로 담음 · 괄호 낱말 규칙은 흠 고침이라 정할 것 아님.)
|
||||
|
||||
### 5-4. 일감 나눔
|
||||
|
||||
| # | 일감 | 파일 | 크기 | 시험 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| ① | 장비 → EQ 괄호 낱말(타이어 · 무한궤도 · 습지 · 트럭탑재) + 부속(자동덮개 · 부착용 · 콤팩터) 뺌 · 기계경비 기초 첫 후보를 그 기계로 | `M02_Hopyo_Elem.py`(`machines`) · `M02_Hopyo_Fixed.py`(`Linker._machine`) · `M02_Hopyo_SkPatch.py`(`_add_machine` 옵션 거꾸로 결과 대조) | S | `test_705_3_hopyo_fixed` · `test_746_1_hopyo_compare` + 새 1(「굴착기(타이어형)(0.6㎥)」 → EQ000026) |
|
||||
| ② | 못옮김 기계 잇기 = EQ 키 → 기계경비 기초 로직 줄(GC000267 · 268 + 기계 입력) · 셈 오류 고침 | `M02_Hopyo_SkPatch.py`(`LINK` · `_Plan.link`) | S | `test_729_hopyo_sk_link` + 새 1(기계 잇기 뒤 SK 셈 됨) |
|
||||
| ③ | 고름 대기 요소 SK — 블록 줄 → 요소 더한줄(인력 · 기계경비 · 재료 · 참조) · 모두 유일 + % 없음일 때만 · `본뜬.근거` · 갈래 「요소」 | 새 `M02_Hopyo_SkElem.py`(SkPatch 477 줄 · 넘침 피함) · `M02_Hopyo_Sangeun.py`(`Maker.plan` 갈래 · 머리 글 규칙) | M | `test_729_hopyo_sk_link` · `test_718_1_hopyo_import` + 새 1(북부청임도 단산 13 잔토처리 = 보통인부 LB 한 줄 · 엑셀 품) |
|
||||
| ④ | 화면 — 마법사 고름 대기 창 「요소로 만듦」 표시 · SK 상세 근거 꼬리표 · [기초로 바꾸기] | `M02_MasterTemplete_Hopyo_WizardSk.ts` · `M02_MasterTemplete_Hopyo_Choose.ts` · 부품 상자 칩 | M | `test_746_2_hopyo_compare_screen` · ORCA |
|
||||
| (⑤) | (5-3 2 ③ 고를 때만) 더한줄 율 줄 | `M02_Sangeun_Doc.py` · `M02_Sangeun_Calc.py` · 화면 모델 | L | `test_727_sk_base_add` · `test_728_2_sk_unit` |
|
||||
|
||||
- 차례 = ① · ② 먼저(흠 고침 · 따로 작음 · 병행 가능) → ③(①② 뒤) → ④(③ 응답 꼴 뒤).
|
||||
- 자재는 자동 대상에서 빼지 않되 유일(10)만 자동 · 후보만 76 은 지금처럼 고름(`Elem.materials` 후보 셋).
|
||||
|
||||
### 5-5. 곁 발견 (621 밖 · 보고만)
|
||||
|
||||
- `Finger._MAT` 이 자재 줄 21 을 못 읽음 — 거창 끝 점 「28,500. ×」 14 · 이름 속 「=」 · 「/」 7(`M02_Hopyo_Finger.py:56-58`) → 거창 블록 자재 · 율 지문이 빔.
|
||||
- `SkPatch` 줄 견줌은 인력 · 장비 · 자재만 — % 줄은 견줌 밖(`M02_Hopyo_SkPatch.py:470-472`) · 엑셀 % 와 바탕 덧줄 율이 다른 블록이 SK · 기초에도 있음(`pct621.py` · 소모자재 % 처럼 꼴 차이 섞여 수는 안 굳힘).
|
||||
@@ -0,0 +1,257 @@
|
||||
# 621-C — 불러오기 엑셀 보기 · 세 보기 · 연결 하이라이트 (조사 · 읽기만)
|
||||
|
||||
조사 = 코드 따라감 + 여덟 실무 파일 실측(`tmp/brain_621/C/probe621c.py` → `out621c.json` · `probe621c_list.py` → `out621c_list.json`). 코드 · storage · git 안 고침. 화면 확인 = 안 함(올리기를 눌러야 창이 열림 · 금지 조작) → 코드 근거로 판단.
|
||||
경로 약어: `M02/` = `M02_MasterTemplete/` · `SS/` = `A00_Common/spreadsheet/` · `UI/` = `ui_template/`.
|
||||
|
||||
## 0. 요약 열 줄
|
||||
|
||||
1. 지금 엑셀 보기 창 = 마법사 ②의 [엑셀 보기 · 확인 · 만들기] 모달 하나 · 왼쪽 = A00 스프레드시트(읽기만 · 아래 탭 둘) · 오른쪽 = 호표 목록. 탭 = 엑셀꼴 「일위대가 · 단가산출」 · STmate 「일위대가표 · 단가산출근거」. 목록 · 총괄표는 안 보임.
|
||||
2. 오감은 한쪽 길뿐 — 일위대가 줄 [엑셀 보기] → **새 모달을 하나 더 띄워** 단가산출 행으로 감(격자 최대 1 MB 다시 받음). 블록 → 부르는 줄 · 목록 → 블록 길 없음 · 단가산출 시트 칸 누름은 아무 일 없음.
|
||||
3. **흠 하나 확인** — STmate 파일은 그 [엑셀 보기]가 단가산출근거로 못 감(시트 이름을 「단가산출」로 박음 `M02/…_Hopyo_Sheet.ts:86 · 395` · STmate 시트 이름 = 「단가산출근거」). 고침 = 한 줄.
|
||||
4. 세 보기 재료는 두 꼴 모두 파일 안에 있음 — 일위대가표(일위대가 · 일위대가표) · 단가산출표(엑셀꼴 「단가산출총괄표」 · STmate 「단가산출근거목록표」) · 단가산출 상세(단가산출 · 단가산출근거). 목록 행 ↔ 블록 짝 = 여덟 파일 **100 %**(엑셀꼴 B열 No · STmate 숨은 COD).
|
||||
5. 행 대응 — 일위대가 줄 → 엑셀 행 100 % · 단산 줄 → 블록 행 100 % · 블록 → 행 범위 있음(서버가 이미 보내지만 화면이 안 씀). 없는 것 = 목록표 행 · 블록 안 자원 줄 행 · 블록 → 부르는 줄 역표(블록 49 중 39 가 둘 이상 줄이 부름 · 최대 18).
|
||||
6. 연결 상태 대부분이 엑셀 보기 창에 안 닿음 — 줄 상태 9 갈래는 서버가 목록 읽을 때 **모든 줄을 이미 셈하고 수만 남겨 버림**(`M02/M02_Hopyo_Match.py:457-458`) · 사용자 고름 = 브라우저 캐시 · 블록 상태 · 안 이은 줄 = 마법사 메모리.
|
||||
7. 격자 부품 — 시트 여러 장 · 탭 · 범위 고름 · 보이는 칸만 그림 = 있음 · **칸 칠(밖에서 색 입힘) 없음**(조건부 서식은 값 조건만 · 늘 참 조건 없음) · 행 범위 잘라 보기 API 없음(행 숨김으로 대신 가능).
|
||||
8. 하이라이트 권함 = 공용 스프레드시트에 선택 옵션 `칠`(시트 · 행 · 열 → 꼴 이름) 하나 + 보이는 칸에만 `data-tone` → 1,000 행 넘어도 보이는 칸 수만큼(행 번호 → 꼴 표 한 번 찾기). 색 = `--color-success · warning · info · danger · accent` + `color-mix`(뱃지와 같은 꼴) · `--draw-*` 는 그림 전용이라 안 씀.
|
||||
9. 번짐 — `ui_template_hopyo_grid.ts` 는 엑셀 보기 창이 안 씀(B09 · M02 일위대가 표 몫) → 안 고침. 스프레드시트 `칠`은 안 주면 그대로라 E05 · 산출근거 · 면적 등 다른 쓰는 곳 영향 0 · `spreadsheet_grid.ts`(691 줄)는 손대지 않는 길로.
|
||||
10. 일감 = 가(서버 세 보기 격자 S~M) · 나(서버 상태 실어 보냄 S) · 다(공용 격자 칠 S) → 라(화면 범례 · 뛰기 · 칠 M) · 뒤 선택 마(블록 안 줄 칠 M) · 바(겹 모달 걷음 S). 사용자가 정할 것 여섯(5 절).
|
||||
|
||||
---
|
||||
|
||||
## 1. 지금 엑셀 창
|
||||
|
||||
### 1-1. 마법사 걸음마다 보이는 것
|
||||
|
||||
| 걸음 | 본 칸 | 엑셀 보기 | 근거 |
|
||||
| --- | --- | --- | --- |
|
||||
| ① 층 · 엑셀 | 결과 층 · 결과 체크 · [엑셀 고르기] · 작업 중 목록 | 없음 | `M02/…_Hopyo_Wizard.ts:105-182` |
|
||||
| ② 보기 · 확인 · 만들기 | 파일 줄 · (단가산출 체크면) [단가산출 만들기] 만든 표 · 고름 대기 표 · 일위대가 머리 · 안 이은 줄 띠 · [엑셀 보기 · 확인 · 만들기] [끝내기] [처음으로] | [엑셀 보기 · 확인 · 만들기] = 모달 | `Wizard.ts:184-267` · `WizardSk.ts:130-235` |
|
||||
| ② 엑셀 보기 모달 | 머리 막대(시트 · 호표 수 · 검산 · 제안 n/줄 m · 셈 중 · [삭제]) · 왼쪽 시트 · 오른쪽 찾기 · [모두 고정으로 들여오기] · [저장] · 호표 목록(체크 · 제N호표 · [수정] · 이름 · n/m 초록) · 결과 표 | 본 창 | `M02/…_Hopyo_Sheet.ts:156-212 · 222-237 · 299-335` |
|
||||
| ② 호표 [수정] → 확인 창 | 줄 표(상태 꼬리표 · 체크 · 고르기 · 원문 · 엑셀 보기) · 머리 [엑셀 보기] | 머리 [엑셀 보기] = **새 엑셀 모달**(그 호표) · 줄 [엑셀 보기] = **새 엑셀 모달**(단가산출 행) | `M02/…_Hopyo_Check.ts:210-211 · 395-403 · 592-604` · `…_CheckRows.ts:196` |
|
||||
| ② 고르기 창 | 엑셀 품 · 근거 · 후보 | [엑셀 보기] = 새 엑셀 모달(단가산출 행) | `M02/…_Hopyo_Choose.ts:199-202 · 330-345` |
|
||||
| ② 단가산출 칸 · 안 이은 줄 · 못옮김 창 | 블록 표 · 후보 · 줄 비교 | **없음**(블록에서 엑셀로 가는 길 없음) | `WizardSk.ts:138-193` · `…_Hopyo_Left.ts` · `…_Hopyo_Lost.ts` |
|
||||
| ③ 끝내기 | 물음 → 지움 | 없음 | `Wizard.ts:269-303` |
|
||||
|
||||
### 1-2. 꼴마다 보이는 시트 · 범위(실측)
|
||||
|
||||
| 꼴 · 파일 | 탭(차례) | 범위 | 틀고정 · 서식 | 안 보이는 일위대가 · 단가 시트 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 엑셀꼴 xls — 북부청 임도 · 사방 | 일위대가 · 단가산출 | 시트 통째(임도 = 일위대가 560 행 · 단가산출 4,345 행 · 21,720 칸) | 파일 값(4 · 3) · 서식 34 · 병합 11 | 일위대가총괄표 · **단가산출총괄표** · 기계경비(총괄표) · 자재 · 노임단가 |
|
||||
| 엑셀꼴 xlsx — 거창 | 일위대가 · 단가산출 | 머리 4 줄 끝 열까지(단가산출 2,471 행) | 4 · 서식 없음(값 · 열 폭만) | 일위대가총괄표 · **단가산출총괄표** 등 50 시트 |
|
||||
| STmate xlsx — 봉화 · 영월 · 대흥 · 영덕 · 소광 | 일위대가표 · 단가산출근거 | 같음 · 숨은 칸 글 「_x000…」 뺌(영월 단가산출근거 5,604 행) | 4 · 서식 없음 | 일위대가목록표 · **단가산출근거목록표** · 중기 · 재료비 · 노무비 목록표 |
|
||||
|
||||
- 읽는 시트 = `M02/M02_Hopyo_Grid.py:27`(SHEETS 넷 중 있는 것) · xlsx 값만 = `Grid.py:216-244` · 올릴 때 한 번 지어 둠 `M02/M02_Labor_Router.py:241` → 읽기 `Router.py:311-318` · `M02_Hopyo_Store.py:143-148`.
|
||||
- 격자 JSON 크기 = 100 KB(영덕) ~ 1,078 KB(북부청 임도) · 짓기 0.06 ~ 5.3 초(거창 50 시트 xlsx).
|
||||
|
||||
### 1-3. 화면 안 오감(지금)
|
||||
|
||||
| 누름 | 일 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 오른쪽 호표 줄 | 일위대가 시트에서 그 호표 영역(B열 ~ 끝 열) 고름 · 목록 강조 | `Sheet.ts:269-275 · 329` |
|
||||
| 일위대가 시트 칸 | 그 행의 호표 영역을 통째로 다시 고름(누른 줄 자리는 사라짐) · 목록 강조 | `Sheet.ts:352-364` |
|
||||
| 단가산출 시트 칸 | 아무 일 없음(`at.시트 !== ilwi` 면 돌아감) | `Sheet.ts:354 · 361` |
|
||||
| 탭 누름 | 그 시트 · 시트마다 마지막 고름 기억 | `SS/spreadsheet.ts:135 · 286-296` |
|
||||
| 줄 [엑셀 보기](확인 · 고르기 창) | 새 모달 → `단산행` → 단가산출 B ~ F 열 고름 | `Check.ts:395-403` · `Sheet.ts:140-141 · 395` |
|
||||
| 블록 → 부르는 줄 · 목록 → 블록 · 일위N참조 줄 → 하위 호표 | **없음** | — |
|
||||
| 함께 보기(나란히) | **없음** — 겹 모달만 | — |
|
||||
|
||||
- **흠(확인)** — `DANSAN = "단가산출"`(`Sheet.ts:86`)으로 시트를 이름으로 찾음(`Sheet.ts:395` → `SS/spreadsheet.ts:372-379` id · 이름 같은 것) → STmate 시트 이름 「단가산출근거」(실측 다섯 파일 모두) → 못 찾음 → 일위대가표 A1 에 머묾. 일위대가 쪽은 `ILWI` 못 찾으면 첫 시트로 넘어가 우연히 맞음(`Sheet.ts:344`).
|
||||
- 곁 흠 — 읽기만 시트인데 탭 줄 「+」 · 두 번 눌러 이름 바꾸기 입력이 보임(명령은 막힘 · `SS/spreadsheet_tabs.ts:50-56 · 98-104 · 166-178` · `SS/spreadsheet.ts:228`) · 엑셀 보기 창 날 `<input>` 둘(`Sheet.ts:169-172 · 307` — 부품 상자 규칙 밖 · 지금 일).
|
||||
|
||||
### 1-4. 격자 부품이 되는 것 · 안 되는 것
|
||||
|
||||
엑셀 보기 창 격자 = **A00 스프레드시트**(`SS/spreadsheet.ts` · 격자 `SS/spreadsheet_grid.ts`) · `UI/ui_template_hopyo_grid.ts` 는 우리 일위대가 꼴 데이터표(M02 일위대가 카드 · 상세 · B09 호표 보기)라 이 창과 무관.
|
||||
|
||||
| 기능 | 되나 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 시트 여러 장 · 아래 탭 | ○ | `SS/spreadsheet.ts:159 · 166` · `SS/spreadsheet_tabs.ts:50-56` |
|
||||
| 다른 시트 범위 고르고 보이게 굴림 | ○ `select(범위, 시트 id/이름)` · 범위 여럿 | `SS/spreadsheet.ts:96-98 · 372-383` |
|
||||
| 고름 알림(시트 · 칸 · 범위) | ○ `onSelect` | `SS/spreadsheet.ts:62-63 · 279-283` |
|
||||
| 보이는 칸만 그림(가상) | ○ 4 판 · 보이는 행열만 div · 칸 재사용 | `SS/spreadsheet_grid.ts:2-9` |
|
||||
| 행 범위 잘라 보기 | ✕ API 없음 — 대신 행 숨김(숨긴 행열 건너뜀 `spreadsheet_grid.ts:4`) · 사본 시트 · 필터 | — |
|
||||
| 밖에서 칸 · 행 칠 | ✕ — 조건부 서식은 값 비교 · 사이 · 글 포함 · 수식(수식은 `evalFormula` 안 이어져 늘 거짓) · 「늘 참」 없음 · 규칙마다 범위 훑음 | `SS/spreadsheet_condfmt.ts:45-74 · 87-100` · `SS/spreadsheet_grid_cells.ts:278-286` |
|
||||
| 참조 색 테두리 | 내부만(`ctx.grid.setRefHighlights` · 손잡이 밖) · 색 5 개 hex 박힘 | `SS/spreadsheet_grid.ts:46 · 523-560` |
|
||||
| 손가락 톡 | ○ 호환 마우스 이벤트 → M02 `mouseup` 듣개에 닿음 | `SS/spreadsheet_mouse.ts:258-300` |
|
||||
|
||||
---
|
||||
|
||||
## 2. 요구 3 — 세 보기
|
||||
|
||||
### 2-1. 뜻(해석)
|
||||
|
||||
| 보기 | 엑셀꼴(EST) 시트 | STmate 시트 | 지금 |
|
||||
| --- | --- | --- | --- |
|
||||
| 일위대가표 | 「일위대가」 | 「일위대가표」 | 보임 |
|
||||
| 단가산출표(목록) | 「단가산출총괄표」(No · 품명 · 규격 · 단위 · 합계 · 노무비 · 재료비 · 경비 · 비고) | 「단가산출근거목록표」(제N호표 · 명칭 · 규격 · 단위 · 합계 · 노 · 재 · 경 · 비고 · 숨은 COD\|D…) | **안 보임**(엑셀꼴은 읽지도 않음 `M02/M02_Hopyo_Excel.py:85` · STmate 는 이름만 읽음 `M02/M02_Hopyo_Stmate.py:70-86`) |
|
||||
| 단가산출 상세(블록) | 「단가산출」 | 「단가산출근거」 | 보임 |
|
||||
|
||||
- 다른 해석(나) = 「단가산출표」 = 블록 시트 · 「단가산출 상세」 = 한 블록만 잘라 보기. 두 꼴 모두 목록 시트가 있어 (가) 권함 · 5 절 정할 것 1.
|
||||
|
||||
### 2-2. 실측 — 목록 행 ↔ 블록 · 호표 짝(여덟 파일)
|
||||
|
||||
| 파일 | 꼴 | 단가산출 목록 행 → 블록 | 일위대가 목록 행 → 호표 | 블록 행 수(중앙 · 최대) | 블록 둘 이상 줄이 부름 / 불리는 블록 · 최대 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 북부청 임도 | 엑셀꼴 xls | 95 / 95 | 68 / 68 | 38 · 123 | 39 / 49 · 18 |
|
||||
| 북부청 사방 | 엑셀꼴 xls | 67 / 67 | 27 / 27 | 36 · 122 | 20 / 45 · 18 |
|
||||
| 거창 | 엑셀꼴 xlsx | 61 / 61 | 14 / 14 | 36 · 81 | 3 / 13 · 5 |
|
||||
| 봉화 | STmate | 65 / 65 | 45 / 45 | 70 · 140 | 16 / 31 · 11 |
|
||||
| 동부청 영월 | STmate | 69 / 69 | 23 / 23 | 50 · 150 | 19 / 35 · 11 |
|
||||
| 울진 대흥 | STmate | 47 / 47 | 34 / 34 | 36 · 121 | 8 / 14 · 15 |
|
||||
| 영덕 계류 | STmate | 15 / 15 | 9 / 9 | 51 · 126 | 0 / 2 · 1 |
|
||||
| 울진 소광 | STmate | 40 / 40 | 25 / 25 | 35 · 106 | 7 / 17 · 8 |
|
||||
|
||||
- 짝 열쇠 = 엑셀꼴 B열 「No」(= 산근 번 · 「단산N참조」의 N) · 「제N호표」 / STmate 숨은 칸 `COD|D…` · `COD|B…`(목록 「산근 1」 차례 번 ≠ 블록 번 — 대흥 목록 1 = D00075) · 목록 첫 행 = 4 행(모두).
|
||||
- 일위대가 줄 → 엑셀 행 = 줄 수와 같음(415 · 201 · 68 · 209 · 138 · 171 · 31 · 117 — 100 %) · 단산 참조 줄 → 블록 행 = 100 % · 하위 호표(일위N) 줄 → 호표 번 = 100 %.
|
||||
- 안 불리는 블록이 많음(임도 46 / 95 · 거창 48 / 61) — 목록 · 상세에서 「밖」 칠 몫.
|
||||
|
||||
### 2-3. 보기마다 쓸 시트 · 범위 · 열
|
||||
|
||||
| 보기 | 시트(역할 id) | 줄 단위 | 행 → 무엇 | 칠 열 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 일위대가표 | 일위대가 · 일위대가표 | 호표 머리 행 · 구성 줄 행 | 줄 = (호표 번, 차례) · 행 `M02_Hopyo_Excel.py:288` · `M02_Hopyo_Stmate.py:225` | 표 열(엑셀꼴 머리로 찾은 열 `Excel.py:252` · STmate A ~ M `Stmate.py:41-42`) — 화면은 `lastColumn`(`Sheet.ts:117-124`)까지 |
|
||||
| 단가산출표 | 단가산출총괄표 · 단가산출근거목록표 | 목록 한 행 = 블록 하나 | 행 → 블록 번(새로 셈) | 목록 표 열(B ~ 비고) |
|
||||
| 단가산출 상세 | 단가산출 · 단가산출근거 | 블록 행 범위 | 블록 `행 [시작, 끝]` `M02_Hopyo_Basis.py:127 · 142` · `Stmate.py:109 · 120 · 131` | 블록 글 열(엑셀꼴 B · STmate B ~) |
|
||||
|
||||
- 탭 차례 = 일위대가표 · 단가산출표 · 단가산출 상세(두 꼴 같은 꼴) · 탭 글 = 통일 이름 권함(원래 시트 이름은 머리 막대 「원본 시트」 글).
|
||||
- 시트 id 를 서버가 역할로 줌(`보기 {일위대가표, 단가산출표, 단가산출상세}`) → 화면이 이름으로 찾지 않음 → 1-3 흠이 함께 풀림.
|
||||
|
||||
### 2-4. 줄 누르면 다른 보기로 뛰기
|
||||
|
||||
| 지금 자리 | 뛸 곳 | 재료 |
|
||||
| --- | --- | --- |
|
||||
| 일위대가표 단산N 줄 | 단가산출 상세 블록 N(행 범위) · 단가산출표 N 행 | 줄 `참조` · `근거.행` |
|
||||
| 일위대가표 일위N 줄 | 같은 시트 제N호표 영역 | 줄 `참조.번` · 호표 `행` |
|
||||
| 단가산출표 행 | 상세 블록 · 부르는 줄(여럿) | 목록 행 → 번(새) · 역표(새) |
|
||||
| 단가산출 상세 블록 안 칸 | 부르는 줄(1 ~ 18 · 차례로 돌림) · 목록 행 | 역표(새) |
|
||||
| 어디서나 | [◂ 뒤로](뛴 자리 쌓음) | 시트마다 고름 기억(`SS/spreadsheet.ts:135`) |
|
||||
|
||||
- 꼴 — 머리 막대에 지금 고른 행에 맞는 단추만(「▸ 단가산출 상세 · 단산46」 · 「▸ 부르는 줄 1/18」 · 「▸ 단가산출표」 · 「◂ 뒤로」) · 넓은 화면은 두 번 누름 = 첫 단추 · 손가락은 단추(두 번 톡 안 씀).
|
||||
- 일위대가 칸 누름 꼴 바꿈 권함 — 구성 줄 행 = 그 행만 고름 + 목록 강조 · 머리 행 = 호표 영역 고름(지금은 늘 영역 통째라 누른 줄을 잃음 `Sheet.ts:360-364`).
|
||||
- 겹 모달 걷음 — 확인 · 고르기 창 [엑셀 보기]가 열린 엑셀 창이 있으면 그 창에서 뜀(새 모달 · 격자 다시 받기 없음). 선택 일감 바(5 절).
|
||||
- 함께 보기(나란히) = 시트 두 벌(격자 두 번 · 1 MB 두 벌) → 뒤로 미룸 권함.
|
||||
|
||||
---
|
||||
|
||||
## 3. 요구 5 — 연결 상태 하이라이트
|
||||
|
||||
### 3-1. 상태가 지금 있는 자리
|
||||
|
||||
| 상태 | 정본 자리 | 지금 화면에 오는 길 | 엑셀 보기 창이 아나 |
|
||||
| --- | --- | --- | --- |
|
||||
| 줄 상태 9(맞음 · 별칭 · 다른 점 · 후보 · 없음 · 뺌 · 호표 · % · 노임) + 체크 제안 | 서버 `match_line`(`M02/M02_Hopyo_Line.py:244-283`) — 목록 읽기 때 **모든 줄을 이미 셈**(`M02_Hopyo_Match.py:457` → `Line.py:400`) · 수(맞춤 · 연결할 · 연결된)만 남김(`Match.py:458`) | 호표 하나씩 `GET hopyo/{키}/{번}`(확인 창) | ✕ — 목록 n/m 초록만(`Sheet.ts:316-317`) |
|
||||
| 사용자 고름(대상 · 체크 · 뺌 · 통째) | 브라우저 sessionStorage `m02-hopyo-check:{층}:{주인}:{키}:{번}`(`Check.ts:66-107`) | 확인 창 · 안 이은 줄 창 | △ [저장] 때만 읽음(`Sheet.ts:417-426`) |
|
||||
| 만든 호표(일위대가 키 · 품셈 줄 · 고정 줄) | 서버 `ctx.done`(`Line.py:405-408`) | 호표 하나 읽기 | ✕ |
|
||||
| 안 이은 줄 | 서버 미리 보기 `/hopyo-unlinked` 호표마다 | 마법사 메모리 `LeftMap`(`Wizard.ts:212-213` · `Left.ts:67-92` · 호표마다 요청 둘) | ✕ |
|
||||
| 블록 기초 · SK · 고름 대기 · 같은 것 씀 | [단가산출 만들기] 답(`M02_Hopyo_Sangeun.py:263-313`) · 만든 SK = 본뜬 「HP 단산N」(`Sangeun.py:45-68`) · 판정 = 맞춤셈 캐시(`Sangeun.py:197`) | 마법사 메모리(`WizardSk.ts:67-69`) | ✕ |
|
||||
| 못옮김 | SK `본뜬.못옮김`(`Sangeun.py:286`) · 답 `만듦[].못옮김` | 단가산출 칸 · 못옮김 창 | ✕ |
|
||||
| 후보 블록 줄 비교(같음 · 품다름 · 엑셀만 · 기초만) | 답 `고름대기[].후보[].줄비교`(746-1 · `Hopyo_Api.ts:245-258`) | 단가산출 칸 | ✕ · 줄 → 행 없음 |
|
||||
|
||||
### 3-2. 줄 id ↔ 엑셀 행 · 열 대응
|
||||
|
||||
| 대응 | 있나 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 일위대가 줄 → 행 | ○(서버 응답엔 실림 · 화면 타입 `HopyoLine` 엔 칸 없음 `Hopyo_Api.ts:170-183`) | `Excel.py:288` · `Stmate.py:225` |
|
||||
| 호표 → 행 범위 | ○ 목록 · 격자 둘 다 | `Match.py:458` · `Grid.py:255` |
|
||||
| 단산 줄 → 블록 행 | ○ `근거.행` | `Excel.py:297` · `Stmate.py:252` |
|
||||
| 블록 → 행 범위 | ○ 격자 응답 `단산`(화면 안 씀) | `Grid.py:256` · `Hopyo_Api.ts:55-59` |
|
||||
| 블록 → 부르는 줄(역표) | 첫 줄만(`Sangeun.calls` `Sangeun.py:85-96`) | 2-2 둘 이상 줄 많음 |
|
||||
| 목록표 행 → 블록 · 호표 | ✕ 안 읽음 · 실측 짝 100 %(2-2) | — |
|
||||
| 블록 안 자원 · 직종 줄 → 행 | ✕(STmate `자원` 에 행 없음 `Stmate.py:148-157` · 엑셀꼴 직종 줄 행 없음 `Basis.py:146-150`) | 줄 안 칠은 선택 일감 마 |
|
||||
|
||||
### 3-3. 색 · 범례(권함 = 결과 다섯 칠 + 띠 하나)
|
||||
|
||||
| 칠 | 뜻(범례 글) | 드는 상태 | 토큰 |
|
||||
| --- | --- | --- | --- |
|
||||
| 초록 | 이어짐 | 맞음 · 별칭 · 호표(하위 확인됨) · 체크한 사용자 고름 · 기초 블록 · 만든 SK(못옮김 0) | `--color-success` |
|
||||
| 주황 | 이어짐 · 엑셀과 다름 | 체크한 다른 점 · SK(차이) | `--color-warning` |
|
||||
| 파랑 | 고를 것 | 후보 · 체크 안 한 다른 점 · 고름 대기 블록 · 하위 호표 확인 전 | `--color-info` |
|
||||
| 빨강 | 못 이음 | 없음 · 노임(그릇 없음) · 안 이은 줄 · 못옮김 남음 | `--color-danger` |
|
||||
| 칠 없음 · 글 흐림 | 밖 | % · 뺌(로직없음 · 사용안함) · 안 불리는 블록 | `--color-text-muted` |
|
||||
| 왼쪽 3 px 띠 | 내가 고름 | 캐시에 대상 · 뺌이 있는 줄 | `--color-accent` |
|
||||
|
||||
- 「이어짐」 판정 = 확인 창과 한 규칙(`isChecked && checkable` `Check.ts:110-123`) — 캐시 고름이 이기고 · 없으면 서버 체크 제안(맞음 + 배 확실일 때만 켬 `Line.py:139-150`).
|
||||
- 머리 행 = 그 호표 줄 칠 중 가장 나쁜 것 · 만든 호표는 목록에 「만듦」 배지.
|
||||
- 블록 칠 = 만든 SK 있으면 그 갈래 · 없으면 부르는 첫 줄 판정 「예상」(맞음 → 초록 · 다른 점 → 주황 · 후보 → 파랑) — 「예상」은 풍선 글로 가름.
|
||||
- 풍선(title) = 서버 상태 원문(「다른 점 · 규격 다름」) + 고른 것.
|
||||
- 칠 꼴 = 칸 `data-tone` → CSS `background-image: linear-gradient(color-mix(in srgb, var(--color-success) 18%, transparent), …)` — 칸 원래 채움(xls 서식 · 인라인 `background-color` `SS/spreadsheet_cellstyle.ts:186`) 위에 겹쳐 보임 · 뱃지와 같은 꼴(`UI/ui_template_badge.css:33`) · 어두움은 `--color-*` 어두움 값이 따라감(`UI/ui_template_theme.css:295-305`).
|
||||
- `--draw-*` 는 SVG · CAD · 3D 그림 전용 고정 색(`UI/ui_template_theme.css:530-537`) → 안 씀.
|
||||
- 범례 = 부품 `createLegend`(`UI/ui_template_flow_legend.ts:24` · 색 = CSS 값 글) · 머리 막대 아래 한 줄.
|
||||
- 다른 안(나) = 확인 창 상태 꼬리표 색 그대로 일곱(`M02/…_Hopyo.css:112-147` · 별칭 = 파랑) — 꼬리표와 색이 같아 배우기 쉬우나 「제대로 연결됐나」 한눈에 안 보임.
|
||||
|
||||
### 3-4. 1,000 행 넘을 때 속도
|
||||
|
||||
| 잼 | 값 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 가장 큰 시트 | 영월 단가산출근거 5,604 행 · 북부청 임도 단가산출 4,345 행 · 21,720 칸 | 실측 |
|
||||
| 그리는 칸 | 보이는 칸만(판 하나 수백 칸) | `SS/spreadsheet_grid.ts:8-9` |
|
||||
| 칠 셈 | 보이는 칸마다 행 번호 → 꼴(시트마다 `Uint8Array(행 수)`) 한 번 · 규칙 훑기 없음 | 설계 |
|
||||
| 칠 표 짓기 | 일위대가 줄 ≤ 415 + 블록 행 합 ≤ 5,600 · 상태 바뀔 때만 | 실측 |
|
||||
| 다시 칠 | `repaint()` = 보이는 칸만 다시(`grid.render`) · 문서 다시 안 읽음 | 설계 |
|
||||
| 서버 덧 짐 | 목록 응답에 줄 상태 ≤ 415 개(수 KB ~ 17 KB) · 셈은 이미 함(덧 셈 0) · 셈 중 3 초 폴링(`Sheet.ts:368-378`) 그대로 | `Match.py:457` |
|
||||
| 피함 | 조건부 서식 규칙으로 칠(칸마다 규칙 · 범위 훑음) · 문서 칸 서식 고쳐 `setDoc`(고름 · 기억 초기화 `SS/spreadsheet.ts:300-311`) | — |
|
||||
|
||||
- 브라우저 실측 안 함(창 열려면 올리기 필요 · 금지 조작) — 구조 근거.
|
||||
|
||||
### 3-5. 모바일(390 폭)
|
||||
|
||||
- 틀 = 730-2 꼴 그대로(900 px 아래 위 시트 3 : 아래 목록 2 `M02/…_Hopyo.css:256-261`).
|
||||
- 세 보기 = 스프레드시트 아래 탭 셋(글 짧게 「일위대가표 · 단가산출표 · 상세」) · 「+」 숨김(읽기만).
|
||||
- 범례 = 한 줄 · 넘치면 두 줄로 감김 · 칠 다섯 + 띠.
|
||||
- 뛰기 = 머리 막대 단추(감김) · 톡 = 칸 고름(`SS/spreadsheet_mouse.ts:258-300`) · 두 번 톡 안 씀.
|
||||
- 칸 칠은 좁은 칸에도 보임(배경) · 왼쪽 띠는 칸 왼 테두리 그림자.
|
||||
|
||||
---
|
||||
|
||||
## 4. 막힘 · 위험 · 번짐
|
||||
|
||||
| # | 무엇 | 크기 · 근거 | 대응 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 700 줄 근처 — `M02/…_Hopyo_Api.ts` 676 · `…_Hopyo_Check.ts` 663 · `…_Hopyo_Sheet.ts` 592 · `SS/spreadsheet_grid.ts` 691 · `M02/M02_Labor_Router.py` 624 · `M02_Hopyo_Build.py` 608 | wc | 새 타입 · 칠 · 뛰기 = 새 파일 · Sheet 는 잇는 줄만(+20 안팎) · Check 는 한 줄(캐시 바뀜 알림) · grid.ts 안 만짐 |
|
||||
| 2 | 공용 스프레드시트 바꿈 → 쓰는 곳 | E05 안정 보고 · M02 산출근거 · 면적 · 항목 카드 · DataFlow · `UI/ui_template_item_picker_edit.ts` · 시험 harness | `칠` 안 주면 그대로 · 칸에 `data-tone` 빈 값 · 영향 0 |
|
||||
| 3 | `ui_template_hopyo_grid.ts` 바꾸면 B09 번짐 | B09 `B09_Estimation_UI_Tabs_Labor.ts` · M02 Labor_Grid · Rows · Spec · Table · 시험 704-3 · 704-4 · 155 · 157-4 · 201-1 | 이 일감은 안 만짐(엑셀 보기 창이 안 씀) |
|
||||
| 4 | `M02_Hopyo_Excel._sheets` 바꾸면 B09 번짐 | B09 `B09_Estimation_Bill_Hopyo.py:23` 가 `read_book` 씀 | `_sheets(…, wanted=None)` 인자만 더함(기본 그대로) · 격자만 목록표를 받음 |
|
||||
| 5 | 격자는 올릴 때 지어 둠(`Router.py:241`) | 옛 작업 중 파일 = 목록 탭 없음 | 743 일회성 · 하루 지나면 지움 → 다시 올림이면 됨 · 화면은 `보기` 없으면 지금 꼴 |
|
||||
| 6 | 상태가 세 곳(서버 · 캐시 · 마법사 메모리) | 3-1 | 칠 = 서버 줄 상태 + 캐시 · 블록 = 서버 SK 훑기 + 판정 캐시(만들기 요청 다시 안 부름 · 만들기 = 쓰기) · 안 이은 줄 = 마법사가 셈한 것만(없으면 「못 이음」 칠 = 상태 없음 · 후보로 대신) |
|
||||
| 7 | 확인 창(엑셀 창 위 모달)에서 고침 → 엑셀 창 칠 늦음 | 캐시 쓰기에 알림 없음 | `saveDraft` 에 문서 알림 한 줄 · `HOPYO_BUILT` 이미 있음(`Check.ts:61`) → 엑셀 창이 듣고 다시 칠 |
|
||||
| 8 | 판정 「예상」과 실제 만들기 갈래 차이 | 단위 성격 다름 · 숫자 없음 = 고름 대기(746) | 블록 칠 = 만든 뒤 정본 · 전엔 「예상」 풍선 |
|
||||
| 9 | 글 박힌 시험 | `test_m02_hopyo_grid.py:133 · 146`(시트 이름 · 차례 박힘) · `test_m02_hopyo_screen.py:383-402 · 446-460`(Sheet 글) · `test_730_*` · `test_741_sheet_widths.py` | 일감마다 낡은 시험 고침 · 까닭 커밋 글 |
|
||||
| 10 | xlsx 격자 = 값 · 열 폭만(서식 · 병합 없음 `Grid.py:217`) | 여덟 중 여섯 | 칠이 더 잘 보임 · 서식 넣기는 이번 밖 |
|
||||
| 11 | 거창 xlsx 격자 짓기 5.3 초(50 시트 책) | 실측 | 목록표 하나 더해도 같은 책 한 번 읽음 · 덧 시간 작음 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 권함 · 정할 것 · 일감
|
||||
|
||||
### 5-1. 권함
|
||||
|
||||
1. 세 보기 = 한 스프레드시트 · 아래 탭 셋(일위대가표 · 단가산출표 · 단가산출 상세) · 서버가 역할 id 를 줌 · 두 꼴 같은 꼴.
|
||||
2. 뛰기 = 머리 막대 맥락 단추 + [◂ 뒤로] · 블록 → 부르는 줄 여럿은 차례로 돌림 · 나란히 보기는 뒤로.
|
||||
3. 칠 = 결과 다섯 + 내가 고름 띠 · 공용 격자에 `칠` 옵션 하나 · 칸 위 겹침 색(`--color-*` · `color-mix`) · 범례 `createLegend`.
|
||||
4. 상태 = 서버가 이미 센 줄 상태를 목록 응답에 실어 보냄(덧 셈 0) + 캐시 고름을 화면이 얹음 · 블록 = 만든 SK + 판정 캐시(읽기만).
|
||||
5. STmate 단가산출 뛰기 흠 = 역할 id 로 풀림(가 · 라 안에서 같이) — 급하면 한 줄 먼저.
|
||||
|
||||
### 5-2. 사용자가 정할 것
|
||||
|
||||
| # | 물음 | 갈래 | 권함 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 「단가산출표 · 단가산출 상세」 뜻 | (가) 목록 시트 + 블록 시트 (나) 블록 시트 + 한 블록 잘라 보기 | (가) |
|
||||
| 2 | 일위대가 목록(총괄표 · 목록표)도 탭으로 | 넣음 · 안 넣음 | 안 넣음(오른쪽 호표 목록이 같은 몫) |
|
||||
| 3 | 탭 글 | 통일 이름 · 원래 시트 이름 | 통일 이름 + 머리 막대에 원본 이름 |
|
||||
| 4 | 칠 기준 | (가) 결과 다섯 + 띠 (나) 확인 창 상태 꼬리표 색 일곱 | (가) |
|
||||
| 5 | 함께 보기 | (가) 탭 + 뛰기 + 뒤로 (나) 넓은 화면 둘 나란히 | (가) |
|
||||
| 6 | 블록 안 줄 칠(같음 · 품 다름 · 엑셀만 · 못옮김) | 이번 · 뒤 | 뒤(일감 마) |
|
||||
|
||||
### 5-3. 일감 나눔
|
||||
|
||||
| 일감 | 맡을 파일(경계) | 크기 | 앞 조건 | 시험 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 가 서버 세 보기 격자 | `M02/M02_Hopyo_Grid.py`(SHEETS 에 목록표 둘 · 차례 · 응답 `보기 {역할: 시트 id}` · `목록 {호표 [{번, 행}], 단산 [{번, 행}]}` · `줄 [{번, 차례, 행, 단산?, 일위?}]`) · `M02/M02_Hopyo_Excel.py` `_sheets` `wanted` 인자(기본 그대로) | S~M · 서버 80 줄 안 | 정할 것 1 · 3 | `test_m02_hopyo_grid.py`(146 고침) · `test_741_sheet_widths.py` · 새 1(여덟 파일 목록 짝 100 % · 줄 행) |
|
||||
| 나 서버 상태 실어 보냄 | `M02/M02_Hopyo_Match.py` `view` 호표마다 `줄상태 [[차례, 상태, 체크]]` · `만든` · 새 `M02/M02_Hopyo_Marks.py`(블록 `[{번, 판정, SK, 갈래, 못옮김}]` = `Sangeun.made` + `fit.result` 읽기만) · `M02_Labor_Router.py` 길 하나(`GET …/hopyo-marks/{키}`) | S · 서버 60 줄 안 | 없음 | `test_m02_hopyo_match.py` · `test_m02_hopyo_flow.py` · 새 1(줄상태 수 = 줄 수 · 읽기만 = 파일 변화 0) |
|
||||
| 다 공용 격자 칠 | `SS/spreadsheet.ts`(옵션 `칠` · 손잡이 `repaint()`) · `SS/spreadsheet_view_types.ts` · `SS/spreadsheet_grid_cells.ts`(`data-tone` 세 줄) · `SS/spreadsheet_grid.css`(꼴 다섯 · 띠 · 읽기만 탭 「+」 숨김) | S · 30 줄 안 | 정할 것 4 | 새 1(안 주면 `data-tone` 없음 · 주면 보이는 칸만) · `test_730_grid_sel_clip.py` |
|
||||
| 라 화면 세 보기 · 칠 · 뛰기 | 새 `M02/logic/M02_MasterTemplete_Hopyo_SheetMap.ts`(순수 — 행 → 꼴 · 행 → 뛸 곳 · 타입) · 새 `M02/M02_MasterTemplete_Hopyo_SheetNav.ts`(범례 · 맥락 단추 · 뒤로 · 다시 칠 듣기) · `…_Hopyo_Sheet.ts`(잇는 줄 · 역할 id · 칸 누름 꼴) · `…_Hopyo_Check.ts`(`saveDraft` 알림 한 줄) · `UI/ui_template_locale_m2.ts`(키 열 안팎) · `…_Hopyo.css`(범례 자리) | M · 250 줄 안 | 가 · 나 · 다 | `test_m02_hopyo_screen.py` 고침 · 새 cjs 도우미 + 시험(꼴 표 · 뛸 곳 · STmate 단가산출 뛰기) · typecheck · ORCA 사진(밝음 · 어두움 · 1366 · 390) |
|
||||
| 마 (선택) 블록 안 줄 칠 | `M02_Hopyo_Stmate.py`(자원 `행`) · `M02_Hopyo_Basis.py`(직종 줄 `행`) · `M02_Hopyo_SkPatch.py`(줄비교 줄 `행`) · 라 SheetMap | M | 라 · 정할 것 6 | `test_m02_hopyo_stmate.py` · `test_m02_hopyo_basis.py` · 746 시험 |
|
||||
| 바 (선택) 겹 모달 걷음 | `…_Hopyo_Sheet.ts`(열린 창 다시 씀 손잡이) · `…_Hopyo_Check.ts`(`openSheet` 한 곳 · 663 줄 주의) · `…_Hopyo_Choose.ts` | S | 라 | `test_m02_hopyo_screen.py:383-402` 고침 |
|
||||
|
||||
- 차례 = 가 ∥ 나 ∥ 다(파일 안 겹침 · 세 창 병행 가능) → 라 → (마 · 바).
|
||||
- 겹침 = 가 · 마가 엑셀 읽기 쪽 · 라 · 바가 `Hopyo_Sheet.ts` 같이 만짐 → 라 끝난 뒤 바.
|
||||
- 검증 = 여덟 파일 중 엑셀꼴 하나(북부청 임도 · 4,345 행) · STmate 하나(영월 · 5,604 행) 올려 세 탭 · 뛰기 · 칠 수(줄 상태 수 = 칠 칸 행 수) · 끝내기로 지움(743).
|
||||
@@ -0,0 +1,70 @@
|
||||
# 요구서 621 — M02 경쟁사 출력 불러오기 체계화 (요구 621 · 11-04)
|
||||
|
||||
원문 = `사용자요구_1104.md` 요구 621 · 조사 = 같은 폴더 `_분석_621-A_분석단계체계_호표참조.md` · `_분석_621-B_요소기준연결.md` · `_분석_621-C_엑셀보기_하이라이트.md` · 계획 = `PLAN.md` 776 ~ 779.
|
||||
|
||||
## 1. 요구
|
||||
|
||||
| # | 요구(요지) | PLAN |
|
||||
| --- | --- | --- |
|
||||
| 1 | 두 경쟁사(EST · STmate) 출력은 결국 비슷함 · 단계별로 나눠 분석하지 않음 · 그때그때 덧대 체계 없음 → 분석 로직 체계화 | 776 |
|
||||
| 2 | 경쟁사 사용자는 일위대가 · 단가산출을 구분 없이 씀(단가산출을 일위대가처럼 · 줄 더함) → 우리 「단가산출 기초」 통째와 견주지 말고 세부항목(노무 · 자재 · 경비 · 기계 …) 기준으로 연결 | 778 |
|
||||
| 3 | 엑셀 창에 일위대가표 · 단가산출표 · 단가산출 상세를 보여 줌 | 779 |
|
||||
| 4 | 일위대가가 다른 호표 일위대가를 부르면 일위대가 둘로 가져옴 | 777 |
|
||||
| 5 | 고르고 제대로 연결된 것은 엑셀 보기에도 하이라이트 | 779 |
|
||||
|
||||
## 2. 조사 결론
|
||||
|
||||
- **1 체계** — 두 형식은 읽은 직후 이미 거의 같은 꼴(HP). 갈리는 곳은 단가산출 블록 안 하나(EST = 글 · STmate = 글 + 자원 칸)인데, 그 갈림이 지문(`M02_Hopyo_Finger.py:138`) · 몫(`Shares.py:94` · `:145`) · 블록 단가(`Elem.py:28`) · 끝수 대조(`Build.py:460`)까지 새어 나감. 같은 일 두 번 = 엑셀 두 번 열기(거창 3.3 + 3.9 초) · 블록 글 세 번 풀기 · 보기마다 HP 세 번 읽기. 공통 꼴(Book: 호표 · 줄 · 블록 · 블록 항목) 하나에 두 형식이 다 담김.
|
||||
- **2 요소 기준** — 사용자 관찰 맞음: 산근 블록 206 = 품셈 그대로 80 · 품만 다름 50 · 줄 더함/뺌 59(더한 줄 94 중 장비 69) · 단위 달라 못 견줌 17 · 일위대가가 단가산출 일을 한 호표 59/245(STmate 쪽 쏠림). 블록 줄 → M01 요소 직접 잇기 = 인력 95 · 장비 32(괄호 규칙 넣으면 94) · 자재 11 % · 전체 49 → 63 %. 우리 기초를 세부 줄로 펼쳐 줄 대 줄로 찾으면 정답 1위 162 → 86 ~ 136(나빠짐 · 버림). 요소만으로 만들면 잃음 = 덧줄(공구손료 등) 86 · 옵션 109 · 하위 로직 50 · 품셈 근거 · 개정 따라감 · % 줄(105 블록)은 지금 꼴로 못 담음. 섞음(기초 먼저 · 못 맞으면 요소) = 단가산출 줄 자동 57 → 90 %.
|
||||
- **2 곁 흠** — 「굴착기(타이어형)」 42 줄을 무한궤도로 고름(괄호 글 뗌) · 못옮김 기계를 EQ 키로 이으면 SK 셈 오류 · 거창 자재 줄 21 못 읽음(`Finger.py:56-58`).
|
||||
- **3 엑셀 창** — 지금 = 모달 하나 · 탭 둘(일위대가 · 단가산출 상세) · 목록표 · 총괄표 안 보임 · [엑셀 보기]는 일위대가 줄 → 단가산출 한쪽 길 · 매번 격자 다시 받음 · ⚠ STmate 는 시트 이름을 「단가산출」로 박아 단가산출근거로 못 감(`M02_MasterTemplete_Hopyo_Sheet.ts:86` · `:395`). 세 보기 재료는 두 형식 모두 파일 안에 있음(목록 행 ↔ 블록 짝 여덟 파일 100 %).
|
||||
- **4 호표 참조** — 지금도 둘: 하위 = 자기 일위대가(SC) 따로 + 부모 줄 = 하위 사본(740-1 「서로 독립」). 하위 확인 전이면 409 「제N호표 먼저 확인」으로 막음. 참조 줄 90 · 깊이 최대 3 · 순환 0. 막힘 = 다시 불러오면 SC 늘 새로 생김 · 하위 실패면 부모도 실패 · 납작해지는 길 셋([구조물 조합으로] · 붙여넣기 · B09 통째).
|
||||
- **5 하이라이트** — 서버가 줄 상태를 이미 셈하고 수만 남기고 버림(`M02_Hopyo_Match.py:457-458`) · 사용자 고름은 브라우저 캐시 · 공용 격자에 밖에서 칸 색 입히는 길 없음.
|
||||
|
||||
## 3. 정함(브레인) — 사용자가 바꿀 수 있음
|
||||
|
||||
1. 단계 = ① 읽기 · 판별 ② 정규화(Book · 줄 갈래 한 번 · 이 뒤 단계는 형식 모름) ③ 지문 ④ 요소 연결 ⑤ 구조 맞춤 ⑥ 만들기 + 보기 조립. 옮기기 전에 여덟 파일 단계 고정 시험(S1 = Book 투영 해시 · 수 · 갈래 · 참조 그래프 · S2 = 셈 단위 275 지문 해시)을 먼저 두고, 옮기는 커밋마다 S1 · S2 그대로.
|
||||
2. Book 판이 바뀌면 작업 중 옛 자료는 끝내고 「다시 올림」 안내(원본 엑셀은 안 둠 · 743) · STmate 블록 단가 · 금액도 읽음 · 끝수 대조는 형식 규칙 먼저.
|
||||
3. 요구 4 — 부모 줄 = 하위 사본 그대로(요구 581 「SK · SC 서로 독립」) · 하위가 확인 전이면 부모 저장 때 하위를 그 지금 체크(제안 + 사용자 고름)대로 함께 만듦(409 대신 · 못 만든 줄만 고정 줄 + 남은 줄 띠) · 같은 엑셀 다시 불러오면 같은 내용 SC 재사용(733 지문) · 결과 표에 「제3호표 → SC · 하위 제4호표 SC(사본 담음)」 · 납작해지는 길 셋도 같은 함수로 하위 먼저.
|
||||
4. 요구 3 — 한 스프레드시트 · 아래 탭 셋 「일위대가표 · 단가산출표 · 단가산출 상세」(두 형식 같은 꼴 · 탭 글 통일 · 머리 막대에 원본 시트 이름) · 단가산출표 = 목록 시트(EST 단가산출총괄표 · STmate 단가산출근거목록표) · 일위대가 목록(총괄표 · 목록표)은 탭에 안 넣음(오른쪽 호표 목록이 같은 몫) · 서버가 역할 id 로 시트를 줌(이름으로 찾지 않음) · 줄 누르면 다른 보기 해당 자리로 뛰기 + [◂ 뒤로] · 블록을 여러 줄이 부르면 차례로 돌림.
|
||||
5. 요구 5 — 칠 = 결과 다섯 + 띠 하나: 초록 이어짐(`--color-success`) · 주황 이어짐 · 엑셀과 다름(`--color-warning`) · 파랑 고를 것(`--color-info`) · 빨강 못 이음(`--color-danger`) · 칠 없음 · 글 흐림 = 밖(% · 뺌) · 왼쪽 3 px 띠 = 내가 고름(`--color-accent`) · 「이어짐」 판정 = 확인 창과 한 규칙 · 범례 = 부품 `createLegend` · 공용 격자에 `칠` 옵션 하나(안 주면 그대로 · 보이는 칸만 칠함) · 블록 안 줄 칠(같음 · 품 다름 · 엑셀만 · 못옮김)도 이번에(마지막 걸음).
|
||||
6. 요구 2 곁 흠 셋은 방향과 상관없이 고침(778-1 · 778-2 · 776-3).
|
||||
|
||||
## 4. 사용자 물음 (답 기다림 · 778-3 · 778-4 만 기다림)
|
||||
|
||||
| # | 물음 | 갈래 | 권함 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 경쟁사 단가산출을 우리 것으로 옮기는 기준 | (가) 섞음 — 기초와 맞으면 기초 · 못 맞으면 노무 · 자재 · 기계 요소로 단가산출 / (나) 요소 먼저 — 모든 블록을 요소로(옵션 · 덧줄 · 개정 추적 잃음 · % 줄 블록 105 새 꼴 필요) / (다) 지금대로 | (가) |
|
||||
| 2 | 요소로 만들 수 있는 고름 대기 블록(62) | ① 자동으로 만듦 + 근거 꼬리표(1위 기초) · [기초로 바꾸기] / ② 미리 고름 표시만 · 사용자가 눌러 만듦 | ① |
|
||||
|
||||
- % 줄 있는 블록은 요소 단가산출 대상에서 뺌(지금 꼴 그대로) — (나)를 고르면 다시 물음.
|
||||
|
||||
## 5. 일감 · 창 · 파일 경계
|
||||
|
||||
| 걸음 | 일 | 맡을 파일 | 창 · 모델 | 앞 조건 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 776-1 | 단계 고정 시험(S1 · S2 · 참조 그래프) · 코드 안 고침 | 새 `resources/tester/test_621_hopyo_stages.py` · `resources/tester/fixtures/m02_hopyo_stages.json` · `helper_m02_hopyo_golden.py`(죽은 갈래 `:75-86`) | sub1 Opus | 없음 |
|
||||
| 776-2 | 읽기 · 정규화(한 번 열기 · Book · 갈래 한 번 · STmate 블록 단가 · 판 칸) | `M02_Hopyo_Excel.py` · `Stmate.py` · `Basis.py`(읽기 떼어 어댑터로) · `Grid.py` · `Store.py` · `Paste.py`(Book 꼴만) | sub1 Opus | 776-1 · 779-1 push 뒤 Excel · Grid |
|
||||
| 776-3 | 지문 형식 모름(항목 모음 + 줄 율 · 몫 한 벌) · 중복 해시 걷기 · `Match.clause` 대체 몸 지움 · 거창 자재 21 줄 | `Finger.py` · `Shares.py` · `Elem.py` · `Match.py`(clause 몫) · `Fit.py` | 2 물결 | 776-2 · 778-1 |
|
||||
| 777-1 | 하위 함께 만들기 · 같은 SC 재사용 · 보이기 · 납작 길 막음 · Build 대조 떼어 냄 · 길 가드 걷기 · STmate 뛰기 흠 한 줄 | `Build.py`(+ 새 대조 파일) · `Line.py` · `SkLink.py` · `Item.py` · `Hopyo_Sheet.ts` · `Hopyo_Check.ts`(글) · `M02_Labor_Router.py`(가드 `:214-219` · `:245` · `:257` · `:333` · `:404` 몫) | sub6 Opus | 없음 |
|
||||
| 778-1 | 장비 → EQ 괄호 낱말(타이어 · 무한궤도 · 습지 · 트럭탑재) · 부속(자동덮개 · 부착용 · 콤팩터) 뺌 · 기계경비 기초 첫 후보 | `Elem.py`(`machines`) · `Fixed.py`(`Linker._machine`) · `SkPatch.py`(`_add_machine`) | sub2 Opus | 없음 |
|
||||
| 778-2 | 못옮김 기계 잇기 = 기계경비 기초 로직 줄 · SK 셈 오류 | `SkPatch.py`(`LINK` · `_Plan.link`) | sub2 Opus | 778-1 |
|
||||
| 778-3 | 요소 SK 서버(물음 답대로) | 새 `M02_Hopyo_SkElem.py` · `Sangeun.py`(`Maker.plan`) | 2 물결 | 사용자 답 · 778-2 |
|
||||
| 778-4 | 화면 「요소로 만듦」 · 근거 꼬리표 · [기초로 바꾸기] | `Hopyo_WizardSk.ts` · `Hopyo_Choose.ts` · 부품 칩 | 2 물결 | 778-3 |
|
||||
| 779-1 | 서버 세 보기 격자(목록표 시트 · 역할 id · 목록 행 ↔ 블록 · 줄 ↔ 행) | `Grid.py`(SHEETS · 응답 `보기` · `목록` · `줄`) · `Excel.py`(`_sheets` `wanted` 인자만) | sub3 Sonnet | 없음 |
|
||||
| 779-2 | 서버 상태 실어 보냄(줄상태 · 블록 판정 · 읽기만) | `Match.py`(`view` 몫) · 새 `M02_Hopyo_Marks.py` · `M02_Labor_Router.py`(새 길 하나 몫) | sub4 Sonnet | 없음 |
|
||||
| 779-3 | 공용 격자 `칠` 옵션(data-tone · 보이는 칸만 · 다시 칠 손잡이) | `A00_Common/spreadsheet/spreadsheet.ts` · `spreadsheet_view_types.ts` · `spreadsheet_grid_cells.ts` · `spreadsheet_grid.css` | sub5 Sonnet | 없음 |
|
||||
| 779-4 | 화면 세 보기 · 칠 · 범례 · 뛰기 · 뒤로 | 새 `M02_MasterTemplete/logic/M02_MasterTemplete_Hopyo_SheetMap.ts`(순수) · 새 `M02_MasterTemplete_Hopyo_SheetNav.ts` · `Hopyo_Sheet.ts` · `Hopyo_Check.ts`(알림 한 줄) · `ui_template_locale_m2.ts` · `M02_MasterTemplete_Hopyo.css` | 2 물결 | 779-1 · 2 · 3 · 777-1 |
|
||||
| 779-5 | 블록 안 줄 칠 | `Stmate.py`(자원 행) · `Basis.py`(직종 줄 행) · `SkPatch.py`(줄비교 행) · SheetMap | 3 물결 | 779-4 · 776-2 · 778-2 |
|
||||
| 779-6 | 겹 모달 걷음(열린 창 다시 씀) | `Hopyo_Sheet.ts` · `Hopyo_Check.ts`(`openSheet`) · `Hopyo_Choose.ts` | 3 물결 | 779-4 |
|
||||
|
||||
- 물결 1 = sub1 776-1 → 776-2 · sub2 778-1 → 778-2 · sub3 779-1 · sub4 779-2 · sub5 779-3 · sub6 777-1.
|
||||
- 같은 파일 두 창: `M02_Labor_Router.py`(sub6 = 가드 걷기 · sub4 = 새 길 하나) · `Excel.py`(sub3 = `wanted` 인자 · sub1 = 779-1 push 받은 뒤) · `Grid.py`(sub3 먼저 · sub1 뒤).
|
||||
|
||||
## 6. 지킴
|
||||
|
||||
- 결과 같음: 옮기는 커밋마다 S1 · S2 해시 그대로(바뀌면 그 커밋 되돌림) · 골든 1위 163/177 · `test_705_3` · `test_729` 기대값(기초 80 · SK 37 · 고름 대기 89) — 바꾸는 걸음(778 · 777)은 바뀐 수와 까닭을 보고.
|
||||
- B09 가 빌려 쓰는 이름 그대로: `Excel._flat · _text · _money · _cell · _num · _out · DRM` · `read_book` · `Build._order` · `Builder` · `_origins` · `Paste.read_text · cells · fixed_lines`.
|
||||
- 700 줄 근처: `Hopyo_Api.ts` 676 · `Hopyo_Check.ts` 663 · `M02_Labor_Router.py` 624 · `Build.py` 608 · `Hopyo_Sheet.ts` 592 · `spreadsheet_grid.ts` 691 — 늘리지 않음 · 새 줄은 새 파일.
|
||||
- 자료 지킴: M01 정본 · 마스터 · 공유 storage M02 마스터 · 회사 층 · 남의 층에 쓰지 않음 · 쓰는 시험은 임시 storage · 화면 저장은 자기 개인 층 · 끝내기로 지움(743) · 테스트1(SK-000002) · 강관비계 그대로.
|
||||
- 견본 = `resources/knowledge/original/실무문서/` 여덟 파일(목록 `resources/tester/helper_m02_hopyo_golden.py` FILES) · 검증 = EST 북부청 임도(4,345 행) · STmate 영월(5,604 행).
|
||||
Reference in New Issue
Block a user