# 재고 요약 감사 로그 · Slack 알림 계획

> 원본 정의: `../superport_api_v2/doc/inventory_summary_audit_plan.md` – 프런트에서도 동일 정책을 참조하도록 요약본을 유지한다.

## 이벤트 개요
- 엔드포인트: `GET /api/v1/inventory/summary`, `GET /api/v1/inventory/summary/{product_id}`
- 이벤트 코드: `inventory.summary.viewed` (version `1.0`)
- 발행 채널: Kafka(선택), WebSocket(`AuditEventStream`)

### Payload
| 필드 | 설명 |
| --- | --- |
| `actor_id` | 요청자 ID |
| `filters` | `page`, `page_size`, `warehouse_id`, `include_empty`, `sort`, `order`, `updated_since`, `event_limit`, `product_id` |
| `result_count` | 목록: `items.len()`, 단건: `recent_events.len()` |
| `request_id` | 서버가 채번한 마이크로초 기반 상관관계 키 |
| `emitted_at` | UTC 기준 발행 시각 |

프런트는 필터 UI 상태를 서버와 동일하게 유지해 감사 로그와 UX 간 불일치가 없도록 한다.

## Slack / PagerDuty 라우팅
| 시나리오 | 채널 | 레벨 |
| --- | --- | --- |
| 정상 조회 | `#inventory-monitoring` (옵션) | INFO |
| 권한 부족 (`INVENTORY_SCOPE_REQUIRED`) | `#inventory-alerts` | WARN / 5분 내 5회 → PagerDuty Low |
| 스냅샷 지연 (`INVENTORY_SNAPSHOT_NOT_READY`) | `#inventory-alerts` | INFO / 10분 지속 → PagerDuty Medium |
| 정합성 실패·데이터 불일치 | `#inventory-critical` | ERROR / 즉시 PagerDuty High |

프런트 액션:
- 권한 부족 시 AlertDialg + Slack 알림에 포함될 수 있는 컨텍스트(`filters`,`actor_id`)를 명시.
- 스냅샷 지연 오류에서는 사용자에게 뷰 리프레시 절차 안내 메시지를 출력.

## 운영 체크리스트
1. 배포 직후 `script/refresh_inventory_mv.sh --database-url "$DATABASE_URL"` 실행 기록을 Ops에 공유.
2. Slack 로그 샘플을 QA와 함께 캡처해 PR에 첨부.
3. 감사 이벤트 미수신 시 `AuditEventStream` 구독자 상태(프론트 Admin 콘솔) 확인.
4. 월 1회 Ops와 정책 재검토, 필요 시 PagerDuty 라우팅/임계값 갱신.
