ADR 0040 — ops 재정의: 인시던트 콘솔에서 AI 서류 품질 코파일럿으로
날짜: 2026-05-08
상태: Accepted
Tier: A (Architecture · 운영 콘솔)
Supersedes 부분: ADR 0038 (ops v2 IA) — 5 NavGroup·18 페이지를 3 NavGroup·축 분해 첫 화면으로 재배치
적용 범위: apps/ops 전체
결정문
apps/ops 의 north star 를 "AI 서류 생성 신뢰도·학습 효율의 한눈 코파일럿" 으로 재정의한다. 5 NavGroup 평면 사이드바 (ADR 0038) 를 첫 화면 (한눈) + 도구 + 시스템 3 NavGroup 으로 축소하고, 18 페이지 중 운영·검증 중심 8 페이지를 첫 화면 4 축 분해와 anomaly drill-down 으로 흡수한다. 사용자가 "잘되고 있구나 / 이건 안되네 / 어떻게 개선해야지" 를 5 초·30 초·5 분의 정보 계층으로 한 화면에서 답하도록 한다.
배경
Ground truth (Firestore 실측, 2026-05-08)
ADR 0012 (docgen) · ADR 0015 (사무실 기억) · ADR 0018 (학습 루프) · ADR 0021 (Platform RAG) · ADR 0032 (RAG 평가) 가 모두 ship 되었다. 그러나 production Firestore 실측 결과:
- publicDocuments ✓ — 768-dim embedding (court_precedent + statute), 2026-04-25 ~ 운영
- tenants = 2 (실 사용자 1 = 빈 사무소 / 합성 1 = demo-firm-memory 20 cases)
- docgenEvents = 0 production 호출 (양 tenant 모두 컬렉션 없음)
- draftDiffs = 0 finalize (양 tenant 모두 컬렉션 없음)
- aiQualityHistory = demo-firm-memory 에만 존재 (배치 스크립트 결과)
- ragEvalCases = 5 합성 (Chair 미검증)
즉 인프라는 ship 되었지만 실 사용자 호출은 0 이다 (메모리 feedback_ship_complete_blinds_validation 의 정확한 적용 사례).
ADR 0038 (ops v2 IA) 의 한계
ADR 0038 은 18 페이지를 5 NavGroup 으로 묶었지만:
- 인시던트·관찰 위주 — 사용자가 명시한 너홀로프로 본질 (AI 서류생성·신뢰도·개선 방향성) 이 부수 메뉴 (검증 그룹) 로 격하
- 18 entry point — 운영자가 어디로 가야 할지 모름. "잘 되고 있나?" 의 1차 답을 한 화면에서 못 받음
- read-only 패널 일색 — 시나리오 90 카드는 등록만, 운영자가 다음에 무엇을 해야 할지 시그널 없음
- fictional ground truth — "사무소 24개 health grid" mockup 이 실측 (1+1) 과 어긋남
- 신뢰도 측정 자동화 0 — aggregate cron · leave-one-out 회귀 · 환각율 측정 인프라 없음
사용자 의도 (2026-05-08 명시)
"AI 서류 생성을 위해 법제처 RAG 가 공통, 각자의 테넌트가 사무실 기억을 참조해서 서류를 만든다. 이 과정의 데이터 모델링·비즈니스 로직·실제 결과물·신뢰도·테넌트별 AI 호출이 궁금. 잘 되고 있나, 어떻게 개선해야지가 직관적으로 표현되어야 한다."
이 의도가 ops 의 north star 다.
결정 — 3 NavGroup 정보 아키텍처
| 그룹 | 의도 | 페이지 |
|---|---|---|
| 🌟 운영 한눈 (Console) | 우리가 보는 production 답 — "잘되고 있구나 / 이건 안되네 / 어떻게 개선해야지" | index (첫 화면, 흡수 결과) · tenants/[id] (사무소 detail drill-down) · ai-quality (KPI detail) |
| 🛠️ 도구 (Tools) | 마찰 줄이기 + 콘텐츠 관리 (ADR 0038 도구·콘텐츠 그룹 흡수) | templates · public-rag · legal-news · tenant-fixture · debug-tokens · feature-flags · command-palette (Cmd+K) |
| ⚙️ 시스템 (System) | 정책·감사 | audit-log · env · members |
축소: 5 NavGroup → 3, 18 페이지 → 약 12. 핵심 entry 는 첫 화면 1 개.
첫 화면 (/ops) 정보 계층 3 단
5 초 — 한 줄 자연어 요약
이번 주 AI 서류 신뢰도 94% (지난 주 92% ↗ +2%)
abc 사무소 1 곳 점검 권장 · qrs 사무소 모범 패턴 발견
부트스트랩 모드 (실측 1+1 사무소·호출 0): "합성 corpus 위에서 학습 루프 평가 중. 첫 사용자 호출 대기."
30 초 — AI 서류 신뢰도 4 축 분해
| 축 | 측정 source | 임계값 (🟢/🟡/🔴) |
|---|---|---|
| 편집률 (낮을수록 좋음) | tenants/{tid}/draftDiffs.editIntensity 7d 평균 | <15% / 15~25% / >25% |
| docgen 성공률 | tenants/{tid}/docgenEvents.outcome 7d successRate | >95% / 90~95% / <90% |
| exemplar selection hit-rate | refinementFeedback rating up 비율 | >80% / 60~80% / <60% |
| 학습 회귀 통과율 | leave-one-out 합성 회귀 (Block 3 신설) | >85% / 70~85% / <70% |
각 축마다 7d sparkline + 추세 화살표. 분해 막대로 "어디가 발목 잡는지" 즉시 보임.
30 초 — 사무소 grid
각 tenant = 작은 사각형, 색깔로 health (🟢/🟡/🔴/⚪ 데이터 부족). 클릭 → tenants/[id] drill-down.
부트스트랩 모드 (현재 1+1) 에서는 사무소 카드 형태 (grid 대신 가독성). 5 사무소 이상 시 grid 자동 전환.
5 분 — Anomaly + 가설 + 추천 액션 (ADR 0042 슬롯)
ADR 0041 의 docgen 텔레메트리 + ADR 0029 의 health 시그널 위에서 작동. 본 ADR 에서는 슬롯만 정의, 가설 자동 생성은 ADR 0042 에서 채움:
🔴 abc — AI 서류 실패율 28% (정상 5%, 24h)
📊 시그널: failureReason TIMEOUT 3 + MEMORY_LIMIT 1 (4/5) · elapsedMs 27s
💡 가설 (신뢰도 92% · 이 패턴 과거 5/7 정확)
이미지 OCR 단계가 메모리 부족.
ADR 0015 PR-7 권고 + 2026-05-03 sweep P0 + incident #82 동일 패턴.
🎯 추천 액션 (ROI 순)
① [메모리 512MB 토글] 자동 실행 가능 · 효과 ~5분
② [lawsuit-loan 템플릿 검사] scenario card · 수동
✅ 가설 검증 [맞았음] [틀림 + 코멘트]
30 초 — "잘 되고 있는 것" 섹션
✨ qrs — 이번 주 finalize 5건, 평균 편집률 6% (전체 12%)
exemplar 학습 적응 우수. cross-pollinate 후보?
운영자에게 "잘되고 있구나" grounding. anomaly 만 보여주면 항상 불안.
페이지 푸터 띠 — secondary 시그널
🏢 사무소 X/Y 활성 · 신규 N (이번 주) ⚙️ p95 1.2s · 0 incident
ADR 0029 health · ADR 0038 incidents 패널은 secondary 로 격하.
18 페이지 처분
흡수 (사라짐 → /ops 첫 화면)
| ADR 0038 페이지 | 흡수 위치 |
|---|---|
dashboard | 첫 화면 5초 헤드라인 |
incidents | 첫 화면 anomaly drill-down + 푸터 띠 |
health | 첫 화면 푸터 띠 |
scenarios | 첫 화면 anomaly 추천 액션 (scenario card 호출 유지) + Cmd+K palette |
case-prefill | 첫 화면 anomaly drill-down (사무소별) |
bot-runs | 검증 nightly cron, 결과는 첫 화면 학습 회귀 통과율 축으로 노출 |
rag-eval | 첫 화면 환각율 시그널로 흡수 (UI 는 ai-quality detail 로 통합) |
journey | scenario card 호출이 chain 단위로 묶이는 형태 (Cmd+K + scenario card flow) |
ai-quality | detail 페이지 유지 — 첫 화면 KPI 클릭 시 drill-down |
흡수된 페이지 URL 은 redirect (/ops/dashboard → /ops) 로 PR-N 에서 처리.
유지 (도구로 격하)
ADR 0038 콘텐츠·도구·시스템 그룹 그대로:
templates·public-rag·public-rag/bulk·legal-newstenant-fixture·debug-tokens·feature-flags·command-paletteaudit-log·env·members
tenants/[id] 은 drill-down 진입점 으로 유지.
부트스트랩 모드 (실측 1+1 사무소)
ground truth 가 demo + 실 사용자 1 인 현재, 첫 화면이 빈 시그널만 표시되면 의미 없음. 부트스트랩 카피·시드 패턴:
- demo-firm-memory 합성 사무소 = 1급 시민. 시그널 source 로 표시 + "합성 데이터" 배지
- 실 사용자 (J5lz...) 는 "사용 시작 대기" 카드로 표시
- 첫 화면 4 축 분해는 demo 합성 데이터 위에서 동작. 첫 사용자 호출 1 건 들어오면 자동 합산
- 합성 corpus 가 ground truth 가 되는 자율 검증 인프라가 1급 시민 (메모리
feedback_no_pilot_mock_only·feedback_close_the_learning_loop적용)
측정 가능한 성공 지표
- 첫 화면 5초 헤드라인 1줄에 "잘됨/문제/추천" 3 정보 모두 들어가는지 자동 회귀 (e2e snapshot)
- 4축 분해가 합성 corpus + 실 호출 1건 위에서 모두 동작 (empty state ≠ 빈 화면)
- anomaly slot 이 ADR 0042 가설 파이프라인 결과를 받을 수 있는 schema 로 미리 결정
- 18 → 12 페이지 축소 후 평균 운영자 클릭 깊이 감소 (목표: 첫 답은 0 클릭, drill-down 1 클릭)
위험·완화
| 위험 | 완화 |
|---|---|
| 흡수된 페이지 redirect 누락 → 404 | PR-N 에서 redirect map 일괄 추가 + e2e |
| 실측 1+1 사무소 위에서 grid 의미 없음 | 5 사무소 이하 → 카드 형태 자동 전환 |
| 가설 슬롯이 비어있는 상태로 ship | 본 ADR PR 에서는 슬롯만 + ADR 0042 PR 에서 가설 파이프라인 채움 |
| ADR 0038 신설 페이지 (incidents 10 패널 등) 가 1주 만에 흡수 | ADR 0038 의 핵심 코드 (gcloud API · scenarios registry) 는 전부 재사용. 정보 아키텍처만 재배치 |
Non-goal
- web 앱 코드 수정 (의존 규칙 준수)
- masterAdmin 인증 모델 변경
- ADR 0038 신설 페이지 코드 (gcloud · scenarios registry) 폐기 — 모두 재사용
- 가설 자동화 파이프라인 구현 — ADR 0041 (두 RAG 통합) · ADR 0042 (가설 자동화) 분리
구현 순서 (PR 단위)
| PR | 산출물 | 예상 시간 |
|---|---|---|
| 1 | 본 ADR + ADR 0041 (doc-only) | 1:00 |
| 2 | 첫 화면 /ops v2 — 4 축 분해 패널 + 푸터 띠 + 부트스트랩 모드 | 2:00 |
| 3 | 사무소 카드/grid + drill-down (tenants/[id]) | 1:00 |
| 4 | anomaly slot + 합성 corpus 시그널 (가설 자동화는 ADR 0042) | 1:00 |
| 5 | 흡수 페이지 redirect map + 사이드바 3 NavGroup | 1:00 |
| 6 | e2e walkthrough + 메모리 갱신 | 1:00 |
총 약 7 시간. 보수 추정 5 PR · 도전 추정 7 PR.
후속 ADR
- ADR 0041 —
generateDocxAction두 RAG 자동 결합 (Platform + Tenant) - ADR 0042 — anomaly 가설 자동화 파이프라인 (LLM context + 검증 loop + opsKnowledge)
변경 이력
| 버전 | 날짜 | 변경 |
|---|---|---|
| 1.0 | 2026-05-08 | 초안 — ops 재정의: AI 서류 품질 코파일럿 |