pfs 세션 로그
개별 세션 문서 방식. 신규 세션은
projects/pfs/session-YYYY-MM-DD-<주제슬러그>.md개별 문서로 작성하고register_doc.py --category archive로 등록한다(템플릿 =templates/session.md). 이 파일은 그 목록·링크 인덱스다. 형식:- YYYY-MM-DD — <주제> → 경로 (id). 본문(세션 내용)은 채티가 세션 종료 시 개별 문서에 작성한다.
세션 문서 목록
- 2026-06-08 — 견적서 엑셀 공급자 이미지 O열 정렬(배포) →
projects/pfs/session-2026-06-08-excel-supplier-img-oalign.md(pfs-session-2026-06-08-excel-supplier-img-oalign) - 2026-06-08 — 견적서 엑셀 4종 보완 + OMC 배포·검증 →
projects/pfs/session-2026-06-08-excel-4items-omc-deploy.md(pfs-session-2026-06-08-excel-4items-omc-deploy) - 2026-06-09 — 분류 드롭박스 하단 잘림 수정(A안) →
projects/pfs/session-2026-06-09-category-dropdown-clip-fix.md(pfs-session-2026-06-09-category-dropdown-clip-fix) - 2026-06-09 — size_display 영속화(DB+서버+JS) →
projects/pfs/session-2026-06-09-size-display-persist.md(pfs-session-2026-06-09-size-display-persist) - 2026-06-09 — size_display 저장 직전 동기화 누락 follow-up →
projects/pfs/session-2026-06-09-size-display-sync-on-save.md(pfs-session-2026-06-09-size-display-sync-on-save) - 2026-06-09 — 엑셀 size_display 반영 + 공급자 이미지 O열 정렬 →
projects/pfs/session-2026-06-09-excel-size-display-supplier-oalign.md(pfs-session-2026-06-09-excel-size-display-supplier-oalign) - 2026-06-09 — 견적 구조 복사 목업·설계 →
projects/pfs/session-2026-06-09-estimate-copy-design.md(pfs-session-2026-06-09-estimate-copy-design) - 2026-06-10 — 견적 타입 순서 field_type 연동·페이즈A 지시문·두 경로 통합 보완 →
projects/pfs/session-2026-06-10-type-order-fieldtype-link.md(pfs-session-2026-06-10-type-order-fieldtype-link) - 2026-06-10 — 견적 1:1 원칙 확정·타입 자동 로드(역방향)·운영/테스트 RDS 실측 →
projects/pfs/session-2026-06-10-one-to-one-fieldtype-autoload.md(pfs-session-2026-06-10-one-to-one-fieldtype-autoload) - 2026-06-10 — handoff 주제별 분할·BRIEF 캡 초과 해소 →
projects/pfs/session-2026-06-10-handoff-split-brief-cap.md(pfs-session-2026-06-10-handoff-split-brief-cap) - 2026-06-10 — 견적 타입 SSOT 페이즈A(A/B/C/D) 구현·테스트 배포·검증 →
projects/pfs/session-2026-06-10-type-ssot-phaseA.md(pfs-session-2026-06-10-type-ssot-phasea) - 2026-06-10 — 견적 페이즈B 10건 원문 재진단(코드·운영/테스트 DB 실측) →
projects/pfs/session-2026-06-10-phaseB-rediagnosis.md(pfs-session-2026-06-10-phaseb-rediagnosis) - 2026-06-10 — 견적 페이즈A·B 테스트 검증 + 후속 5건(#1·3·4·9·10) 진단·지시문 →
projects/pfs/session-2026-06-10-phaseB-verify-followup.md(pfs-session-2026-06-10-phaseb-verify-followup) - 2026-06-10 — 견적 v2 +항목추가 버튼 하단 이동(채티 직접·운영배포) →
projects/pfs/session-2026-06-10-additem-row-bottom.md(pfs-session-2026-06-10-additem-row-bottom) - 2026-06-13 — 견적 v2 임시계산기 전체/몸통/도어 토글(코디 직접·운영배포) →
projects/pfs/session-2026-06-13-calc-part-toggle.md(pfs-session-2026-06-13-calc-part-toggle) - 2026-06-13 — 견적 v2 항목 전체/몸통/도어 토글 DB 영속(코디 직접·운영배포·테스트+운영 RDS 마이그레이션) →
projects/pfs/session-2026-06-13-part-mode-db-persist.md(pfs-session-2026-06-13-part-mode-db-persist) - 2026-06-18 — orderpaper(엣지·분류토글·엑셀필터·계층폴딩·업로드병합)·worklog 3기능·생산현황 대기칸 다건 운영배포(코디 직접) →
projects/pfs/session-2026-06-18-orderpaper-worklog-batch.md(pfs-session-2026-06-18-orderpaper-worklog-batch) - 2026-06-19 — 견적서 엑셀 결재칸(종합/추가건 첫장) + 페이지 선택 매핑 보완(타입→본건·추가건 raw 매칭)·운영배포 →
projects/pfs/session-2026-06-19-estimate-approval-box.md(pfs-session-2026-06-19-estimate-approval-box) - 2026-06-20 — 발주서정리/입고일정 대량 개선·복원·동기화 신규강조(C안 형광)·QA Helper 운영노출·로그인 env 도입(코디 직접·운영배포) →
projects/pfs/session-2026-06-20-orderpaper-newhighlight-batch.md(pfs-session-2026-06-20-orderpaper-newhighlight-batch) - 2026-06-20 — 업체관리 자재 하위분류(PRODUCT_CAT, common_code parent_code 컬럼)+마스터 목록 영구편집+분류간 드래그+하드웨어→자재 라벨(코디 직접·운영배포) →
projects/pfs/session-2026-06-20-material-category-parent-code.md(pfs-session-2026-06-20-material-category-parent-code) - 2026-06-22 — orderpaper '현장별 자재' 탭 신설(material-spec 이식·스타일3 카드갤러리·field_no제거·도면PDF 자동작성 phase2 릴레이+
claude -p사이드카·적대적 검토 에이전트48 버그15 수정·테스트 배포 d92e4e3) →projects/pfs/session-2026-06-22-material-spec-tab.md(pfs-session-2026-06-22-material-spec-tab) - 2026-06-22 — 견적 v2 현장검색 키워드 엔터 즉시검색(검색버튼 불필요·운영배포 1858742) →
projects/pfs/session-2026-06-22-estimate-enter-search.md(pfs-session-2026-06-22-estimate-enter-search) - 2026-06-22 — 현장별 자재 적대검토 5라운드(~135 에이전트)로 ~35건 수정·운영반영(모달버튼 복구·신규현장 드롭다운/가구업체자동·저장 동시성·field_no 전파·백엔드 보안[DELETE/릴레이 인증·RESTX 직렬화]·인쇄·편집가드) + 도면 자동작성 파서 실가동(사이드카 세션로그인+requeue, 라인VIP draft conf0.82/0.85)·10분 자동 스케줄 + 입고일정 탭 상단탭바 유지(코디 직접·운영배포) →
projects/pfs/session-2026-06-22-matspec-hardening-parser-schedtab.md(pfs-session-2026-06-22-matspec-hardening-parser-schedtab) - 2026-06-22 — worklog 미연결 묶음 추정현장 자동연결(서버측 wlSimScore 포팅·POST /api/worklog/auto-link·🔗버튼·보수적 게이트[점수≥80·유일·커버리지≥0.5]·운영 8묶음 32항목 연결·롤백로그·코디 직접·운영배포 c054dd3) →
projects/pfs/session-2026-06-22-worklog-autolink.md(pfs-session-2026-06-22-worklog-autolink) - 2026-06-22 — 견적 추가건 '출력 포함' 토글 DB 영속(적대검토: 토글이 State만 바꿔 미저장→엑셀 항상 기본 포함. PUT /api/estimate/
/include-print 신설+토글 즉시호출·롤백. 테스트 풀E2E[엑셀시트 토글반영]·UI 200·운영 검증 PASS·운영배포 7a28611) → projects/pfs/session-2026-06-22-estimate-include-print-toggle.md(pfs-session-2026-06-22-estimate-include-print-toggle) - 2026-06-22 — worklog 2차: 맥락파악 매핑(서브에이전트 4분할·항목맥락[연락처·발췌]+현장후보 shortlist→업체·지역·active 판단)+진행중/대기중 현장 우선(auto-link 동점 active 해소)·26묶음 49항목 연결(154→128)·운영배포 31781ae →
projects/pfs/session-2026-06-22-worklog-context-mapping.md(pfs-session-2026-06-22-worklog-context-mapping) - 2026-06-24 — orderpaper '자재관리' 첫 탭 신설(발주서 정리와 같은 DB값 순수 테이블·삼중정렬[자재분류/입고일↓/발주서↑]·블록토글·최근1개월/검색3개월·날짜 RFC1123 파서교정) + 재고량 RDS 영속(stock 컬럼·PATCH /api/orderpaper/
/stock·실 HTTP e2e PASS·코디 직접·테스트배포, 운영 미배포) → projects/pfs/session-2026-06-24-orderpaper-material-mgmt-tab.md(pfs-session-2026-06-24-orderpaper-material-mgmt-tab) - 2026-06-24 — orderpaper 자재관리탭 마감 3건 + 운영배포(가로폭 풀폭 확장[op-mm-active로 .op-wrap 1180px 해제]·비고 시작기호 ● 삭제·블록모드 자재토글 활성[rows() 필터 블록무관 S.mat 적용]; 운영 첫 배포라 운영 DB stock 선행 ALTER 후 deploy-live f8c1905·운영 Playwright PASS) →
projects/pfs/session-2026-06-24-orderpaper-material-mgmt-finalize.md(pfs-session-2026-06-24-orderpaper-material-mgmt-finalize) - 2026-06-24 — orderpaper 재고관리 엑셀→운영 재고량 시드 + 동기화 신규항목 발주량 복사(엑셀 RawData '남은수량'을 현장+자재코드+발주량 맥락매핑[코드폴백·최근주문건]으로 운영 187행 기입·미매칭0·신규생성없음; sync/upload INSERT에 stock=qty·재동기화 보존[로컬 사이드카라 웹배포 불필요]; 운영 Playwright+테스트 합성행 PASS·master dede794) →
projects/pfs/session-2026-06-24-orderpaper-stock-seed-and-sync.md(pfs-session-2026-06-24-orderpaper-stock-seed-and-sync) - 2026-06-25 — 도어발주서 추가건5 견적 등록(포인 20p→부모711 추가5=견적720·10줄·유상만·GROUP1줄/부품접음·'전시부스 가림판' 숫자접두없는 독립행 수동포함) + 견적 수량/단가 버그 루트픽스(메인행 수량 항상 편집가능·단가수정 시 .qty-cell 부재로 수량 1 덮어쓰던 버그 가드·금액=단가×수량; master bbe3cbb→deploy-live b6d1ee8 운영배포·테스트 Playwright PASS) →
projects/pfs/session-2026-06-25-estimate-add5-and-qty-price-bugfix.md(pfs-session-2026-06-25-estimate-add5-and-qty-price-bugfix) - 2026-06-25 — field/worklog 전체펼침/접기 토글 + 기본 2개월 기간제한(HAVING MAX(work_date))·인라인 전체검색(work_name/excerpt/note/site_name 4컬럼 LIKE)·기간 직접설정(최대1년 클램프 프론트+서버); 미연결(field_no NULL)도 기본/검색 포함 확인(운영 실측 146중123·70중60); master f5c9aa2→deploy-live 1c11aaf 운영배포·API E2E PASS →
projects/pfs/session-2026-06-25-worklog-fold-period-search.md(pfs-session-2026-06-25-worklog-fold-period-search) - 2026-06-26 — 업체 휴가일정 사이드메뉴(menu_catalog company_vacation·display_order900·ensure_vacation_menu 멱등시드)+신규 페이지 /vacation(3컬럼 인라인테이블·업체 company 드롭다운·날짜 input type=date·빈행추가/자동저장/삭제); 신규 모듈 api/pfs/vacation·테이블 company_vacation(nullable·ensure_table 멱등); 버그2(빈행 502 NOT NULL→nullable, 날짜 %Y-%m-%d 리터럴→param없는 쿼리 % 단일); master 5f12f82/e309117/3eb2c60→deploy-live 8bb1f56 운영배포·테스트+운영 curl E2E PASS →
projects/pfs/session-2026-06-26-vacation-menu-page.md(pfs-session-2026-06-26-vacation-menu-page) - 2026-07-07 — orderpaper 자재관리 탭 기능4(행삭제=숨김·품명/규격 편집·발주량 숫자+단위컬럼·15TT→15T·히스토리 아이콘 이동) + orderpaper_no 재번호(1..1500, 백업+offset 2패스, 동기화 ON DUPLICATE AUTO_INCREMENT 낭비 근본수정) + 성능 3연타 근본해결(대형테이블: ①삭제 시 전체 innerHTML 재빌드 제거 ②폼요소 2241개 지연렌더 ③table-layout auto→fixed; 운영 사용자크롬 실측으로 원인확정) → 운영배포(75b8ff0→93dc5f5, 승인 8건) →
projects/pfs/session-2026-07-07-orderpaper-mm-features-renumber-perf.md(pfs-session-2026-07-07-orderpaper-mm-features-renumber-perf) - 2026-07-10 — 업체 휴가일정 우측 2주 타임라인(vacation.html 단일 파일·백엔드 변경0·VAC_ROWS 재사용); flex 2단(좌 표/우 타임라인, 둘 다 축소 허용)·CSS grid 14칸+absolute 막대·월요일 정렬 창·주말/오늘 하이라이트·이전주/오늘/다음주 이동·창 걸침 cut-l/cut-r; 정렬=start↑→end↑→업체명 가나다순(빠른 휴가 우선·같은 기간 자동 인접); 검증=노드 하니스 11항목+로컬 스텁 렌더 육안+SSM 마커/HEAD/200; master ce29eb0·f8de989→deploy-live 9c1efc9·1abdadd 운영배포(⚠uwsgi 재시작 누락 재발→SSM restart) →
projects/pfs/session-2026-07-10-vacation-timeline.md(pfs-session-2026-07-10-vacation-timeline) - 2026-07-20 — 발주서 자재관리 품명칸에 규격이 뜨던 버그 운영수정(근본=orderpaper.item_name_user에 규격조각 저장돼 COALESCE로 원본 품명 덮음·코드버그 아닌 레거시데이터, 운영 RDS 1543/1544/1545 item_name_user=NULL·안전가드검증; 328/329 동일증상 미처리 대기) + handoff 완료이력 59항목 archive 이관(118KB→25KB) →
projects/pfs/session-2026-07-20-orderpaper-itemname-fix-and-handoff-cleanup.md(pfs-session-2026-07-20-orderpaper-itemname-fix-and-handoff-cleanup) - 2026-07-23 — 월마감 기능 신규(/estimate/monthly-close: 월×거래처 마감표 편집·견적 자동수집·검증 배지(가족합)·제출용 엑셀, 넥서스만 시공비 별도 construction_yn) + patch41 테이블 2종·메뉴46 + 26년 1~7월 마감 15건 테스트 시딩(72행 중 70행 견적 연결·백필 70건·기존 3건 업데이트)·엑셀 1원 단위 일치 검증; master dae788e→34ab1c3(5커밋), 운영배포 대기 →
projects/pfs/session-2026-07-23-monthly-close.md(pfs-session-2026-07-23-monthly-close) - 2026-07-23 — 자재관리 탭에서 안 보이던 보드 3건 원인규명·운영복원(용두동 KAEX7-SR=수동삭제 4행 remove_yn 복원 / 의정부 7201-SKE·MND40ED=원본 엑셀 오엠씨 탭 날짜 미기입→2026-01-02 기본값→3개월 창 밖으로 숨음); all-items에 regist_date 추가 + passBase 예외(등록일 대비 120일 이상 과거=오기입, 260행→39행으로 한정); master d35976f→31e2278, deploy-live cherry-pick 34cfbbf→28a1f50 운영배포·테스트/운영 all-items E2E PASS; 같은 증상 10블록/7현장 확인 →
projects/pfs/session-2026-07-23-orderpaper-mm-hidden-boards.md(pfs-session-2026-07-23-orderpaper-mm-hidden-boards) - 2026-07-27 — 테스트↔운영 미반영 커밋 산출(원시 89건 → patch-id
--cherry-pick필터 22건 → 실제 코드차이 20건, 운영이 merge 아닌 cherry-pick 이력이라 해시 전부 다름) + C·D·E만 선별 운영배포(merge 불가 → 파일단위git checkout origin/master -- <files>포워드 반영, 위험 낮은 순 E→C→D 3커밋·push 1회):6fe4e38(ssm_run aws 복구+택배 마이그 스크립트)7b916e8(품명0 제외·복사본 노이즈·stock 숫자부)8ca0389(자재관리 헤더 가운데정렬, css v20260715d); 검증=자체 14케이스 PASS + SSM 실측(운영 HEAD 일치·uwsgi active·/login 200·css 서빙); 남은 미반영=A 화물앱 3건·B 월마감 5건(patch41 선행); devplanpfs.html신설(미반영 커밋 관리표·체크리스트·지시문 복사, E2E PASS) →projects/pfs/session-2026-07-27-selective-deploy-cde.md(pfs-session-2026-07-27-selective-deploy-cde) - 2026-07-27 — field/worklog 노출기간 2주 제한 운영배포(페페: 페이지 로드 버벅임 → 최근 2주만·나머지 숨김·일자필터로 과거 2주창 별도조회·검색도 창 안): 노출창 단일출처
worklog_service.worklog_window()(미지정=오늘-13~상한없음 / 지정=그날+14일 배타 / 1년 하한 클램프), 기간게이트 HAVING MAX(work_date)→WHERE 창으로 교체(HAVING은 집계 후라 카드 건수에 창 밖 과거가 섞여 "2주만 표시" 불성립), 같은 창을 items·status-bulk·owners에도 적용해 카드건수=펼친목록=일괄변경범위 일치, 검색은 전체기간 폐지; ⚠함정=work_date에 미래 '예정' 항목 10건(전부 진행중/대기) 존재 → 기본창 상한 두면 예정작업 증발, 상한은 사용자가 과거날짜 지정 시만; master ed2ea6a→deploy-live 750fdad(worklog 5파일 포워드, A·B 미반영 유지); 검증=자체 7항목 PASS + 운영 실측 묶음 702→252(64%↓)·항목 1674→565·최신작업 07-29(예정 유지) →projects/pfs/session-2026-07-27-worklog-2week-window.md(pfs-session-2026-07-27-worklog-2week-window) - 2026-07-28 — 생산 메모(/field/list 모달) 기존/신규 2창 → 단일 입력창 통합 운영배포(페페 QA 리포트 1건): textarea 2개(readonly current + new) → 1개 field-memo-content, 모달 열면 저장본 그대로 주입·편집·저장, 라벨=메모 내용+(최종 저장 일시); 빈값은 차단 대신 confirm(통합창에선 비우고 저장=삭제 의도); 서버 API/DAO 무변경(previous 밀어내기 유지); ⚠지시문 "자동저장"은 기존 저장동작 유지로 해석(pfs는 견적 autosave를 Patch #21로 전면폐지·재도입=위험작업); 부작용=저장 안 하고 닫으면 편집분 소실(경고 미구현); 2차 지시(같은 날)=저장 안내 alert 폐기+저장 성공 시 modal(hide) 자동 닫힘(실패 시엔 모달 유지, 빈값 confirm은 삭제가드라 존치); master 6e647fe→deploy-live 7c76774 / master 70475a0→deploy-live 8bb6fd9(둘 다 파일 1개 포워드 반영, 사전 diff가 해당 커밋 변경분과 일치하는지로 A·B 미포함 확인); 검증=테스트 13항목 PASS(라운드트립·previous 보존·모달 닫힘·alert 없음·재오픈 저장본·원복)+운영 읽기 9항목 PASS →
projects/pfs/session-2026-07-28-field-memo-modal-merge.md(pfs-session-2026-07-28-field-memo-modal-merge) - 2026-07-28 — 현장 내용 = 카톡관리(1탭) + 통화관리(2탭) 분리 운영배포(페페: "카톡관리를 field/worklog 메인페이지로, 기존 페이지를 탭으로 나눠 첫번째 탭 / worklog는 통화관리 탭 2번째·통화 수집분만 / 이번주 월요일부터 기록만 현장별 그룹화·월요일 이전은 숨김이력 / 야간에 서브에이전트로 현장매핑 반복"): 1탭=신규
api/pfs/kakao_board(미러kakao_board+ 웹 편집 명령 큐kakao_board_op) — 원본 board.md는 사무실 PC에 있고 EC2가 거기로 못 들어가므로 방향을 뒤집어 데몬이 push·pull·적용·ack(폰 조작 주체는 여전히 데몬 하나, 웹은 「의도」만 넘긴다), 화면에 반영 대기 n건·실패 사유 노출; 2탭=_source_clause()(source='call')를 조회·집계·묶음변경 전 경로에 적용해 카드건수=목록=일괄변경 범위 일치; 노출창 최근2주→이번주 월요일부터(week_start())+scope=hidden(월요일 이전 1년, 배타상한이 기본창 시작과 맞물려 경계 누락·중복 없음); 야간 02:00talklog/server/night_worklog.py=전사·분류·적재→규칙 auto-link→남은 미연결만 claude 서브에이전트가 pfs 현장과 매칭(conf≥0.8·입력에 없는 현장명/번호 폐기)→가구KBpractice/ops_*_calls.md적립; ⚠api/config.py는 브랜치 간 통째 포워드 금지(미배포 monthly_close가 딸려와 운영 임포트 사망 — 이 파일만 2블록 직접 추가) ⚠숨김이력 682장에서 전체펼침 XHR 폭주 502→loadItems큐(동시 6) ⚠감시 데몬은 상승권한이라 코디 재시작 불가 → 1분 예약작업PFS-KakaoBoard-Sync를 예비 경로로(싱글턴 락 47312); master 028fd6a→deploy-live 9e3a049, 502수정 master dd76774→deploy-live a9036c3, poin-agent 39726f9, talklog 1440777; 검증=자체18+로컬7+pfs-test E2E 8+운영 Playwright(카톡 4방 85항목·이번주 2026-07-27~·숨김이력 682현장·카톡배지 0/통화배지 1211·콘솔오류 0)+운영 무해 왕복 1건(같은 본문 되쓰기→40초 내 완료, board.md 해시 불변) →projects/pfs/session-2026-07-28-worklog-tabs-kakao-board.md(pfs-session-2026-07-28-worklog-tabs-kakao-board) - 2026-07-29 — AL설정(원부자재발주서.xlsx 「설정」 탭) 관리 페이지 CRUD + 발주서 헤더 컴팩트화 운영배포(페페: 설정탭을 관리페이지로 CRUD / AL발주서에 접속버튼 / 새 발주서 작업 중에도 추가·수정 / 운영배포 + 추가지시 업체정보 란 컴팩트화): 지시문 첫 경로
부자재 발주서 일지.xlsm은 시트가 주문조회·RawData뿐이라 페페가원부자재발주서.xlsx로 정정; 저장소를 정적 JSON 자산 → RDSal_profile(patch43)로 이전하고 JSON은 초기 시딩·「엑셀 원본 복구」 기준값으로만 존치(DAO ensure_tables가 비었을 때 1회 시딩 → 마이그 수동실행 불필요); 행 순서 sort_no = 엑셀 VLOOKUP 첫매치 순서라 중복 품명 2건은 위 행이 이기고 아래는 死행(NO칸 노랑 표시); 신규/field/al-profile(사이드바 미등록, 접근은 AL발주서 버튼 2곳), 저장은 화면 전체 1콜POST /api/al-orderpaper/profiles(서버가 soft delete→upsert); 작업 중 수정은 새 창 +window focus시 설정 재조회·전 행 재계산(모듈 전역 캐시는 uwsgi 워커별로 갈라져 폐지, 요청당 1회 profile_map 조회로 교체); 헤더는 업체 1곳당 1줄 placeholder + 접기 토글(폼 106px, 그리드 시작 262→195px); 🔴버그=save_bulk가 INSERT 뒤 soft delete를 돌려 신규행이 같은 트랜잭션에서 즉시 삭제(응답 saved:50인데 조회 49 = 조용한 실패) → 삭제를 INSERT보다 먼저 + UPDATE에 remove_yn='0'; master f99e739→d38661e→6f228b9, deploy-live a0faf03; 검증=엑셀↔시딩 실제불일치 0(공란 50칸 0 정규화뿐)+테스트 CRUD E2E 16항목+UI Playwright 테스트18/운영18(콘솔오류 0)+운영 SSM 실측(al_profile 49행 시딩) →projects/pfs/session-2026-07-29-al-profile-crud.md(pfs-session-2026-07-29-al-profile-crud) - 2026-07-29 — AL발주서 QA 8건(페페 QA 리포트,
/field/al-orderpaper): #1 인쇄가 「AL업체 제목 아래 프레임 굵은 선만」 찍히던 것 =@media print의body *{visibility:hidden}토글이 모달의transform+max-height:92vh+overflow:auto에 걸려 인쇄 레이아웃이 잘린 것 → 인쇄 대상만 담은 iframe 문서로 분리(printSheets()), 부수로 양식 헤더 colspan 합이 본문보다 1 커서 우측에 빈 컬럼이 남던 것도 정정(n-3→n-4); #2 업체 다중등록(그릴링 1문항 → 페페 선택 = 헤더에 여러 줄 + 그리드 컬럼에서 선택) — 헤더+AL업체/+유리업체행 추가, 그리드에AL업체·유리업체select(빈칸=첫 업체로 일괄), 미리보기·엑셀은 업체마다 발주서 1장(블록 통째 배정, 한 블록에 두 업체 혼재 금지), 저장=al_orderpaper.vendorsJSON +al_orderpaper_item.al_vendor/glass_vendor(patch44, DAO ensure_tables가 멱등 ALTER), 첫 업체는 기존 단일컬럼에 유지해 목록·검색·구 페이로드 무손상; #3 계산 브레이크다운#94a3b8→#333(블랙 80%) + 폰트 블랙 70%+ 를 pfs 기본 지침으로projects/pfs/rules.md신설·기록; #4 계산셀font-weight:700→400(색상 유지); #5 엑셀 빈블록을 print_area 밖으로 미루지 않고 행 삭제(_trim_blocks, AL 180→20행), 부수로_fill_label_row_addr조기 return 탓에 입고처가 첫 블록에만 채워지던 것(2장부터 공란) 수정; #6<datalist>→ 자체 인라인 드롭리스트(attachCombo, 부분일치 + Enter=강조행 확정); #7 업체행 CSS grid(display:contents)로 5컬럼 왼쪽 라인 정렬 + 담당자·전화·팩스 폭 오토(031-355-9705(내선206)잘림 발견해 확대 적용); #8 그리드width:max-content; min-width:100%(지정폭=하한 → 눌려서 잘리던 컬럼이 늘어남), 품명 150→175px·목대/유리 100→124px; ⚠운영 미배포 — 지시문에 「운영 배포」 문구 없음(deploy-live 절대 규칙); masterb69d325→f6bcfb2→6f9732c(테스트 8001 자동배포); 검증=엑셀 생성기 자체검사 + 테스트 E2E 18항목 + UI Playwright 27항목(콘솔오류 0) →projects/pfs/session-2026-07-29-al-orderpaper-qa8.md(pfs-session-2026-07-29-al-orderpaper-qa8) - 2026-07-29 — 미반영 A·B 그룹 운영배포(화물앱 배차 3건 · 월마감 5건)(페페: "미배포건이 있다. A,B 그룹 먼저 운영배포한다"): 배포 경계는 커밋 수가 아니라 파일 diff 37개로 판정(07-27 파일단위 포워드 탓에 patch-id 비교는 이미 반영된 것도 28건으로 잡힘) → A 8파일·B 14파일·AL 15파일(범위 밖)로 분리; 공유 파일 2개 사전확인이 핵심 = api/config.py 미반영 diff는 월마감 2줄뿐(AL은 이미 반영), common/database/mysql_util.py는 A의 execute_id뿐 → 통째 포워드해도 AL 미유입(시드의 "config.py 통째 포워드 금지" 경고는 monthly_close가 미배포이던 시절 조건이라 이번엔 반대로 뒤집힘 — 경고를 기계 적용 말고 매번 diff 확인); DB 선행 = monthly_close_seed.py의 ENV_PATH만 pfs-live.env로 SSM 실행(BEFORE 스냅샷 tables:[] / menu:None 확인 후) → monthly_close·monthly_close_item 생성 + menu_catalog menu_no=46; 권한은 has_menu_permission이 자사에 명시 row 없으면 기본 허용이라 추가작업 불요(user_permission 83행 중 월마감 0행); 배포 = deploy-live 83540c8(A) + 70ba185(B) 2커밋·push 1회, 그룹마다 git diff --cached --stat origin/master가 비는지 확인 후 커밋 + py_compile 10파일; ⚠git reset --hard가 위험작업 훅에 걸렸으나(RISK-20260729-YJHQ) 로컬 deploy-live가 origin과 0/0이라 애초에 불필요했다(막히면 쪼개기 전에 필요성부터 판단); 검증=운영 HEAD 70ba185·서비스 active·/login 200·/estimate/monthly-close 200·/api/monthly-close 200·/api/dispatch 405(GET 미지원=등록됨)·execute_id 반영·잔여 diff는 AL 15파일뿐; 로그의 Table already exists(1050)는 ensure_tables 매회 실행 설계 탓 무해, 함께 찍히는 pymysql "Already closed"(del)는 기존 구조 이슈로 code-qa platform-core 소관; 안 한 것 = 마감 데이터 시딩(운영 견적 기준 재판단 필요·별건)·D005 배차사진 경로 버그(페페 "배포만, 버그는 P0에서") →
projects/pfs/session-2026-07-29-deploy-ab-freight-monthlyclose.md(pfs-session-2026-07-29-deploy-ab-freight-monthlyclose) - 2026-07-30 — 신영 광주 챔피언스시티 MH 견적서 운영등록(본건 740 · 추가1 741)(페페: NAS 견적서 xlsx를 운영서버 견적서 등록 / 본건 견적 생성 후에 추가건:추가1 항목으로 / 현장은 id 1973 / 운영배포 승인): 입력이 도어발주서 xlsm이 아니라 견적서 xlsx(단가=고객 확정가)라 기존 스킬 경로가 안 맞아 시트부터 재판독 — 단일 시트
추가1= 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행 주기·본문 base+17부터 20행)하고 매핑을 추측하지 않고 렌더러 셀 주소에서 역산 — 요약행은A=현장명(site) C=항목명(=type_name), 상세행은A=품명 C=규격 I=단가로 컬럼이 다르다(초안이 A열에서 항목명을 읽어 '운임'이 '신영 광주 챔피언스시티 MH'로 잡혔다 → 수정); 등록 = 본건 740신영 광주 챔피언스시티 MH 견적서(빈 컨테이너 0원 — 이 파일에 본건 내용이 없고 NAS 견적 폴더 전량 검색에도 신영 광주 본건 견적서 파일이 이 1건뿐) → 추가건 741추가1(13줄, parent 740) →extra/bulk-save기타부가비운임 150,000 (신규자재 운임); 결정 3건 =type_name은 스킬 관례추가N-1대신 엑셀 p1 요약행 이름추가1(최근 선례 738도추가1단일 타입) · 운임은master.transportation_cost아닌estimate_extra_cost(transportation_cost는 출력 라벨이 '물류비' 고정이고 비고를 못 담아 원본 재현 불가, 월마감은 total_amount를 보므로 금액 영향 0) · 마진은 mastermargin_percent=0(수동 0%)+detailNULL(자동→마스터 추종) — master를 None(자동)으로 두면 재로드 시 넥서스 15.5%가 얹혀 견적가가 부풀려진다(도어발주서 스킬의 'master도 None' 규칙은 price=0 미정 등록 전용); 미수집 = 섹션헤더 2행(128타입 50-010 몸통재·84D타입 HS2661 몸통재) — PFS detail에 대응 필드가 없고 타입으로 쪼개면 p1 요약이 1→2줄로 바뀌어 이미 발송된 문서와 달라진다 /A74:B76병합(놀테 자재누락분 1품명 3규격)은 3줄 전개 + 품명 앵커 상속; NAS는 한글 공유명이라pfs\orderpaper-sync\_mount_nas.py(win32wnet) 경유·로컬 사본data_only=True; 검증 4단 ALL PASS = ①빌드 금액 3중 교차(품목합==p2 공급가액==p1 타입행 / +운임==p1 합계) + 행별 단가×수량 assert ②VERIFY=1사전조회(로그인 200·현장 1973=신영 광주/넥서스/MH·기존 본건 0건) ③등록 왕복GET /api/estimate/74113줄 전 항목 대조 불일치 0 +extra/list확인 ④GET /api/estimate/print/excel/740실제 다운로드(353,851B, 시트 종합/본건/추가1) → NAS 원본추가1시트와 셀 단위 대조 불일치 0; 기존 동작(내 등록 탓 아님, 선례 738 실측 동일) = 추가건 시트 요약행 A열 현장명 공백(select_sub_estimates가 field_name 미반환)·담당자는 업체 refer_man(고재형 이사) 표기; pfs 리포 코드 변경 0(데이터 등록만) → 커밋·배포 없음, 스크립트 =order-automation\build_and_register_shinyoung_add1.py(DRY/VERIFY/REGISTER 3모드) →projects/pfs/session-2026-07-30-shinyoung-add1-estimate.md(pfs-session-2026-07-30-shinyoung-add1-estimate) - 2026-08-04 — 카톡관리 저장 버튼 일괄 반영 + 게시글 호칭 규칙(신동승 차장: "항목 한개 한개 체크할때마다 바로 반영으로 넘어가서 딜레이로 인한 내용 누락 문제가 있다 / 행별 임시 하이라이트 + 저장 버튼으로 여러 행 한번에 / 운영배포", 작업 중 추가 = "카톡 게시글에서 나의 지칭을 절대 페페라고 하지마라, '신동승 차장'이라고 해라, 현재 게시된 글도 전량 수정"): 원인은 체크 한 건마다
/op등록 후kbLoad()로 목록 전체를 재렌더하던 것 — 그 왕복 사이 클릭이 사라진 DOM을 향해 조용히 날아갔다; 클릭을 전송이 아니라 표시로 바꿔KB_PEND{행키→명령}단일 출처에 담고 그 행만 다시 칠한다(재렌더 없음 = 유실 구간 자체 소멸), 같은 버튼 재클릭=해제, 「저장」이 신설POST /api/kakao-board/op/bulk로 전 행 일괄 전송, 저장 대기 중엔 30초 자동 새로고침 정지(작성 중 수정문이 쓸려나가면 같은 사고 재발), 저장 후 실패한 행만 표시로 남김; 서버는 단건add_op를 그대로 반복 호출해 검증·세션·읽기전용 게이트가 단건과 동일(새 신뢰경계 0)하고 실패분은{room_name,id,action,err}로 회신 — 🔑복원i=0함정: 식별자를id or i로 고르면 숨김이력 첫 줄(0)이 falsy라 빈 값이 되어 화면이 그 행을 못 잡는다 → None 판정 분리; 배포 중 회귀 1건 = 완료·취소 표시가 걸린 행에서 ✎ 편집기 취소 시kbPaint가 edit 분기가 아니라 본문 복원을 건너뛰어 textarea HTML이 남던 것(수정 표시가 아닌 모든 경우 원문 복귀로 교정, 실브라우저가 잡음); 게시글 호칭 = 원문 전수 grep 결과 실사용 1건(ivision/board.md이력[페페 지시]) →[신동승 차장 지시]로 고쳐 감시 데몬이 v16으로 카톡 실반영(19:27:05), 재발 차단은 모델이 화자를 그대로 받아쓰는 자리를 고쳐[운영자 지시 — devplan 댓글]→[신동승 차장 지시 — …]+ PROMPT 4-3/REBUILD_PROMPT 7에 "페페 금지" 명시(poin-agentc41e6fd), 화면 별칭kakao-rules.json페페 (1:1)→신동승 차장 (1:1)(gitignore 대상=로컬); ⚠감시 데몬은 상승권한이라 코디가 재시작 못 해 프롬프트 수정분은 다음 재시작부터 적용(그 전엔 새 이력에 재발 가능); 함정 3 = Edit 도구가 LF 템플릿을 CRLF로 바꿔 git diff가 1,527행 전체 리라이트로 부풀어 배포 경계 판정이 무의미해진다(커밋 전--ignore-all-space대조 후 LF 정규화) · push 직후 검증은 배포보다 빨라 옛 템플릿으로 돌아 FAIL 1건 오진 직전(검증 전 서빙 HTML에 새 문자열 확인) · 배포 경계는git diff --stat origin/deploy-live <작업직전커밋> -- <대상파일>이 비어야 내 변경분뿐(AL 15파일 유입 방지); 커밋 master9f9c7f3+9de058c→ deploy-liveabc5208(파일단위 포워드 4파일); 검증 = 자체검사 13항목 PASS(일괄·부분실패·복원 i=0·과다·게이트) + 실브라우저 23항목 ALL PASS × 테스트·운영 양쪽(체크 시 POST 0건·연속 클릭 3회 전부 반영·목록 미재렌더·콘솔 0), 고객 게시글 무접촉(저장은 없는 방으로만 호출), 검증 스크립트scripts/_kb_save_ui_check.py는.gitignore scripts/_*대상이라 로컬 보관 →projects/pfs/session-2026-08-04-kakao-board-batch-save.md(pfs-session-2026-08-04-kakao-board-batch-save)