2026-10-08(목) 세션 — 한국유리부지 MH 임시견적 #800 → 한샘 양식 변환(전환 규칙 2번째 적용 · C-3 기본 안 함) + NAS 새 파일
[페페] 26.10.8 「한샘 양식 변환 2번째, pfs 한국유리부지 견적을 변환해라. 엑셀파일 저장. 이전에 얘기한 항목별 치수 분리 빈칸에 넣기는 안하는 것을 기본지침. 진행해.」 [코디] 작업자(worker 서브에이전트) · 정본 = devplan
C:\dev\devplan\hansem-convert-rules.html· 선례 =session-2026-10-08-gs-ansan-seongpo-hansem-v2.md.
결론
800(GET 만 · PFS 운영 쓰기 0) → 로컬 산출 한샘 양식 엑셀 → NAS 새 파일
\\192.168.0.101\공유폴더\2026현장\견적\10월\한샘\한국유리부지\한샘 한국유리부지 MH 가구제작 견적서(26.10.08).xlsx
(102,004 B · sha256 aa32b87cd51354f0814bf86cb451250f5a72239dd1fb269483d8e1e022cb6bf3 되읽기 일치 · 폴더 변화 = 새 파일 1개).
갑지 생산비 39,380,000 + 시공비(참고칸) 12,000,000 = 51,380,000(#800 51,385,000 대비 −5,000 = 만원 절사) · 블록 51 = 항목 31 + -추가 20.
🆕 C-3(합산 치수 분리 문자열) 기본 안 함 — J{b+4} 전부 빈칸, 길이 칸 = 합산 숫자(103·111 욕실 상부장 1900·2990).
1. #800 실측 (아침 등록본과 다르다)
| 아침 등록(archive 26.10.8) | 지금(수정일 26.10.8) | |
|---|---|---|
| 상세 | 49줄 59,092,000 · 추가금액 0 | 31줄(84 9 · 103 11 · 111 11) 가구 38,685,000 |
| sub | 0 | 31건(20줄) 10,210,200 — 자당포함 1(84 신발장B 타공판넬 예비비용 231,000) · 이름·금액 빈 0원 1(103 침실2 붙박이장 sub 8221) |
| 시공·운반 | 0(별도) | 시공 12,000,000 · 운반 700,000 · 총액 51,385,000 |
| 페페가 #800 을 고쳐 둔 상태 그대로 변환(다른 견적 없음 — 견적 목록 「한국유리」 = #800 하나). 업로드 직전 다시 GET → 지문 같음. |
2. 양식 — 왜 form 11 에서 깎았나
-
800 = 일반가구(수납) 31줄 · 주방 0 → 내역서-수 가 «살아 있는» 양식 필요(D-6: form 3/4 주방전용은 수납 시트 빈 스캐폴딩 → 칸 0 드롭).
- 운영 양식 중 내역서-수 3탭(정본 form 2 이식·세척)이 있는 = form 10·11 → 최신 r2 = form 11(md5
2413c543…로컬 사본C:\dev\_work\gs-daejeon-doma-1002b\). make_form_hk.py= 주방 갑지·내역서-주 3탭 삭제 · 수납 갑지 기타(자재비 0 · 운반비 700,000 · 절사 0) · AE27:AH28 참고칸(주방 0 · 생산비 총 · 시공비 12,000,000 · 생산비+시공비 — 주방 갑지 AE25:AH26 모양·서식 그대로, 인쇄영역 밖) · S6 결재일 2026. 10. 08 · 탭 59A/84A/84B → 84/103/111 · 내역서-수 인쇄 배율 70→62(7블록+총합 902pt — 70% 면 A4 가로 넘쳐 7블록 쪽이 둘로 갈림, LO 실측) · 흔적 0(대전·도마·59A·84B·2026. 10. 01·400000·7000000 등).- 숨김 탭(가격적용분·추가분견적 2·자재비·운반비) = 행 0 빈 탭(선례 GS 안산 성포와 같음) · 도면 0 (#800 쪽 DWG 표기본은 아침 49줄 기준이라 지금 31줄과 안 맞음 + 수납 내역서 양식엔 도면 틀이 없다).
3. 산출 (C:\dev\_work\hankukglass-hansem-1008\)
hansem_hk.py= #800 GET → 계획 → 로컬 빌드. 엔진build_ledger를 탭마다 직접(주방 슬롯 없는 양식이라build()의 ledger_capacity 우회) · fill 두 함수만 새 모양 · 단가 LOOKUP = 수납 단가군 원형(STO_NORM = 블록 4 C9 · STO_LOW = 블록 32 C37) × 블록 배수.- 🔑 수납 단가군 배치(판단) = A1(신발장·장식장·수납장) → 신발장 4 · P1(붙박이장·복도장) → 붙박이장 11 · P2(드레스룸 화장대) → 파우더장 18 · G1 도어 → 공틀도어 25(STO_NORM ×0.7) · G1 「픽스」(픽스판넬)·U1 → 픽스도아 39(STO_LOW) · B1(욕실 하부장·낮은 화장대)·W1(욕실 상부장) → 낮은장 32(STO_LOW). 적용률이 금액을 맞추므로 단가 표시만 달라진다. 원본 39 블록 단가 라벨 「단가 (50%)」(수식엔 배수 없음) → 「단가」.
-추가블록 = 정본 B·C(이름 ×n · 치수 = sub 규격 그대로 · 금액 = sub.amount). 규격 문자열(440 × 440 × 352등 6종 12칸)은 «셀에 맞춤» 서식 복제(안 하면 가운데 정렬이 양옆을 잘라 「40 × 440 × 35」로 보였다 — LO PDF 실측).- 이름·금액 둘 다 빈 0원 sub 1건(103 침실2 붙박이장 sub 8221)은 칸을 만들지 않음. 1틱 내림 0칸 · 자당포함 1건 본항목 흡수.
4. 금액
| 평형 | 블록 | 포인 목표 | 내역서 | 차 |
|---|---|---|---|---|
| 84 | 17(9+8) | 11,703,000 | 11,703,472.52 | +472.52 |
| 103 | 19(11+8) | 15,563,000 | 15,563,410.64 | +410.64 |
| 111 | 15(11+4) | 11,419,000 | 11,419,312.47 | +312.47 |
| 합 | 51 | 38,685,000 | 38,686,195.62 → 절사 −6,195.62 → 38,680,000 | |
| 수납 38,680,000 + 운반비 700,000 = 생산비 39,380,000 + 시공비 12,000,000 = 51,380,000(−5,000). 추가 칸 29 = 9,979,200. |
5. 검증
verify_hk.py1,224항목 ALL OK — 흔적 0 · 주방·내역서-주 없음 · 열 때 첫 탭 수납 · 세로띠A4:A<총합행>· 총합 SUM · 수납 O19~O21 = 실제 총합행 · 인쇄영역 · 쪽나눔(위치행 블록 앞, 탭당 3쪽) · LO 재계산(data_only) 블록별 금액·좌우 이름·치수 60칸 · J{b+4} 전부 빈칸 · 단가 = 단가군×배수 · 추가 금액 = sub 29칸 합 · 평형별 내역서 − 목표 ∈ [0,10000) · 오류값 0 · 규격 문자열 셀에 맞춤 12칸.C:\dev\_work\gs-wonju-dangu\sfcheck.py이상 없음 ·C:\dev\_work\gs-ansan-seongpo\_xlcheck.py11시트 결함 0 · soffice 잔류 0.- PDF 육안
C:\dev\_work\hankukglass-hansem-1008\lo_out\png\(p02 갑지 · p03~p11 내역서 9쪽) = 칸 잘림 0 · 블록 갈림 0. ⚠LO PDF p01 = 빈 쪽(숨김 탭 계열 — form 11 원본도 같음, GS 안산 성포 PDF 도 빈 쪽 2) · 엑셀 인쇄엔 숨김 탭이 안 나간다.
⏳ 페페 확인 (코디 추천)
- 수납 단가군 배치(§3) — 추천: 그대로(금액 영향 0, 단가 표시만).
- NAS 위치 = 기존
…\한샘\한국유리부지\(DWG·1차 엑셀 옆) — 새 폴더 「한국유리부지 MH」 안 만듦. 추천: 그대로. - 빈 sub 1건(103 침실2 붙박이장, 이름·금액 없음) — PFS 에서 지울지. 추천: 지움(한샘 양식엔 안 실음).
- 발행일·결재일 = #800 견적일 26.10.08. Q1~Q4 = 추천안 적용 그대로. - 남은 것 = 엔진 정식 반영(운영 한샘 견적 화면이 수납 전용·-추가 모양을 내게).
6. [코디] 84타입 평면도 시범 (26.10.8(목)) — ✅NAS 새 폴더 · PFS 운영 쓰기 0 · DWG 원본 불변
[페페] 「별도 에이전트로 84타입 위치별 평면도를 뽑아서 이미지 저장해봐 … 목표는 타입별 견적내용 밑에 도면 추가」 → 시범만(엑셀 삽입은 다음 지시).
- 원본 = C:\dev\_work\hanguk-glass-1008\dxf\261001 한국유리부지 가구도면.dxf(읽기만) — NAS 원본 DWG 와 sha256 같음(8c5af36f…). ODA→DXF→ezdxf, AutoCAD GUI 0.
- 작업 폴더 C:\dev\_work\hanguk-glass-plan84\ — render.py(위치평면) · render_top.py(치수평면 보조안) · check.py(기계검사) · nas_put.py(새 폴더·xb·되읽기) · probe.py/probe2.py(조사).
- 위치평면 = 84 KEY PLAN(유닛 평면 + 노랑 라벨 박스) 한 장을 0.42px/단위로 렌더 → 임계 235 이진화 → 견적 위치 박스(핸들 고정) 기준 여백 1300 · 최소 4600×3400 · 가로 4:3 이상으로 자르고 해당 박스만 7px 굵게. 산출 out\84_00_전체평면.png(7812×4872) + 84_01~09_<위치명>.png(2093~3100 × 1561~2325).
- 치수평면(보조안) = 각 FUR 시트 왼쪽 위 「TOP VIEW」 패널(라벨 위 3650단위)만 1.3px/단위 렌더 → 내용 bbox 로 다시 자름. out\치수평면\84_NN_<위치명>_치수.png.
- 대응표(84 9줄 → KEY PLAN 박스 / FUR 시트): 신발장A·B → 「현관 신발장」 박스 1826D1 (같은 그림) / FUR_01·02 · 복도장 → 180633 / FUR_03 · 침실2 붙박이장 → 180687 / FUR_04 · 드레스룸 도어·화장대 → 「침실1 드레스룸 화장대&도어」 1806BC (같은 그림) / FUR_05·06 · 보일러실 도어 → 「보일러실도어&픽스판넬」 1806D8 / FUR_07 · 욕실 상부장·하부장 → 「침실1 욕실장」 19A112 (같은 그림) / FUR_09. 못 찾은 위치 0. (KEY PLAN 의 거실 픽스판넬·세탁실 선반·드레스룸 시스템 = 84 9줄 밖이라 안 뽑음)
- 🔑 함정 2건(rules 🆕): ①ezdxf draw_entities 는 레이아웃 배경을 모델공간 어두운색으로 둬서 WIPEOUT 이 검은 사각형(욕실 1200×600)으로 칠해진다 — ColorPolicy.BLACK 도 같은 증상. ②흰색으로 고쳐도 평면 블록(1B17F7) 안 WIPEOUT 이 욕실장 블록(19A58D)을 덮어 세면대·상부장이 사라짐(redraw order 로 안 풀림) → draw_wipeout_entity 무시 서브클래스. 해치 = HatchPolicy.SHOW_OUTLINE(테라조 점무늬가 흑백에서 지저분).
- 검증 = check.py 19장 BAD 0(짧은 변 1080+ · 흑백 2값 · 검정 0.6~7.9%) · 19장 전부 Read 로 육안(잘림·빈 그림·글자 깨짐 0) · NAS 되읽기 sha256 19/19 일치 · 상위 폴더 변화 = 새 폴더 1개뿐.
- NAS = \\192.168.0.101\공유폴더\2026현장\견적\10월\한샘\한국유리부지\84타입 위치별 평면도\(10장) + …\치수평면(보조안)\(9장).
- ⏳[페페] ①엑셀 밑에 넣을 그림 = 위치평면 / 치수평면 / 둘 다(추천: 둘 다 — 왼쪽 위치·오른쪽 치수) ②같은 박스를 쓰는 줄(신발장A·B, 드레스룸 도어·화장대, 욕실 상·하부장) 그림을 1장으로 합칠지(추천: 블록마다 같은 그림 반복 대신 첫 줄에만) ③103·111 확대. → §7 로 해소(타입당 1장 · 전타입).
7. [코디] V2 = 내역서-수 3탭 맨 아래 «견적 위치도» (26.10.8(목)) — ✅NAS 새 파일·새 폴더 · PFS 운영 쓰기 0 · V1·DWG 원본 불변
[페페] 「견적서 안에 타입별로 위치 순서별로 도면 넣고 우측에 위치 이름 : 치수 텍스트 … 안산 성포 견적서 참조 … A,B 기호가 없으니 선을 그려 도면 위치와 텍스트를 연결 … 전타입 … V2로 저장」.
- 작업 폴더 C:\dev\_work\hankukglass-hansem-v2\ — probe_kp.py(3타입 KEY PLAN 라벨·박스·가구 블록) · render_kp.py(84 시범 render.py 일반화 — 흰 배경·WIPEOUT 무시·해치 외곽선·임계 235) · zoom.py(좌표 격자 확대 — 점 찍기용) · compose.py(합성) · build_v2.py(zip 수술) · verify_v2.py(45항목) · dotcheck.py(점 주변 모음 육안) · nas_put_v2.py.
- 그림 = 타입 KEY PLAN 흑백(0.2px/단위) + 빨간 점(가구 위치) + 빨간 꺾은 연결선(흰 테두리) + 오른쪽 위치명 : 치수(맑은 고딕 Bold, 인쇄 ≈10.5pt) + 제목 「out\compose_map.json.
- 치수 = PFS 견적서 규격칸과 같은 문자열(size_display 우선, 없으면 치수mm) — 구분자 *·x 만 « × » 로. ⚠규격 ≠ 내역서 블록 길이인 줄 6개(84 신발장B 2245mm↔1320 · 복도장 2800mm↔1395 · 보일러실 도어 2285×1429↔800 · 욕실 상부장 800×200×800↔1800 / 103 현관 창고도어 1795↔915 / 111 팬트리도어 2275↔795) — 페페 확인 대기.
- 엑셀(V1 사본 + zip 수술, openpyxl 재저장 0) = 탭마다 그림 1장 twoCellAnchor editAs=oneCell A열~O열 끝 × 29/32/30행(84 A125:O153 · 103 A139:O170 · 111 A111:O140), 쪽나눔 = 총합+빈 행 1줄 뒤(124·138·110) → 그림은 새 쪽 · 인쇄영역 A1:O153/170/140 · 그림 비율 = 상자(15열×95px · 행 22px)에 흰 여백 보정 · 팔레트 PNG(거의 흰색 → 255 강제). 바뀐 기존 파트 = [Content_Types].xml·workbook.xml(인쇄영역 3)·sheet10/11/12(쪽나눔 1·drawing 1줄) · 새 파트 12.
- 검증 verify_v2.py 45 OK · FAIL 0* — 파트 되돌리면 V1 과 바이트 동일 · 셀 14,266칸 값·수식·병합 diff 0 · LO 재계산 값 전수 diff 0(숫자칸 495 · 갑지 38,680,000/39,380,000/51,380,000 · 총합 11,703,472.515/15,563,410.635/11,419,312.4725) · 그림 앵커 3 · LO PDF 19→22쪽(그림 쪽 6·10·14 = 총합 쪽 바로 뒤 · 쪽 안 · 표 글자 0) · 나머지 19쪽 글자 V1 동일 · 총합 쪽 3개 뺀 16쪽 렌더 픽셀 동일 · soffice 잔류 0. 육안 = 그림 쪽 3장(220dpi) + 점 31개 주변 모음 out\check_<T>.png 전수.
- NAS = \\192.168.0.101\공유폴더\2026현장\견적\10월\한샘\한국유리부지\한샘 한국유리부지 MH 가구제작 견적서(26.10.08) V2.xlsx(1,185,470 B · sha256 7c98fe319fb17791e5c876f205af6bf2a5614c25f529af93c381f868afae53dd 되읽기 일치) + …\타입별 견적 도면(V2)\{84,103,111}타입_견적위치도.png(sha256 851facf4… · eb49c007… · 820de53a… 일치) · 폴더 변화 = 새 파일 1 + 새 폴더 1 · V1(aa32b87c…) 그대로. 올리기 직전 #800 GET 지문 = V1 계획과 같음.
- 🔑 함정(rules 🆕): ①LO 는 쪽나눔이 «굵은 아래 테두리 행» 바로 뒤면 그 테두리를 쪽 경계에서 반쯤 잘라 그린다 → 빈 행 1줄 뒤에서 끊는다 ②같은 fitz 문서에서 큰 그림을 먼저 디코딩하면 다른 쪽 그림 렌더가 미세하게 달라진다(캐시) → 픽셀 대조는 새로 연 문서로 ③PIL quantize 는 바탕 흰색을 254 등으로 잡아 인쇄에 옅은 회색 상자 → 팔레트 ≥240 을 255 로.
- ⏳[페페] ①치수 = 지금 PFS 규격 그대로(위 6줄 어긋남) / 내역서 블록 길이와 같게(단품·픽스는 규격) / DWG W×D×H — 추천: 블록 길이(단품·픽스 규격) ②글 순서 = 높이 순(선 교차 0) / 견적 순(교차 12·26·13) — 추천: 높이 순 ③그림 크기 = 지금 A..O 폭(인쇄 663pt·쪽의 절반 높이) — 더 키우려면 인쇄영역 열을 넓혀야 해 표 쪽 배치가 바뀐다 → 추천: 그대로.