# metadata-governance 技术设计（Design）

## 1. 设计目标

围绕已上线的元数据配置页面，补齐“配置 -> 录入 -> 检索 -> 治理”的闭环：
- 元数据字段生命周期治理（draft/active/deprecated）
- KB/Intent/Flow/Prompt 录入联动与一致性校验
- Intent 路由后 metadata 过滤注入
- 拆解模板版本治理与回溯

## 2. 架构与职责

### 2.1 元数据配置层（Admin）
- 提供字段定义管理：`field_key/type/options/required/scope/status`
- 提供字段状态治理：
  - `draft`: 可编辑不可生效
  - `active`: 可用于新建与编辑
  - `deprecated`: 不可用于新建，历史可读

### 2.2 录入联动层（Admin Forms）
- 在以下录入页统一挂载 metadata 表单组件：
  - KB 文档
  - Intent Rule
  - Script Flow
  - Prompt Template
- 联动逻辑：对象类型变化时，根据 `scope` 动态渲染字段
- 校验逻辑：required 字段 + 类型校验 + enum 值校验

### 2.3 检索治理层（Runtime）
- 路由流程：Intent 命中 -> 目标知识库集合 -> metadata filters -> 向量召回
- metadata 注入来源：会话上下文、已提取槽位（grade/subject/scene）
- 兜底策略：无召回时 fallback（指定库或固定话术）并输出原因码

### 2.4 模板治理层（Ops）
- 拆解模板持久化与版本管理
- 提供最新生效版本查询能力

## 3. 数据模型建议

### 3.1 MetadataSchema
- id
- field_key
- label
- type
- required
- options
- default_value
- scope
- is_filterable
- is_rank_feature
- status
- version
- created_at/updated_at

### 3.2 MetadataPayload（挂载到业务对象）
- object_type
- object_id
- metadata: key-value
- schema_version

### 3.3 DecompositionTemplate
- id
- name
- template_content
- version
- status
- created_at/updated_at

## 4. 关键流程

### 4.1 配置到生效流程
1. 管理员创建/编辑字段（draft）
2. 审核后切换 active
3. 录入页拉取 active 字段并动态渲染
4. 字段 deprecated 后，新建不可选，历史只读可见

### 4.2 运行时检索流程
1. Intent Rule 命中 response_type=rag
2. 选择目标知识库（支持多库）
3. 注入 metadata 过滤条件
4. 执行向量检索
5. 无召回走 fallback，并记录原因码

## 5. 错误与降级策略

- 配置异常：字段配置缺失/冲突 -> 使用系统默认字段集
- 过滤异常：metadata 过滤构造失败 -> 降级为不加过滤检索（记录 warning）
- 无召回：返回 fallback 并记录 `no_recall_after_metadata_filter`

## 6. 可观测性

- 关键日志字段：
  - `intent_id`
  - `target_kbs`
  - `applied_metadata_filters`
  - `fallback_reason_code`
  - `latency_ms`

## 7. 与 AC 对齐

- 字段状态治理：AC-IDSMETA-13~14
- 跨模块录入联动：AC-IDSMETA-15~17
- 路由与检索治理：AC-IDSMETA-18~20
- 模板治理：AC-IDSMETA-21~22
