10 KiB
10 KiB
Day 1:基础模型与工程骨架 TODO
目标:建立后续 6 天开发所需的后端地基。Day 1 不做复杂业务逻辑,只做稳定模型、API 骨架、种子数据、基础审计和可运行验证。
参考文档:
document/development/agent plan/01_overall_architecture.mddocument/development/agent plan/02_semantic_ontology.mddocument/development/agent plan/06_data_contracts_and_governance.mddocument/development/agent plan/07_capability_registry.mddocument/development/agent plan/08_permission_confirmation.mddocument/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 前端联调需要使用的接口地址。