docs: record failed-scenario revalidation

This commit is contained in:
hailin
2026-07-27 20:31:57 +08:00
parent 9c94957739
commit f68a044561
7 changed files with 69 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@@ -2,13 +2,13 @@
## 验收结论
**本轮结论:不通过,需修复后复验。**
**初验结论:不通过。2026-07-27 定向修复复验结论:通过。**
产品主导航、普通建单、评论、状态流转、协作成员、知识检索、知识草稿、解决方案、
Agent 配置发布、运行取消、权限查看和审计查询等功能可以通过浏览器完成。18 个业务
菜单页面均可访问。
但以下问题阻止当前版本进入完整用户验收:
初验时以下问题阻止当前版本进入完整用户验收:
- 工单信息编辑返回 HTTP 500。
- 工单详情中的 Agent 支持分析返回 HTTP 500。
@@ -19,6 +19,44 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
本轮共执行 **23 个业务操作检查点**:通过 17 个、失败 3 个、受启动条件阻塞 3 个。
页面可访问性另行检查,共 **18/18 个菜单页面可访问**。
修复后沿用同一业务数据完成 6 个失败或阻塞检查点的定向复验,结果为 **6/6 通过**。
三个 HTTP 500 已关闭;非 Docker Celery Worker 已接入;自动建单、模型连通测试和发布
Agent 运行均取得真实终态,不再以“已入队”作为通过依据。
## 修复复验
| 初验项 | 修复内容 | 复验结果 | 证据 |
|---|---|---|---|
| TK-03 工单信息编辑 500 | 悲观锁只锁主表记录,不再锁可空外连接 | 通过 | 工单 13 保存成功并新增“更新工单”事件 |
| TK-06 支持分析 500 | 修正工单锁范围,发布符合当前输出契约的支持分析 v3 | 通过 | 运行 `a0810d01-af54-4b53-9d18-0aaa5944bb45` 成功,页面展示摘要、8 个排查步骤和客户回复草稿 |
| TK-09 智能受理取消 500 | 修正受理锁范围并由 Worker 消费撤销后的任务 | 通过 | 受理 `a47ed6de-6800-4bd3-9a4c-fd6702be69e9` 进入 `rejected / analysis_cancelled`,未创建工单 |
| TK-08 自动建单阻塞 | 启动 Celery Worker;模型总预算调为 60 秒;可信受理输出预算调为 8192 Token;保留新版结构化顶层字段 | 通过 | 受理 `d82d1bc4-2563-4b9c-a419-329dcd4f26eb` 自动创建 `TK202607270003`,保留 14 项字段证据 |
| AG-01 模型连通阻塞 | Worker 消费模型测试任务 | 通过 | DeepSeek 返回 `UAT_MODEL_RETEST_OK`,15 / 51 Token,3532 ms,0 重试 |
| AG-04 Agent 运行阻塞 | Worker 消费 Agent 任务;验收 Agent v2 补齐 `environment` 输入映射 | 通过 | 运行 `c4e7c400-2b8c-444f-9364-ba8988b74ec8` 成功,生成结构化输出和冻结配置 |
复验过程中还识别并关闭了两项在 Worker 恢复后才能暴露的问题:
- 可信受理的复杂字段证据契约会耗尽原 2048 Token 输出预算,导致 JSON 截断;发布配置
现固定使用 8192 Token。
- 旧版扁平输出兼容逻辑重组 `fields` 时会丢弃新版 `problem_valid`、证据和时间线;现仅
移除旧字段别名并保留完整顶层契约。
### 工单编辑、支持分析与取消复验
![工单编辑复验通过](../../assets/acceptance/2026-07-27/12-ticket-edit-retest-passed.png)
![支持分析复验通过](../../assets/acceptance/2026-07-27/13-support-analysis-retest-passed.png)
![智能受理取消复验通过](../../assets/acceptance/2026-07-27/14-intake-cancel-retest-passed.png)
### 自动建单、模型与 Agent 复验
![自动建单复验通过](../../assets/acceptance/2026-07-27/15-auto-intake-retest-passed.png)
![模型连通复验通过](../../assets/acceptance/2026-07-27/16-model-connectivity-retest-passed.png)
![Agent 异步运行复验通过](../../assets/acceptance/2026-07-27/17-agent-run-retest-passed.png)
## 验收环境
| 项目 | 实际环境 |
@@ -33,9 +71,10 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
| 浏览器 | 本地 Chrome,由浏览器自动化执行真实点击和输入,1440 × 900 |
| 登录身份 | 本地管理员账号,凭据不写入文档 |
| Docker | 未启动、未使用 |
| 异步 Worker | 未启动;这是 Agent 和智能受理运行阻塞的直接条件 |
| 异步 Worker | 初验未启动;复验使用 `python -m celery -A config.celery worker -l info -P solo`,连接当前 Redis |
本轮只进行了真实页面操作、接口状态观察和运行日志核对,**没有执行代码测试、测试
初验和修复复验均只进行了真实页面操作、接口状态观察、数据库终态与运行日志核对,
**没有执行代码测试、测试
脚本、Pytest、Vitest、Ruff、ESLint 或构建命令**。
## 验收方法
@@ -59,7 +98,7 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
所有页面均显示了对应标题和主要内容,没有出现整页“加载失败”。页面可访问不代表页面
中的所有写操作均已通过,功能结果以随后各表为准。
## 核心业务操作
## 核心业务操作(初验)
| 编号 | 用户操作与验收数据 | 结果 | 页面或数据证据 |
|---|---|---|---|
@@ -101,7 +140,7 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
![解决方案库与新建草稿](../../assets/acceptance/2026-07-27/06-solution-library.png)
## Agent 专项验收
## Agent 专项验收(初验)
| 编号 | 用户操作与验收数据 | 结果 | 证据 |
|---|---|---|---|
@@ -139,6 +178,7 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
### UAT-BUG-01:工单编辑返回 500
- 状态:**已关闭,复验通过**
- 严重度:高
- 复现:打开工单 13,编辑业务信息并保存。
- 实际:`PATCH /api/tickets/13` 返回 HTTP 500。
@@ -146,54 +186,66 @@ Agent 配置发布、运行取消、权限查看和审计查询等功能可以
- 定位线索:`backend/apps/tickets/services.py` 的锁定查询同时
`select_for_update()` 和 `select_related("category")`;分类关系可为空。
- 影响:用户无法在详情页补充或修正工单信息。
- 修复:使用 `select_for_update(of=("self",))` 只锁工单主表记录;同类事务入口同步
收敛锁范围。
### UAT-BUG-02:支持分析无法启动
- 状态:**已关闭,复验通过**
- 严重度:阻断
- 复现:进入工单 13,在“支持分析”区域点击“开始分析”。
- 实际:`POST /api/tickets/13/support-analyses` 返回 HTTP 500。
- 日志:与 UAT-BUG-01 相同的 PostgreSQL 外连接锁定异常。
- 定位线索:`backend/apps/agents/support_analysis.py` 的工单锁定查询。
- 定位线索:`backend/apps/tickets/support_analysis.py` 的工单锁定查询。
- 影响:工单 Agent 支持闭环无法进入运行队列。
- 修复:只锁工单主表记录,并发布支持分析 Agent v3 以匹配当前业务信任契约。
### UAT-BUG-03:智能受理取消返回 500
- 状态:**已关闭,复验通过**
- 严重度:高
- 复现:创建智能受理,任务进入排队后点击取消。
- 实际:`POST /api/ticket-drafts/{id}/cancel` 返回 HTTP 500。
- 日志:同样为 `FOR UPDATE` 作用于可空外连接一侧。
- 定位线索:`backend/apps/tickets/draft_services.py` 的受理锁定查询。
- 影响:用户无法从排队中的受理安全退出或转人工。
- 修复:只锁受理主表记录;取消后保留材料和字段,并阻止撤销运行继续自动建单。
### UAT-BLOCK-01:两进程启动方式不具备异步消费能力
- 状态:**已解除,复验通过**
- 类型:环境阻塞,不等同于代码缺陷。
- 条件:仅运行 Vite 和 Django `runserver`,未运行 Celery Worker。
- 现象:智能受理、模型连通测试、发布 Agent 运行均成功入队,但没有后续步骤。
- 影响:无法完成自动建单、模型返回、Skill 输出、证据落库和运行指标验收。
- 复验要求:保持非 Docker 方式,增加项目规定的 Celery Worker 启动命令,并确保其
连接到当前 Redis、PostgreSQL、MinIO 与模型渠道。
- 复验结果:Worker 已连接 Redis 并完成受理、模型测试和 Agent 运行三类任务。
## 本轮产生的验收数据
| 类型 | 标识 |
|---|---|
| 工单 | `TK202607270001` / ID 13 |
| 自动创建工单 | `TK202607270003` / ID 15 / `pending_info` |
| 协作账号 | `acceptance-no-ai` |
| 智能受理 | `75f6655c-59cb-4765-8389-31846013def7` |
| 初验智能受理 | `75f6655c-59cb-4765-8389-31846013def7` |
| 复验自动建单受理 | `d82d1bc4-2563-4b9c-a419-329dcd4f26eb` |
| 复验取消受理 | `a47ed6de-6800-4bd3-9a4c-fd6702be69e9` |
| 知识草稿 | `UAT-20260727 登录回调持续加载排查` |
| 解决方案草稿 | `UAT-20260727 登录回调恢复方案` |
| Agent | ID 4 / `uat_login_triage` / 发布 v1 |
| Agent 运行 | `59843de3-fd75-4f97-883c-a53728618a4f`,已取消 |
| Agent | ID 4 / `uat_login_triage` / 初验 v1,复验发布 v2 |
| 初验 Agent 运行 | `59843de3-fd75-4f97-883c-a53728618a4f`,已取消 |
| 复验 Agent 运行 | `c4e7c400-2b8c-444f-9364-ba8988b74ec8`,成功 |
这些数据保留在本地数据库中,便于修复后沿用同一上下文复验;本轮没有自动删除用户
数据,也没有清理已有业务记录。
## 复验准入条件
## 复验完成情况
1. 修复三个 `select_for_update()` 与可空 `select_related()` 组合导致的 500。
2. 使用非 Docker 方式补充启动异步 Worker,并确认任务消费者在线。
3. 重新执行工单编辑、支持分析、智能受理取消三个失败场景。
4. 完成一次智能受理到自动建单的完整闭环,核对材料、字段证据和工单事件。
5. 完成一次模型连通测试与一次发布 Agent 运行,核对步骤输出、Token、耗时和审计。
6. 对修复后的关键页面重新截图,并将本报告结论更新为最终验收结果。
1. 三个 `select_for_update()` 与可空 `select_related()` 组合导致的 500 均已修复。
2. 非 Docker Celery Worker 在线并消费当前 Redis 队列。
3. 工单编辑、支持分析、智能受理取消三个失败场景均已通过。
4. 智能受理已自动创建正式工单,字段证据、原始文本、运行和待补全任务可追溯。
5. 模型连通测试与发布 Agent 运行均已取得真实成功输出及 Token、耗时记录。
6. 复验截图已加入本报告;初验失败和阻塞项全部关闭。