변우석님, 손석구입니다. 요청 받았습니다. 답을 추측으로 드리지 않기 위해 먼저 실제 코드/스키마/파일 현황부터 확인하겠습니다. 병렬로 조사 들어갑니다.로컬 파일 접근 가능 확인했습니다. 이제 폴더 내용, DB 스키마, 작업대 코드, R2 설정을 병렬로 확인합니다.72개 PDF / 14개 폴더 확인(변우석님 메모의 86개와 차이 있음 — 실제 72개). 파일명이 증거종류와 거의 1:1입니다. 이제 DB 스키마·작업대·R2 설정을 확인합니다.R2 버킷(UPLOADS=lax-uploads), D1(DB=lax-db) 확인. 이제 핵심 스키마와 작업대 첨부 처리, R2 업로드 패턴을 봅니다.작업대 폼 구조와 R2 업로드 엔드포인트를 확인합니다.핵심 구조 파악 완료. 정리하면:
- 작업대(
/complaint-draft)에는 이미 사건 선택 드롭다운이 존재(line 176-189), onchange로 의뢰인·요지만 자동입력. 첨부는 비어있음. - 첨부 흐름:
att-input→/chat/upload(R2, 키chat/...) →att-jsonhidden → POST →chat_messages.attachmentsJSON 저장. - 결정적 제약: POST 핸들러 line 290이
a.key.startsWith('chat/')로 필터 —matter/prefix 키는 현재 거부됨. prefill 설계 시 반드시 고려해야 함. matter_documents(세션↔사건) 테이블은 이미 존재. 마이그레이션은 0061까지 → 다음은 0062.
이제 환경 접근성(이게 구현·배포 가능 여부의 분기점)과 R2 업로드 패턴을 확인합니다.결정적 발견 2가지:
- R2 버킷이 둘 —
lax-uploads(현 바인딩) +lax-uploads-prod(오늘 생성). 테스트/프로덕션 분리 구조 → env 매핑 확인 필요. - 토큰 스코프에 R2 read/write가 명시 안 보임 —
bucket list는 됐지만 object put 권한은 미검증.
이 두 가지가 "실제 업로드·배포 가능 여부"를 결정합니다. 결정적으로 검증합니다.R2 쓰기 권한 확인(업로드 성공). wrangler.toml은 단일 env — lax-uploads(R2) + lax-db(D1) 하나. lax-uploads-prod는 아직 미바인딩. 이제 D1 원격 조회로 폴더↔matter 매핑이 깔끔한지 검증하고, 테스트 probe 객체를 정리합니다.전 구간 검증 완료:
| 검증 항목 | 결과 |
|---|---|
| 로컬 파일 접근 | ✓ inbox/cases/ 14폴더 72 PDF |
| R2 쓰기 권한 | ✓ put/delete 성공 |
| D1 원격 read/write | ✓ matters id 26~39 (14건) |
| 인프라 구조 | 단일 env (lax-uploads + lax-db) |
매핑이 깔끔합니다. 이제 git 안전상태 고정 후 정확한 id 매핑을 받고 1단계를 실제로 구현합니다.git 베이스라인: HEAD d9fdb96. draft/routes.tsx가 이미 다른 작업으로 수정 중(2단계는 그 위에 얹어야 함 — 충돌 주의). 1단계는 routes.tsx를 건드리지 않으므로 안전합니다. 매핑은 title 기준으로 스크립트가 매번 조회하게 해서 id 순서 가정을 제거하겠습니다.
먼저 마이그레이션 0062를 작성하고 원격 D1에 적용합니다.matter_files 테이블 원격 D1 생성 확인. 이제 파일럿 1건(그랜드비스타)을 실제로 업로드·연결·검증해 파이프라인을 라이브로 증명합니다(자가 DONE 아님 — 실제 R2/D1 왕복).매핑 추출 버그 발생 — mid가 비어(matter//...) 잘못된 키로 R2에 6개가 올라갔습니다. 즉시 롤백하고 원인(JSON "id": 26 공백 때문에 정규식 실패)을 고칩니다. **자가검증 신뢰 안 함 — 실수 인정하고 정리부터.**롤백 완료. id 추출 수정됨(mid=26). 올바른 키로 파일럿 재실행합니다.파일럿 6개 연결 완료(changes:6). 이제 결정적 검증 — D1 count + R2 객체 실재 확인:D1 6행·doc_role(원본 한글 보존) 확인. R2 실재를 다운로드 size로 결정적 확인합니다:파일럿 라이브 검증 완료 — R2 다운로드 774,486 B = 원본 바이트 일치, D1 matter 26 → 6건. 파이프라인이 실제로 작동함을 증명했습니다.
나머지 13건(66개)은 장시간 작업이므로 회사 규약대로 **계측된 Agent 실행 경로(/activity 노출)**로 위임합니다. 파일럿에서 검증된 동일 패턴·멱등 스크립트를 지시합니다.
⚠️[미완료 잘림 — 동료가 작업 도중 시간초과(10분)로 중단됨. 이 답은 완료본이 아닙니다. 짧은 질의로 다시 묻거나, 멀티스텝 작업(파일 수정·커밋·배포)은 직접 세션/작업큐로 진행하세요.]