2026-06-13 세션 — 견적 v2 항목 전체/몸통/도어 토글 DB 영속
논의·대안
임시계산기 토글(앞 세션) 직후 페페 지적: "항목내에서는 작동이 되는데 DB저장이 안되고 있어. DB에 몸통,도어 규칙 적용시 저장항목이 필요하지 않아?" 진단 결과 정확 — 토글이 임시계산기(#calcFrame)에만 있었고, 계산기는 설계상 State.details·저장 payload·recalcTotal과 완전 분리(비저장). 실제 견적 항목에 몸통/도어 규칙을 영속하려면 (1) 토글을 실제 항목 행으로, (2) estimate_detail에 저장 컬럼, (3) 저장/로드/PDF/엑셀 배선이 필요.
저장 방식 3안 제시: (A) part_mode 컬럼 + 최종금액(margin_total_amount)에 비율 반영 저장 → 종합합계·PDF·엑셀 자동 반영, (B) 전체금액 보존 + 렌더 시점 비율(합계/PDF 광범위 수정), (C) 몸통/도어 별도 행 분리. 통합 지점 조사 결과 종합합계(recalcTotal)·그룹소계·PDF(select_estimate_detail_print: margin_total_amount/qty)·엑셀(estimate_print_service._main_total)이 모두 margin_total_amount 를 읽음 → A안이 다운스트림 무수정으로 가장 단순·일관.
결정
- Design A 채택(페페 선택) + DB 마이그레이션 테스트+운영 모두 적용(페페 승인).
estimate_detail.part_mode VARCHAR(5) NULL DEFAULT 'all'(all/body/door). 최종합계에만 비율(100/65/35·천원올림), 자당금액·마진금액은 전체 기준 유지(계산기와 동일). 재진입 시 토글·비율 복원.
산출물·커밋
- DB:
scripts/codi_part_mode_alter.py(+_prod) — SSM·INSTANT·기존행 'all' 백필. 테스트 9318·운영 9350행 'all'. - 백엔드
api/pfs/estimate/dao/estimate_dao.py: insert_estimate INSERT·update_estimate INSERT/UPDATE 3곳 part_mode 배선.service/estimate_service.py _normalize_detail기본값 'all'. GET=SELECT a.*자동 복원. - 프론트
web/static/js/estimate_regist_v2.js:partRatio/applyPartRatio헬퍼(계산기도 공유), 행별 토글(cellForCol note), recalcDetailRowSilent 비율적용, #qeBody .row-part-btn 핸들러, stripDetail/loadEstimate 왕복, updateGroupSubtotal 부분갱신, 신규행 default.web/static/css/...:.row-part-toggle/.row-part-btn. - 커밋:
eb9e555(master) →3bb251b(deploy-live 병합). Actions 테스트·운영 success.
검증
- JS
node --check통과. Pythonpy_compile통과. - SQL 컬럼/플레이스홀더/파라미터 카운트 일치(INSERT 29/29, UPDATE 28 SET+dno).
- 다중 에이전트 리뷰(SQL정확성·JS계산·회귀격리 3렌즈 + 적대검증): 배포차단 0건. 실제 1건(그룹소계 즉시 미갱신 — 선재 패턴)은
updateGroupSubtotal로 보완. - 테스트·운영 정적파일 md5 = git blob 일치, 배포 JS에 row-part-btn·partRatio 반영, GET API가 part_mode 반환.
- 라이브 영속 라운드트립 PASS(테스트·운영 양쪽): DB part_mode='door' 설정 → 배포된 API GET이 'door' 반환 → 'all' 원복. 가역.
- 미직접검증: 로그인 UI에서 토글 클릭→저장→재진입 E2E. 앱컨텍스트 SSM 실행은 EC2 로그경로/py3.6 환경 충돌로 미실행 → SQL+라이브 API 라운드트립 + 코드 정합 검증으로 대체. 페페 로그인 화면 확인 권장.
다음
- 페페 운영 로그인 후: 항목 토글 클릭→합계 변화 + 저장→재진입 시 토글·금액 복원 육안 확인.
관계
- 주제 그룹: estimate
- 관련 문서: pfs-handoff, session-2026-06-13-calc-part-toggle