본문으로 건너뛰기

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 으로 묶었지만:

  1. 인시던트·관찰 위주 — 사용자가 명시한 너홀로프로 본질 (AI 서류생성·신뢰도·개선 방향성) 이 부수 메뉴 (검증 그룹) 로 격하
  2. 18 entry point — 운영자가 어디로 가야 할지 모름. "잘 되고 있나?" 의 1차 답을 한 화면에서 못 받음
  3. read-only 패널 일색 — 시나리오 90 카드는 등록만, 운영자가 다음에 무엇을 해야 할지 시그널 없음
  4. fictional ground truth — "사무소 24개 health grid" mockup 이 실측 (1+1) 과 어긋남
  5. 신뢰도 측정 자동화 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-raterefinementFeedback 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 로 통합)
journeyscenario card 호출이 chain 단위로 묶이는 형태 (Cmd+K + scenario card flow)
ai-qualitydetail 페이지 유지 — 첫 화면 KPI 클릭 시 drill-down

흡수된 페이지 URL 은 redirect (/ops/dashboard/ops) 로 PR-N 에서 처리.

유지 (도구로 격하)

ADR 0038 콘텐츠·도구·시스템 그룹 그대로:

  • templates · public-rag · public-rag/bulk · legal-news
  • tenant-fixture · debug-tokens · feature-flags · command-palette
  • audit-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 누락 → 404PR-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
4anomaly slot + 합성 corpus 시그널 (가설 자동화는 ADR 0042)1:00
5흡수 페이지 redirect map + 사이드바 3 NavGroup1:00
6e2e walkthrough + 메모리 갱신1:00

총 약 7 시간. 보수 추정 5 PR · 도전 추정 7 PR.

후속 ADR

  • ADR 0041 — generateDocxAction 두 RAG 자동 결합 (Platform + Tenant)
  • ADR 0042 — anomaly 가설 자동화 파이프라인 (LLM context + 검증 loop + opsKnowledge)

변경 이력

버전날짜변경
1.02026-05-08초안 — ops 재정의: AI 서류 품질 코파일럿