인수인계 — GS 안산 성포 한샘 양식 재작성 (26.9.7 · 구현만 남음)
✅2026-09-07 A~G 전부 구현 완료 — 이 문서는 착수 근거로만 보관한다. 다시 구현하지 마라. 결과·산출물·미결은
projects/pfs/handoff.md「✅ 26.9.7 GS 안산 성포 한샘 양식 재작성 A~G 완료」. 구현 산출 =build_form4.py(양식 생성) ·local_build.py·verify_form4.py·register_hansem.py·_prod_impact.py. ⚠아래 「B. 수납 계열 삭제」는 숨김+내용삭제로 낙착됐다(운영 옛 엔진이수납탭을 양식 필수조건으로 검사). ⚠아래 「D. 행 삽입」은hansem_excel.insert_extra_blocks로 구현됐다(sub-item 0건이라 이번 파일엔 결과 없음).앞선 세션에서 설계·데이터·도면까지 다 만들어 뒀다. 새 세션은 아래 A~G 구현만 하면 된다. 작업 폴더 =
C:\dev\_work\gs-ansan-seongpo\
0. 페페 확정 규칙 (26.9.7 · 이게 정본)
- 행 삽입 허용. 수식은 사용 블록 기준으로 코디가 재계산해 연결한다. 규칙이 맞으면 자동화까지 진행.
추가분견적탭은 이번에 사용 제외 — 그건 본건 납품 후 별도 작성 건이다. 우리가 다룰 추가금액 = 본건 각 항목의 sub-item → 해당 블록 바로 하단에 추가 전용 블록 신설. 이름 규칙 =<블록명>-추가(예상부장-추가). 길이·단가 무관, 지정 금액(마진 포함 최종가) × 수량.- 등급 = A 고정. 금액은 적용률(곱하기 단가,
J7=J6/10*1.5꼴) 로 포인 금액과 유사하게 맞춘다. - 디테일 조정은 추후. 도면은 모노크롬 흑백 · 최소 FHD 이상으로 재생성해 넣는다.
- 슬롯 복제 기능을 새로 만든다(현
hansem_excel은 3평형 초과 시FormCapacityError). - 라인건설 잔재(절사·시공비·자재비·운반비) 전부 0. 갑지의 추가건 행들은 본건 행에 영향 없게 삭제. 수납(일반가구) 탭도 삭제.
- 산출물 = NAS
2026현장\견적\09월\넥서스\GS 안산 성포 MH\에 저장 + PFS 운영에 한샘 견적서로 등록.
1. 🔴 기준 데이터가 바뀌었다 — 운영 769 는 오늘 손질됐다
내가 등록한 27줄이 24줄로 재편됐다(수정일 2026-09-07). 한샘 양식은 이 현재 상태가 기준이다.
- 총액 30,045,000 → 37,689,000 (= 항목합 30,889,000 + 시공비 6,500,000 + 운반비 300,000)
- 84A·OT84A 아일랜드 2줄씩 삭제 → 하부장에 통합(84A 하부장 1770+3900+400, 코너 655-200-600)
- 코너 값이 여러 줄에 새로 붙었다 · 가전소물장 일부가 키큰서랍장 으로 개명·신설(104·OT84A)
- sub-item(추가금액) = 0건 → 규칙 2 의 -추가 블록은 기능만 만들고 이번 파일엔 안 생긴다(정상)
2. ✅ 준비 끝난 산출물
| 파일 | 내용 |
|---|---|
hansem_plan.py |
운영 769 → 한샘 주입 계획 산출기. assert 자체검사 내장(적용률 역산 오차·칸 충돌·합계) |
plan_769.json |
그 결과. 타입 4개 × 24줄. 블록·열·길이·적용률·목표금액 전부 확정 |
plan_mono_{84A,99A,104,OT84A}.png |
모노크롬 평면도 2871~5357px (FHD 이상). 생성기 _render_mono.py |
1.생산비 거래명세서_…아산테크노밸리….xlsx |
한샘 양식 원본(NAS 사본) |
적용률 역산 = 포인 행총액 ÷ (A등급단가 × 블록배수 × 순길이/10), 소수 4자리.
24줄 전부 오차 ±14원. 한샘 환산 합 = 30,889,014 vs 포인 항목합 30,889,000.
블록 열 사용(6열 상한, 전부 여유):
| 타입 | 상부장(4) | 하부장(11) | 하부FIX(18) | 키큰장(32) |
|---|---|---|---|---|
| 84A | 1 | 2 | 1 | 3 |
| 99A | 1 | 2 | 1 | 2 |
| 104 | 1 | 2 | 1 | 3 |
| OT84A | 1 | 1 | 0 | 2 |
3. 양식 구조 실측 (원본 xlsx)
내역서 탭 (<평형> 내역서-주)
A4 평형명 · B4 블록명 · E2 =A4 · C2 =주방!S8
4~52행 = 블록 7개(stride 7): 상부장4 하부장11 하부FIX18 오픈장25 키큰장32 키큰FIX39 공틀도어46
블록 오프셋 +1 세트라벨(C~H / J~O 미러) +2 도어재질·길이 +3 에지=마감·10MM기준(=J6/10*적용률)
+4 구분=등급·메모 +5 단가 LOOKUP +6 합계 SUM(J..O)
53행 총합 = SUM(I52,I45,I38,I31,I24,I17,I10) ← 행 삽입 시 여기를 다시 짜야 한다
54~92행 = 도면 이미지 앵커(from col1,row53 → to col14,row91)
단가 흐름 = 단가기준 D:G(A~D등급) → 백데이터(건들지마세요!!) C열이 =단가기준!D7 로 물고 → 내역서 LOOKUP(마감,등급).
주방 상·하부장 = 백데이터 A7:C54 / 키큰장군 = A59:C106. 주입 지점은 단가기준 이 맞다(검증됨).
갑지(주방) — S8 현장명 S10 담당 S12 발행일
19~21행 본오더 A=' <평형> 내역서-주'!E2 · O='<평형> 내역서-주'!O53 · W=O
22행 절사(-2985) 23행 본오더 소계 =SUM(W19:AD22)
24~29행 추가분(→'추가분견적(주방가구)'!N11/N21/N30/N37) ← 규칙6: 삭제
⚠27행에 이미 `=+#REF!` 가 있다(4번째 평형 흔적)
30행 절사(-6224) 31행 추가분 소계
32 자재비=자재비!H124 · 33 운반비=운반비!I18 · 34 절사(-4155) · 35 소계 · 36 합계 =O23+O31+O35
AE36=수납!O37 · AG36=12930000(시공비 하드코딩) · AH36 총계
시트 15개 = 가격적용분 · 주방 · 77/84A/84B 내역서-주 · 추가분견적(주방가구) · 자재비 · 운반비 · 수납 · 77/84A/84B 내역서-수 · 추가분견적(일반가구) · 단가기준 · 백데이터
도면 이미지 — drawing2/3/4 = 내역서-주(image3/4/5) · drawing7/8/9 = 내역서-수(image9/9/10)
4. 남은 구현 A~G
- A. 슬롯 복제 3→4평형 —
내역서-주탭 1개 추가(시트 XML·rels·workbook.xml·Content_Types·drawing 세트 복제). 탭명은rename_slots규칙대로 임시명 경유(이름 충돌 사고 방지,hansem_excel.py주석 참조). - B. 수납 계열 삭제 —
수납·77/84A/84B 내역서-수·추가분견적(일반가구)시트 제거 + 갑지AE36참조 정리. - C. 갑지 재구성 — 본오더 4행(19~22) · 추가분 행 삭제 · 절사 0 · 자재비/운반비/시공비 0 · 소계 SUM 범위를 실제 행수로 재계산.
- D.
<블록명>-추가블록 삽입기 — 블록 바로 아래 행 삽입 → 53행 총합 수식과 이미지 앵커를 밀린 행수만큼 재계산. 이번엔 sub-item 0건이라 호출은 되지만 삽입 결과가 없다(그래도 코드는 만든다). - E. 도면 교체 —
plan_mono_*.png로xl/media/imageN.png치환(zip 수술,xlsx-edit-zip-surgery메모리 규약). - F. NAS 저장 —
2026현장\견적\09월\넥서스\GS 안산 성포 MH\. ⚠nasget.py put은 대상이 있으면 거부한다(복원 전용). 새 파일명이면 그대로 쓸 수 있다. - G. PFS 한샘 견적 등록 —
POST /api/hansem/estimate. 🔴type_index로 보낼 것 (평형은 저장 때마다 delete-insert 라type_no를 그대로 되보내면 고아가 된다 — rules 26.9.4). 양식이 3평형짜리form_no=2뿐이라 새 4평형 양식을POST /api/hansem/form으로 올려 활성화해야 한다.
5. 검증 기준 (기존 함정 재사용)
- 🔴단가 LOOKUP 수식이 없는 칸에 길이를 넣으면 그 줄 금액이 조용히 0 →
_ensure_price_formula상당의 보정 필수. - 대조 = 내역서
O53합 ≒plan_769.json의 타입별 목표합, 갑지O36≒ 30,889,000. - 이미지 교체 후
xl/media/*md5 가 우리 PNG 와 같은지. - 기존 검증기
_verify.py의 「길이칸·단가수식·갑지 참조」 3종 검사를 4평형으로 확장해 재사용.