# 子模块：Observability（可观测性与打点载荷）｜Spec

## 1. 目标描述

定义推荐模块的统一可观测载荷（meta/event），用于：

- 线上监控覆盖率、回退率、候选规模分布、过滤原因分布。
- 支撑调参（权重/回退阈值/频控窗口）与风险排查（Hard Filter 命中情况）。

---

## 2. 输入 / 输出定义

### 2.1 输入

- 推荐引擎内部各阶段统计信息：
  - 候选生成数量、过滤后数量、去重后数量、频控后数量
  - 回退层级与触发原因
  - served_k
  - 缺失字段情况、conf_U

### 2.2 输出

统一的 `RecoMeta`（返回给调用方；调用方负责上报/落库/打点）：

- `scene`
- `candidate_pool_size_raw`
- `candidate_pool_size_after_hard_filter`
- `candidate_pool_size_after_dedup`
- `candidate_pool_size_after_freqcap`
- `fallback_level_final`
- `served_k`
- `empty_reason`（served_k=0 必填；枚举建议：`hard_filter_all | freqcap_all | pool_empty | unknown`）
- `conf_U`
- `missing_fields`：`{ need: boolean; context: boolean; emotion: boolean }`
- （可选）`risk_filtered_count_by_flag`：`{ flag: count }`

---

## 3. 验收标准（可验证）

- 每次推荐调用都能产出 `RecoMeta`，并随响应/任务结果返回（或被上层打点系统消费）。
- `served_k=0` 时 `empty_reason` 必不为空，且与实际清空阶段一致。
- `fallback_level_final` 能真实反映最终回退层级（用于回退率报表）。

