code-qa — 완료 작업 아카이브 (archive)
루트
HANDOFF.mdNOW에서 cut 이관된 완료(✅) 항목의 원문 보관소. 현재 상태·진행은handoff.md.
26.8.2 루트 NOW 캡 정리로 이관 (원문 그대로)
- ✅2026-07-30 code-qa P0 잔여 5파트 전부 완료 + 운영배포(
deploy-live 6698a3c, 파일 단위 선별 포워드 28파일 — AL 미배포 커밋 미유입 확인). 파트별 = ①field-dispatchD005 배차사진 경로 ②platform-authD010 강등 세션 무효화·D012 레거시/api/user/*무권한(남의 비번을 그 사람 user_id 로 초기화 가능 = 총관리자 탈취 경로)·부수 D042/D043 ③estimate-satelliteD006 견적 위성 저장 트랜잭션화·D007 sub 유실 라우트 410 잠금·D044 410 이 실제로는 500 이던 것 ④templates-xss-cacheD035 DataTables 저장형 XSS를 중앙 1곳(datatable.js기본 렌더)에서 차단·D036/D046 캐시버스터 ⑤platform-coreD004 openpyxl 의존성(D003 커넥션 풀·D045 requirements 설치불가는 보류=페페 결정 대기). 검증 = 테스트 E2E 3종+UI 2종 → 운영 왕복·UI 회귀 ALL PASS. 리팩토링 = 5파트 전량 완료(platform-auth R002 / platform-core R005~R007 = SqlServer row→dict 추출·Log.warn 교체·죽은유틸 4개 경고주석 / 나머지 3파트는 근거 남기고 skipped, 리팩토링 커밋은 master 까지만 = 운영 미배포). 🔑배포는git worktree로(같은 리포에서 서브에이전트가 돌 때 브랜치 전환은 그 커밋을 deploy-live 로 흘린다). ⏳페페 = 운영 육안 + 보류 2건 결정. →projects/code-qa/handoff.md
26.8.4(화) HANDOFF NOW에서 이관 — 완료건
[코디] 🆕code-qa 26.7.29 신규 — 주기적 코드 품질 파이프라인(디버깅 에이전트 선행 → 리팩토링 에이전트 후행). 전역 에이전트 2개(~/.claude/agents/code-{debugger,refactorer}.md, claude-opus-5 / 노력도 디버깅 xhigh·리팩토링 high = 코디 추천) + 매뉴얼 3종(tools/code-qa/manual/{debug,refactor,pfs}.md — 앞 둘은 웹조사 기반 절차서, pfs.md는 반복이슈 20종) + 이력 CLI qa.py(JSON 직접편집 금지) + devplan code-qa.html(허브 등록). PFS 전수검사 8파트 병렬 완료(api 18.6k·자체JS 11.6k·템플릿 30.0k·공통 1.8k·스크립트 15.6k LOC) → 로드맵 27파트·발견 40건(H 15). 🔴구조적 갭 3건(3개 감사가 독립 확인) = ①api/pfs/* 전체 인증 게이트 없음(화면만 잠기고 API는 열림) ②secret_key 리포 커밋 → 세션 위조 ③RestResponse.fail()이 항상 200 = 전 도메인 "조용한 실패"의 근원. 실측 재현 = 예외 __str__ 비-str 반환으로 DB 에러 시 공통 에러응답 자체가 붕괴. 운영 오작동 확정 = 배차사진 업로드 경로가 pfs-test로 하드코딩(deploy-live도 동일 → 200인데 이미지 404). 데이터 소실 2경로(견적 위성 CRUD 비트랜잭션 delete+insert / 마감재 "불러오기"가 GET인데 하드delete+재삽입), update_common_code 파라미터 밀림으로 엉뚱한 행이 덮어써짐. 보안 = TEST RDS 평문 비번 git 추적 29곳 · 8791 무인증 상시 LISTENING · DataTables 미이스케이프 18파일(저장형 XSS) · 무솔트 SHA-256. 🆕26.7.29 P0 착수 전 재검수 완료(페페 지시) — 발견 7건 현행 master 실측 재현(감사 이후 신규 커밋 없음). 바꾼 것 3 = ①platform-core 분할 → fail() 항상 200 건을 신규 platform-response-policy로 분리(프론트 error: 콜백 158곳 vs code=='0000' 체크 18곳 실측 → status 붙이면 전 화면 회귀. 코드버그가 아니라 정책결정이라 국소수정까지 대기에 묶임) ②착수 선두 = field-dispatch(운영 EC2 실측: 배포본도 경로 pfs-test지만 양쪽 uploads에 .gitkeep뿐 = 축적 0 → 마이그레이션 불필요·한 줄·회귀 0, 화물 배차 실사용 전환 전에 처리하면 손실 자체가 안 생김) ③결정대기 3파트 blocked 표기(순차 진행이 대기에 안 막히게). 부수 = 실배포는 scripts/deploy-production.sh(systemd) 정상, service/deploy-{live,test}.sh는 내용 완전 동일(둘 다 pfs-test.ini+killall -9) 방치본 → ops-secrets에서 정리. 로드맵 27→28파트, devplan 단계카드 갱신. ✅26.7.29 P0 보안 3결정 실행·운영배포 완료(deploy-live 964e8f2) — API 인증 게이트(비로그인 /api/ 401, 데몬 경로만 공유 토큰) · secret_key env 외부화(⚠기존 세션 1회 무효) · 비번 pbkdf2+솔트 로그인 시 자동 승급 · tracked 21파일 평문 비번 제거(로더, 회전은 페페 결정으로 미실시 = git 이력 값 아직 유효) · 8791 0.0.0.0→127.0.0.1+토큰 · 응답 status 헬퍼(동작 무변경, 점진 이관). 검증 = 자체17+E2E13+UI9 (테스트·운영 각각) ALL PASS. 부수 = thousandSeparator 널가드(목록 전체가 빈 화면 되던 것). ⚠사고=검증이 운영 큐 1건 claim → pending 원복 완료. ⏳페페 = 운영 육안(재로그인 필요). 옛 항목: ⏳페페 몫 = ①P0 착수 순서 승인(추천 = field-dispatch → platform-core → estimate-satellite → templates-xss-cache) ②설계 결정 3건(platform-auth 인증 게이트 방식 / ops-secrets git 이력 평문 비번 / 🆕platform-response-policy status 전환 방식). → projects/code-qa/{handoff,rules}.md · devplan code-qa.html