검증 완료. 결과를 정리해 보고합니다.
결론부터
방향 맞습니다. 데몬은 안전합니다(결정적 확인). 1단계는 방금 만들어 검증까지 끝냈습니다. 단, 리디렉트에 한 가지 보정이 필요합니다(아래 ②).
① 데몬 호환성 — 안전 (결정적 근거)
daemon/daemon.js 전체를 grep한 결과, 라우트 경로(/complaint, /complaint-draft, /work 등) 참조가 0건입니다. 데몬은 이렇게 동작합니다:
/bridge/poll로 task_queue에서 작업 수신 →session_id·working_dir·agent_slug로 실행 →chat_messages에 스트림 기록(/bridge/ingest).- 작업대 무중단의 실제 의존축은 task_queue 스키마 ·
chat_sessions.scope='draft'· 문서 마커(SOJANG) 이며, 이번 라우트 변경의 대상이 아닙니다.
→ URL 슬러그를 바꿔도 데몬-작업대 처리는 깨지지 않습니다. 이게 이 작업이 안전한 핵심 이유입니다.
② 보정 — POST 내부경로는 301이 아니라 308이어야 함
/complaint-draft/work/:id/ 하위에 상태변경 POST 3종이 있습니다: doc-source(편집 저장)·attachment/delete·checklist. 이미 열려 있는 작업대 탭은 구 경로로 이걸 호출 중입니다.
- GET(목록·작성·작업대·poll·print·hwpx·evidence) → 301 OK (fetch가 자동 추종).
- POST 3종 → 301/302는 메서드를 GET으로 바꿔 본문이 유실됩니다. → 308(영구) 또는 307로 메서드·본문 보존 필수.
권고: 네비게이션 GET = 301, 내부 상태변경 API = 308. 이게 실사용 중 탭 무중단의 핵심 디테일입니다.
추가로 2단계 설계 시: /docs/:slug/work/:id에서 slug와 세션 실제 doc_type(matter_documents.doc_type)이 어긋날 수 있으니, slug는 내부링크·메뉴 하이라이트용으로만 쓰고 문서종류는 기존대로 세션 기준으로 결정하세요(불일치 시 정규 slug로 301).
③ 1단계 완료 — catalog slug + 매핑 헬퍼
| 항목 | 내용 |
|---|---|
| 신규 헬퍼(SSOT) | src/shared/doc_slug.ts — slugToDocType·docTypeToSlug·isRoutedSlug·ROUTED_SLUGS. 역매핑은 단일 상수에서 파생. |
| 신규 마이그레이션 | migrations/0063_legal_doc_catalog_slug.sql (※ 최신이 0062_matter_files라 0062 아닌 0063) |
| slug 컬럼 | ALTER ADD COLUMN slug TEXT + UNIQUE 인덱스 |
| 4종 | sojang/jigeup-myeongryeong/dapbyeon/junbi-seomyeon (법무 확정값, doc_name 기준 UPDATE) |
| 나머지 30종 | doc-<id> 데이터용 안정 슬러그(의미 없음, 라우트 비연결, 후속 의미화 대상) |
검증(자가 DONE 아님, node:sqlite로 실제 적용):
- 4종 slug ↔ doc_name 매핑 정확 ✅
- NULL slug 0건 ✅ / 중복 slug 0건 ✅
- 전체 34행 중 30행
doc-, 4행 의미 슬러그 ✅
나머지 30종을 임의 로마자화하지 않은 이유: 그건 법무 확정값이 아니라 추측입니다. UNIQUE만 보장하는 placeholder로 두고, 의미 슬러그는 후속에 법무가 채우는 게 안전합니다. 필요하면 매핑 주시면 반영하겠습니다.
롤백: 두 파일 모두 신규 → git에서 파일 삭제로 즉시 원복. 마이그레이션이 이미 적용됐어도 slug 컬럼은 아무도 안 읽으면 무해(2·3단계 머지 전까지 dead column).
적용(변우석 검증 단계): wrangler d1 execute <바인딩> --file=migrations/0063_legal_doc_catalog_slug.sql — 테스트(lax-dtb) → 프로덕션(axwiki) 순. 정확한 바인딩명은 wrangler.toml 기준.
2단계(/docs/:slug 라우트 + 301/308 리디렉트) 착수해도 좋다고 하시면, 위 ② 보정을 반영해 핸들러 slug-context화부터 진행하겠습니다. 배포·멀티턴 검증은 말씀대로 변우석님이 이어 닫으시면 됩니다.