Pack 1 운영 지표 (docgen · 사무실 기억 참조)
ADR 0012 S1 후속. Pack 1 회수 유형 + 한글 export + 사무실 기억 참조 기능의 운영 관측 지표 인벤토리.
집계 스크립트 → 테넌트별 tenantDoc.stats.* 네임스페이스 → 관리자 콘솔
대시보드 쿼리 경로.
1. 서류 생성 (docgen)
1.1 원본 이벤트
- 컬렉션:
tenants/{tid}/docgenEvents/* - Writer:
writeDocgenEvent(apps/web/app/(workspace)/docs/_lib/docgen-event-writer.ts) - Zod 스키마:
DocgenEventSchema(성공·실패 discriminator) - 기록 경로 3 종: 성공 · 실패 (
failureReason) · kill switch
1.2 집계 스크립트
- 파일:
scripts/aggregate-docgen-stats.ts - 윈도우: 최근 30일 롤링
- 쓰기 경로:
tenants/{tid}.stats.docgen.* - 실행:
NODE_PATH=apps/web/node_modules npx tsx scripts/aggregate-docgen-stats.ts [--dry-run]
1.3 집계 필드
| 필드 | 단위 | 의미 |
|---|---|---|
totalSuccess | 건수 | 성공 누적 |
totalFailure | 건수 | 실패 누적 (kill switch 포함) |
avgElapsedMs | ms | 렌더 시간 평균 |
failureBreakdown | {reason: count} | failureReason 분포 |
kindBreakdown | {kind: count} | DocKind 별 사용 |
templateSource.{tenant, public} | 건수 | 커스텀 vs 공용 템플릿 비율 |
lastAggregatedAtIso | ISO-8601 | 마지막 집계 시각 |
1.4 관측 목표
| 지표 | 경보 임계값 | 원인 후보 |
|---|---|---|
failureBreakdown.template_invalid > totalSuccess * 0.05 | 5% 초과 | 공용 템플릿 회귀 또는 tenant 업로드 파일 파손 |
failureBreakdown.render_failed > totalSuccess * 0.01 | 1% 초과 | docx-templates 버전 드리프트, placeholder 규약 변경 |
avgElapsedMs > 3000 | 3초 초과 | 템플릿 크기 급증 또는 Storage 지연 |
templateSource.tenant / (tenant+public) > 0.5 | 50% 초과 | 공용 템플릿 품질 부족 → tenant 커스텀 의존 과다 |
2. 사무실 기억 참조 (RelatedMemoriesPanel)
2.1 원본 이벤트
- 컬렉션:
tenants/{tid}/relatedMemoriesEvents/* - Writer:
writeRelatedMemoriesEventAction(서버 측tenantId·actorUid덮어쓰기) - Zod 스키마:
RelatedMemoriesEventSchema(discriminated union 3 종)
2.2 집계 스크립트
- 파일:
scripts/aggregate-related-memories-stats.ts - 윈도우: 최근 30일 롤링
- 쓰기 경로:
tenants/{tid}.stats.relatedMemories.*
2.3 집계 필드
| 필드 | 단위 | 의미 |
|---|---|---|
shownCount | 건수 | 패널 카드 실제 렌더 횟수 |
clickedCount | 건수 | "이 기억 반영" CTA 클릭 |
cancelCount | 건수 | 로딩 완료 전 Step 2 이탈 |
clickThroughRate | 비율 | clicked / shown |
cancelRate | 비율 | cancel / (shown + cancel) |
avgFetchMs | ms | findRelatedMemoriesForDocGenAction 평균 응답 |
rankIndexHistogram | {0..4: count} | 상단/하단 편향 관찰 |
lastAggregatedAtIso | ISO-8601 | 마지막 집계 시각 |
2.4 S3 말 C 캐시 재평가 임계값 (ADR 0012 R1 확정)
3 조건 모두 충족 시 24h TTL 캐시 (경로 tenants/{tid}/relatedMemoriesCache/{caseHash}_{docType}) 도입:
clickThroughRate ≥ 0.40(hit rate 검증)- 월 평균 weight 소비 ≥ 20/tenant (캐시 절감 가치 존재)
cancelRate ≥ 0.25(낭비 방어 의미)
3. 시효 상태 (StatuteBadge)
순수 함수 계산 → 텔레메트리 없음. 관측 필요 시 CaseSummaryCards 의 임박 배지 렌더 이벤트를 activityLog 에 기록하는 쪽이 단순.
현 상태: 별도 집계 없음. calculateStatuteOfLimitations 가 결정론적이라
사건 단위로 렌더 시 재계산.
4. 후속 작업
자동 집계
- Cloud Scheduler + Cloud Functions 트리거로
aggregate-*.ts하루 1회 실행 - 대상: 모든 tenant, 30일 윈도우
- 알림: 1.4 · 2.4 임계값 초과 시 Slack/이메일
관리자 콘솔 대시보드
tenantDoc.stats.docgen/stats.relatedMemories읽기 전용 카드- 테넌트별 드릴다운 → failureBreakdown · rankIndexHistogram 상세
BQ Export
createdAtserverTimestamp 기반 파티셔닝- 장기 분석 (연간 리텐션, 템플릿 A/B) 은 BQ 경로