2026-08-29 세션 — 페페 실사용 피드백 5건 처리
handoff.md 에서 원문 그대로 이관한 조각(26.10.20 캡 20,000자 정리). 아래 「논의·대안」 = 원문 무변경.
논의·대안
26.8.29 — 페페 실사용 피드백 5건 처리(자동로그인·첫화면·픽 원인·현장선택 모달)
- 🔑「캐드 연동이 안 된다」의 정체 = 서버가 400 으로 거절 — 로그(
%LOCALAPPDATA%\MDCAD read_log.txt)에 그대로 있었다:PushPick EX: (400) {"message":"현장에 자재 사양이 없습니다 — pfs 자재탭에서 먼저 만들어야 합니다"}×8. 픽은 캐드에서 정상 발사됐다. 고른 현장에op_material_spec행이 없어push_pick이 문 앞에서 막은 것. ⚠팔레트는 그 사유를 유니코드 이스케이프 원문으로 찍고 있어 사람이 못 읽었다 →PoinDb.ServerMessage()로message만 뽑아 빨간 글씨로. - ✅자동로그인 — 사내에 이미 있었다.
login.html이param.keep_login = !!window.__PFS_PRINT_APP__를 보내고 서버가session.permanent(3650일, 크로뮴이 400일로 깎고 쓸 때마다 연장)를 준다 → MatWindow 가 그 플래그를 심는다. 부수효과 = 스티커 페이지가 같은 플래그로 인쇄를 앱에 위임한다 →print:메시지에 안내 회신을 달아 화면이 멈춘 것처럼 보이지 않게 했다. - ✅첫 화면 = 자재탭 — 그 페이지는 SPA 가 아니고 탭 전환이 전역
opMat.switchTab()이다. 100ms 폴링으로opMat+버튼이 뜨면 1회 호출. 이미 자재탭이면 안 건드린다(페이지 자체 복원restoreTab과 안 다투게). - ✅현장 선택 = 견적서 현장검색 모달 구조(페페 지시) — 팔레트 콤보 폐기 → 입력창 클릭 = 목록이 바로 펴진다.
컬럼 = 업체명·현장명·유형·상차일·사양유무. 타이핑 = 업체명·현장명 부분일치 필터, ↓/Enter/ESC.
서버 =
select_field_options확장(master78ded19→ 운영6e2a6ff, 사이트맵 미반영 0).op_material_spec은 EXISTS(LEFT JOIN 이면 목록이 중복된다). 🔑사양유무를 목록에 넣은 게 위 400 의 재발 방지다 — 사양 없는 현장은 회색 + 고르면 빨간 경고. - 🔴실측 함정 =
field.shipping_date는 DATE 가 아니라 문자열20260724로 온다 →DateTime.TryParse로는 안 읽힌다.TryParseExact("yyyyMMdd")먼저, 실패하면 일반 파싱. 표시는26.7.24(금). - 🔴옛 서버 대비 거짓말 방지 — 확장 컬럼이 없는 응답이면
Extended=false로 두고 사양칸을?로 둔다. 안 그러면 전 현장이 「사양 없음」으로 보인다(배포 전 상태에서 페페가 볼 뻔했다). - 검사 =
matwindow/test_inject.py2/2(가짜 PFS 페이지가__PFS_PRINT_APP__·switchTab호출을 서버로 되보고) ·test_matwindow.py6/6 ·matcollect/test_fields_columns.py3/3(테스트·운영 각각: 컬럼 7종·field_no 유일·중복 0). - 배포물 =
AcadTread.dll261662D3 4곳 일치 ·MatWindow.exe1381A0A0 · zip B93A3817(17항목). - 🔴도구 사고 — 코덱스 상의가 옛 답변을 새 답변인 척 두 번 돌려줬다(앱이 ChatGPT 모드였고, 제출 실패 시 마지막 답변을 반환하는 구조).
tools/gptapp/gptapp.py에 모드 가드 + 스테일 가드를 박았다. 상세 =rules/tooling.md맨 위.
결정
원문 안에 포함(이관 조각이라 별도 추가 없음).
산출물·커밋
원문 안에 포함.
다음
원문 안의 미결·후속 참조. 상태 = 종결.
관계
- 주제 그룹: acad-tread
- 관련 문서: acad-tread-handoff