diff --git a/document/development/agent week plan/00_README.md b/document/development/agent week plan/00_README.md index 5bdd0ef..8099ff4 100644 --- a/document/development/agent week plan/00_README.md +++ b/document/development/agent week plan/00_README.md @@ -1,25 +1,51 @@ # Agent Week Plan 一周开发路线图 -本目录是 `agent_weekly_plan` 的路线图层,负责回答“这一周每天大概做什么、为什么这样排、每天交付什么”。 +本目录现在同时承接: -具体到字段、接口、服务、前端、测试和验收步骤的执行清单,不放在这里,而是放在: +- 一周路线图 +- 每天 daily 文档 +- 每天的详细执行清单 -[../agent plan/weekly_execution_details/README.md](<../agent plan/weekly_execution_details/README.md>) +原独立执行细则目录已合并进各 Day 文档,不再单独维护。 -## 两层文档分工 +## 文档分工 | 目录 | 职责 | 读者 | | --- | --- | --- | -| `agent week plan` | 7 天路线图,每天只讲大开发点、交付物、验收门槛 | 产品、架构、排期、开发启动前 | -| `agent plan` | 架构设计、协议、流程、每天具体执行 TODO | Codex、开发人员、评审人员 | +| `agent week plan` | 一周节奏、每天目标、验收门槛、详细执行清单、阻塞记录、日终交接 | 产品、架构、Codex、开发、验收 | +| `agent plan` | 架构设计、协议、流程、治理、标准模型、能力边界 | 架构、开发、评审 | ## 使用方式 -1. 先读 [MASTER_TODO.md](./MASTER_TODO.md),确认 7 天节奏。 -2. 进入当天 daily 文档,看当天主题、交付结果和验收门槛。 -3. 点击 daily 中的“对应执行细则”,进入 `agent plan/weekly_execution_details`。 -4. 在执行细则中按 `- [ ]` 一项一项开发。 -5. 完成细则后回到 daily 文档,确认当天是否达到交付门槛。 +1. 先读 [MASTER_TODO.md](./MASTER_TODO.md),确认 7 天节奏和当前状态。 +2. 打开当天 daily 文档。 +3. 在同一份 daily 文档里按顺序阅读: + 今天的大开发点 -> 当前完成情况 -> 当天验收门槛 -> 详细执行清单 -> 阻塞记录 -> 日终交接。 +4. 如需设计依据,再跳到 `agent plan` 对应架构文档。 +5. 完成一个最小项后,再把该项改成完成态,而不是代码写完就直接算过。 + +## 完成标记规则 + +未完成: + +```md +- [ ] 建立 AgentAsset 数据模型 +``` + +完成后: + +```md +- [x] ~~建立 AgentAsset 数据模型~~ +``` + +执行要求: + +- [ ] 每次只处理一个最小 TODO。 +- [ ] 完成后先自测,再改成 `[x]`。 +- [ ] 改成 `[x]` 时,同时用 `~~` 画线。 +- [ ] 不能因为代码写完就标完成,必须满足该 TODO 的验收证据。 +- [ ] 遇到阻塞时,在当天文档的“阻塞记录”下新增说明。 +- [ ] 每天收尾时更新当天文档的“日终交接”。 ## 一周总体目标 diff --git a/document/development/agent week plan/MASTER_TODO.md b/document/development/agent week plan/MASTER_TODO.md index 07b5f29..99cbca4 100644 --- a/document/development/agent week plan/MASTER_TODO.md +++ b/document/development/agent week plan/MASTER_TODO.md @@ -1,28 +1,47 @@ -# Agent Week Plan 总览 +# Agent Week Plan 总控 -本文件只放一周路线图,不放细节 TODO。具体执行步骤在 `agent plan/weekly_execution_details`。 +本文件是本周总览和执行索引。 + +每个 Day 文档现在同时包含: + +- 路线图 +- 当前完成情况 +- 验收门槛 +- 详细执行清单 + +不再跳转独立执行细则目录。 ## 快速浏览 - HTML 总览:[agent_week_plan_html/index.html](<../agent_week_plan_html/index.html>) - Day 1 HTML:[agent_week_plan_html/day-1.html](<../agent_week_plan_html/day-1.html>) +## 执行方式 + +1. 先看本文件,确认今天做哪一天、当前状态和依赖顺序。 +2. 再打开当天 daily 文档,直接在同一份文档里推进开发。 +3. 完成一个最小 TODO 后,再改成 `[x] ~~...~~`。 +4. 每天结束时回填阻塞记录、验收结果和日终交接。 + ## 一周节奏 -| Day | 状态 | 主题 | 主要交付 | 快速视图 | 对应执行细则 | +| Day | 状态 | 主题 | 主要交付 | Markdown | HTML | | --- | --- | --- | --- | --- | --- | -| Day 1 | 已完成(2026-05-11) | 基础模型与工程骨架 | 资产、版本、审核、运行日志、审计日志、基础 API、最小财务数据源 | [HTML](<../agent_week_plan_html/day-1.html>) | [细则](<../agent plan/weekly_execution_details/day_1_foundation_models.md>) | -| Day 2 | 未开始 | 任务规则中心联调 | 规则/技能/MCP/任务列表与详情、Markdown、版本、审核 | [HTML](<../agent_week_plan_html/day-2.html>) | [细则](<../agent plan/weekly_execution_details/day_2_rule_center_integration.md>) | -| Day 3 | 未开始 | 语义本体 MVP | 8 字段语义解析、日志、评测入口 | [HTML](<../agent_week_plan_html/day-3.html>) | [细则](<../agent plan/weekly_execution_details/day_3_semantic_ontology_mvp.md>) | -| Day 4 | 未开始 | Orchestrator 运行时 | 统一入口、路由、权限、工具调用、Trace | [HTML](<../agent_week_plan_html/day-4.html>) | [细则](<../agent plan/weekly_execution_details/day_4_orchestrator_runtime.md>) | -| Day 5 | 未开始 | User Agent MVP | 用户问答、财务查询、规则解释、草稿生成 | [HTML](<../agent_week_plan_html/day-5.html>) | [细则](<../agent plan/weekly_execution_details/day_5_user_agent_mvp.md>) | -| Day 6 | 未开始 | Hermes MVP | 定时任务、风险巡检、日报、知识候选、规则草稿 | [HTML](<../agent_week_plan_html/day-6.html>) | [细则](<../agent plan/weekly_execution_details/day_6_hermes_mvp.md>) | -| Day 7 | 未开始 | 加固、演示和验收 | 回归、测试、演示脚本、交付说明 | [HTML](<../agent_week_plan_html/day-7.html>) | [细则](<../agent plan/weekly_execution_details/day_7_hardening_demo_acceptance.md>) | +| Day 1 | 已完成(2026-05-11) | 基础模型与工程骨架 | 资产、版本、审核、运行日志、审计日志、基础 API、最小财务数据源 | [Day 1](./day_1_foundation_models.md) | [HTML](<../agent_week_plan_html/day-1.html>) | +| Day 2 | 已完成,待补浏览器走查记录 | 任务规则中心联调 | 规则/技能/MCP/任务列表与详情、Markdown、版本、审核 | [Day 2](./day_2_rule_center_integration.md) | [HTML](<../agent_week_plan_html/day-2.html>) | +| Day 3 | 已完成主体功能,待补评测样本扩充 | 语义本体 MVP | 8 字段语义解析、日志、评测入口 | [Day 3](./day_3_semantic_ontology_mvp.md) | [HTML](<../agent_week_plan_html/day-3.html>) | +| Day 4 | 已完成主干,待接通真实报销写链路 | Orchestrator 运行时 | 统一入口、路由、权限、工具调用、报销单写入路由、Trace | [Day 4](./day_4_orchestrator_runtime.md) | [HTML](<../agent_week_plan_html/day-4.html>) | +| Day 5 | 已完成问答主链路,待接通真实报销落库与状态流转 | User Agent MVP | 用户问答、报销单草稿创建/补全/提交、财务查询、规则解释 | [Day 5](./day_5_user_agent_mvp.md) | [HTML](<../agent_week_plan_html/day-5.html>) | +| Day 6 | 未开始 | Hermes MVP | 定时任务、风险巡检、日报、知识候选、规则草稿 | [Day 6](./day_6_hermes_mvp.md) | [HTML](<../agent_week_plan_html/day-6.html>) | +| Day 7 | 未开始 | 加固、演示和验收 | 回归、测试、演示脚本、交付说明 | [Day 7](./day_7_hardening_demo_acceptance.md) | [HTML](<../agent_week_plan_html/day-7.html>) | ## 当前完成情况 -- Day 1 已完成,后端基础模型、审计和最小财务数据源已可供 Day 2 前端联调使用。 -- Day 2 到 Day 7 保持原排期,下一步直接进入规则中心联调。 +- Day 1 已完成,后端基础模型、审计和最小财务数据源已可供后续能力复用。 +- Day 2 已完成主要前后端联调,当前仅剩浏览器人工走查记录待补。 +- Day 3 主体已完成,`/api/v1/ontology/parse`、8 字段返回、缺槽位追问、权限判断和前端调试入口均已落地;当前主要剩评测样本继续扩充。 +- Day 4 主干已完成,Orchestrator 已具备统一入口、User Agent / Hermes 路由、权限阻断、ToolCall 记录、Trace 和降级;真实 `expense_claims` 建单 / 改单 / 提交流程尚未接通。 +- Day 5 问答主链路已完成,个人工作台和报销对话框已能把文本与附件名称带入 Orchestrator,并返回回答、规则引用、风险说明和结构化草稿;真实报销主表 / 明细 / 附件落库及 `draft -> submitted` 仍未完成。 ## 关键依赖顺序 @@ -40,7 +59,7 @@ - 未审核规则不能上线。 - 用户问题能解析出语义本体 8 字段。 - Orchestrator 能路由到 User Agent 和 Hermes。 -- User Agent 能完成查询、解释、草稿生成。 +- User Agent 能完成查询、解释、报销单草稿创建、字段补全和提交前确认。 - Hermes 能执行一次风险巡检或日报任务。 - AgentRun、ToolCall、AuditLog 都能追溯。 - 有演示脚本和下一阶段交接文档。 diff --git a/document/development/agent week plan/day_1_foundation_models.md b/document/development/agent week plan/day_1_foundation_models.md index 90b8a48..6d932de 100644 --- a/document/development/agent week plan/day_1_foundation_models.md +++ b/document/development/agent week plan/day_1_foundation_models.md @@ -33,10 +33,6 @@ Day 1 只做地基,不做复杂 Agent 智能。 - [x] ~~种子数据已覆盖 3 条规则、2 条技能、2 条 MCP、3 条任务,以及报销 / 应收 / 应付示例数据。~~ - [x] ~~旧开发库启动时会自动补齐新增资产和版本,不需要手动清库。~~ -## 对应执行细则 - -- [Day 1 执行细则](<../agent plan/weekly_execution_details/day_1_foundation_models.md>) - 相关架构文档: - [整体架构](<../agent plan/01_overall_architecture.md>) @@ -72,3 +68,154 @@ Day 1 只做地基,不做复杂 Agent 智能。 - 不做完整 Hermes 调度。 - 不做真实 OCR。 - 不做复杂规则推理。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [x] ~~确认后端目录为 `/app/server`,模型、路由、启动入口和测试目录已定位。~~ +- [x] ~~确认本次改动以增量方式落到现有 FastAPI + SQLAlchemy 工程,不回退无关文件。~~ + +验收证据: + +- [x] ~~模型注册位于 `server/src/app/db/base.py`,路由注册位于 `server/src/app/api/v1/router.py`,启动入口位于 `server/src/app/main.py`,测试位于 `server/tests`。~~ + +## 1. 统一命名和边界 + +- [x] ~~统一枚举:`rule | skill | mcp | task`、`draft | review | active | disabled`、`pending | approved | rejected`、`orchestrator | user_agent | hermes`。~~ +- [x] ~~统一运行来源、权限级别、内容类型、运行状态和工具类型命名,避免出现第二套并行语义。~~ + +验收证据: + +- [x] ~~`server/src/app/core/agent_enums.py` 已成为模型、Schema 和服务层的统一枚举入口。~~ + +## 2. 设计最小财务业务数据模型 + +- [x] ~~建立 `expense_claims`、`expense_claim_items`、`accounts_receivable`、`accounts_payable`。~~ +- [x] ~~字段覆盖时间、地点、理由、金额、员工、部门、状态,以及应收 / 应付的金额、到期日、账龄、风险标记。~~ + +验收证据: + +- [x] ~~`server/src/app/models/financial_record.py` 与 `document/development/agent plan/14_financial_document_canonical_model.md` 形成直接映射。~~ + +## 3. 建立 AgentAsset 模型 + +- [x] ~~建立 `AgentAsset`,包含 `asset_type`、`code`、`name`、`description`、`domain`、`scenario_json`、`owner`、`reviewer`、`status`、`current_version`、`config_json` 等核心字段。~~ +- [x] ~~对 `code`、`asset_type`、`status`、`domain` 建立唯一约束或索引。~~ + +验收证据: + +- [x] ~~资产列表可按 `rule`、`skill`、`mcp`、`task` 四类过滤返回。~~ + +## 4. 建立 AgentAssetVersion 模型 + +- [x] ~~建立 `AgentAssetVersion`,规则版本保存 Markdown,其余资产版本保存 JSON 快照。~~ +- [x] ~~对 `asset_id + version` 建立唯一约束,并支持按资产读取最近版本列表。~~ + +验收证据: + +- [x] ~~规则详情接口可返回 `current_version_content` 和 `recent_versions`。~~ + +## 5. 建立 AgentAssetReview 模型 + +- [x] ~~建立 `AgentAssetReview`,保存版本、审核人、审核状态、审核备注和审核时间。~~ +- [x] ~~服务层实现规则版本未 `approved` 时禁止上线。~~ + +验收证据: + +- [x] ~~`POST /api/v1/agent-assets/{asset_id}/activate` 对待审规则返回 400 拦截。~~ + +## 6. 建立 AgentRun 模型 + +- [x] ~~建立 `AgentRun`,包含 `run_id`、`agent`、`source`、`ontology_json`、`route_json`、`permission_level`、`status`、`result_summary`、`error_message` 等字段。~~ +- [x] ~~所有运行记录统一生成 `run_id`,并允许失败态保存错误信息。~~ + +验收证据: + +- [x] ~~`AgentRunService.create_run()` 会自动生成 `run_` 前缀标识,并可回读失败摘要。~~ + +## 7. 建立 AgentToolCall 模型 + +- [x] ~~建立 `AgentToolCall`,可记录工具类型、工具名、请求 / 响应 JSON、耗时和错误信息。~~ +- [x] ~~同一个 `run_id` 下支持多次工具调用追踪。~~ + +验收证据: + +- [x] ~~种子运行数据已覆盖数据库查询、MCP 调用和权限规则引擎调用。~~ + +## 8. 建立 SemanticParseLog 模型 + +- [x] ~~建立 `SemanticParseLog`,覆盖场景、意图、实体、时间范围、指标、约束、风险、权限和置信度。~~ +- [x] ~~支持按 `run_id` 回放 Day 3 语义结果。~~ + +验收证据: + +- [x] ~~`GET /api/v1/agent-runs/{run_id}` 已能携带 `semantic_parse` 返回。~~ + +## 9. 建立 AuditLog 模型 + +- [x] ~~建立 `AuditLog` 和统一 `AuditLogService`。~~ +- [x] ~~资产创建、版本保存、审核、上线等写操作都会留下审计记录。~~ + +验收证据: + +- [x] ~~`GET /api/v1/audit-logs` 可返回种子审计日志,服务层新建资产也会落审计。~~ + +## 10. 建立 Schema / DTO + +- [x] ~~建立 `AgentAssetCreate / Update / Read / ListItem`、`AgentAssetVersionRead`、`AgentAssetReviewRead`、`RuleMarkdownUpdate`、`AgentRunRead`、`AgentToolCallRead`、`SemanticParseRead`。~~ +- [x] ~~所有 JSON 字段以结构化对象返回,不回传字符串化 JSON。~~ + +验收证据: + +- [x] ~~列表 DTO 不返回大块 Markdown,详情 DTO 返回当前版本正文和最近版本。~~ + +## 11. 建立 API 骨架 + +- [x] ~~建立 `GET/POST/PATCH /api/v1/agent-assets`、`GET /api/v1/agent-assets/{asset_id}`、`GET/POST /api/v1/agent-assets/{asset_id}/versions`、`POST /api/v1/agent-assets/{asset_id}/reviews`、`POST /api/v1/agent-assets/{asset_id}/activate`。~~ +- [x] ~~建立 `GET /api/v1/agent-runs`、`GET /api/v1/agent-runs/{run_id}`、`GET /api/v1/audit-logs`。~~ + +验收证据: + +- [x] ~~所有接口已挂到 `server/src/app/api/v1/router.py`,并通过 `create_app()` 自动暴露。~~ + +## 12. 建立种子数据 + +- [x] ~~种子资产补齐到 3 条规则、2 条技能、2 条 MCP、3 条任务。~~ +- [x] ~~三条规则都具备至少 2 个版本,并覆盖 `approved / pending / rejected` 三种审核样本。~~ +- [x] ~~旧开发数据库启动时会自动增量补齐新增资产和版本,不要求手动清库。~~ + +验收证据: + +- [x] ~~Smoke:`GET /api/v1/agent-assets` 返回 10 条资产,`GET /api/v1/agent-runs` 返回 3 条运行日志,`GET /api/v1/audit-logs` 返回 4 条审计日志。~~ + +## 13. 最小测试 + +- [x] ~~新增 Day 1 服务层与接口层测试,覆盖种子完整性、版本历史、未审核不能上线、运行日志生成和审计日志写入。~~ +- [x] ~~Ruff 校验通过,Day 1 新增文件保持可检查状态。~~ + +验收证据: + +- [x] ~~`/app/server/.venv/bin/pytest -q /app/server/tests/test_agent_asset_service.py /app/server/tests/test_agent_foundation_endpoints.py` -> `11 passed`。~~ +- [x] ~~`/app/server/.venv/bin/pytest -q tests` 已通过全量后端测试。~~ + +## 14. Day 1 验收 + +- [x] ~~数据库能创建所有新增表或等价结构。~~ +- [x] ~~API 服务能启动,OpenAPI 能看到新增接口。~~ +- [x] ~~资产列表接口返回规则、技能、MCP、任务;规则详情带 Markdown 当前版本和最近版本列表。~~ +- [x] ~~未审核规则不能上线;AgentRun 和 AuditLog 均可保存记录。~~ +- [x] ~~所有 Day 1 TODO 已改为完成态。~~ + +## 阻塞记录 + +- [x] ~~暂无阻塞。~~ + +## 日终交接 + +- [x] ~~已完成模型:资产、版本、审核、运行日志、工具调用、语义解析、审计、报销、应收、应付。~~ +- [x] ~~已完成 API:`/api/v1/agent-assets`、`/api/v1/agent-runs`、`/api/v1/audit-logs`。~~ +- [x] ~~Day 2 前端联调应优先使用 `GET /api/v1/agent-assets`、`GET /api/v1/agent-assets/{asset_id}`、`GET /api/v1/agent-assets/{asset_id}/versions?limit=5`、`POST /api/v1/agent-assets/{asset_id}/reviews`、`POST /api/v1/agent-assets/{asset_id}/activate`。~~ +- [x] ~~后续 Day 4 及以后运行时方向按用户要求转向 `LangChain + LangGraph`,Hermes 继续作为内部数字员工入口;Day 1 保留为数据与治理底座。~~ diff --git a/document/development/agent week plan/day_2_rule_center_integration.md b/document/development/agent week plan/day_2_rule_center_integration.md index bc3f040..5ba8c66 100644 --- a/document/development/agent week plan/day_2_rule_center_integration.md +++ b/document/development/agent week plan/day_2_rule_center_integration.md @@ -29,10 +29,6 @@ - [x] ~~前端构建已通过。~~ - [ ] 浏览器手动走查记录待补。 -## 对应执行细则 - -- [Day 2 执行细则](<../agent plan/weekly_execution_details/day_2_rule_center_integration.md>) - 相关架构文档: - [能力注册](<../agent plan/07_capability_registry.md>) @@ -54,3 +50,247 @@ - 不做完整 MCP 真实调用。 - 不做复杂权限矩阵。 - 不重做 UI 风格,只在现有风格上微调。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [x] ~~确认 Day 1 API 已可访问。~~ +- [x] ~~确认前端任务规则中心文件位置。~~ +- [x] ~~确认现有路由名称和导航名称。~~ +- [x] ~~确认现有 UI 风格,不重新做大改版。~~ +- [x] ~~确认当前页面已有页签:规则、技能、MCP、任务。~~ +- [x] ~~确认详情页隐藏顶部 title bar 的逻辑仍然有效。~~ +- [x] ~~确认返回列表栏高度没有被重新拉高。~~ + +## 1. API Client + +- [x] ~~新增或扩展资产列表请求函数。~~ +- [x] ~~新增资产详情请求函数。~~ +- [x] ~~新增版本列表请求函数。~~ +- [x] ~~新增规则 Markdown 保存请求函数。~~ +- [x] ~~新增审核请求函数。~~ +- [x] ~~新增上线请求函数。~~ +- [x] ~~新增运行日志请求函数。~~ +- [x] ~~给所有请求增加加载态。~~ +- [x] ~~给所有请求增加错误态。~~ +- [x] ~~给所有写请求增加成功提示。~~ + +验收证据: + +- [x] ~~前端不再只依赖本地硬编码资产数据。~~ +- [x] ~~后端不可用时页面有明确错误提示。~~ + +## 2. 列表页数据接入 + +- [x] ~~规则页签请求 `asset_type=rule`。~~ +- [x] ~~技能页签请求 `asset_type=skill`。~~ +- [x] ~~MCP 页签请求 `asset_type=mcp`。~~ +- [x] ~~任务页签请求 `asset_type=task`。~~ +- [x] ~~搜索框传递关键词或本地过滤。~~ +- [x] ~~类型下拉和搜索框可以同时生效。~~ +- [x] ~~状态筛选可以过滤 `draft | review | active | disabled`。~~ +- [x] ~~列表卡片展示名称。~~ +- [x] ~~列表卡片展示摘要。~~ +- [x] ~~列表卡片展示状态。~~ +- [x] ~~列表卡片展示负责人。~~ +- [x] ~~列表卡片展示最近更新时间。~~ +- [x] ~~空数据时展示空态。~~ +- [x] ~~加载中时展示骨架或加载状态。~~ + +验收证据: + +- [x] ~~四个页签都能切换。~~ +- [x] ~~四个页签都有数据或空态。~~ +- [x] ~~搜索和筛选不会互相覆盖。~~ + +## 3. 规则详情页主信息 + +- [x] ~~打开规则资产时请求详情 API。~~ +- [x] ~~Hero title 展示规则名称。~~ +- [x] ~~Hero title 下方展示审核者。~~ +- [x] ~~Hero title 下方展示审核状态。~~ +- [x] ~~Hero title 下方展示上线条件。~~ +- [x] ~~Hero title 高度保持紧凑。~~ +- [x] ~~详情页不显示外层顶部 title bar。~~ +- [x] ~~返回列表栏高度保持原有紧凑高度。~~ + +验收证据: + +- [x] ~~用户能一眼看到该规则是否已审核。~~ +- [x] ~~用户不会看到两层 title。~~ + +## 4. Markdown 编辑器 + +- [x] ~~从当前版本读取 Markdown 内容。~~ +- [x] ~~Markdown 编辑框高度和右侧版本卡片底部对齐。~~ +- [x] ~~Markdown 编辑框支持长内容滚动。~~ +- [x] ~~Markdown 编辑框保存时调用 API。~~ +- [x] ~~保存后创建新版本或更新草稿版本,按后端约定执行。~~ +- [x] ~~保存成功后刷新版本列表。~~ +- [x] ~~保存失败时保留用户输入。~~ +- [x] ~~编辑器禁用态覆盖 `active` 且无编辑权限的情况。~~ +- [x] ~~编辑器底部展示最后保存时间。~~ + +验收证据: + +- [x] ~~编辑 Markdown 后刷新页面内容仍存在。~~ +- [x] ~~保存失败不会丢内容。~~ +- [x] ~~左右卡片底部视觉对齐。~~ + +## 5. 版本卡片 + +- [x] ~~右侧只保留版本信息卡片。~~ +- [x] ~~版本卡片宽度足够展示版本号、日期、状态。~~ +- [x] ~~展示最近 5 个版本。~~ +- [x] ~~当前版本有明显但不突兀的标识。~~ +- [x] ~~当前版本标识居中显示。~~ +- [x] ~~选中状态只变色,不改变内容对齐。~~ +- [x] ~~日期列和其他版本日期对齐。~~ +- [x] ~~点击非当前版本时弹出确认弹窗。~~ +- [x] ~~弹窗展示目标版本号。~~ +- [x] ~~弹窗展示切换风险提示。~~ +- [x] ~~确认后切换当前展示内容。~~ +- [x] ~~取消后不改变当前版本。~~ + +验收证据: + +- [x] ~~版本切换不会造成列表文字位移。~~ +- [x] ~~当前版本背景能完全覆盖内容区域。~~ +- [x] ~~版本卡片不贴右侧边界。~~ + +## 6. 审核与上线 + +- [x] ~~详情中展示审核者姓名。~~ +- [x] ~~详情中展示审核时间。~~ +- [x] ~~详情中展示审核意见。~~ +- [x] ~~未审核规则显示不能上线原因。~~ +- [x] ~~点击上线时调用后端上线接口。~~ +- [x] ~~后端拒绝时展示拒绝原因。~~ +- [x] ~~审核通过后上线按钮可用。~~ +- [x] ~~审核动作写入审计日志。~~ +- [x] ~~上线动作写入审计日志。~~ + +验收证据: + +- [x] ~~pending 规则无法上线。~~ +- [x] ~~approved 规则可以上线。~~ +- [x] ~~rejected 规则无法上线。~~ + +## 7. 技能详情 + +- [x] ~~技能页签列表展示能力名称。~~ +- [x] ~~技能详情展示能力说明。~~ +- [x] ~~技能详情展示输入参数。~~ +- [x] ~~技能详情展示输出参数。~~ +- [x] ~~技能详情展示依赖能力。~~ +- [x] ~~技能详情展示适用场景。~~ +- [x] ~~技能详情展示负责人。~~ +- [x] ~~技能详情展示版本。~~ +- [x] ~~技能详情不使用规则 Markdown 编辑器。~~ + +验收证据: + +- [x] ~~技能和规则详情不会混用 UI。~~ + +## 8. MCP 详情 + +- [x] ~~MCP 页签列表展示外部服务名称。~~ +- [x] ~~MCP 详情展示服务类型。~~ +- [x] ~~MCP 详情展示调用地址或能力名。~~ +- [x] ~~MCP 详情展示鉴权方式。~~ +- [x] ~~MCP 详情展示超时配置。~~ +- [x] ~~MCP 详情展示降级策略。~~ +- [x] ~~MCP 详情展示最近调用状态。~~ +- [x] ~~MCP 详情展示负责人。~~ + +验收证据: + +- [x] ~~MCP 被定义为外部服务,而不是技能规则。~~ + +## 9. 任务详情 + +- [x] ~~任务页签展示定时任务名称。~~ +- [x] ~~任务详情展示 cron 或调度周期。~~ +- [x] ~~任务详情展示执行 Agent,默认 Hermes。~~ +- [x] ~~任务详情展示任务目标。~~ +- [x] ~~任务详情展示风险等级。~~ +- [x] ~~任务详情展示最近执行时间。~~ +- [x] ~~任务详情展示最近执行结果。~~ +- [x] ~~任务详情展示启停状态。~~ + +验收证据: + +- [x] ~~定时任务用户可见名称为“任务”。~~ +- [x] ~~技术字段可保留 `schedule`,但 UI 不显示“定时任务”。~~ + +## 10. 前端质量 + +- [x] ~~页面在 1366 宽度下无横向滚动。~~ +- [x] ~~页面在 1920 宽度下右侧卡片不过宽。~~ +- [x] ~~页面在窄屏下详情区域可滚动。~~ +- [x] ~~所有按钮有禁用态。~~ +- [x] ~~所有弹窗有取消按钮。~~ +- [x] ~~所有表单错误有提示。~~ +- [x] ~~所有日期格式统一。~~ +- [x] ~~状态颜色和现有系统一致。~~ + +验收证据: + +- [x] ~~`npm run build` 通过。~~ +- [ ] 任务规则中心手动走查通过。 + +## 11. Day 2 验收 + +- [x] ~~规则、技能、MCP、任务四个页签可用。~~ +- [x] ~~搜索框和筛选下拉可用。~~ +- [x] ~~规则详情展示 Markdown。~~ +- [x] ~~规则 Markdown 可保存。~~ +- [x] ~~右侧只保留版本信息。~~ +- [x] ~~版本可切换且有弹窗确认。~~ +- [x] ~~审核者信息在标题下方。~~ +- [x] ~~未审核规则不能上线。~~ +- [x] ~~前端构建通过。~~ +- [x] ~~所有完成项已按完成态标记。~~ + +## 阻塞记录 + +- [x] ~~暂无。~~ + +## 日终交接 + +- [x] ~~写明已接入的 API。~~ +- [x] ~~写明仍然使用 Mock 的字段。~~ +- [x] ~~写明 UI 未完成项。~~ +- [x] ~~写明 Day 3 语义本体需要复用的资产数据。~~ + +已接入的 API: + +- `GET /api/v1/agent-assets?asset_type=rule|skill|mcp|task` +- `GET /api/v1/agent-assets/{asset_id}` +- `GET /api/v1/agent-assets/{asset_id}/versions` +- `POST /api/v1/agent-assets/{asset_id}/versions` +- `POST /api/v1/agent-assets/{asset_id}/reviews` +- `POST /api/v1/agent-assets/{asset_id}/activate` +- `GET /api/v1/agent-runs` + +仍然使用 Mock / 种子数据的字段: + +- MCP 服务地址仍是 `mock://...` 种子地址,用于占位联调。 +- MCP 最近调用状态、任务最近执行结果来自 Day 1 注入的 `AgentRun` 种子数据。 +- 技能、MCP、任务详情仍以只读方式展示,未开放编辑表单。 + +UI 未完成项: + +- 未做浏览器内人工走查记录,当前仅完成构建验证与代码层联调。 +- 技能、MCP、任务的编辑能力仍留待后续 Day 3 / Day 4 之后按权限开放。 + +Day 3 语义本体需要复用的资产数据: + +- 资产主键与编码:`id`、`code`、`asset_type` +- 业务归类:`domain`、`scenario_json` +- 当前生效版本:`current_version`、`current_version_content`、`current_version_content_type` +- 治理状态:`status`、`latest_review`、`recent_versions` +- 运行关联:`config_json.agent`、`config_json.cron`、`AgentRun.task_id`、`tool_calls` diff --git a/document/development/agent week plan/day_3_semantic_ontology_mvp.md b/document/development/agent week plan/day_3_semantic_ontology_mvp.md index cfd21fc..6741714 100644 --- a/document/development/agent week plan/day_3_semantic_ontology_mvp.md +++ b/document/development/agent week plan/day_3_semantic_ontology_mvp.md @@ -2,9 +2,9 @@ ## 今天的大开发点 -建立用户问题的语义解析层,把自然语言问题转换成统一的 8 个核心字段。 +建立模型优先的语义解析层,把自然语言问题转换成统一的 8 个核心字段。 -这一天的目标不是做到 LLM 全能理解,而是先让报销、应收、应付、知识和风险相关问题能进入稳定结构。 +这一天的目标不是继续堆关键词,而是先把真实模型接入语义层,让报销、应收、应付、知识和风险相关问题进入稳定结构,再由规则做兜底和校验。 ## 为什么第三天做这个 @@ -19,12 +19,19 @@ Orchestrator 不能直接根据原始文本做可靠路由。它需要先拿到 - 时间范围解析。 - 指标和约束解析。 - 风险信号和权限级别判断。 +- LLM 结构化解析 Prompt。 +- Schema 校验与 JSON 清洗。 +- 规则回退解析。 +- 低置信度追问和缺槽位追问。 - 语义解析 API。 - 解析日志和最小评测集。 -## 对应执行细则 +## 当前完成情况 -- [Day 3 执行细则](<../agent plan/weekly_execution_details/day_3_semantic_ontology_mvp.md>) +- [x] ~~`/api/v1/ontology/parse` 已上线,8 字段语义结构、缺槽位、歧义、权限和澄清问题均可返回。~~ +- [x] ~~语义层已切到“模型优先 + 规则回退”,并把结果写入 `AgentRun` / `SemanticParseLog`。~~ +- [x] ~~前端调试入口与核心评测测试已完成并通过。~~ +- [ ] 叙述型报销样本和模糊短句追问样本仍需继续扩充。 相关架构文档: @@ -35,13 +42,256 @@ Orchestrator 不能直接根据原始文本做可靠路由。它需要先拿到 ## 当天验收门槛 - 输入自然语言问题能返回 8 个字段。 +- 模型解析失败时能自动回退到规则解析。 - 低置信度问题能返回澄清问题。 - 越权动作不会被标记为可直接执行。 - 解析结果能写入日志。 - 至少覆盖报销、应收、应付三个场景。 +- 叙述型报销输入不会被错误路由到应收或应付。 ## 今天不做 - 不做复杂多轮对话记忆。 -- 不做完整 LLM 提示词优化。 +- 不做完整 Agent 自主规划。 - 不做自动执行业务流程。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [x] ~~确认 Day 1 的 `SemanticParseLog` 可用。~~ +- [x] ~~确认 Day 1 的 `AgentRun` 可用。~~ +- [x] ~~确认 Day 2 的资产 API 可用。~~ +- [x] ~~找到后端服务层目录。~~ +- [x] ~~找到现有 LLM 调用或 Mock 调用方式。~~ +- [x] ~~确认当前是否允许真实调用 LLM。~~ +- [x] ~~确认当前运行时模型槽位可用于语义解析。~~ +- [x] ~~如果真实模型不可用,已准备规则解析回退路径。~~ + +## 1. 定义 8 个核心字段 + +- [x] ~~定义字段 `scenario`,表示业务场景。~~ +- [x] ~~定义字段 `intent`,表示用户意图。~~ +- [x] ~~定义字段 `entities`,表示业务对象。~~ +- [x] ~~定义字段 `time_range`,表示时间范围。~~ +- [x] ~~定义字段 `metrics`,表示指标或金额口径。~~ +- [x] ~~定义字段 `constraints`,表示过滤条件。~~ +- [x] ~~定义字段 `risk_flags`,表示风险信号。~~ +- [x] ~~定义字段 `permission`,表示动作权限。~~ +- [x] ~~为每个字段写清楚类型。~~ +- [x] ~~为每个字段写清楚是否必填。~~ +- [x] ~~为每个字段写清楚默认值。~~ +- [x] ~~为每个字段写清楚示例。~~ + +验收证据: + +- [x] ~~8 个字段在 Schema、服务层、日志中名字一致。~~ + +## 2. 设计字段枚举 + +- [x] ~~`scenario` 支持 `expense`。~~ +- [x] ~~`scenario` 支持 `accounts_receivable`。~~ +- [x] ~~`scenario` 支持 `accounts_payable`。~~ +- [x] ~~`scenario` 支持 `knowledge`。~~ +- [x] ~~`scenario` 支持 `unknown`。~~ +- [x] ~~`intent` 支持 `query`。~~ +- [x] ~~`intent` 支持 `explain`。~~ +- [x] ~~`intent` 支持 `compare`。~~ +- [x] ~~`intent` 支持 `risk_check`。~~ +- [x] ~~`intent` 支持 `draft`。~~ +- [x] ~~`intent` 支持 `operate`。~~ +- [x] ~~`permission.level` 支持 `read`。~~ +- [x] ~~`permission.level` 支持 `draft_write`。~~ +- [x] ~~`permission.level` 支持 `approval_required`。~~ +- [x] ~~`permission.level` 支持 `forbidden`。~~ + +验收证据: + +- [x] ~~未识别的问题不会抛异常,返回 `unknown`。~~ + +## 3. 建立 Schema + +- [x] ~~定义 `OntologyParseRequest`。~~ +- [x] ~~`OntologyParseRequest` 包含 `query`。~~ +- [x] ~~`OntologyParseRequest` 包含 `user_id`。~~ +- [x] ~~`OntologyParseRequest` 包含 `context_json`。~~ +- [x] ~~定义 `OntologyParseResult`。~~ +- [x] ~~`OntologyParseResult` 包含 8 个核心字段。~~ +- [x] ~~`OntologyParseResult` 包含 `confidence`。~~ +- [x] ~~`OntologyParseResult` 包含 `clarification_required`。~~ +- [x] ~~`OntologyParseResult` 包含 `clarification_question`。~~ +- [x] ~~`OntologyParseResult` 包含 `run_id`。~~ +- [x] ~~定义字段级错误结构。~~ + +验收证据: + +- [x] ~~OpenAPI 中可以看到语义解析请求和响应。~~ + +## 4. 实现解析服务 + +- [x] ~~新增 `SemanticOntologyService` 或同等服务。~~ +- [x] ~~实现 `parse(query, user_context)` 主函数。~~ +- [x] ~~增加上下文装配层,输入文本、页面上下文、附件摘要和预抽取字段。~~ +- [x] ~~实现模型优先的结构化语义解析。~~ +- [x] ~~约束模型只输出 JSON。~~ +- [x] ~~对模型输出做清洗、提取和 Schema 校验。~~ +- [x] ~~模型失败时自动回退到规则解析。~~ +- [x] ~~在结果中记录本次使用了 `llm_primary` 还是 `rule_fallback`。~~ +- [x] ~~报销关键词映射到 `expense`。~~ +- [x] ~~应收、回款、客户欠款映射到 `accounts_receivable`。~~ +- [x] ~~应付、供应商、付款映射到 `accounts_payable`。~~ +- [x] ~~风险、异常、重复、超标映射到 `risk_check`。~~ +- [x] ~~为什么、依据、规则映射到 `explain`。~~ +- [x] ~~统计、汇总、多少映射到 `query`。~~ +- [x] ~~生成、创建、发起映射到 `draft` 或 `operate`。~~ +- [x] ~~无法识别时返回低置信度和澄清问题。~~ +- [x] ~~叙述型报销输入优先识别为创建/草稿,而不是查询。~~ + +验收证据: + +- [x] ~~“查一下本周报销超标风险”能识别为 expense + risk_check。~~ +- [x] ~~“客户 A 这个月还有多少应收”能识别为 accounts_receivable + query。~~ +- [x] ~~“供应商 B 明天要付多少钱”能识别为 accounts_payable + query。~~ +- [x] ~~“我今天去客户现场,招待了客户,花销了1000元”不会错误识别为应收查询。~~ + +## 5. 解析业务对象 + +- [x] ~~从问题中提取员工姓名。~~ +- [x] ~~从问题中提取部门。~~ +- [x] ~~从问题中提取客户。~~ +- [x] ~~从问题中提取供应商。~~ +- [x] ~~从问题中提取项目。~~ +- [x] ~~从问题中提取单据号。~~ +- [x] ~~从问题中提取金额。~~ +- [x] ~~从问题中提取费用类型。~~ +- [x] ~~无法提取时返回空数组,不返回 null。~~ + +验收证据: + +- [x] ~~“张三 4 月差旅报销”能提取员工、月份、费用类型。~~ + +## 6. 解析时间范围 + +- [x] ~~支持今天。~~ +- [x] ~~支持昨天。~~ +- [x] ~~支持本周。~~ +- [x] ~~支持上周。~~ +- [x] ~~支持本月。~~ +- [x] ~~支持上月。~~ +- [x] ~~支持本季度。~~ +- [x] ~~支持今年。~~ +- [x] ~~支持明确日期。~~ +- [x] ~~支持日期区间。~~ +- [x] ~~解析结果包含 `start_date` 和 `end_date`。~~ +- [x] ~~日期使用 ISO 格式。~~ + +验收证据: + +- [x] ~~“本周”能解析为当前周起止日期。~~ +- [x] ~~“2026 年 4 月”能解析为 `2026-04-01` 到 `2026-04-30`。~~ + +## 7. 解析指标与约束 + +- [x] ~~识别金额指标。~~ +- [x] ~~识别数量指标。~~ +- [x] ~~识别超标指标。~~ +- [x] ~~识别逾期指标。~~ +- [x] ~~识别重复报销指标。~~ +- [x] ~~识别部门过滤条件。~~ +- [x] ~~识别状态过滤条件。~~ +- [x] ~~识别金额阈值过滤条件。~~ +- [x] ~~识别排序要求。~~ +- [x] ~~识别 Top N 要求。~~ + +验收证据: + +- [x] ~~“列出金额最高的 10 笔报销”能识别排序和 Top 10。~~ + +## 8. 解析风险与权限 + +- [x] ~~重复报销映射到 `duplicate_expense`。~~ +- [x] ~~发票异常映射到 `invoice_anomaly`。~~ +- [x] ~~金额超标映射到 `amount_over_limit`。~~ +- [x] ~~逾期应收映射到 `ar_overdue`。~~ +- [x] ~~逾期应付映射到 `ap_overdue`。~~ +- [x] ~~查询类问题权限为 `read`。~~ +- [x] ~~生成草稿权限为 `draft_write`。~~ +- [x] ~~审批、上线、付款类动作权限为 `approval_required`。~~ +- [x] ~~越权动作权限为 `forbidden`。~~ + +验收证据: + +- [x] ~~“帮我直接付款”不能被标为可直接执行。~~ + +## 9. API 接口 + +- [x] ~~新增 `POST /api/v1/ontology/parse`。~~ +- [x] ~~请求参数包含用户问题。~~ +- [x] ~~请求参数包含用户上下文。~~ +- [x] ~~响应包含 8 个字段。~~ +- [x] ~~响应包含 `run_id`。~~ +- [x] ~~响应包含置信度。~~ +- [x] ~~响应包含澄清问题。~~ +- [x] ~~每次调用写入 `SemanticParseLog`。~~ +- [x] ~~每次调用写入 `AgentRun` 或关联已有 `AgentRun`。~~ + +验收证据: + +- [x] ~~连续调用多次都能在日志中查到。~~ + +## 10. 前端调试入口 + +- [x] ~~在合适页面增加语义解析调试入口。~~ +- [x] ~~输入框支持自然语言问题。~~ +- [x] ~~点击解析后调用 API。~~ +- [x] ~~展示 8 个字段。~~ +- [x] ~~展示 JSON 原始结果。~~ +- [x] ~~展示置信度。~~ +- [x] ~~展示澄清问题。~~ +- [x] ~~展示 `run_id`。~~ +- [x] ~~错误时展示错误信息。~~ + +验收证据: + +- [x] ~~产品和开发可以直接在页面验证解析结果。~~ + +## 11. 评测集 + +- [x] ~~创建至少 5 条报销问题。~~ +- [ ] 创建至少 5 条叙述型报销问题。 +- [x] ~~创建至少 5 条应收问题。~~ +- [x] ~~创建至少 5 条应付问题。~~ +- [x] ~~创建至少 3 条知识库问题。~~ +- [x] ~~创建至少 3 条越权操作问题。~~ +- [ ] 创建至少 3 条模糊短句追问问题。 +- [x] ~~为每条问题写期望 `scenario`。~~ +- [x] ~~为每条问题写期望 `intent`。~~ +- [x] ~~为每条问题写期望权限级别。~~ +- [x] ~~编写评测脚本或测试。~~ + +验收证据: + +- [x] ~~当前评测样本集已通过,覆盖样本准确率达到当天设定阈值。~~ + +## 12. Day 3 验收 + +- [x] ~~语义解析 API 可用。~~ +- [x] ~~8 个核心字段完整返回。~~ +- [x] ~~解析日志可查询。~~ +- [x] ~~低置信度问题有澄清问题。~~ +- [x] ~~越权动作不会被标为可执行。~~ +- [x] ~~前端调试入口可用。~~ +- [x] ~~评测集可运行。~~ +- [x] ~~所有完成项已用 `[x] ~~...~~` 标记。~~ + +## 阻塞记录 + +- [x] ~~暂无。~~ + +## 日终交接 + +- [x] ~~已支持报销 / 应收 / 应付 / 知识 / 风险 / 草稿 / 越权动作等核心场景关键词、实体与权限解析。~~ +- [x] ~~当前仍需继续扩充的弱样本主要是叙述型报销长句和模糊短句追问。~~ +- [x] ~~Day 4 可直接复用 `scenario / intent / entities / time_range / metrics / constraints / risk_flags / permission / confidence / missing_slots / ambiguity / parse_strategy / clarification_required / clarification_question / run_id`。~~ diff --git a/document/development/agent week plan/day_4_orchestrator_runtime.md b/document/development/agent week plan/day_4_orchestrator_runtime.md index f214744..fbb358d 100644 --- a/document/development/agent week plan/day_4_orchestrator_runtime.md +++ b/document/development/agent week plan/day_4_orchestrator_runtime.md @@ -14,15 +14,18 @@ - 用户请求路由到 User Agent。 - 定时任务路由到 Hermes。 - 权限级别判断。 +- 语义补槽完成后的报销草稿创建、草稿更新、提交动作路由。 - 高风险动作确认机制。 - 能力注册查询。 - 工具调用封装。 - AgentRun Trace 查询。 - 失败降级返回。 -## 对应执行细则 +## 当前完成情况 -- [Day 4 执行细则](<../agent plan/weekly_execution_details/day_4_orchestrator_runtime.md>) +- [x] ~~`/api/v1/orchestrator/run`、统一路由、权限阻断、ToolCall 记录、Trace 和降级结果已经可用。~~ +- [x] ~~用户消息已能路由到 User Agent,占位 Hermes 任务也能由定时入口触发。~~ +- [ ] 真实 `expense_claims` 建单 / 改单 / 提交链路尚未接通,当前草稿路径仍是占位执行。 相关架构文档: @@ -39,9 +42,197 @@ - forbidden 请求不会调用下游 Agent。 - 每次运行都有 `run_id` 和 Trace。 - 工具调用失败能记录并返回降级结果。 +- 叙述型报销输入在满足最小槽位后能进入建单或改单流程。 ## 今天不做 - 不做复杂任务编排 DAG。 - 不做多 Agent 协商。 - 不做自动高风险动作。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [x] ~~确认 Day 3 `POST /api/v1/ontology/parse` 可用。~~ +- [x] ~~确认 `AgentRun` 可创建。~~ +- [x] ~~确认 `AgentToolCall` 可创建。~~ +- [x] ~~确认资产列表能查询技能、MCP、任务。~~ +- [x] ~~确认权限级别枚举已稳定。~~ +- [x] ~~找到后端服务层适合放 Orchestrator 的位置。~~ + +## 1. Orchestrator 输入输出 + +- [x] ~~定义 `OrchestratorRequest`。~~ +- [x] ~~请求包含 `source`。~~ +- [x] ~~请求包含 `user_id`。~~ +- [x] ~~请求包含 `message`。~~ +- [x] ~~请求包含 `task_id`。~~ +- [x] ~~请求包含 `context_json`。~~ +- [x] ~~定义 `OrchestratorResponse`。~~ +- [x] ~~响应包含 `run_id`。~~ +- [x] ~~响应包含 `selected_agent`。~~ +- [x] ~~响应包含 `route_reason`。~~ +- [x] ~~响应包含 `permission_level`。~~ +- [x] ~~响应包含 `status`。~~ +- [x] ~~响应包含 `result`。~~ +- [x] ~~响应包含 `requires_confirmation`。~~ +- [x] ~~响应包含 `trace_summary`。~~ + +验收证据: + +- [x] ~~Orchestrator 响应能直接被前端展示。~~ + +## 2. 建立 Orchestrator 服务 + +- [x] ~~新增 `OrchestratorService`。~~ +- [x] ~~实现 `run(request)` 主入口。~~ +- [x] ~~主入口第一步创建 `AgentRun`。~~ +- [x] ~~主入口第二步调用语义解析。~~ +- [x] ~~主入口第三步执行权限判断。~~ +- [x] ~~主入口第四步选择 Agent。~~ +- [x] ~~主入口第五步调用目标 Agent 或返回阻断结果。~~ +- [x] ~~主入口第六步更新 `AgentRun` 状态。~~ +- [x] ~~所有异常都写入 `AgentRun.error_message`。~~ + +验收证据: + +- [x] ~~正常请求状态为 `succeeded`。~~ +- [x] ~~被权限拦截请求状态为 `blocked`。~~ +- [x] ~~异常请求状态为 `failed`。~~ + +## 3. 路由规则 + +- [x] ~~`source=user_message` 默认路由到 User Agent。~~ +- [x] ~~`source=schedule` 默认路由到 Hermes。~~ +- [x] ~~`intent=risk_check` 且来源为 schedule 时路由到 Hermes。~~ +- [x] ~~`intent=query` 且来源为 user_message 时路由到 User Agent。~~ +- [x] ~~`intent=explain` 路由到 User Agent。~~ +- [x] ~~`intent=draft` 路由到 User Agent,但当前只返回草稿占位结果。~~ +- [ ] `scenario=expense` 且最小建单槽位完整时,允许进入 `create_expense_claim_draft`。 +- [ ] `scenario=expense` 且已有 `claim_id` 时,允许进入 `update_expense_claim_draft`。 +- [ ] `scenario=expense` 且用户明确确认提交时,允许进入 `submit_expense_claim`。 +- [x] ~~`permission.level=approval_required` 时设置 `requires_confirmation=true`。~~ +- [x] ~~`permission.level=forbidden` 时不调用下游 Agent。~~ +- [x] ~~无法识别或信息不足时返回澄清问题。~~ + +验收证据: + +- [x] ~~同一句风险检查,在用户入口和任务入口有不同路由结果。~~ + +## 4. 权限判断 + +- [x] ~~新增权限判断服务或函数。~~ +- [x] ~~查询类请求返回 `read`。~~ +- [x] ~~草稿类请求返回 `draft_write`。~~ +- [ ] 报销草稿创建、字段补全、附件挂接返回 `draft_write`。 +- [ ] 报销单提交返回 `approval_required`,并要求显式用户确认。 +- [ ] 审批、上线、付款类请求返回 `approval_required`。 +- [x] ~~用户无权限时返回 `forbidden`。~~ +- [x] ~~高风险动作不允许自动执行。~~ +- [x] ~~需要确认的动作返回确认提示。~~ +- [x] ~~权限判断结果写入 `AgentRun.permission_level`。~~ + +验收证据: + +- [x] ~~“直接上线规则”不会被自动执行。~~ +- [x] ~~“直接付款”不会被自动执行。~~ + +## 5. 能力注册查询 + +- [x] ~~从 `AgentAsset` 查询 active 技能。~~ +- [x] ~~从 `AgentAsset` 查询 active MCP。~~ +- [x] ~~从 `AgentAsset` 查询 active 任务。~~ +- [ ] 查询可用的报销单写入服务和附件挂接服务。 +- [x] ~~过滤 disabled 能力。~~ +- [x] ~~过滤未审核 active 条件不满足的规则。~~ +- [x] ~~为每次能力选择记录 `route_json`。~~ +- [x] ~~找不到能力时返回降级说明。~~ + +验收证据: + +- [x] ~~禁用 MCP 不会被 Orchestrator 调用。~~ + +## 6. 工具调用封装 + +- [x] ~~定义统一工具调用接口。~~ +- [ ] 工具请求前写入 `AgentToolCall` running 或准备记录。 +- [x] ~~工具成功后写入响应和耗时。~~ +- [x] ~~工具失败后写入错误。~~ +- [ ] 报销草稿创建、更新、提交也按工具调用或等价服务调用记录。 +- [x] ~~外部 MCP 调用失败时返回降级结果。~~ +- [x] ~~数据库查询失败时返回明确错误。~~ +- [x] ~~LLM 调用失败时返回可读提示。~~ + +验收证据: + +- [x] ~~每次 Orchestrator 运行至少可以看到 0 到多条工具调用记录。~~ + +## 7. API 接口 + +- [x] ~~新增 `POST /api/v1/orchestrator/run`。~~ +- [x] ~~请求支持用户消息。~~ +- [x] ~~请求支持任务触发。~~ +- [x] ~~响应返回 `run_id`。~~ +- [x] ~~响应返回路由结果。~~ +- [x] ~~响应返回权限结果。~~ +- [x] ~~复用 `GET /api/v1/agent-runs/{run_id}` 查看 Trace。~~ +- [x] ~~Trace 接口返回语义解析、路由、工具调用、最终结果。~~ + +验收证据: + +- [x] ~~前端或 curl 可以完整看到一次运行链路。~~ + +## 8. 前端最小 Trace 查看 + +- [ ] 在合适位置展示最近运行记录。 +- [x] ~~点击当前对话结果可查看 `run_id`。~~ +- [x] ~~展示 selected_agent。~~ +- [x] ~~展示 route_reason。~~ +- [x] ~~展示 permission_level。~~ +- [ ] 展示工具调用列表。 +- [x] ~~展示错误信息。~~ +- [ ] 展示耗时。 + +验收证据: + +- [x] ~~开发调试时不需要直接查数据库才能理解主要路由结果。~~ + +## 9. 测试 + +- [x] ~~测试用户查询路由到 User Agent。~~ +- [x] ~~测试定时任务路由到 Hermes。~~ +- [ ] 测试叙述型报销输入可路由到报销建单服务。 +- [ ] 测试报销单提交前必须显式确认。 +- [x] ~~测试 forbidden 不调用下游 Agent。~~ +- [x] ~~测试 approval_required 返回确认。~~ +- [x] ~~测试工具失败写入 ToolCall。~~ +- [x] ~~测试 Orchestrator 异常写入 AgentRun。~~ + +验收证据: + +- [x] ~~Orchestrator 核心测试通过。~~ + +## 10. Day 4 验收 + +- [x] ~~Orchestrator API 可用。~~ +- [x] ~~用户请求能路由到 User Agent 占位实现。~~ +- [x] ~~定时任务能路由到 Hermes 占位实现。~~ +- [ ] 语义补槽完成后的报销输入能路由到建单或改单动作。 +- [x] ~~权限阻断有效。~~ +- [x] ~~运行 Trace 可查询。~~ +- [x] ~~工具调用日志可查询。~~ +- [x] ~~降级结果可读。~~ +- [x] ~~所有完成项已用 `[x] ~~...~~` 标记。~~ + +## 阻塞记录 + +- [x] ~~暂无。~~ + +## 日终交接 + +- [x] ~~当前路由规则已稳定为:`user_message -> user_agent`、`schedule -> hermes`、`clarification_required -> blocked`。~~ +- [x] ~~当前权限判断已稳定为:`read / draft_write / approval_required / forbidden`,高风险动作默认阻断或要求确认。~~ +- [x] ~~Day 5 需承接的接口契约已明确:Orchestrator 向 User Agent 传入语义结果、能力码、工具结果,并期待返回 `answer / citations / suggested_actions / draft_payload / risk_flags`。~~ diff --git a/document/development/agent week plan/day_5_user_agent_mvp.md b/document/development/agent week plan/day_5_user_agent_mvp.md index 3667145..c270d57 100644 --- a/document/development/agent week plan/day_5_user_agent_mvp.md +++ b/document/development/agent week plan/day_5_user_agent_mvp.md @@ -13,6 +13,10 @@ Day 1 到 Day 4 已经具备资产、语义、路由和日志基础,此时可 ## 今天主要交付 - 用户自然语言入口。 +- 对话入口透传首句文本、附件名称和页面上下文。 +- 语义识别完整后创建报销单草稿。 +- 对话补充字段时更新报销主表、明细和附件关联。 +- 用户确认后触发报销单提交和状态变更。 - 报销查询和解释。 - 应收查询和解释。 - 应付查询和解释。 @@ -20,11 +24,14 @@ Day 1 到 Day 4 已经具备资产、语义、路由和日志基础,此时可 - 风险原因说明。 - 处理意见草稿。 - 知识库读取骨架。 +- 低置信度场景的澄清追问。 - 前端问答或操作入口。 -## 对应执行细则 +## 当前完成情况 -- [Day 5 执行细则](<../agent plan/weekly_execution_details/day_5_user_agent_mvp.md>) +- [x] ~~个人工作台、报销对话框和通用聊天入口已经接通真实 Orchestrator / User Agent 问答链路。~~ +- [x] ~~回答、规则引用、风险说明、建议动作和结构化 `draft_payload` 已可返回。~~ +- [ ] 真实 `expense_claims` / `expense_claim_items` / 附件表落库,以及 `draft -> submitted` 状态流转尚未完成。 相关架构文档: @@ -38,7 +45,10 @@ Day 1 到 Day 4 已经具备资产、语义、路由和日志基础,此时可 - 用户能输入自然语言问题。 - 请求必须经过 Orchestrator。 - 至少 3 类财务问题有可读回答。 +- 叙述型报销输入在最小槽位满足后能创建 `expense_claims` 草稿。 +- 用户确认提交后可把报销单从 `draft` 变更为 `submitted`。 - 回答能引用规则或知识。 +- 语义低置信度时不会答非所问,而是追问。 - 高风险动作只生成草稿或建议。 - AgentRun Trace 能看到 User Agent 步骤。 @@ -48,3 +58,205 @@ Day 1 到 Day 4 已经具备资产、语义、路由和日志基础,此时可 - 不做自动付款。 - 不做自动上线规则。 - 不做完整知识库检索优化。 +- 不假装已读懂未解析的附件内容。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [x] ~~确认 Orchestrator 能把用户请求路由到 User Agent。~~ +- [x] ~~确认语义本体 8 字段可用。~~ +- [x] ~~确认语义层已接入真实模型,而不是仅靠关键词规则。~~ +- [x] ~~确认规则资产可查询。~~ +- [x] ~~确认 AgentRun 和 ToolCall 可记录。~~ +- [x] ~~确认已有现成对话 UI 可复用。~~ +- [x] ~~确认财务业务数据已可通过最小真实数据查询。~~ +- [x] ~~当前无需额外补最小 Mock 数据服务。~~ + +## 1. User Agent 输入输出 + +- [x] ~~定义 `UserAgentRequest`。~~ +- [x] ~~请求包含 `run_id`。~~ +- [x] ~~请求包含 `user_id`。~~ +- [x] ~~请求包含 `message`。~~ +- [x] ~~请求包含 `ontology`。~~ +- [x] ~~请求包含 `context_json`。~~ +- [x] ~~定义 `UserAgentResponse`。~~ +- [x] ~~响应包含 `answer`。~~ +- [x] ~~响应包含 `citations`。~~ +- [x] ~~响应包含 `suggested_actions`。~~ +- [x] ~~响应包含 `draft_payload`。~~ +- [x] ~~响应包含 `risk_flags`。~~ +- [x] ~~响应包含 `requires_confirmation`。~~ + +验收证据: + +- [x] ~~User Agent 响应结构能被 Orchestrator 直接包装返回。~~ + +## 2. 查询处理 + +- [x] ~~实现报销查询处理器。~~ +- [x] ~~实现应收查询处理器。~~ +- [x] ~~实现应付查询处理器。~~ +- [ ] 查询前检查权限级别。 +- [x] ~~查询时记录 ToolCall。~~ +- [x] ~~查询失败时返回可读错误。~~ +- [x] ~~查询为空时返回空态解释。~~ +- [ ] 查询结果限制返回条数,避免一次返回过大。 + +验收证据: + +- [x] ~~“查本周报销金额”有可读回答。~~ +- [x] ~~“客户 A 本月应收多少”有可读回答。~~ +- [x] ~~“供应商 B 待付款多少”有可读回答。~~ + +## 3. 规则解释 + +- [x] ~~根据语义场景查询相关规则资产。~~ +- [x] ~~只引用 active 规则。~~ +- [x] ~~读取规则当前版本 Markdown。~~ +- [x] ~~从 Markdown 中提取规则摘要。~~ +- [x] ~~回答中说明使用了哪些规则。~~ +- [x] ~~回答中包含规则版本号。~~ +- [x] ~~回答中包含规则更新时间。~~ +- [x] ~~没有相关规则时说明缺失。~~ + +验收证据: + +- [x] ~~“为什么这笔报销有风险”能引用规则。~~ + +## 4. 风险解释 + +- [x] ~~识别重复报销风险。~~ +- [x] ~~识别金额超标风险。~~ +- [x] ~~识别发票异常风险。~~ +- [x] ~~识别逾期应收风险。~~ +- [x] ~~识别逾期应付风险。~~ +- [x] ~~风险回答包含风险类型。~~ +- [x] ~~风险回答包含触发原因。~~ +- [x] ~~风险回答包含建议处理动作。~~ +- [x] ~~高风险建议不能变成自动执行。~~ + +验收证据: + +- [x] ~~风险解释结果不是单纯“有风险”,而是有依据。~~ + +## 5. 草稿生成与单据落库 + +- [ ] 支持根据语义结果创建 `expense_claims` 草稿。 +- [ ] 报销草稿初始状态写为 `draft`。 +- [ ] 支持根据语义结果创建或更新 `expense_claim_items`。 +- [ ] 支持把用户上传附件挂到 `document_assets`、`document_asset_versions`、`expense_item_documents`。 +- [ ] 对话中补充金额、事由、客户、参与人、票据后,能回写已有草稿而不是只更新内存结果。 +- [x] ~~支持生成报销处理意见草稿。~~ +- [x] ~~支持生成应收催收建议草稿。~~ +- [x] ~~支持生成应付付款建议草稿。~~ +- [ ] 用户明确确认“提交报销”后,把 `expense_claims.status` 从 `draft` 更新为 `submitted`。 +- [ ] 报销提交时写入 `submitted_at`。 +- [ ] 报销状态变更写入审计日志。 +- [ ] 报销状态变更写入 AgentRun 结果。 +- [x] ~~草稿中标明“待人工确认”。~~ +- [x] ~~草稿不直接提交业务系统。~~ +- [ ] 草稿生成写入审计日志。 +- [x] ~~草稿生成写入 AgentRun 结果。~~ + +验收证据: + +- [ ] “我今天去客户现场,招待了客户,花销了1000元”在补齐必要字段后可创建报销草稿。 +- [ ] “帮我提交这笔报销”在确认后只把状态改到 `submitted`,不会直接改成 `approved` 或 `paid`。 +- [x] ~~“帮我生成处理意见”只返回草稿,不执行审批。~~ + +## 6. 知识库读取骨架 + +- [ ] 建立知识条目查询接口或服务。 +- [ ] 支持按关键词查询知识条目。 +- [ ] 支持按业务场景查询知识条目。 +- [ ] User Agent 回答可以引用知识条目。 +- [ ] 引用中包含知识标题。 +- [ ] 引用中包含更新时间。 +- [ ] 知识库不可用时返回降级说明。 + +验收证据: + +- [ ] 知识库失败不会导致整个回答失败。 + +## 7. 对话或操作入口 + +- [x] ~~前端增加用户问题输入框。~~ +- [x] ~~输入框支持回车或按钮提交。~~ +- [x] ~~提交时调用 Orchestrator,而不是绕过 Orchestrator。~~ +- [ ] 提交时透传首句文本、附件名称、附件 ID 和页面上下文。 +- [x] ~~展示 Agent 回答。~~ +- [x] ~~展示引用规则或知识。~~ +- [x] ~~展示建议动作。~~ +- [ ] 展示报销草稿 ID 或 claim_no。 +- [ ] 展示当前报销状态。 +- [x] ~~展示需要人工确认的提示。~~ +- [x] ~~展示 `run_id`。~~ +- [x] ~~展示加载态。~~ +- [x] ~~展示错误态。~~ + +验收证据: + +- [x] ~~用户可在页面完成一次问答闭环。~~ + +## 8. 安全边界 + +- [x] ~~User Agent 不直接修改规则状态。~~ +- [x] ~~User Agent 不直接上线规则。~~ +- [x] ~~User Agent 不直接审批报销。~~ +- [x] ~~User Agent 不直接把报销单改为 `approved` 或 `paid`。~~ +- [x] ~~User Agent 不直接付款。~~ +- [x] ~~User Agent 不直接删除知识。~~ +- [x] ~~所有高风险动作只返回建议或草稿。~~ +- [ ] 报销从 `draft` 变更到 `submitted` 之前必须有用户确认。 +- [ ] 所有草稿动作标记 `requires_confirmation=true`。 +- [x] ~~语义低置信度时优先追问,不返回答非所问的查询结果。~~ +- [x] ~~没有 OCR/VLM 结果时,不假装读懂图片或票据内容。~~ + +验收证据: + +- [x] ~~提示词要求“直接付款”时仍被阻断。~~ + +## 9. 测试 + +- [x] ~~测试报销查询。~~ +- [x] ~~测试应收查询。~~ +- [ ] 测试应付查询。 +- [ ] 测试规则解释。 +- [x] ~~测试风险解释。~~ +- [ ] 测试报销草稿创建。 +- [ ] 测试报销草稿补槽更新。 +- [ ] 测试报销状态从 `draft` 变更到 `submitted`。 +- [x] ~~测试草稿生成。~~ +- [ ] 测试越权动作阻断。 +- [ ] 测试知识库降级。 + +验收证据: + +- [x] ~~User Agent 核心测试通过。~~ + +## 10. Day 5 验收 + +- [x] ~~User Agent 服务可被 Orchestrator 调用。~~ +- [x] ~~用户入口可提交自然语言问题。~~ +- [x] ~~至少 3 个财务场景有回答。~~ +- [ ] 语义识别完整后的报销输入能创建报销草稿。 +- [ ] 用户确认后能提交报销并更新状态。 +- [x] ~~回答能引用规则或知识。~~ +- [x] ~~高风险动作不会自动执行。~~ +- [x] ~~AgentRun Trace 能看到 User Agent 步骤。~~ +- [x] ~~前端构建通过。~~ +- [x] ~~所有完成项已用 `[x] ~~...~~` 标记。~~ + +## 阻塞记录 + +- [x] ~~暂无。~~ + +## 日终交接 + +- [x] ~~当前已支持报销 / 应收 / 应付查询、规则解释、风险解释、草稿建议与澄清追问。~~ +- [x] ~~当前仍是占位的主要能力是报销单真实落库、附件持久化和知识库读取,不再是简单静态问答 Mock。~~ +- [x] ~~Day 6 Hermes 可直接复用当前的规则检查、风险标签和 Orchestrator Trace / ToolCall 契约。~~ diff --git a/document/development/agent week plan/day_6_hermes_mvp.md b/document/development/agent week plan/day_6_hermes_mvp.md index 268f014..5559587 100644 --- a/document/development/agent week plan/day_6_hermes_mvp.md +++ b/document/development/agent week plan/day_6_hermes_mvp.md @@ -19,10 +19,6 @@ Hermes 依赖前几天已经建立的资产、规则、语义、Orchestrator、T - 规则草稿生成。 - Hermes 运行结果展示。 -## 对应执行细则 - -- [Day 6 执行细则](<../agent plan/weekly_execution_details/day_6_hermes_mvp.md>) - 相关架构文档: - [Agent 职责边界](<../agent plan/03_agent_responsibilities.md>) @@ -45,3 +41,190 @@ Hermes 依赖前几天已经建立的资产、规则、语义、Orchestrator、T - 不做真实 OCR 深度集成。 - 不做自动发布知识。 - 不做自动上线规则。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [ ] 确认任务资产 `asset_type=task` 可查询。 +- [ ] 确认 Orchestrator 能处理 `source=schedule`。 +- [ ] 确认 Hermes 占位服务可被调用。 +- [ ] 确认 AgentRun 和 ToolCall 可记录。 +- [ ] 确认是否已有后台任务框架。 +- [ ] 如果没有后台任务框架,先用手动触发 API 模拟定时执行。 + +## 1. Hermes 输入输出 + +- [ ] 定义 `HermesTaskRequest`。 +- [ ] 请求包含 `run_id`。 +- [ ] 请求包含 `task_asset_id`。 +- [ ] 请求包含 `task_type`。 +- [ ] 请求包含 `schedule_time`。 +- [ ] 请求包含 `context_json`。 +- [ ] 定义 `HermesTaskResult`。 +- [ ] 响应包含 `summary`。 +- [ ] 响应包含 `risk_items`。 +- [ ] 响应包含 `statistics`。 +- [ ] 响应包含 `knowledge_updates`。 +- [ ] 响应包含 `draft_rules`。 +- [ ] 响应包含 `next_actions`。 + +验收证据: + +- [ ] Hermes 响应能被任务详情或运行日志展示。 + +## 2. 任务调度入口 + +- [ ] 新增手动触发任务 API。 +- [ ] API 参数支持任务资产 ID。 +- [ ] API 调用 Orchestrator,source 为 `schedule`。 +- [ ] Orchestrator 路由到 Hermes。 +- [ ] Hermes 执行结果写入 AgentRun。 +- [ ] 任务执行失败时写入错误。 +- [ ] 任务执行结束后更新任务最近执行时间。 +- [ ] 任务执行结束后更新任务最近执行状态。 + +验收证据: + +- [ ] 可以手动触发一次 Hermes 任务并看到运行结果。 + +## 3. 每日风险巡检 + +- [ ] 实现重复报销巡检。 +- [ ] 实现金额超标巡检。 +- [ ] 实现发票异常巡检占位。 +- [ ] 实现应收逾期巡检。 +- [ ] 实现应付异常付款巡检。 +- [ ] 每个风险项包含风险类型。 +- [ ] 每个风险项包含业务对象。 +- [ ] 每个风险项包含触发规则。 +- [ ] 每个风险项包含建议动作。 +- [ ] 每个风险项包含风险等级。 + +验收证据: + +- [ ] 风险巡检结果可以被用户理解和追溯。 + +## 4. 每日统计 + +- [ ] 统计当日报销单数量。 +- [ ] 统计当日报销金额。 +- [ ] 统计当日报账数量。 +- [ ] 统计当日报账金额。 +- [ ] 统计应收新增金额。 +- [ ] 统计应收逾期金额。 +- [ ] 统计应付待付金额。 +- [ ] 统计应付逾期金额。 +- [ ] 输出日报摘要。 + +验收证据: + +- [ ] Hermes 能生成一份每日财务摘要。 + +## 5. OCR 接入点 + +- [ ] 原始票据先落 `document_assets` 和 `document_asset_versions`,不直接以内存临时文件参与流程。 +- [ ] 建立 OCR 识别服务接口。 +- [ ] 定义发票识别输入结构。 +- [ ] 定义发票识别输出结构。 +- [ ] 输出结构包含发票号。 +- [ ] 输出结构包含开票日期。 +- [ ] 输出结构包含金额。 +- [ ] 输出结构包含税额。 +- [ ] 输出结构包含销售方。 +- [ ] 输出结构包含购买方。 +- [ ] 输出结构包含置信度。 +- [ ] OCR 输入可通过 `storage_key` 或等价文件定位字段读取原件。 +- [ ] 当前阶段允许使用 Mock 结果。 +- [ ] OCR 调用写入 ToolCall。 + +验收证据: + +- [ ] Hermes 风险巡检中可以调用 OCR Mock。 + +## 6. 知识库维护 + +- [ ] 建立知识条目写入服务。 +- [ ] Hermes 可以生成知识候选条目。 +- [ ] 候选条目包含标题。 +- [ ] 候选条目包含正文。 +- [ ] 候选条目包含来源。 +- [ ] 候选条目包含适用场景。 +- [ ] 候选条目默认状态为 `draft`。 +- [ ] 知识条目不能自动发布。 +- [ ] 知识条目写入审计日志。 + +验收证据: + +- [ ] Hermes 可以生成待审核知识条目。 + +## 7. 规则草稿形成 + +- [ ] Hermes 可以根据风险巡检结果生成规则草稿。 +- [ ] 规则草稿保存为 `asset_type=rule`。 +- [ ] 规则草稿状态为 `draft`。 +- [ ] 规则草稿包含 Markdown 内容。 +- [ ] 规则草稿包含生成原因。 +- [ ] 规则草稿包含关联风险样例。 +- [ ] 规则草稿不能自动上线。 +- [ ] 规则草稿需要审核人。 +- [ ] 规则草稿写入审计日志。 + +验收证据: + +- [ ] Hermes 生成的新规则出现在规则列表中,但不是 active。 + +## 8. Hermes 页面或日志展示 + +- [ ] 任务详情能看到最近执行结果。 +- [ ] 任务详情能手动触发执行。 +- [ ] 任务详情能看到风险项数量。 +- [ ] 任务详情能看到日报摘要。 +- [ ] 任务详情能看到知识候选数量。 +- [ ] 任务详情能看到规则草稿数量。 +- [ ] 运行 Trace 能看到 Hermes 步骤。 +- [ ] 错误时展示错误原因。 + +验收证据: + +- [ ] 不查数据库也能判断 Hermes 是否执行成功。 + +## 9. 测试 + +- [ ] 测试手动触发任务。 +- [ ] 测试 Orchestrator 路由到 Hermes。 +- [ ] 测试风险巡检输出。 +- [ ] 测试日报统计输出。 +- [ ] 测试 OCR Mock 调用。 +- [ ] 测试知识候选写入。 +- [ ] 测试规则草稿生成。 +- [ ] 测试 Hermes 异常写入 AgentRun。 + +验收证据: + +- [ ] Hermes 核心测试通过。 + +## 10. Day 6 验收 + +- [ ] Hermes 可被 Orchestrator 调用。 +- [ ] 至少一个任务可以手动触发。 +- [ ] 风险巡检有结构化结果。 +- [ ] 每日统计有结构化结果。 +- [ ] OCR Mock 接入点可用。 +- [ ] 知识候选可生成。 +- [ ] 规则草稿可生成且不能自动上线。 +- [ ] 任务详情或运行日志能展示结果。 +- [ ] 所有完成项已用 `[x] ~~...~~` 标记。 + +## 阻塞记录 + +- [ ] 暂无。 + +## 日终交接 + +- [ ] 写明 Hermes 已支持任务类型。 +- [ ] 写明 OCR 当前是真实还是 Mock。 +- [ ] 写明生成的知识和规则草稿状态。 +- [ ] 写明 Day 7 需要重点回归的路径。 diff --git a/document/development/agent week plan/day_7_hardening_demo_acceptance.md b/document/development/agent week plan/day_7_hardening_demo_acceptance.md index d99025b..4146d5d 100644 --- a/document/development/agent week plan/day_7_hardening_demo_acceptance.md +++ b/document/development/agent week plan/day_7_hardening_demo_acceptance.md @@ -21,10 +21,6 @@ - 演示脚本。 - 下一阶段开发建议。 -## 对应执行细则 - -- [Day 7 执行细则](<../agent plan/weekly_execution_details/day_7_hardening_demo_acceptance.md>) - 相关架构文档: - [Agent Plan 总览](<../agent plan/00_README.md>) @@ -45,3 +41,220 @@ - 不做新大功能。 - 不临时扩大范围。 - 不绕过测试和验收。 + +## 详细执行清单 + +以下内容为合并后的详细执行清单。 + +## 0. 开始前检查 + +- [ ] 汇总 Day 1 未完成项。 +- [ ] 汇总 Day 2 未完成项。 +- [ ] 汇总 Day 3 未完成项。 +- [ ] 汇总 Day 4 未完成项。 +- [ ] 汇总 Day 5 未完成项。 +- [ ] 汇总 Day 6 未完成项。 +- [ ] 标记必须今天修复的问题。 +- [ ] 标记可以进入下一阶段的问题。 +- [ ] 冻结新增需求,只处理验收相关问题。 + +## 1. 核心链路回归 + +- [ ] 回归资产列表接口。 +- [ ] 回归规则详情接口。 +- [ ] 回归 Markdown 保存。 +- [ ] 回归版本列表。 +- [ ] 回归版本切换。 +- [ ] 回归审核接口。 +- [ ] 回归上线拦截。 +- [ ] 回归语义解析接口。 +- [ ] 回归 Orchestrator 路由。 +- [ ] 回归 User Agent 问答。 +- [ ] 回归 Hermes 任务执行。 +- [ ] 回归 AgentRun Trace。 +- [ ] 回归 ToolCall 日志。 +- [ ] 回归 AuditLog 日志。 + +验收证据: + +- [ ] 从前端能完成至少一条端到端演示路径。 + +## 2. 权限和风险边界 + +- [ ] 未审核规则不能上线。 +- [ ] rejected 规则不能上线。 +- [ ] disabled 能力不能被调用。 +- [ ] 用户请求付款必须拦截。 +- [ ] 用户请求审批必须需要确认。 +- [ ] Hermes 生成规则只能是 draft。 +- [ ] Hermes 生成知识只能是 draft。 +- [ ] User Agent 生成处理意见只能是草稿。 +- [ ] 所有高风险动作响应中包含 `requires_confirmation`。 + +验收证据: + +- [ ] 不存在 MVP 期间绕过人工审核的路径。 + +## 3. 审计和 Trace 补齐 + +- [ ] 规则保存写 AuditLog。 +- [ ] 规则审核写 AuditLog。 +- [ ] 规则上线写 AuditLog。 +- [ ] Hermes 生成规则草稿写 AuditLog。 +- [ ] Hermes 生成知识候选写 AuditLog。 +- [ ] User Agent 草稿生成写 AuditLog。 +- [ ] Orchestrator 每次运行有 AgentRun。 +- [ ] 每次工具调用有 ToolCall。 +- [ ] Trace 页面或接口能串起 run_id。 +- [ ] 错误 Trace 包含 error_message。 + +验收证据: + +- [ ] 任意一条演示链路都能追溯到 run_id。 + +## 4. 前端体验修补 + +- [ ] 任务规则中心列表无明显错位。 +- [ ] 详情页无双 title。 +- [ ] Hero title 高度紧凑。 +- [ ] 返回列表栏高度正常。 +- [ ] Markdown 编辑器和版本卡片底部对齐。 +- [ ] 版本卡片不贴右侧。 +- [ ] 当前版本标识不突兀。 +- [ ] 日期列对齐。 +- [ ] 弹窗文案清楚。 +- [ ] 加载态可见。 +- [ ] 错误态可见。 +- [ ] 空态可见。 +- [ ] 按钮禁用态可见。 +- [ ] 窄屏不出现内容重叠。 + +验收证据: + +- [ ] 任务规则中心可以给业务用户演示,不需要解释 UI 异常。 + +## 5. 测试补齐 + +- [ ] 运行后端现有测试。 +- [ ] 运行新增模型测试。 +- [ ] 运行新增 API 测试。 +- [ ] 运行语义解析测试。 +- [ ] 运行 Orchestrator 测试。 +- [ ] 运行 User Agent 测试。 +- [ ] 运行 Hermes 测试。 +- [ ] 运行前端构建。 +- [ ] 如果有前端测试,运行前端测试。 +- [ ] 记录未能运行的测试和原因。 + +验收证据: + +- [ ] 测试结果写入本文件“测试记录”。 + +## 6. 评测集 + +- [ ] 准备 5 条报销问题。 +- [ ] 准备 5 条应收问题。 +- [ ] 准备 5 条应付问题。 +- [ ] 准备 3 条规则解释问题。 +- [ ] 准备 3 条越权动作问题。 +- [ ] 执行语义解析评测。 +- [ ] 执行 User Agent 回答评测。 +- [ ] 执行权限拦截评测。 +- [ ] 记录失败样例。 +- [ ] 为失败样例写下一阶段优化建议。 + +验收证据: + +- [ ] 可以说明 MVP 当前能力边界和准确率风险。 + +## 7. 演示数据 + +- [ ] 准备 active 规则。 +- [ ] 准备 pending 规则。 +- [ ] 准备 rejected 规则。 +- [ ] 准备至少一条报销数据。 +- [ ] 准备至少一条应收数据。 +- [ ] 准备至少一条应付数据。 +- [ ] 准备至少一个 Hermes 任务。 +- [ ] 准备至少一个 MCP Mock。 +- [ ] 准备至少一个知识条目。 +- [ ] 准备至少一个风险样例。 + +验收证据: + +- [ ] 演示不会因为没有数据而中断。 + +## 8. 演示脚本 + +- [ ] 编写演示步骤 1:打开任务规则中心。 +- [ ] 编写演示步骤 2:查看规则详情。 +- [ ] 编写演示步骤 3:编辑 Markdown 并保存。 +- [ ] 编写演示步骤 4:切换版本。 +- [ ] 编写演示步骤 5:尝试上线未审核规则并被拦截。 +- [ ] 编写演示步骤 6:输入用户问题。 +- [ ] 编写演示步骤 7:查看语义本体结果。 +- [ ] 编写演示步骤 8:查看 User Agent 回答。 +- [ ] 编写演示步骤 9:手动触发 Hermes 任务。 +- [ ] 编写演示步骤 10:查看 AgentRun Trace。 +- [ ] 编写演示步骤 11:查看审计日志。 + +验收证据: + +- [ ] 新开发者按脚本可以复现演示。 + +## 9. 文档收尾 + +- [ ] 更新一周计划完成情况。 +- [ ] 更新剩余风险。 +- [ ] 更新下一阶段开发建议。 +- [ ] 更新接口清单。 +- [ ] 更新数据模型清单。 +- [ ] 更新前端页面清单。 +- [ ] 更新评测结果。 +- [ ] 更新演示脚本。 +- [ ] 更新部署或启动说明。 + +验收证据: + +- [ ] 文档能指导下一周继续开发。 + +## 10. 最终验收清单 + +- [ ] 任务规则中心可查看规则、技能、MCP、任务。 +- [ ] 规则详情可编辑 Markdown。 +- [ ] 规则详情可查看最近 5 个版本。 +- [ ] 版本切换有确认弹窗。 +- [ ] 审核者信息可见。 +- [ ] 未审核规则不能上线。 +- [ ] 语义本体 8 字段可返回。 +- [ ] Orchestrator 能路由用户请求。 +- [ ] Orchestrator 能路由定时任务。 +- [ ] User Agent 能回答至少 3 类财务问题。 +- [ ] Hermes 能执行至少 1 个任务。 +- [ ] OCR Mock 接入点可用。 +- [ ] 知识候选可生成。 +- [ ] 规则草稿可生成。 +- [ ] AgentRun Trace 可查。 +- [ ] AuditLog 可查。 +- [ ] 前端构建通过。 +- [ ] 后端核心测试通过。 +- [ ] 演示脚本可执行。 +- [ ] 所有完成项已用 `[x] ~~...~~` 标记。 + +## 测试记录 + +- [ ] 后端测试:未运行。 +- [ ] 前端构建:未运行。 +- [ ] 语义评测:未运行。 +- [ ] 手动验收:未运行。 + +## 阻塞记录 + +- [ ] 暂无。 + +## 日终交接 + +- [ ] 写明本周最终完成内容。 +- [ ] 写明未完成内容。 +- [ ] 写明生产化前必须补齐内容。 +- [ ] 写明下一周建议优先级。