인계 — pfs 네스팅 QA (2026-09-14) · 기록: [코디]
앞 세션이 컨텍스트 51% 로 끊겼다. 오늘 네스팅 화면을 3차까지 고쳐 전부 운영배포 완료했다. 새 방은 이 파일 +
projects/pfs/handoff.md맨 위 세 절만 읽으면 그대로 이어진다.
확정 규약 (오늘 세운 것 — 어기면 같은 사고가 난다)
- ⛔크롬 목록·자동완성 금지 = 전역 규칙.
<datalist>·네이티브<select>OS 팝업·브라우저 자동완성을 쓰지 않는다. 자체 드롭리스트 한 벌(/production/pncad/droplist.js)만 쓴다. 정본 =C:\dev\CLAUDE.md§3 +projects/web-designer/kb/08-forms-inputs.md§1-0. ruleguardchrome-native-dropdown이 차단한다(탐지기 13/13, 종결됨). ⚠탐지기가 막는 건 datalist 뿐 — select 팝업·autocomplete 는 사람이 본다. - PFS 화면을 만지면
web-designer상담이 착수 전 필수(예외 없음). 폰트 하한 13px. - 부재 그리드에 컬럼을 추가하면 「맨 끝 +
newCol:1」 둘 다 — 안 지키면setupPaste의 옛 9열 판정이 틀어져 기존 엑셀·tread 붙여넣기가 에러 없이 한 칸씩 어긋난다. - 운영배포 = worktree
C:\dev\pfs_deploy_wt에서 체리픽 + push. 순서 = ①경계 확인 (git diff --stat origin/deploy-live <작업직전커밋> -- <파일>이 비어야 내 변경분뿐) ②체리픽 ③blob 해시 대조 (git rev-parse <deploy커밋>:<파일>vs<master커밋>:<파일>) ④push. working-tree md5 는 CRLF 때문에 다르게 나온다. ⚠다른 세션이 같은 리포에 커밋을 넣는다(오늘 요율감시 3건). 체리픽은 내 커밋 1개만. - 배포 완료 판정은
/api/health의rev로 못 한다(테스트·운영 둘 다 비어 있다) → 서빙 HTML 의 마커 문자열로 잰다.
끝난 것 (전부 운영 반영 완료)
| 차수 | 내용 | master → 운영 |
|---|---|---|
| 1차 | 버튼줄 표 위 · h3 상세설명 삭제 · 컬러칸 칼라DB(poin_colors) 연동 + 저장 시 신규등록 · 수량 Enter→다음 행 가로 · 간단 계산기 |
462a50d → de24c6f |
| 2차 | 제목~버튼줄 상단 고정(2단 sticky) · 컬러 값별 파스텔 8색 구분색 · 크롬 datalist 폐기 → 자체 드롭리스트 | ab664ae → 60b1eb4 |
| 3차 | 드롭 재클릭 토글 · 행 순서 드래그 이동(손잡이=순번칸) · 컬럼폭 절약 + 비고칸 · 행별 [+] 버튼 |
2449737 → 975ccad |
- 검사기 =
C:\dev\pfs\scripts\_nesting_qa5_check.py— 인자 없음=로컬 목킹 /--test/--prod(읽기전용) /--test --newcolor(칼라 등록 1건 씀). 최종 = 로컬 98/98 · 테스트 114/114 · 운영 115/115(미해결 0). - 기록 = devplan
C:\dev\devplan\pfs-nesting-qa5.html+ 허브 카드pfs-nesting-qa5· 세션문서projects/pfs/session-2026-09-14-nesting-qa5.md.
✅ 종결된 것 — --prod ⑦ 「네이티브 select 자체 팝업」
검사기 오탐이었다. [페페] 육안으로 운영에서 자재표 「세로규격」 클릭 → 2440/2700/3000 정상 표시 확인.
🔴원인 = 운영에선 팝업이 열린 직후 다른 비동기 렌더가 droplist 의 scroll/focus 리스너를 건드려 곧바로 닫는다
→ 200~300ms 뒤 「지금 보이나」로 재면 이미 display:none. ⛒열린 순간을 MutationObserver 로 잡도록 고쳤다.
운영 115/115 PASS · 쓰기 0건으로 종결.
⚠교훈 = 운영 파일이 테스트와 바이트까지 같은데 테스트만 통과하면 코드가 아니라 검사 타이밍을 의심해라.
⚠육안을 부탁할 땐 표 이름부터 말해라 — 「세로규격」(자재 표·선택칸) vs 「세로」(부재 표·입력칸)를 한 번 헛짚었다.
🔴 남은 것
1. 페페 판단 대기
- 컬러칸 100px 로도 최장값(
005C SHS1502 무광, 필요폭 ≈125px)은 잘린다 — 더 키울지. - 행 드래그는 터치 미지원(raw mouse). 안드로이드 필요하면 별건.
- 삭제한 설명 5문단을
<details>접이식으로 되살릴지(1차 때 「모두 삭제」 지시라 그냥 지웠다). - 컬러칸 재클릭 닫힘이 실사용 감각에 맞나.
2. 미조치 (지시 범위 밖이라 안 건드렸다)
- ⚠그리드
input/select의 computed font 가 Arial 이다(body 는 Segoe UI/맑은고딕) — 라벨과 입력값 글꼴이 갈린다..grid-scroll input,select에font-family:inherit한 줄이면 된다. - ⚠
.muted가 12px(이 파일 수십 곳) = 13px 하한 위반. web-designer 미결 「13px 전면 정리」와 묶을 것. - ⚠
.tabbar가 390px 에서 가로 73px 넘친다(기존 버그).flex-wrap:wrap한 줄로 될 것으로 보이나 미확인. - ⚠
droplist.js를/static/js/로 승격(P2) — 지금은/production/pncad/를 빌려 쓴다. 소비자가 둘이 된 지금이 적기. 🔴그 파일의 공개 표면(providers·initDrops·dropOpen·dropClose·dropOpenFor)이 바뀌면 네스팅이 조용히 깨진다 — pncad 를sync_to_pfs.py로 동기화한 뒤엔_nesting_qa5_check.py --test를 한 번 돌린다. - 테스트 DB 에
_QA칼라_202609141행 잔재(등록 경로 실측). 운영은 깨끗.
손대면 안 되는 것
C:\dev\pfs\web\pncad\droplist.js— pncad 공용이다. 원천은C:\dev\pncad\droplist.js, 여기서 고치면 동기화에 덮인다.C:\dev\devplan\index.html—build_hub.py산출물.projects.json+project_state.py를 고치고 재빌드한다.BRIEF.*.md—build_brief.py가 재생성한다. 수동 편집 금지.- pfs 에
git add -A금지(미추적 임시파일 수백 개). 변경 파일만 명시.
시드 포인터
projects/pfs/handoff.md맨 위 세 절(3차·2차·1차) = 오늘 전부.projects/pfs/rules.md🆕 — 오늘 세운 함정 12건.projects/pfs/session-2026-09-14-nesting-qa5.md— 1·2·3차 통합 세션문서.- devplan
http://100.108.234.45:8799/pfs-nesting-qa5.html