2026-07-23 세션 — 자재관리 탭에서 안 보이던 보드 3건 원인규명·운영복원
논의·대안
페페 검증보고: pfs 자재관리(/field/orderpaper orderpaper 탭) 페이지에서 보드 3건이 안 보임 — 용두동 KAEX7-SR, 의정부 7201-SKE·MND40ED. 페페 가설=①삭제됐거나 ②0값 데이터가 나중에 바뀌었는데 반영 안 됨. 운영서버 작업·배포 승인.
진단(운영 RDS SSM 조회 + NAS 원본 엑셀 재파싱)에서 원인이 2개로 갈림:
- 용두동: orderpaper 1455~1458(오엠씨 원자재, 4.5T/9T/18T/18T)이 remove_yn='1' del_manual='1' = 화면에서 수동삭제된 상태. NAS 원본 넥서스 SGC 용두동 MH 원부자재발주서.xlsx 오엠씨 탭엔 4행 그대로 실재(NCAC1-SR 4행은 활성) → 삭제가 오조작.
- 의정부: 오엠씨 보드 5행(1647~1650·1658)은 DB에 멀쩡히 활성인데 화면에만 없음. 근본=원본 엑셀 오엠씨 탭 R2/R3 발주·입고 날짜 셀이 2026-01-02(날짜 미기입 → 템플릿 기본값). 자재관리 탭 passBase가 refMs(입고일‖발주일) < now-90일을 잘라내므로 통째로 사라짐. 파서 버그 아님(셀 원값 확인).
대안(의정부): (a) DB 날짜를 임의 보정 — 사실 조작이라 기각. (b) 원본 엑셀 수정 — 진짜 날짜를 아무도 모름. (c) 필터 예외 — 채택.
결정
- 용두동 4행 = 운영 RDS에서
remove_yn='0', del_manual='0'복원(가드=현장/업체/품명/remove_yn 일치 시만). 같은 블록의 미림 메모행 1461('KAEL7-SR 오표기 수정')은 보드 아님 → 삭제 유지. - 3개월 창 예외 규칙 = 날짜가 등록일보다 120일 이상 과거면 오기입으로 보고 통과. 처음엔 "등록일이 최근이면 통과"로 넣었다가 테스트에서 260행(6월 일괄동기화된 정상 과거건까지) 노출 → 실측 분포(오기입 gap 166일↑ / 정상 과거건 gap 81일↓)로 120일 컷 적용해 39행으로 한정.
- 이 증상은 의정부만이 아니라 10개 블록/7개 현장 공통(GS 오산·GS 인천 산곡6·용두동 씨엔글라스샵·신우APT·금강 부산 에코·한양 이천 대월 등, 전부 1/2·1/16 템플릿 기본값).
산출물·커밋
- 운영 RDS UPDATE: orderpaper 1455·1456·1457·1458
remove_yn=0, del_manual=0(before/after 출력 검증). 스크립트pfs/orderpaper-sync/_fix_restore_boards_prod.py(진단=_diag_missing_boards*.py·_diag_src_excel.py·_diag_omc_cells.py, 미추적 스크래치). - 코드:
orderpaper_dao.select_all_items()에o.regist_date추가 /orderpaper_material_mgmt.jsregistMs()·badDate()신설 +passBase3개월 창 예외 / 캐시버스터?v=20260723a. - 커밋: master
d35976f→31e2278(테스트), deploy-live cherry-pick34cfbbf→28a1f50(운영). ※master 전체 merge는 월마감(monthly_close) 미배포 기능이 딸려가서 회피 —api/config.py충돌로 즉시 감지, cherry-pick으로 전환. - 검증: 테스트(8001)·운영(8000)
/api/orderpaper/all-items실 HTTP —regist_date키 적재 확인, 새 필터 규칙 파이썬 재현으로 의정부 5행수정전=False → 수정후=True, 용두동 4행 복원 후 노출, 신규 노출 39행 전부 오기입 행임을 육안 확인(scripts/_verify_mm_regist.py).
후속 (같은 날) — 동기화 날짜 경고 리포트 적용·운영배포
페페 지시로 근본 예방책을 붙였다. 동기화할 때마다 발주서 엑셀의 날짜 문제를 리포트한다.
- orderpaper_parse.date_warnings() 신설 — 블록의 노출 기준일(입고일‖발주일, 자재관리 refMs와 동일)이
파일 월 1일보다 STALE_DAYS=120 이상 과거면 '숨김 유발'(심각), 날짜칸이 비기만 하면 '미기입'(참고).
입고일만 비면 발주일로 폴백돼 안 숨으므로 심각 아님 — 이 구분이 노이즈(42건→심각 20건)를 갈랐다.
- orderpaper_sync.py가 동기화 stdout 맨 끝에 리포트 출력 → 사이드카 /sync 페이지와
orderpaper_sync_request.result_text 양쪽에 자동으로 실린다(출력 tail 잘림에도 살아남게 마지막에 출력).
- field_orderpaper.html — '지금 동기화' 완료 시 result_text에서 심각 블록만 파싱해 노란 경고박스(#opDateWarn, 닫기 ×).
- 자체점검 orderpaper-sync/test_date_warnings.py 6케이스 PASS(정상/기본값/입고일만 미기입/발주일만 오기입/빈탭/5월파일).
- 실측: 숨김 유발 20블록 / 날짜 미기입 22블록. 실 동기화(test) 1회 돌려 출력 확인.
- 커밋 master bc9e2dc → deploy-live cherry-pick b40ddb6(운영). 운영·테스트 서버 템플릿에 opRenderDateWarn 반영 확인.
- ※ 파서·동기화는 사무실 로컬 PC 실행이라 서버 배포와 무관하게 즉시 적용됨(서버 반영분은 경고박스 UI).
다음
- 페페 육안 확인(Ctrl+Shift+R로
?v=20260723a). 정상 과거건이 새로 뜨면badDate120일 값만 조정. - 근본 예방은 발주서 엑셀 작성 시 발주/입고 날짜 기입 — 경고 리포트는 위 후속으로 적용 완료. 페페가 숨김 유발 20블록의 엑셀 날짜를 채우면 목록에서 사라진다(리포트가 0건이 될 때까지).
- 용두동 오엠씨 4행이 왜 수동삭제됐는지는 이력 추적 불가(modify_date를 동기화가 덮음). 재발 시 삭제 로그 컬럼 검토.
관계
- 주제 그룹: pfs-material
- 관련 문서: pfs-handoff, pfs-session-2026-07-07-orderpaper-mm-features-renumber-perf, pfs-session-2026-07-20-orderpaper-itemname-fix-and-handoff-cleanup