26.7.30(목) 세션 — 신영 광주 챔피언스시티 MH 견적서 운영등록(본건 + 추가1)
논의·대안
페페 지시 = NAS 2026현장\견적\07월\넥서스\넥서스 신영 광주 챔피언스시티 MH 견적서.xlsx를 운영서버에 견적서 등록.
"본건 견적 생성 후에 추가건:추가1 항목으로 등록", 현장은 field_no 1973을 본건으로. 운영배포 승인 명시.
입력이 기존 스킬(order-automation\견적등록_스킬.md)의 도어발주서 xlsm이 아니라 견적서 xlsx라 시트 구조부터 재판독했다.
단일 시트 추가1 2페이지 = p1 요약블록(추가1 1,027,000 + 운임 150,000 → 합계 1,177,000) + p2 상세블록(섹션헤더 2 + 품목 13줄 → 공급가액 1,027,000).
판독 결과 이 양식이 PFS 견적서 출력양식(estimate_print_service._build_money_sheet)의 요약+상세 블록과 1:1임을 확인(블록 45행 주기·본문 20행·base+17부터)
→ 매핑을 추측하지 않고 출력 렌더러(_render_summary_body/_render_detail_item)의 셀 주소에서 역산했다.
대안 검토 3건:
- type_name: 스킬 관례는 추가N-1이었으나, p1 요약행 이름(C17)이 그대로 estimate_detail.type_name으로 렌더되므로 엑셀이 지정한 추가1 채택. 최근 선례 738(넥서스 GS인천 산곡6구역 추가1)도 추가1 단일 타입이라 관례와도 일치.
- 운임 150,000: master.transportation_cost는 라벨이 '물류비' 고정이고 비고를 담지 못한다 → 엑셀의 운임 / 신규자재 운임을 그대로 재현하려면 estimate_extra_cost(기타 부가비)가 맞다. 월마감(monthly_close_dao.select_candidates)은 total_amount를 보고 extras는 이미 그 안에 합산되므로 마감 금액에도 영향 없음.
- 마진: master margin_percent=None(자동)로 두면 재로드 시 업체 마진율(넥서스 15.5%)을 추종해 견적가가 부풀려진다. 엑셀 단가는 이미 고객 청구 확정가 → master 0(수동 0%) + detail NULL(자동→마스터 0 추종). 선례 738과 동일 조합.
결정
- 본건 = 빈 컨테이너(금액 0). 이 엑셀에 본건 내용이 없고(시트가
추가1하나), NAS 견적 폴더 전량 검색에도 신영 광주 본건 견적서 파일이 없다(1건 = 이 파일). 추가건의 부모가 필요해 생성만 한다. - 본건
estimate_name=신영 광주 챔피언스시티 MH 견적서(관례 = NAS 파일명 −넥서스접두. 선례 726SGC 광주 용두동 MH 견적서). - 상세 13줄 = 품목행만. 섹션헤더 2행(
128타입 50-010 몸통재·84D타입 HS2661 몸통재)은 미수집 — PFS detail 모델에 대응 필드가 없고, 타입으로 쪼개면 p1 요약이 1줄에서 2줄로 바뀌어 이미 발송된 문서와 달라진다. A74:B76병합(놀테 자재누락분 1품명 3규격) = 3줄로 전개, 품명은 병합 앵커에서 상속.
산출물·커밋
- 신규 스크립트
C:\dev\order-automation\build_and_register_shinyoung_add1.py(DRY/VERIFY=1/REGISTER=13모드, 금액 3중 교차검증 + 현장·중복 사전조회 게이트). 페이로드payloads\payload_shinyoung_{main,add1}.json. 원본 로컬 사본 =order-automation\넥서스 신영 광주 챔피언스시티 MH 견적서.xlsx. - 운영 등록 완료 — 본건 estimate_no 740 / 추가건 741(
parent=740,estimate_name='추가1', 13줄,total_amount=1,177,000) / 기타부가비운임 150,000 (신규자재 운임). - pfs 리포 코드 변경 없음(데이터 등록만) → git 커밋·배포 없음.
검증
- 빌드 단계 금액 3중 교차검증 — 품목합 == p2 공급가액(1,027,000) == p1
추가1행 / 품목합+운임 == p1 합계금액(1,177,000). 행별단가×수량 == 엑셀 금액assert. - 사전점검(VERIFY) — 운영 로그인 200, 현장 1973 =
신영 광주 / 넥서스 / MH(엑셀 담당 김영민 부장과 일치), 기존 본건 견적 0건(중복 아님). - 등록 후 왕복 —
sub-list/740=[(741,'추가1')],GET /api/estimate/74113줄 전 항목(품명·규격·수량·타입·금액) 대조 불일치 0,extra/list/741=('운임',1,150000,'신규자재 운임'). - 출력물 대조(최종) —
GET /api/estimate/print/excel/740실제 다운로드(353,851 bytes, 시트종합/본건/추가1) → NAS 원본추가1시트와 셀 단위 대조 불일치 0(요약행 항목명·수량·비고 / 상세 13줄 규격·수량·단가·비고). 종합 시트 =본건!M37 + 추가1!M37.
알려진 차이(내 등록 탓 아님 — PFS 기존 동작)
- 추가건 시트 p1 요약행 A열(현장명) 공백 —
select_sub_estimates가field_name/field_no_name을 안 내려줘서_build_money_sheet의site가 빈다. 선례 738에서도 동일(실측 확인). 종합 시트는신영 광주로 정상. - 담당자 표기 = PFS는 업체
refer_man(고재형 이사), 원본 엑셀은 현장 담당김영민 부장. 선례 711/726도 동일.
다음
- ⏳페페 = 운영 육안(
/estimate/modify-v2/740, 출력 미리보기) + 본건 740에 본건 내용 채울지 결정(현재 0원 컨테이너). - 섹션헤더 2건을 살리려면 타입 2개로 분리하는 방법뿐(요약이 2줄로 변경) — 필요하면 지시.
관계
- 주제 그룹: pfs-estimate
- 관련 문서:
projects/pfs/playbook.md(§7 신설),projects/pfs/rules.md,order-automation\견적등록_스킬.md