# 元数据职责分层优化 - 任务清单 ## 任务概览 | 阶段 | 任务数 | 状态 | |------|-------|------| | Phase 1: 数据模型扩展 | 4 | ✅ 已完成 | | Phase 2: 后端服务实现 | 6 | ✅ 已完成 | | Phase 3: 工具协同改造 | 4 | ✅ 已完成 | | Phase 4: 前端页面改造 | 3 | ⏳ 待开始 | | Phase 5: 测试与验收 | 3 | ⏳ 待开始 | --- ## Phase 1: 数据模型扩展 ### Task 1.1: 扩展 MetadataFieldDefinition 模型 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-01, AC-MRS-02, AC-MRS-03 - **描述**: 在现有 `MetadataFieldDefinition` 模型中新增 `field_roles` 字段 - **产出**: - 修改 `ai-service/app/models/entities.py` 中的 `MetadataFieldDefinition` 类 - 新增 `FieldRole` 枚举类 - **验收标准**: - `field_roles` 字段类型为 `list[str]` - 支持存储多个角色 - 允许空列表 ### Task 1.2: 创建 SlotDefinition 模型 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-07, AC-MRS-08 - **描述**: 创建独立的槽位定义模型 - **产出**: - 在 `ai-service/app/models/entities.py` 中新增 `SlotDefinition` 类 - 新增 `ExtractStrategy` 枚举类 - **验收标准**: - 包含所有必需字段:slot_key, type, required, extract_strategy, validation_rule, ask_back_prompt - 支持 linked_field_id 关联元数据字段 ### Task 1.3: 编写数据库迁移脚本 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-01, AC-MRS-07 - **描述**: 编写 PostgreSQL 迁移脚本 - **产出**: - 创建 `ai-service/scripts/migrations/007_add_field_roles_and_slot_definitions.sql` - **验收标准**: - 为 `metadata_field_definitions` 表新增 `field_roles` 列 - 创建 `slot_definitions` 表 - 创建必要的索引 ### Task 1.4: 更新 Pydantic Schema - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-01, AC-MRS-07 - **描述**: 更新请求/响应 Schema - **产出**: - 创建 `ai-service/app/schemas/metadata.py` - 新增 `SlotDefinitionCreate/Update/Response` Schema - **验收标准**: - Schema 与 OpenAPI 契约一致 - 包含完整的字段校验规则 --- ## Phase 2: 后端服务实现 ### Task 2.1: 实现 RoleBasedFieldProvider 服务 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-04, AC-MRS-05, AC-MRS-10 - **描述**: 实现按角色查询字段的核心服务 - **产出**: - 创建 `ai-service/app/services/mid/role_based_field_provider.py` - **验收标准**: - `get_fields_by_role()` 方法正确查询指定角色的字段 - 无效角色返回 400 错误 - 支持缓存机制 ### Task 2.2: 扩展 MetadataFieldDefinitionService - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-01, AC-MRS-02, AC-MRS-03, AC-MRS-06 - **描述**: 扩展现有服务支持 field_roles - **产出**: - 修改 `ai-service/app/services/metadata_field_definition_service.py` - **验收标准**: - 创建/更新时支持 field_roles 字段 - 支持按 role 过滤查询 - field_roles 校验正确 ### Task 2.3: 实现 SlotDefinitionService - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-07, AC-MRS-08 - **描述**: 实现槽位定义管理服务 - **产出**: - 创建 `ai-service/app/services/slot_definition_service.py` - **验收标准**: - CRUD 操作正确 - 支持关联元数据字段 - slot_key 租户内唯一 ### Task 2.4: 扩展 MetadataFieldDefinition API - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-01, AC-MRS-04, AC-MRS-05, AC-MRS-06, AC-MRS-16 - **描述**: 扩展现有 API 端点 - **产出**: - 修改 `ai-service/app/api/admin/metadata_field_definition.py` - 新增 `/by-role` 端点 - **验收标准**: - 所有端点符合 OpenAPI 契约 - 包含 AC 注释 ### Task 2.5: 实现 SlotDefinition API - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-07, AC-MRS-08, AC-MRS-16 - **描述**: 实现槽位定义管理 API - **产出**: - 创建 `ai-service/app/api/admin/slot_definition.py` - **验收标准**: - CRUD 端点符合 OpenAPI 契约 - 包含 AC 注释 ### Task 2.6: 实现运行时槽位 API - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-09, AC-MRS-10 - **描述**: 实现运行时槽位查询 API - **产出**: - 创建 `ai-service/app/api/mid/slots.py` - **验收标准**: - `/mid/slots/by-role` 端点正确返回槽位定义 - `/mid/slots/{slot_key}` 端点正确返回运行时值 --- ## Phase 3: 工具协同改造 ### Task 3.1: 改造 kb_search_dynamic 工具 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-11 - **描述**: 改造 KB 动态检索工具,只消费 resource_filter 角色 - **产出**: - 修改 `ai-service/app/services/mid/kb_search_dynamic_tool.py` - 修改 `ai-service/app/services/mid/metadata_filter_builder.py` - **验收标准**: - 只使用 field_roles 包含 resource_filter 的字段 - 不影响现有功能 ### Task 3.2: 改造 memory_recall 工具 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-12 - **描述**: 改造记忆召回工具,只消费 slot 角色 - **产出**: - 修改 `ai-service/app/services/mid/memory_recall_tool.py` - **验收标准**: - 只使用 field_roles 包含 slot 的字段 - 槽位合并逻辑正确 ### Task 3.3: 改造 intent_hint 和 high_risk_check 工具 - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-13 - **描述**: 改造意图提示和高风险检测工具,只消费 routing_signal 角色 - **产出**: - 修改 `ai-service/app/services/mid/intent_hint_tool.py` - 修改 `ai-service/app/services/mid/high_risk_check_tool.py` - **验收标准**: - 只使用 field_roles 包含 routing_signal 的字段 - 路由判断逻辑正确 ### Task 3.4: 改造 template_engine - [x] **状态**: ✅ 已完成 - **AC**: AC-MRS-14 - **描述**: 改造模板引擎,只消费 prompt_var 角色 - **产出**: - 修改 `ai-service/app/services/flow/template_engine.py` - **验收标准**: - 只使用 field_roles 包含 prompt_var 的字段 - 模板渲染正确 --- ## Phase 4: 前端页面改造 ### Task 4.1: 元数据字段配置页面增加 field_roles - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-15 - **描述**: 在元数据字段编辑表单中增加角色选择组件 - **产出**: - 创建 `ai-service-admin/src/components/metadata/FieldRolesSelector.vue` - 修改 `ai-service-admin/src/views/admin/metadata-schema/index.vue` - **验收标准**: - 支持多选角色 - 显示角色说明 - 保存时正确提交 ### Task 4.2: 增加按角色过滤视图 - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-06 - **描述**: 在元数据字段列表页面增加角色过滤功能 - **产出**: - 修改 `ai-service-admin/src/views/admin/metadata-schema/index.vue` - **验收标准**: - 下拉框选择角色 - 过滤结果正确 ### Task 4.3: 槽位定义管理页面 - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-07, AC-MRS-08, AC-MRS-16 - **描述**: 创建槽位定义管理页面 - **产出**: - 创建 `ai-service-admin/src/views/admin/slot-definition/index.vue` - 创建 `ai-service-admin/src/api/slot-definition.ts` - **验收标准**: - 支持 CRUD 操作 - 支持关联元数据字段 --- ## Phase 5: 测试与验收 ### Task 5.1: 单元测试 - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-01~16 - **描述**: 编写单元测试 - **产出**: - `ai-service/tests/test_role_based_field_provider.py` - `ai-service/tests/test_slot_definition_service.py` - `ai-service/tests/test_field_roles.py` - **验收标准**: - 覆盖核心逻辑 - 测试通过 ### Task 5.2: 集成测试 - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-01~16 - **描述**: 编写 API 集成测试 - **产出**: - `ai-service/tests/api/test_metadata_field_roles.py` - `ai-service/tests/api/test_slot_definition.py` - **验收标准**: - 覆盖所有 API 端点 - 测试通过 ### Task 5.3: 契约测试 - [ ] **状态**: ⏳ 待开始 - **AC**: AC-MRS-01~16 - **描述**: 验证 API 符合 OpenAPI 契约 - **产出**: - 运行契约测试 - 修复不一致 - **验收标准**: - Provider 契约达到 L2 级别 - 所有响应符合 Schema --- ## 任务依赖关系 ``` Phase 1 (数据模型) │ ├── Task 1.1 (扩展 MetadataFieldDefinition) ├── Task 1.2 (创建 SlotDefinition) ├── Task 1.3 (迁移脚本) ← 依赖 1.1, 1.2 └── Task 1.4 (更新 Schema) ← 依赖 1.1, 1.2 │ ▼ Phase 2 (后端服务) │ ├── Task 2.1 (RoleBasedFieldProvider) ← 依赖 1.4 ├── Task 2.2 (扩展 MetadataFieldService) ← 依赖 1.4 ├── Task 2.3 (SlotDefinitionService) ← 依赖 1.4 ├── Task 2.4 (扩展 MetadataField API) ← 依赖 2.2 ├── Task 2.5 (SlotDefinition API) ← 依赖 2.3 └── Task 2.6 (运行时槽位 API) ← 依赖 2.1, 2.3 │ ▼ Phase 3 (工具改造) │ ├── Task 3.1 (kb_search_dynamic) ← 依赖 2.1 ├── Task 3.2 (memory_recall) ← 依赖 2.1 ├── Task 3.3 (intent_hint/high_risk_check) ← 依赖 2.1 └── Task 3.4 (template_engine) ← 依赖 2.1 │ ▼ Phase 4 (前端改造) │ ├── Task 4.1 (field_roles 组件) ← 依赖 2.4 ├── Task 4.2 (角色过滤视图) ← 依赖 2.4 └── Task 4.3 (槽位定义页面) ← 依赖 2.5 │ ▼ Phase 5 (测试验收) │ ├── Task 5.1 (单元测试) ← 依赖 Phase 2 ├── Task 5.2 (集成测试) ← 依赖 Phase 2, 3, 4 └── Task 5.3 (契约测试) ← 依赖 5.2 ``` --- ## 执行顺序建议 1. **Phase 1** → **Phase 2** → **Phase 3** → **Phase 4** → **Phase 5** 2. Phase 3 和 Phase 4 可并行执行 3. 每个 Task 完成后需更新状态并提交 --- ## 变更记录 | 日期 | 变更内容 | 变更人 | |------|---------|-------| | 2026-03-05 | 初始创建 | AI Agent | | 2026-03-05 | 完成 Phase 3 工具协同改造 (Task 3.1-3.4) [AC-MRS-11~14] | AI Agent |