Files
X-Financial/document/development/agent week plan/day_1_foundation_models.md

317 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Day 1基础模型与工程骨架 TODO
目标:建立后续 6 天开发所需的后端地基。Day 1 不做复杂业务逻辑只做稳定模型、API 骨架、种子数据、基础审计和可运行验证。
参考文档:
- `document/development/agent plan/01_overall_architecture.md`
- `document/development/agent plan/02_semantic_ontology.md`
- `document/development/agent plan/06_data_contracts_and_governance.md`
- `document/development/agent plan/07_capability_registry.md`
- `document/development/agent plan/08_permission_confirmation.md`
- `document/development/agent plan/09_observability_and_trace.md`
## 0. 开始前检查
- [ ] 确认当前分支和工作区状态。
- [ ] 确认后端目录位置,例如 `/app/server`
- [ ] 确认前端目录位置,例如 `/app/web`
- [ ] 确认后端使用的框架、ORM、迁移方式。
- [ ] 找到现有数据库模型目录。
- [ ] 找到现有 API 路由目录。
- [ ] 找到现有启动入口。
- [ ] 找到现有测试目录。
- [ ] 找到现有种子数据或初始化脚本。
- [ ] 记录不应修改的无关文件。
## 1. 统一命名和边界
- [ ] 确认统一模块名使用 `agent_assets`
- [ ] 确认资产类型枚举为 `rule``skill``mcp``task`
- [ ] 确认资产状态枚举为 `draft``review``active``disabled`
- [ ] 确认审核状态枚举为 `pending``approved``rejected`
- [ ] 确认 Agent 枚举为 `orchestrator``user_agent``hermes`
- [ ] 确认运行来源枚举为 `user_message``schedule``system_event`
- [ ] 确认权限级别枚举为 `read``draft_write``approval_required``forbidden`
- [ ] 确认所有主键、外键、时间字段命名符合现有代码风格。
验收证据:
- [ ] 枚举命名在模型、Schema、服务层保持一致。
- [ ] 没有同时出现 `schedule``task` 两套用户可见命名。
## 2. 建立 AgentAsset 模型
- [ ] 新增或扩展模型文件,定义 `AgentAsset`
- [ ] 增加字段 `id`
- [ ] 增加字段 `asset_type`,取值 `rule | skill | mcp | task`
- [ ] 增加字段 `code`,作为业务编码。
- [ ] 增加字段 `name`
- [ ] 增加字段 `description`
- [ ] 增加字段 `domain`,例如 `expense | ar | ap | knowledge | system`
- [ ] 增加字段 `scenario_json`,保存适用场景。
- [ ] 增加字段 `owner`
- [ ] 增加字段 `reviewer`
- [ ] 增加字段 `status`
- [ ] 增加字段 `current_version`
- [ ] 增加字段 `config_json`
- [ ] 增加字段 `created_at`
- [ ] 增加字段 `updated_at`
- [ ]`code` 增加唯一约束。
- [ ]`asset_type` 增加索引。
- [ ]`status` 增加索引。
- [ ]`domain` 增加索引。
验收证据:
- [ ] 能创建一条规则资产。
- [ ] 能创建一条技能资产。
- [ ] 能创建一条 MCP 资产。
- [ ] 能创建一条任务资产。
## 3. 建立 AgentAssetVersion 模型
- [ ] 定义 `AgentAssetVersion`
- [ ] 增加字段 `id`
- [ ] 增加字段 `asset_id`
- [ ] 增加字段 `version`,例如 `v1.0.0`
- [ ] 增加字段 `content`
- [ ] 增加字段 `content_type`,取值 `markdown | json`
- [ ] 增加字段 `change_note`
- [ ] 增加字段 `created_by`
- [ ] 增加字段 `created_at`
- [ ] 增加 `asset_id + version` 唯一约束。
- [ ] 建立 `AgentAsset``AgentAssetVersion` 的关系。
- [ ] 约定规则资产的 `content` 保存 Markdown。
- [ ] 约定技能、MCP、任务资产的 `content` 保存 JSON 快照。
验收证据:
- [ ] 同一个资产不能重复创建同一个版本号。
- [ ] 资产详情能拿到最近 5 个版本。
## 4. 建立 AgentAssetReview 模型
- [ ] 定义 `AgentAssetReview`
- [ ] 增加字段 `id`
- [ ] 增加字段 `asset_id`
- [ ] 增加字段 `version`
- [ ] 增加字段 `reviewer`
- [ ] 增加字段 `review_status`
- [ ] 增加字段 `review_note`
- [ ] 增加字段 `reviewed_at`
- [ ] 增加字段 `created_at`
- [ ] 建立资产、版本、审核之间的查询关系。
- [ ] 增加服务层校验:没有 `approved` 审核时不能把规则置为 `active`
验收证据:
- [ ] `pending` 规则上线会被拒绝。
- [ ] `rejected` 规则上线会被拒绝。
- [ ] `approved` 规则可以上线。
## 5. 建立 AgentRun 模型
- [ ] 定义 `AgentRun`
- [ ] 增加字段 `id`
- [ ] 增加字段 `run_id`
- [ ] 增加字段 `agent`
- [ ] 增加字段 `source`
- [ ] 增加字段 `user_id`
- [ ] 增加字段 `task_id`
- [ ] 增加字段 `ontology_json`
- [ ] 增加字段 `route_json`
- [ ] 增加字段 `permission_level`
- [ ] 增加字段 `status`,取值 `running | succeeded | failed | blocked`
- [ ] 增加字段 `result_summary`
- [ ] 增加字段 `error_message`
- [ ] 增加字段 `started_at`
- [ ] 增加字段 `finished_at`
- [ ]`run_id` 增加唯一约束。
- [ ]`agent``status``started_at` 增加索引。
验收证据:
- [ ] 创建任意 Agent 执行记录时必须生成 `run_id`
- [ ] 失败执行能保存错误信息。
## 6. 建立 AgentToolCall 模型
- [ ] 定义 `AgentToolCall`
- [ ] 增加字段 `id`
- [ ] 增加字段 `run_id`
- [ ] 增加字段 `tool_type`,例如 `mcp | database | llm | ocr | rule_engine`
- [ ] 增加字段 `tool_name`
- [ ] 增加字段 `request_json`
- [ ] 增加字段 `response_json`
- [ ] 增加字段 `status`
- [ ] 增加字段 `duration_ms`
- [ ] 增加字段 `error_message`
- [ ] 增加字段 `created_at`
- [ ] 建立 `AgentRun``AgentToolCall` 的关系。
验收证据:
- [ ] 一个 `run_id` 下可以记录多个工具调用。
- [ ] 工具调用失败时不影响主运行日志保存。
## 7. 建立 SemanticParseLog 模型
- [ ] 定义 `SemanticParseLog`
- [ ] 增加字段 `id`
- [ ] 增加字段 `run_id`
- [ ] 增加字段 `user_id`
- [ ] 增加字段 `raw_query`
- [ ] 增加字段 `scenario`
- [ ] 增加字段 `intent`
- [ ] 增加字段 `entities_json`
- [ ] 增加字段 `time_range_json`
- [ ] 增加字段 `metrics_json`
- [ ] 增加字段 `constraints_json`
- [ ] 增加字段 `risk_flags_json`
- [ ] 增加字段 `permission_json`
- [ ] 增加字段 `confidence`
- [ ] 增加字段 `created_at`
验收证据:
- [ ] 能保存一条完整 8 字段语义解析日志。
- [ ] 能按 `run_id` 查询语义解析结果。
## 8. 建立 AuditLog 模型
- [ ] 定义 `AuditLog`
- [ ] 增加字段 `id`
- [ ] 增加字段 `actor`
- [ ] 增加字段 `action`
- [ ] 增加字段 `resource_type`
- [ ] 增加字段 `resource_id`
- [ ] 增加字段 `before_json`
- [ ] 增加字段 `after_json`
- [ ] 增加字段 `request_id`
- [ ] 增加字段 `created_at`
- [ ] 为规则保存、审核、上线、任务执行创建审计记录接口。
验收证据:
- [ ] 保存规则 Markdown 时有审计日志。
- [ ] 审核规则时有审计日志。
- [ ] 修改任务状态时有审计日志。
## 9. 建立 Schema / DTO
- [ ] 定义 `AgentAssetCreate`
- [ ] 定义 `AgentAssetUpdate`
- [ ] 定义 `AgentAssetRead`
- [ ] 定义 `AgentAssetListItem`
- [ ] 定义 `AgentAssetVersionRead`
- [ ] 定义 `AgentAssetReviewRead`
- [ ] 定义 `RuleMarkdownUpdate`
- [ ] 定义 `AgentRunRead`
- [ ] 定义 `AgentToolCallRead`
- [ ] 定义 `SemanticParseRead`
- [ ] 所有 JSON 字段在 DTO 中保持结构化,不返回字符串化 JSON。
验收证据:
- [ ] OpenAPI 文档能展示新增 Schema。
- [ ] 列表 DTO 不返回大块 Markdown 内容。
- [ ] 详情 DTO 返回当前版本内容。
## 10. 建立 API 骨架
- [ ] 新增 `GET /api/agent-assets`
- [ ] 新增 `GET /api/agent-assets/{asset_id}`
- [ ] 新增 `POST /api/agent-assets`
- [ ] 新增 `PATCH /api/agent-assets/{asset_id}`
- [ ] 新增 `GET /api/agent-assets/{asset_id}/versions`
- [ ] 新增 `POST /api/agent-assets/{asset_id}/versions`
- [ ] 新增 `POST /api/agent-assets/{asset_id}/reviews`
- [ ] 新增 `POST /api/agent-assets/{asset_id}/activate`
- [ ] 新增 `GET /api/agent-runs`
- [ ] 新增 `GET /api/agent-runs/{run_id}`
- [ ] 新增 `GET /api/audit-logs`
- [ ] 所有接口先返回真实数据库结果,不使用前端硬编码数据作为最终结果。
验收证据:
- [ ] 能调用资产列表接口。
- [ ] 能调用资产详情接口。
- [ ] 能调用版本接口。
- [ ] 能调用运行日志接口。
## 11. 建立服务层
- [ ] 新增资产查询服务。
- [ ] 新增资产保存服务。
- [ ] 新增版本创建服务。
- [ ] 新增审核服务。
- [ ] 新增上线校验服务。
- [ ] 新增 Agent Run 创建服务。
- [ ] 新增 Tool Call 记录服务。
- [ ] 新增审计日志服务。
- [ ] 所有服务函数返回明确错误,不直接把数据库异常暴露给前端。
验收证据:
- [ ] API 路由中不堆业务判断。
- [ ] 上线校验逻辑在服务层。
- [ ] 审计日志通过统一服务写入。
## 12. 建立种子数据
- [ ] 创建至少 3 条规则资产。
- [ ] 每条规则资产至少有 2 个版本。
- [ ] 至少 1 条规则为 `active`
- [ ] 至少 1 条规则为 `review`
- [ ] 至少 1 条规则为 `draft`
- [ ] 创建至少 2 条技能资产。
- [ ] 创建至少 2 条 MCP 资产。
- [ ] 创建至少 3 条任务资产。
- [ ] 为 active 规则创建 approved 审核记录。
- [ ] 为 review 规则创建 pending 审核记录。
验收证据:
- [ ] 资产列表按类型筛选时四类都有数据。
- [ ] 规则详情能看到版本和审核者。
## 13. 最小测试
- [ ] 编写资产模型创建测试。
- [ ] 编写版本唯一约束测试。
- [ ] 编写未审核不能上线测试。
- [ ] 编写资产列表接口测试。
- [ ] 编写资产详情接口测试。
- [ ] 编写 AgentRun 创建测试。
- [ ] 编写 AuditLog 写入测试。
验收证据:
- [ ] 后端核心测试通过。
- [ ] 测试失败时能定位到具体服务。
## 14. Day 1 验收
- [ ] 数据库能创建所有新增表或等价结构。
- [ ] API 服务能启动。
- [ ] OpenAPI 能看到新增接口。
- [ ] 资产列表接口返回规则、技能、MCP、任务。
- [ ] 规则资产有 Markdown 当前版本。
- [ ] 规则资产有最近版本列表。
- [ ] 未审核规则不能上线。
- [ ] AgentRun 能保存一条运行记录。
- [ ] AuditLog 能保存一条写操作记录。
- [ ] 所有完成项已用 `[x] ~~...~~` 标记。
## 阻塞记录
- [ ] 暂无。
## 日终交接
- [ ] 写明已完成模型。
- [ ] 写明已完成 API。
- [ ] 写明未完成问题。
- [ ] 写明 Day 2 前端联调需要使用的接口地址。