한샘 견적서 작업 규칙
규칙만 둔다. 상태·진행 =
handoff.md· 양식 해부·파싱 =design.md. 새 규칙은 🆕 신규에 1줄 append → 안정화되면 아래 확립 규칙 §로 이관.
🆕 신규
- 🔑[페페] 26.10.8 PFS 추가금액 「자당포함」(sub
in_base_yn='1') = 한샘 변환 때-추가블록·별도 칸으로 빼지 않고 부모 본항목에 흡수(목표 = 행총액 − Σ미체크 sub · 순길이 0 부모면 강제 별도 표기+경고 · 흔적 안 남김) → 본문 =C:\dev\seedchain\projects\pfs\rules.md🆕 신규 같은 날짜 줄. 변환 코드는 다음 한샘 변환 때 반영. [페페] - 🔑2026-10-02 현장 전용 양식에서 «평형 탭마다 블록 제목(B{블록행})을 그 평형 포인 품명으로» 박아 두면, PFS 엔진 출력 그대로 「블록 = 포인 항목 1개·블록명 = 품명」(26.9.7 페페) + 「하위내역 = 같은 블록 세트 칸」(26.9.28)이 같이 나온다 — 엔진(
inject_ledger·drop_empty_blocks)은 B열 제목을 안 건드리고 빈 블록만 걷어 당긴다. 단가군은 DB 고정(블록 4·11·18·25 = KIT_BASE · 32·39·46 = KIT_TALL)이라 W1/B1 은 앞 4블록, T1/R1 은 뒤 3블록에 포인 순서로(평형당 기본 ≤4·키큰 ≤3 일 때만), 배수(×0.5·×0.7)는 적용률 올림이 흡수 · 칸 넘침도 사라진다. ⚠양식이 평형 순서에 묶이니 그 견적 전용(비활성)으로만 · 빈door_material('')은 DB 가 NULL 로 저장(왕복 대조 때 정규화). 실례 = GS 안산 성포 한샘 6(form 14) ·C:\dev\_work\gs-ansan-seongpo-1002\sp_common.py·make_form_sp.py·hansem_sp.py. [코디] - 🔑[페페] 26.10.2 통합본 v2 방식 = 수입분을 국산과 «같은 평형 탭» 안에 「수입분」 그룹으로 넣는다 — 탭 하나에 「◆ 국산」 머리행 → 국산 블록 → 국산 소계 → 「◆ 수입분」 머리행 → 수입 블록 → 수입분 소계 → 총 합(수입만 있는 평형은 수입분 그룹만). 블록·평형끼리 합치지 않는다(그룹으로만 구분) · 갑지는 구분 칸 「수입분」 + 국산/수입분 각자 만원 절사. ⚠PFS 한샘 엔진(고정 블록 7칸)은 이 모양을 못 낸다 → 지금은 v1(운영 다운로드)을 XML 재조립한 «엑셀만»(
C:\dev\_work\gs-daejeon-doma-1002b\make_v2.py). 57행이면 배율 65% 가 넘쳐 58% 로. [페페·코디] - 🔑[페페] 26.10.2 한 현장에 국내생산분(메인)·수입분(수입의 국내생산분, 보조) 견적이 따로 있으면 «통합본 1개»로 낸다 — 국산이 현장 메인, 수입분 탭은 타입 통일(병합) 없이 그대로 가져오고 이름에 「수입국내생산분」을 붙여 구분한다. PFS 한샘 엔진 규약상 탭 이름 = 평형명 +
내역서-주라서 평형명을59A(수입국내생산분)으로 둔다(탭59A(수입국내생산분) 내역서-주, 31자 안) · 갑지는 메인 1장에 국산 본오더 → 절사 → 소계 / 수입국내생산분 행(평형 칸은SUBSTITUTE로 평형만, 구분 칸 「수입국내생산분」) → 절사 → 소계 / 기타 → 합계. 실례 = GS 대전 도마*변동 한샘 9(form 12) ·C:\dev\_work\gs-daejeon-doma-1002b\make_form12.py·hansem_v5.py. [페페·코디] - 🔴2026-10-02 PFS 한샘 엔진(
/api/hansem) 함정 4개 (GS 대전 1차 form 11 ·C:\dev\_work\gs-daejeon-doma-1002b\make_form10.py·hansem_v4.py) — ①엔진 평형 슬롯 ='<평형> 내역서-주'탭이라 수납만 있는 평형도 주방 내역서 탭이 있어야 한다 → 양식에 빈 탭을 «숨김»으로 두고 주방 갑지엔 행을 안 만든다(엔진이 블록 0개면 총합 0 을 박아 안전) ②적용률 «올림» 누적(칸당 <1틱, 40칸이면 +1,000 대)이 목표의 다음 만원 경계를 넘으면 절사가 못 먹고 한샘액이 포인보다 커진다(16,989,000 → 16,990,000) → 검사를합계 < 목표 다음 만원까지 걸고, 넘으면 1틱 금액 큰 칸부터 한 칸씩 1틱 내린다 ③내역서-수 픽스도아 블록 단가행 라벨 = 「단가 (50%)」인데 수식엔 배수 없음(파우더장과 같은 정본 오기) → 넘친 칸을 거기 넣지 말고 같은 방 블록으로 ④정본 수납 갑지 21행(84B) 단가·금액 칸은 아래 테두리가 없다(서식 333/334 — 원래 숨김 22행이 뒤따름) → 3평형으로 쓰면 20행 서식(320/344)으로 바꾼다(PDF 렌더로 잡음). [코디] -
🔑[페페] 26.10.1 수납 갑지도 주방처럼 자재비·운반비·절사 행을 빈칸이라도 남긴다(기본양식 항목) → 본문·원인 =
C:\dev\seedchain\projects\pfs\rules.md🆕 신규 같은 날짜 줄. [페페] -
🔑2026-10-01 [페페] 배율(+5% 등)을 가구에만 거는지 시공비까지 거는지는 판마다 다르다 — 파일명에 반드시 표기(예
_가구+6%_시공비원금vs_+5%_시공비별도=가구+시공 같은 배율). 같은 날 1차 판(가구+시공 ×1.05·×1.10)을이전작업본(…)하위폴더로 빼고 가구만 ×1.05·×1.06·×1.07 · 시공비 원금 3판으로 다시 냈다. 빌드 =build.py의VARIANTS(키, 가구 배율, 시공비 배율, 파일명). [페페·코디] - 🔑2026-10-01 [페페] 마감내역(차수×타입 금액)으로 포인 양식 견적서를 다시 쓸 땐 = 타입 금액 × 배율 × 넥서스 품목 비율(타입 안 금액 있는 품목만 100%) → 1,000원 반올림, 잔차 = 그 타입 최대 품목. 마감내역의 수납/주방/욕실 분류는 배분에 안 쓴다. 시공비(+물류비, 「=2000」 = 만원)는 차수 탭 첫 블록에 1행으로만 분리(비고 「물류비 포함」) — 타입·품목에 안 나눈다. 넥서스 금액 빈칸 품목은 행만 두고 단가·금액 빈 셀(0 아님). 빌드 =
C:\dev\_work\dsd-cheonan-1001\build.py(zip XML 수술로 원본 본건 탭 4벌 복제). [페페·코디] -
🔴2026-10-01 규격(W)을 DWG 에서 뽑을 땐 가구 레이어가 차수 도면마다 다르다(S-DIM·0·DIM·ETC·DOOR) — AC(건축)만 빼고 다 모아 연결요소 bbox 로 잰다(
C:\dev\_work\dsd-cheonan-1001\furn.py·furn_match.py= 1차 요소를 2~4차와 크기·위치로 대조해 바뀐 것만 다시 잰다). 기존 제출본 규격은 같은 DWG 를 사람이 쪼갠 값이라(84B 장식장 띠 3510 = 2444+1066 일치) 1차 대조 기준으로 쓴다. ⚠LO UNO 파이프(--accept=pipe)는 Bash(Session 0)에서 3분 넘게 안 열린다 →--convert-to pdf|xlsx로 렌더·재계산. ⚠nasget.py put경로는 작은따옴표 전체경로 — 큰따옴표 안\\$F가$F글자 그대로 들어가 엉뚱한 이름 파일이 NAS 에 생겼다. [코디] -
🔑2026-09-28 [페페] 본건 금액은 «실제 제출한 견적서»(넥서스 등 NAS 제출본)가 기준 — PFS 견적과 다르면 제출본을 쓴다. 거래처 요청으로 평형을 합쳐 제출했으면 한샘 양식도 한 탭에 쓰고 구역은 큰제목 행(「■ 개선세대」·「■ ACC룸」)으로 나눈다 — 방법 = LO 로 53행 앞 50행 삽입 → openpyxl Translator 로 4~52행 블록 복제 → 총합 O103 = 두 구역 합계 전부(
C:\dev\_work\hansem-hwaseong-combined\build_v4.py). ⚠LOcopyRange는 이 양식에서 소리 없이 안 복사된다 · LO 행 삽입은 A열 세로 라벨 병합(A4:A52)을 늘려 놓으니 다시 나눈다. [페페·코디] -
🔑2026-09-28 [페페] 평형은 실제 이름·개수대로 — 타평형에 병합 금지. 슬롯(77/84A/84B 3개)이 모자라면 LibreOffice UNO 로 내역서 탭 복제 + 갑지 본오더 행 삽입(
C:\dev\_work\hansem-hwaseong-combined\lo_prep_form.py— LO 가 워크북 전체 참조·SUM 범위를 같이 민다. openpyxl insert_rows 는 병합·수식을 안 민다). 수납 갑지는 19~23행 5칸(22·23 = 양식 숨김행 → 쓰면 펼친다). [페페] - 🔑2026-09-28 [페페] 내역서 블록 = 개별 항목, 하위내역(
estimate_detail_sub)은 그 블록 세트 칸으로 드러낸다(본체 = 부모금액−하위합, 라벨EP×3). 한 블록 여러 항목이면 제목을 묶음명으로. 🔴수납 내역서 O53 = 46행 블록을 안 더한다(양식) → 수납은 블록 6개(4~39)만 쓴다. [페페·코디] - 🔑2026-09-28 [페페] 추가건 주방/수납 = 품명으로 판정(안방·붙박이장·신발장·침실·현관·욕실 = 수납) — 도어발주서 자동등록 추가건은
field_type이 전량 K 라 믿으면 안 된다. [페페] - 🔑2026-09-28 [페페] 운반비 = 실배차(포인→현장 출고) 목록 비율로 목표액(견적 운임 합)에 맞춘다 — 1만원 단위, 필요하면 5천원. 샘플 발송·거래처 이동 배차는 행에서 뺀다. [페페]
-
🔴2026-09-28
build.rebuild_add_sheet기본 서식행(9·11·38)은 주방가구 탭용 — 일반가구 탭은src_rows=(8,10,24)를 넘겨야 합계행 서식이 산다(9/23 파이프라인 산출물의 일반가구 탭은 합계행이 민무늬일 수 있다). 양식 오기 = 일반가구 탭 K3·내역서-수 A2 「주방가구」 → 빌드가 고쳐 쓴다. [코디] -
🔑2026-09-23 운임↔배차 짝에 Jev 는 «추천»만 — 자동 반영·금액 결정 금지. 날짜로 못 정한 행만 호출하고 후보에서 이미 짝지어진 배차를 뺀다(빼지 않으면 금강 허니콤 「신발장 도어」 처럼 남의 배차를 고를 수 있다). 9월 측정 확신 0건이라 자동 반영 임계(
jev_freight.SURE)는 운영 판정이 쌓인 뒤 다시 본다. 질문에 「확실하지 않으면 해당없음」·수량 일치를 넣으면 해당없음으로 쏠린다(2/7). [코디] -
🔑2026-09-23 한샘 거래명세서는
pipeline.py <마감번호>로만 만든다 — 현장 판단값은 코드가 아니라overrides.json(field_no 키 +note근거)에. 파이프라인 코드를 고치면cmp_out.py out_ref_0923로 회귀 대조(차이 0)를 먼저 본다. ⛔(판정 불확실) 현장은 추측으로 채우지 말고 페페에게 묻고 overrides 에 적는다. [페페·코디] -
🔑2026-09-23 [페페] 정본 양식도 결함이면 원본을 고친다(지시가 있을 때) — 방법 = zip XML 치환(
fix_cons_form.py식: 그 셀만 바꾸고<v>캐시 제거 +fullCalcOnLoad). openpyxl 재저장은 wmf 이미지·데이터유효성 확장을 날린다. 원본 백업을 먼저 받고, 백업과 zip 항목 대조로 바뀐 파일이 의도한 것뿐인지 확인. [페페·코디] -
🔑2026-09-23 [페페] 일레븐 샘플도어 = 견적 3항목(인목·라크리스·월드)을 줄로 푼다 — 오전 「수납 한 항목·공통」 중 «한 항목» 폐기(수납·공통은 유지).
SITES['eleven']['grp']='일반'. [페페] - 🔴2026-09-23 양식 갑지 S2(결재칸)엔 라인 현장 한샘 담당 「임서현」 도장 이미지가 있다 — 생산비·시공비 둘 다. 이미지는 A4 앵커만 남긴다(
build.py필터). 옛 빌드는 주방·수납 이미지를 통째로 남겨 NAS 최종본 5개에 남의 도장이 찍혔다. [코디] -
🔴2026-09-23 시공비 양식 갑지 합계
O40 = O36+O39는 본시공 소계(O23)를 뺀다 →=O23+O36+O39로 고친다(라인본은 본시공이 #REF! 라 안 드러났다). 시공비 양식 A4 공급자 이미지 = 지엠테크라 포인 이미지(생산비 양식 주방 A4)로 바꾼다. 빌드 =build_cons.py. [코디] -
🔑2026-09-23 [페페] 짝 배차 없는 추가견적 운임은 운반비 탭에서 빼고 «가구생산비(본오더)»에 흡수해 마감표에 맞춘다 — 금강 753 허니콤도어 운임 200,000.
SITES[...]['absorb']=True. [페페] - 🔑2026-09-23 [페페] 최종본과 함께 «월마감표 엑셀»도 같은 위치에 저장 — PFS 생성기(
C:\dev\pfs\api\pfs\monthly_close\service\monthly_close_excel.pybuild)를 파일째로 불러 PFS 다운로드와 같은 양식·파일명(한샘 9월 마감.xlsx)으로 만든다(close_xlsx.py). 거래명세서와 어긋나는 칸(SGC 출장비·숙식비 = 시공비)은 메모리에서만 맞추고 운영 DB 는 안 고친다. [페페] - 🔑2026-09-23 [페페] 엑셀 총합은 마감표와 «1,000원 단위로 유사»해야 한다 — 1만원 단위 차이(4만·6.4만)는 큰 차이다. 빌드는 차이 ≥ 10,000 이면
⚠1만원 이상으로 드러낸다. 확정액(confirm_amount)이 있으면 그걸 기준으로 본다. [페페] - 🔑2026-09-23 [페페] 운임 규칙 개정 — 본건 = PFS 견적 운임칸 그대로 · 추가건 = 추가견적에 적힌 운임과 동일금액(×1.15 폐기). 운반비 행은 추가견적 품목·수량과 맞는 배차만 싣는다(본건·AS 구분, 예: 「냉장고 상부장 도어 2개」↔견적 냉장고 상부도어 2). 짝 없는 배차(품목이 이번 견적에 없는 AS)·거래처 이동분은 안 싣는다. 짝 배차가 없는 견적 운임은 빌드가
⚠ 짝 배차 없음으로 드러낸다. [페페] - 🔑2026-09-23 [페페] 출장비·숙식비 = 시공비 항목 — 추가분에서 빼서 갑지 시공비 칸(AG36)으로. (
CONS_KEYS = 시공·출장비·숙식비) [페페] - 🔑2026-09-23 [페페] 이미 발행된 거래명세서가 있는 현장은 발행본 기준 — 신영 광주 = 9.4 발행 1,800,000(품명·규격은 DB, 금액·운반비는 발행본). [페페]
- 🔑2026-09-23 [페페] 가구 세트가 아닌 본건(일레븐 샘플도어)은 «수납 한 항목·공통»으로 정리 — 협력사 작업·자재비 내역(인목·라크리스·월드)을 줄로 풀지 않는다. 주방이 없으면 첫 탭 = 수납, 운반비·자재비 C3 는
=+수납!S8. [페페] - 🔴2026-09-23 내역서 단가는 «원본 슬롯 × 열»마다 다르다 — 적용률 역산은 그 칸의 단가로 한다. 77/84A/84B 슬롯은 라벨(마감·에지·등급)이 달라 LOOKUP 단가가 다르다(77 상부장 C=3,700 / 84A C=2,600 / 같은 블록 D·E 열도 제각각, 빈 열은 단가 수식 자체가 없다 → C열 단가를 문다). 84A C열 하나로 역산한 금강 최종본은 엑셀에서 +95,289 어긋났다. 단가 = 원본 양식 data_only 의
(<슬롯> 내역서-<주|수>)!(h+5, 열). [코디] - 🔴2026-09-23 갑지 절사 칸(주방 O22·O30·O34 / 수납 O24)엔 라인건설 양식 값이 숫자로 박혀 있다 — 빌드가 반드시 비운다. 안 비운 금강 최종본이 −18,710 어긋났다. [코디]
- 🔑2026-09-23 Excel COM 대체 검산 =
C:\dev\_work\hansem-0926\evalwb.py— 갑지 사슬(셀·탭간 참조·SUM·사칙)을 파이썬으로 재계산, 내역서 LOOKUP 은 원본 양식 캐시값을 문다(라벨을 안 건드리니 엑셀과 같다). 모르는 함수가 나오면 멈춘다. 빌드마다AF36·AH36을 기대값과 1원 단위로 대조 + 걷어낸 탭을 무는 수식 0건 확인. [코디] - ⚠2026-09-23 마감에 넣기 전에 «이미 나간 거래명세서»가 있는지 NAS 부터 본다. 신영 광주는 9.4 에 옛 양식으로 1,800,000 이 발행됐고(
…\09월\한샘\새 폴더\) 마감표 확정액도 그 값인데, DB 견적은 1,571,000 이다. 확정액(confirm_amount)이 있거나 비고에 「계산서 발행」이 있으면 DB 보다 발행본이 사실이다. [코디] -
⚠2026-09-23 NAS 업로드 스크립트도
nasget.force_ntlm()을 먼저 부른다 — 안 부르면 smbclient 가 SSPI 로 가서SEC_E_UNKNOWN_CREDENTIALS로 죽는다(비번 문제 아님). [코디] -
🔑2026-09-23 [페페] 추가 기본규칙 6조(파일 생성 시 항상 적용) — ①파일 오픈 시 첫 탭 = 「주방」 또는 「일반」, 둘 다 있으면 주방 우선 ②주방·수납 탭 A4 의 포인 사업자정보 이미지는 가져온다(도면만 계속 제외) ③담당자 이름 = 그 현장의 담당자(현장목록에 있는 담당자) ④추가분견적 NO 열에는 날짜만, 그 외 내용은 비고로. 날짜는 기존 파일 형식대로
4/15간단표기 ⑤탭마다 인쇄영역을 기입 데이터 끝까지 재조정(추가분견적은 행이 늘어 범위가 중간에 걸린다 — 「합 계」 글씨 있는 행까지 포함) ⑥구분행의 「도어, EP 50%」·「바디, 도어 70%」류 비고는 쓰지 않는다. [페페] - 🔑2026-09-23 본오더 내역서 길이 = C안(페페 확정) — 견적에 규격이 있는 항목은 실값, 없는 항목만 적용률 역산으로 금액을 목표에 맞춘다. 한샘 양식 내역서는
길이/10 × 단가(LOOKUP) × 배수라 금액을 직접 못 박는다. [페페] - 🔴2026-09-23 한 현장의 견적 3건이 시공비를 서로 다르게 담고 있다 — 금액 대조 전에 이것부터 본다. 금강 부산에코 실측 = 735(본건) 는
construction_cost8,000,000 이 총액에 안 더해져 있고 상세합(21,670,000)이total_amount(20,370,000)보다 1,300,000 많다(수기 조정) · 753 은 시공비가 상세 행(2,310,000) · 776 은construction_cost필드(1,160,000)가 총액에 더해져 있다. 월마감 담기식이total − construction_cost라 735 만 상세합과 9,300,000 벌어진다. [코디] -
⚠2026-09-23 Excel COM(
Workbooks.Open)이 이 양식에서 멈춘다 — Session 0 도,schtasks /IT대화형도 동일. 원본 양식·산출물 둘 다 시도했고 CPU 가 1~3초에서 멈춘 채 응답이 없다(정의이름#REF!1,002개는 원본부터 있던 것이라 산출물 탓이 아니다). 당분간 Excel 실열기 판정은 사람 육안으로 대체한다. [코디] -
🔴2026-09-23 포인 단가 기준은 대외비 — 한샘에 나가는 엑셀에 노출 금지. 그래서 자재비 탭은 비운다(갑지 기타-자재비 0). 한샘 쪽도 아직 정리가 안 된 영역이라 추후 작업이고, 기록하게 되면 QC1 미러링 DB 의 우리 자재비 내역으로 정리한다. [페페]
- 🔑2026-09-23 운임 기록 규칙(3조) — ⛔②는 같은 날 오후 폐기 → 맨 위 「운임 규칙 개정」. ①본건 현장 출고 금액 = 견적가 기준으로 적는다(견적서를 미리 써서 예상 운임을 청구한 건이라 실배차와 다르다). ~~②추가 배차 = 실금액 × 1.15 → 1,000단위 내림~~. ③거래처로 간 이동분(포인↔오엠씨·피앤알 등 = 현장에 나간 게 아닌 물품 이동)은 별도 행을 만들지 말고 실 현장 출고 행 금액에 포함시킨다. [페페]
- ⛔2026-09-23 운반비 탭 「비고」 칸에 금액 차이 사유를 쓰지 마라 — 엑셀은 고객 제출물이다. 차이 상황은 PFS 견적 쪽(비고 또는 신설 칸)에 남겨 페페가 화면에서 본다. [페페]
- 🔑2026-09-23 한샘 양식 정본 = 라인건설 아산테크노밸리 06월본이다. GS 안산 성포 계열(=
hansem_form3/4)은 반쪽 파일이라 쓰지 마라 — 가격적용분·자재비·운반비·수납 갑지·내역서-수 4탭·추가분견적 2탭이 전부 빈 탭이다. [페페 확인] - 🔑2026-09-23 「가격적용분」은 추가분견적의 단가 산출 원장이고, 소계 =
SUM(단가:디바이더) × 1.15다. 다만 탭간 수식 링크가 0건이라 손으로 전사되며 원본조차 3,110원 어긋나고 일반가구분은 원장에 아예 없다. 자동 생성 전에 「어느 쪽이 정본인가」를 먼저 정해야 한다. 당분간 빈 데이터 + 숨김탭으로 둔다. [코디·페페] - 🔑2026-09-23 평형 탭은 현장 타입 개수와 주방/일반 포함 여부에 맞춰 변형한다 — 남는 슬롯은 탭·갑지 행까지 걷어낸다. 빈 평형 슬롯을 남기면
=SUM()만 남아 엑셀 복구 경고가 난다(26.9.22 엔진 결함 ③과 같은 함정). 걷어낼 땐 갑지 범위 수식(O23=SUM(W19:AD22)등)을 같이 재조립한다. [페페] - ⛒2026-09-23 도면은 기본 미첨부 — 샘플 양식을 재사용할 때도 도면 이미지는 삭제하고 진행한다. [페페]
- ~~⚠2026-09-23
transportation_cost는 월마감 담기 금액에 안 들어간다.~~ ⛔틀린 기록 — 같은 날 오후 정정: PFS 견적 총액 = 상세합 + 시공비 + 운임이라(최근 운임 있는 견적 25건 중 22건 정확히 일치)furniture_amount = total_amount − construction_cost안에 본건 운임이 들어 있다. 그래서 본오더 목표 = 총액 − 시공비 − 운임. [코디] - ⚠2026-09-23 NAS 정본 양식은 자주 열려 있다(
~$잠금 파일).nasget.py get이NtStatus 0xc0000043로 실패하면smbclient.open_file(..., share_access='rwd')로 읽는다. 원본은 절대 쓰지 않는다. [코디]