2026-10-08(목) 세션 — 한샘 양식 변환 «작업 방식 저장» + 재사용 도구 C:\dev\tools\hansem-convert\ 신설(4사례 이식 · 회귀 3건 바이트 동일)
[페페] 26.10.8 「작업 방식 저장해놔라. 추후 같은 작업에 다시 사용한다. 검토해서 더 효율적인 방안도 연구해서 추천대로 추가해라.」 [코디] 작업자(worker 서브에이전트). 대상 = 같은 날 4사례 — 성포(
C:\dev\_work\gs-ansan-seongpo-1008\) · 한국유리부지 V1(C:\dev\_work\hankukglass-hansem-1008\) · 84 평면 시범(C:\dev\_work\hanguk-glass-plan84\) · V2 위치도(C:\dev\_work\hankukglass-hansem-v2\). PFS 운영 쓰기 0 · 운영 코드 수정 0 · _work 폴더 수정 0 · NAS 업로드 0(dry-run 만).
결론
- 도구 =
C:\dev\tools\hansem-convert\hc.py+hclib\(core·config·pfsget·planner·builder·formprep·verify·structcheck·lo·drawing·nas·runlog) + 현장 설정sites\*.json+ 자체검사test_hansem_convert.py+ 회귀regress.py. - 회귀 = 26.10.8 산출 3건을 새 도구로 다시 만들어 그날 파일과 대조 → 엑셀 파트 바이트까지 동일(한국유리부지 V1 44/44 · 양식 44/44 · V2 56/56 · 성포 66/66) · 평면·합성 PNG 6장 픽셀 동일 · verify ALL OK(성포 1,272 · 한국유리부지 1,220 · V2 44).
- 저장 = playbook §8 · 스킬
C:\Users\delix\.claude\skills\hansem-convert\SKILL.md· 모델 장부 68행(도구로 되면 L3 · 같은 현장 재발행 L2) · devplan 정본 페이지 「T. 작업 도구」 절.
1. 검토 — 4사례 중복·하드코딩·수동 판단
| 부분 | 성포(26분) | 한국유리부지 V1(31분) | 84 시범(23분) | V2 위치도(58분) | 도구에서 |
|---|---|---|---|---|---|
| PFS 읽기 | pfs.py+fetch769.py |
사본 + fetch800.py(번호·폴더만 다름) |
— | 지문 재확인 인라인 | pfsget.py 1벌 · GET 전용 세션(다른 메서드 코드에서 막음) |
| 계획(블록·적용률) | hansem_v2.plan |
복사 90% 동일(단가군 규칙·빈 sub 만 다름) | — | — | planner.py 1벌 · 단가군 = 설정 규칙표 · 구분(K/F) 자동 |
| 양식 | 10.2 make_form_sp.py(탭 복제·갑지 행) |
make_form_hk.py(form 11 깎기 · 배율 62 발견) + 조사 스크립트 4개 |
— | — | formprep.py = use · trim_storage(make_form_hk 이식) · 탭 복제는 보류 |
| 빌드 | HX.build + fill 2함수 교체 |
build_ledger 탭마다 + 라벨·셀에 맞춤 |
— | — | builder.py 1경로(두 방식 산출 바이트 동일 확인) · 차이는 설정 플래그 |
| 검증 | verify_v2.py 1,202 |
사본 90%(갑지 행 번호·흔적 단어 하드코딩) | check.py |
verify_v2.py 45 · pdfdiff 2 |
verify.py 1벌 · 갑지 행 = 라벨로 탐지 · 흔적 단어 자동 · sfcheck·xlcheck 흡수 |
| LibreOffice | subprocess 줄 복사 | 3곳 | — | 2곳 | lo.py 1곳 + soffice 잔류 확인 |
| NAS | nas_put_v2.py |
사본(DIR·NAME·지문만) | nas_put.py |
nas_put_v2.py |
nas.py 1벌 · dry-run 기본 · 검증 기록 게이트 |
| 위치도 | — | — | render.py(WIPEOUT 함정) |
probe·render·zoom 11장·compose·build_v2 | drawing.py · 도곽·영역·점 = 설정 · 🆕suggest 점 초안 |
| 수동 판단 | 단가군·C-3 위치·쪽나눔 | 양식 선택·단가군·배율·빈 sub | 렌더 정책 | 점 31개·글 순서·크기 | 설정 기본값(정본) + ⏳페페 확인 목록 |
시간이 든 곳(파일 시각으로 추정): 성포 = 새 규칙 B·C·C-3 첫 구현 + 검증 재작성(≈15분) · 한국유리부지 = 양식 고르기·깎기(조사 4개 + make_form, ≈18분) · 84 시범 = DXF 렌더 함정 시행착오(WIPEOUT·해치, ≈15분) · V2 = 점 손 배치(확대 11장, ≈10분) + 합성 배치 알고리즘 반복(≈25분) + 픽셀 검증·쪽나눔 함정(≈15분). 공통 = 매번 앞 사례 스크립트를 복사해 상수·현장명을 고치고 검증 스크립트를 다시 맞춤.
2. 개선안 — 채택/보류
| 안 | 효과 | 난이도 | 위험 | 판정 |
|---|---|---|---|---|
| 공용 모듈화 | 상(복사 4벌 → 1벌, 버그 한 곳) | 중 | 하(골든 바이트 대조) | ✅채택 |
| 현장 설정 1파일 | 상 | 하 | 하 | ✅채택 — JSON(표준 라이브러리 · 설명은 _doc 키) |
| 양식 자동 선택 | 중 | 중 | 중 | ◐부분 — field_type K/F → 내역서-주/수 자동 · 양식 준비 use/trim_storage · 탭 복제·갑지 행 추가는 보류(1회 사례 · 갑지 수식 재조립 위험) |
| 단가군 배치 규칙표 | 상(판단 기록) | 하 | 하(금액 영향 0) | ✅채택 — 기본 = 26.10.8 규칙, 예외는 설정 |
| 검증 단일 스크립트 | 상 | 중 | 하 | ✅채택 — 갑지 행 라벨 탐지 · 흔적 단어 자동 |
| NAS 업로드 공용 | 중 | 하 | 하 | ✅채택 + 검증 기록(run.json) 게이트 |
| 도면 위치 매칭 자동화 | 상(V2 의 점·확인 ≈15분) | 중 | 중(오배치 = 고객 문서 오류) | ◐초안까지 — 구역 31/31 맞음, 공유 구역 15줄은 사람 확정(코덱스 의견도 같음) |
| LO 재계산 일원화 | 중 | 하 | 하 | ✅채택 |
| 실행 기록·검증 실패 시 NAS 차단 | 중 | 하 | 하 | ✅채택(코덱스 제안) |
| 엔진 정식 반영(운영 한샘 화면) | 상 | 중 | 상(운영 코드) | ⏸보류 — 이번 범위 밖(L4 별도) |
코덱스 상의 1회(gptapp.py ask): 우선순위 ①② → ⑤⑧ → ③④ → ⑥ → ⑦ · 빠진 위험 = 입력·양식 버전 기록, 부분 실패·재실행 · ⑦은 후보·근거·신뢰도까지 자동, 확정은 사람 · 회귀는 셀 의미 비교 기준(바이트는 보조) → 전부 반영(run.json · 게이트 · 대조 2단).
3. 도구 사용
cd C:\dev\tools\hansem-convert
python hc.py sites\<현장>-<번호>.json run (fetch→plan→form→build→verify)
python hc.py sites\<현장>-<번호>.json drawing render | suggest | compose | embed | verify
python hc.py sites\<현장>-<번호>.json nas-put [--what v1,v2,png] (dry-run) → --put
python test_hansem_convert.py · python regress.py [--nas]
기대 시간(추정) = 설정 5분 + 실행 4분(LO 포함) + 육안 5분 ≈ 15분/건 · 위치도 +15~20분(렌더 1.5분 · 점 확정 10분).
4. 회귀(출력 = C:\dev\_work\hansem-convert-regress\ 만 · 결과 regress_result.json)
| 건 | 입력 | 대조 | 결과 |
|---|---|---|---|
| ①한국유리부지 V1 | C:\dev\_bench\hankukglass-hansem-1008\snap800.json + form 11 r2 → trim_storage |
그날 V1·양식 | 파트 44/44 · 양식 44/44 바이트 동일 · 셀 14,266 diff 0 · 계획 블록 51 diff 0 · verify ALL OK 1,220 |
| ②V2 위치도 | ① + DXF C:\dev\_work\hanguk-glass-1008\dxf\… + 확정 점 31 |
그날 V2·PNG | 파트 56/56 동일 · 평면 PNG 3·합성 PNG 3 픽셀 동일 · 앵커·쪽나눔 동일 · drawing verify ALL OK 44(PDF 쪽 픽셀 포함) |
| ③성포 26.10.08 | C:\dev\_bench\gs-ansan-seongpo-1008\snap769.json + form 14 사본(use) · C-3 켬 · 셀에 맞춤 끔 |
그날 산출 | 파트 66/66 동일 · 셀 14,155 diff 0 · 계획 블록 49 diff 0 · verify ALL OK 1,272 |
| PNG 근사 기준(이번엔 안 씀 — 전부 완전 동일) = 같은 크기 + 다른 픽셀 ≤0.5% + 채널 최대차 ≤64. NAS dry-run(업로드 0) = PFS 지문 #800·#769 계획과 같음 · 같은 이름 게이트가 V2·PNG 폴더·성포를 막음(정상) · 한국유리부지 V1 은 NAS 에 없어 게이트 통과(위 ⏳1). soffice 잔류 0. |
⏳ 페페 확인 (코디 추천)
- 🔴NAS
…\10월\한샘\한국유리부지\에 V1 엑셀 「한샘 한국유리부지 MH 가구제작 견적서(26.10.08).xlsx」가 없고(17:06 KST 목록 = DWG 2 · 폴더 2 · V2 1), V2 는 16:32 KST 에 다시 저장돼 1,185,470 → 1,289,094 B(엑셀로 열어 저장한 크기). 사람이 정리·편집한 것으로 보인다(코디 쓰기 0 — 이 세션은 목록만). 성포 폴더…\10월\한샘\GS 안산 성포 MH\도 지금 26.10.08판 1개뿐(10.2판(26.10.02).xlsx없음 · 폴더 변경 14:07 KST). 추천 = 페페 확인만. 도구 회귀 기준은 로컬 원본(C:\dev\_work\hankukglass-hansem-v2\…V2.xlsx·C:\dev\_work\hankukglass-hansem-1008\…(26.10.08).xlsx) — NAS 쪽 V2 를 다시 만들 일이 생기면 NAS 편집본과 diff 부터. - 수납 2·4평형 trim · 탭 복제(평형 > 슬롯) 레시피 = 다음 해당 현장 때 추가. 추천 = 그때(1회 사례로 일반화 금지).
- 위치도 점 = 초안 + 사람 확정 유지. 추천 = 유지(구역 공유 15/31).
- 기존 Q1~Q4 · 수납 단가군 배치 · 규격↔길이 6줄은 그대로 미결(아래 원문).
부록 — handoff 원문 이관(26.10.8, 캡 2만자 정리 · 원문 그대로)
[코디] 🆕 26.10.8(목) — 한샘 양식 전환 규칙 정본 페이지 신설 — devplan C:\dev\devplan\hansem-convert-rules.html (http://100.108.234.45:8799/hansem-convert-rules.html) · 코드 변경 0
[페페] 「추가금액 사이즈 1000 맞추지 않고 적힌 치수/빈칸·금액만, 위치행 바로 밑 추가금액 블록, 기본·추가 모두 좌우 이름·치수 동일」. 규칙 요약 = rules 🆕 26.10.8. 엔진 반영은 다음 한샘 변환 때(hansem_sp.py 107~110행 교체 + insert_extra_blocks 재사용).
- ⏳[페페] 답 대기 Q1~Q4 = ①추가 블록 sub 수량>1 표기(추천 라벨 「×n」+금액 합계 한 칸) ②블록명 -추가 유지 ③이미 낸 10.2판(6·9 등) 재발행(추천 안 함) ④왼쪽 치수 자리 b+2(추천 치수로, 도어재질 PET 은 뺌).
[코디] 🆕 26.10.8(목) — 위 정본 첫 적용 = GS 안산 성포 MH 한샘 양식 재작업(포인 769 26.10.8 수정본) — ✅NAS 새 파일 · PFS 운영 쓰기 0(한샘 6·form 14 그대로)
[페페] 「상하부장 등 합산 길이는 길이 값 아래 빈칸에 치수 분리 표기 · 769 최신본으로 재작업 · 한샘 양식 엑셀 저장」. 로컬 C:\dev\_work\gs-ansan-seongpo-1008\hansem_v2.py(엔진 build_ledger 재사용) → \\192.168.0.101\공유폴더\2026현장\견적\10월\한샘\GS 안산 성포 MH\한샘 GS 안산 성포 MH 가구제작 견적서(26.10.08).xlsx(sha256 de6a5c75…2d59). 769 = 26줄 32,051,000(10.2 대비 −4,717,000) · 블록 49(항목 26 + -추가 23, sub 45건 8,073,700) · 합산 치수 8칸 = J{b+4} · 갑지 43,650,000(−1,000). 검산 verify_v2.py 1,202 OK. 상세 = projects/pfs/session-2026-10-08-gs-ansan-seongpo-hansem-v2.md.
- ⏳[페페] ~~①합산 치수 왼쪽 표기~~(해소 — C-3 기본 안 함, 아래 절) ②라벨 「도어」→「치수」 ③발행일 9.07 유지 여부 ④99A 후면장 규격 2320mm vs 길이 1200. 남은 것 = 엔진 정식 반영(운영 화면).
[코디] 🆕 26.10.8(목) — 정본 2번째 적용 = 한국유리부지 MH 임시견적 #800 → 한샘 양식 — ✅NAS 새 파일 · PFS 운영 쓰기 0
[페페] 「한샘 양식 변환 2번째 … 항목별 치수 분리 빈칸에 넣기는 안하는 것을 기본지침」 → 🆕C-3 기본 안 함(rules 🆕). #800 지금 = 31줄 · sub 31건 · 시공 12,000,000 · 운반 700,000. 수납 전용 3평형 양식(form 11 깎음 · 인쇄 배율 62) · 블록 51(항목 31 + -추가 20) · 갑지 51,380,000(−5,000 만원 절사) → \\192.168.0.101\공유폴더\2026현장\견적\10월\한샘\한국유리부지\한샘 한국유리부지 MH 가구제작 견적서(26.10.08).xlsx(aa32b87c…). 상세 = projects/pfs/session-2026-10-08-hankukglass-hansem.md.
- ⏳[페페] ①수납 단가군 배치(A1→신발장·P1→붙박이장·P2→파우더장·G1→공틀도어/픽스도아·B1·W1→낮은장) ②NAS 기존 「한국유리부지」 폴더 사용 ③빈 sub 1건(103 침실2 붙박이장) PFS 정리 여부.
- [코디] 🆕V2 ✅ = 3탭 맨 아래 견적 위치도(평면+빨간 연결선+위치 : 규격) → NAS …\한국유리부지\…(26.10.08) V2.xlsx(7c98fe31…) + …\타입별 견적 도면(V2)\ · ⏳규격↔길이 어긋남 6줄(같은 파일 §7).
관계
- 주제 그룹: 한샘 양식 변환(hansem-convert)
- 관련 문서: pfs-session-2026-10-08-gs-ansan-seongpo-hansem-v2, pfs-session-2026-10-08-hankukglass-hansem, devplan hansem-convert-rules.html