2026-06-22 세션 — 견적 추가건 '출력 포함' 토글 DB 영속 (엑셀 출력 반영 버그)
논의·대안
견적서 출력(/estimate/print-v2)에서 추가건(sub-estimate)의 '출력 포함' 설정이 엑셀 다운로드에 반영되지 않는 증상. 페페 지시로 적대적 검토 에이전트가 원인을 추적했다.
두 가설을 적대적으로 검증:
- H1(페이지선택 매핑): print-v2 모달에서 추가건만 선택 시 엑셀 시트 매핑 오류. → 이전 커밋 c45f601(페이지 선택 매핑 보완)으로 대부분 해소, pages= 콤마 split도 encodeURIComponent로 안전. 동일 이름 추가건 2개의 Set 충돌만 엣지로 잔존(이번 범위 외).
- H2(include_in_print 미영속) = 참(주원인): 견적등록/수정 화면의 추가건 '출력 포함' 체크박스(estimate_regist_v2.js)가 프론트 State만 바꾸고 어떤 API도 호출하지 않음. saveEstimate 페이로드({estimateMaster, estimateDetailList})에도 추가건이 없음. DAO estimate_dao.update_include_in_print(추가건 출력 토글 UPDATE)는 정의만 있고 호출처 0. 결과: DB estimate.include_in_print가 항상 기본값 '1' → compose_pages/compose_sheets가 그 값을 읽어 체크 해제한 추가건도 엑셀·출력에 항상 포함.
결정
체크박스 토글 시 즉시 DB에 영속(autosave 폐지 원칙과 무관한 단발 설정 — 기존 update_include_in_print DAO를 그대로 연결). 견적 마진·단가·금액 등 본문 저장과 독립.
산출물·커밋
- 백엔드:
estimate_controller.pyPUT /api/estimate/<no>/include-print {include_yn}엔드포인트 신설 +estimate_service.set_include_in_print(검증·dao 연결). - 프론트:
estimate_regist_v2.js추가건 체크박스 핸들러가 토글 즉시PUT .../include-print호출 + 실패 시 UI/State 롤백. 캐시버스터asset_ver()자동. - 커밋: master
9e6bf67→ deploy-live7a28611(운영 배포, 텔레그램 승인 게이트). - 검증(전부 PASS):
- 테스트 영속 round-trip(엔드포인트가 DB 반영·GET 재확인).
- 테스트 풀 E2E: 임시 추가건 생성 → 토글 ON=엑셀 시트 포함 / OFF=엑셀 시트·출력페이지에서 사라짐 / ON=복귀 → 임시건 삭제 정리.
- 테스트 UI: Playwright로 '출력 포함' 체크박스 클릭 →
PUT /api/estimate/714/include-print → 200실측. - 운영: 엔드포인트 round-trip(원복 정확) + 실견적 711 추가건 4건(712/713/716/717, 모두 include='1')이 엑셀 시트
[종합,본건,추가1~4]에 반영(read-only).
다음 (후속 — 동일 세션 내 해소)
- 해소(master
e92d327→deploy-live729c673): 동일estimate_name추가건 2개의 출력 모달 Set 충돌(개별 선택 불가)을 선택 키를 estimate_no 기반(sub:<no>)으로 전환해 해결.compose_pages가 각 페이지에key부여(추가건=sub:<no>, 그 외=시트명)+필터를 key 기준으로,compose_sheets._inc_sub도sub:<estimate_no>매칭, 프론트estimate_print_v2.js는 선택/렌더/모달을p.key기준(data-key+attr()— 숫자형 타입명.data()Number 변환 회피)으로. 이름/특수문자/31자 절단 충돌 전부 무관해짐. - 검증 PASS: 테스트 중복이름 추가건 2개(715/716) 개별선택(A만→
[ZZ_중복_TMP], B만→[ZZ_중복_TMP_2], 둘다→양쪽)+비추가건(종합/본건/타입) 선택 회귀無+Playwright 모달 라운드트립(84B옵션 해제→5페이지) / 운영 실견적711 추가건4건 키선택 read-only.
관계
- 주제 그룹: estimate
- 관련 문서: pfs-handoff, pfs-schema-estimate, session-2026-06-19-estimate-approval-box