docs(test): 记录附件回合在重载后的 dev 上复验通过
:8080 已换成含本修复的二进制。仅附件得到梳理或解析引导,无关文字先回答再追问。
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
|
||||
维护规则:[问题记录与开发经验闭环](../ops/2026-09-23-issue-learning-workflow.md)。每个问题一个稳定 ID;主记录是事实与状态来源,本表为可检索投影。新发现及时登记,修复后保留记录;发布 blocker 仍见 [gap-matrix](../remediation/gap-matrix.md)。
|
||||
|
||||
更新:2026-09-28。只上传文档、无文字时对话 400 且前端只显示 HTTP_400(fixing,单测已过,dev 浏览器未复验)。历史任务 run 事件流 HTTP/2 与 502 另记,未在本轮修。激活预览前端预检与管理台密钥 form 已在 dev 浏览器复验(resolved,dev `3e534bbb`,项目 6023)。非编制人触发小队账本提交被 `uow: permission denied` 拒绝(fixing,待 dev 重跑)。test 注册 INTERNAL:标准角色 role-guest 缺失导致 FK 23503,已补种并重启 test(goose 77,resolved)。重复用户名 400 在新代码单测通过;当前 rc 二进制仍返回 INTERNAL,随下次含本提交的 test 制品生效。管理台重置密码入口被 F4-A 误删(端点仍在),已恢复 UI(resolved)。2026-09-27。上传链路:登记并修复上传文档跨端不可访问(占位模板退化 + 元数据/正文不落服务端,fixing 待 dev 集成)。2026-09-26。docgov 批准链:登记并修复 review_snapshot_id 装载缺失与 uow 行锁自死锁(resolved);memDocs 持久化失败缓存投毒(investigating)。历史 resolved 不表示本日产品回归通过。系统 code review P0/P1 批次修复落账(5 resolved + 1 deferred + 1 open,主记录见 [整改文档](2026-09-26-system-code-review-fixes.md),来源 [审计](2026-09-26-system-code-review.md))。
|
||||
更新:2026-09-28。只上传文档、无文字时对话 400 已在重载后的 dev 浏览器复验(resolved,`bin/agent-server` 10:22 +0800)。历史任务 run 事件流 HTTP/2 与 502 另记,未在本轮修。激活预览前端预检与管理台密钥 form 已在 dev 浏览器复验(resolved,dev `3e534bbb`,项目 6023)。非编制人触发小队账本提交被 `uow: permission denied` 拒绝(fixing,待 dev 重跑)。test 注册 INTERNAL:标准角色 role-guest 缺失导致 FK 23503,已补种并重启 test(goose 77,resolved)。重复用户名 400 在新代码单测通过;当前 rc 二进制仍返回 INTERNAL,随下次含本提交的 test 制品生效。管理台重置密码入口被 F4-A 误删(端点仍在),已恢复 UI(resolved)。2026-09-27。上传链路:登记并修复上传文档跨端不可访问(占位模板退化 + 元数据/正文不落服务端,fixing 待 dev 集成)。2026-09-26。docgov 批准链:登记并修复 review_snapshot_id 装载缺失与 uow 行锁自死锁(resolved);memDocs 持久化失败缓存投毒(investigating)。历史 resolved 不表示本日产品回归通过。系统 code review P0/P1 批次修复落账(5 resolved + 1 deferred + 1 open,主记录见 [整改文档](2026-09-26-system-code-review-fixes.md),来源 [审计](2026-09-26-system-code-review.md))。
|
||||
|
||||
| issue_id | 模块 / 检索词 | 问题 | 严重度 | issue_state | owner | 证据日期 / 范围 | 唯一主记录 | 经验 |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| ISSUE-20260928-attachment-only-turn | chat / chat/stream / message cannot be empty / HTTP_400 / attachments | 只上传文档、不输入文字时 turn 被空消息 400 拒绝,前端不读信封,用户看不到任何回复 | high | fixing | Cursor | 2026-09-28;内存 HTTP 与协调单测 PASS;:8080 仍为旧进程,浏览器未复验 | [主记录](../ops/short-term/2026-09-28-attachment-only-turn.md) | 待浏览器与真实 PI 梳理复验后补 |
|
||||
| ISSUE-20260928-attachment-only-turn | chat / chat/stream / message cannot be empty / HTTP_400 / attachments | 只上传文档、不输入文字时 turn 被空消息 400 拒绝,前端不读信封,用户看不到任何回复 | high | resolved | Cursor | 2026-09-28;dev :8080 重载后浏览器仅附件得到梳理审阅,无关文字先回答再追问;pending 分支 API 200 | [主记录](../ops/short-term/2026-09-28-attachment-only-turn.md) | 空消息门禁要放在附件判定之后;4xx 必须读信封。见[测试报告](../test-reports/2026-09-28-attachment-only-turn-test-report.md) |
|
||||
| ISSUE-20260928-task-run-replay-502 | web / useRecoveredTaskPhases / tasks/runs / ERR_HTTP2_PROTOCOL_ERROR / 502 | 历史失败气泡恢复订阅 task run 事件时出现 HTTP/2 协议错误和 502,与附件空消息 400 无因果关系 | medium | investigating | Cursor | 2026-09-28;用户控制台 `run_1790558010622744831`;本轮未改订阅逻辑 | [主记录](../ops/short-term/2026-09-28-attachment-only-turn.md#范围外) | 未修,保持观察 |
|
||||
| ISSUE-20260928-activation-preview-precheck | web / projectSettings / activation-preview / NO_GOVERNED_DOCUMENT / clientDutyIssues | 全部文档未纳入人工审批时前端仍 POST activation-preview,控制台 400 | medium | resolved | Cursor | 2026-09-28;dev 项目 6023 默认计划无 activation-preview 请求,兼任后 preview 200 | [主记录](../ops/short-term/2026-09-28-activation-preview-precheck.md#issue-20260928-activation-preview-precheck) | [LESSON-20260928-activation-preview-client-gate](../ops/lessons/2026-09-28-activation-preview-client-gate.md) |
|
||||
| ISSUE-20260928-admin-secret-password-form | web / EnvSettingsSection / password / form / secrets | 管理台 5 个密钥输入不在 form 内,Chromium 报 password DOM 警告 | low | resolved | Cursor | 2026-09-28;dev 模型与密钥页 passwordInputs=5 outsideForm=0 | [主记录](../ops/short-term/2026-09-28-activation-preview-precheck.md#issue-20260928-admin-secret-password-form) | 密码框放进 form;autocomplete 不能单独消除该 DOM 警告 |
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@
|
||||
|
||||
| owner | task | branch | worktree | mutex | status |
|
||||
|---|---|---|---|---|---|
|
||||
| Cursor | attachment-only-turn-2026-09-28 | fix/attachment-only-turn-2026-09-28 | .worktrees/attachment-only-turn-2026-09-28 | attachment-only-turn | in_progress |
|
||||
| Cursor | attachment-only-turn-2026-09-28 | fix/attachment-only-turn-2026-09-28 | .worktrees/attachment-only-turn-2026-09-28 | attachment-only-turn | done |
|
||||
| Cursor | activation-preview-precheck-2026-09-28 | fix/activation-preview-400-precheck-2026-09-28 | .worktrees/activation-preview-400-precheck-2026-09-28 | web-activation-preview | done |
|
||||
| Cursor | squad-commit-authority-2026-09-28 | fix/squad-commit-authority-2026-09-28 | .worktrees/squad-commit-authority-2026-09-28 | bizdev+docflow | in_progress |
|
||||
| Cursor | auth-register-internal-2026-09-28 | fix/auth-register-internal-2026-09-28 | .worktrees/auth-register-internal-2026-09-28 | auth-register | done |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: "只上传文档时不再返回裸 HTTP 400"
|
||||
task_id: attachment-only-turn-2026-09-28
|
||||
status: in_progress
|
||||
status: done
|
||||
created: 2026-09-28
|
||||
updated: 2026-09-28
|
||||
owner: Cursor
|
||||
@@ -15,9 +15,9 @@ write_scope:
|
||||
- web
|
||||
- .doc
|
||||
mutex: attachment-only-turn
|
||||
review_state: pending
|
||||
review_state: accepted
|
||||
integration_state: merged_local_dev
|
||||
deployment: not_loaded
|
||||
deployment: loaded_dev
|
||||
cleanup: pending
|
||||
remote_sync: not_requested
|
||||
---
|
||||
@@ -47,7 +47,7 @@ remote_sync: not_requested
|
||||
|
||||
## 验证
|
||||
|
||||
见 [测试报告](../../test-reports/2026-09-28-attachment-only-turn-test-report.md)。候选 `cb4d2af8` 已由 daemon `--ff-only` 合入 local dev。:8080 上的 `agent-server` 仍是改动前进程,浏览器和产品 PI 复验要等制品重新加载。
|
||||
见 [测试报告](../../test-reports/2026-09-28-attachment-only-turn-test-report.md)。代码候选 `cb4d2af8` 已在 local dev。`./scripts/launch.sh --no-docker` 于 2026-09-28 10:22(+0800)重建 `bin/agent-server` 并重启 :8080(pid 1002830,schema 78)。同一 Vite(:3100)上仅附件发送得到梳理与审阅,无关文字先回答再追问。
|
||||
|
||||
## 范围外
|
||||
|
||||
@@ -55,8 +55,8 @@ remote_sync: not_requested
|
||||
|
||||
## 五态
|
||||
|
||||
- review_state: pending(浏览器与产品 PI 未跑)
|
||||
- integration_state: merged_local_dev(`cb4d2af8`,第一父 `63144067`)
|
||||
- deployment: not_loaded(:8080 未换新二进制)
|
||||
- review_state: accepted(dev 浏览器三条路径已复验)
|
||||
- integration_state: merged_local_dev(代码 `cb4d2af8`,第一父 `63144067`)
|
||||
- deployment: loaded_dev(`bin/agent-server` 10:22 +0800,pid 1002830,`/health` schema 78)
|
||||
- cleanup: pending
|
||||
- remote_sync: not_requested
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
- OS:Linux;工作区 `.worktrees/attachment-only-turn-2026-09-28`;基线 `3e534bbb39d0d957e0b720a4ca06f22dd15959e6`。
|
||||
- 合入:候选 `cb4d2af8d30cecf8a1ca0f36eafbf46d56888387`(第一父 `63144067`)经 `validate` 后由 daemon `--ff-only` 进入 local dev。
|
||||
- 层级:工程单测与内存 HTTP。未重启 :8080 上已有的 `agent-server`,因此没有对正在运行的 dev 制品做浏览器复验。
|
||||
- 无对话后端时,梳理走模板回退,不把模板输出记成产品 PI PASS。
|
||||
- 层级:工程单测、重载后的 dev API,以及同一 Vite(:3100)上的真实浏览器。`./scripts/launch.sh --no-docker` 于 10:22(+0800)重建并重启 :8080。
|
||||
- 解析未完成时不调用对话模型;正文可读时回复来自运行中的 dev 助手(`agent_backend=pi-agent`),不是测试桩。
|
||||
|
||||
## 四、 预期结果 (Expected Results)
|
||||
|
||||
@@ -49,13 +49,17 @@
|
||||
- **输出**:2 pass / 0 fail,duration_ms 152
|
||||
- **判定**:PASS
|
||||
|
||||
- **浏览器 / 真实 PI Runner**:未运行。:8080 仍是改动前进程。
|
||||
- **判定**:未运行,不能记成产品链路 PASS。
|
||||
- **浏览器 / 重载后的 dev**(2026-09-28 10:22 之后,pid 1002830,schema 78)
|
||||
- **仅附件、解析未完成**(API,`parse_state=pending`):`POST /api/v1/chat/stream` 200,约 11.6s。回复:「《F-030-verify.pdf》仍在解析中,请稍后再试总结。」并说明回复「总结」后会梳理。`GET` 对应 turn 200 `completed`。
|
||||
- **仅附件、浏览器**:发送按钮在选中 PDF 后可用;用户气泡为「已上传文档:《F-030-verify.pdf》」;助手给出结构化梳理、初步审阅和编号下一步。`chat/stream` 200。未见「请输入文字,或上传文档后再发送」。截图见 [assets](assets/2026-09-28-attachment-only-turn/02-structured-review.png)。
|
||||
- **无关文字 + 附件**:浏览器输入「今天天气怎么样」并附上同一 PDF。先回复天气,再追加「另外已收到《F-030-verify.pdf》…」。`chat/stream` 200,约 22s。同一句话的 API 路径约 17s,追问文案一致。
|
||||
- **双空**:浏览器发送按钮保持禁用。API `message=""` 且无附件返回 400,`error` 为 `message cannot be empty`,turn 不创建。
|
||||
- **判定**:PASS
|
||||
|
||||
## 六、 自动化测试套件汇总 (Test Suite Execution)
|
||||
|
||||
本次实际运行的是上述包测试与一条前端用例,不是全量 `go test ./...` 或完整 `npm test`。
|
||||
本次实际运行的是上述包测试、一条前端用例,以及重载后的 dev API 与 :3100 浏览器三条路径。不是全量 `go test ./...` 或完整 `npm test`。
|
||||
|
||||
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
|
||||
|
||||
工程路径已能在无文字上传时给出解析引导或模板梳理,并在无关文字后追问。该候选已在 local dev。重新加载 dev 制品后,再用真实文档和产品 PI Runner 看结构化审阅是否达到预期文风。在此之前不能把浏览器或产品链路记为 PASS。
|
||||
只上传文档不再被空消息拒绝。解析未完成时给出引导;浏览器里这份验证 PDF 在解析有结果后得到梳理、审阅和下一步。无关文字先回答再追问。用户此前看到的「请输入文字,或上传文档后再发送」来自新前端配旧二进制;10:22 重载后的 :8080 已包含本修复。历史任务事件流的 HTTP/2 与 502 仍未处理。
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 202 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 210 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 241 KiB |
@@ -0,0 +1,16 @@
|
||||
dev 复验摘录(2026-09-28,二进制 bin/agent-server 重建于 10:22 +0800,pid 1002830,/health schema_version=78)
|
||||
|
||||
API 仅附件、parse_state=pending:HTTP 200,约 11.6s
|
||||
《F-030-verify.pdf》仍在解析中,请稍后再试总结。
|
||||
解析完成后直接回复「总结」,我会给出结构化梳理和初步审阅,并问你下一步要不要据此修订文档。
|
||||
GET turn:200 completed
|
||||
|
||||
API 双空:HTTP 400,error=message cannot be empty;turn 未创建(404)
|
||||
|
||||
API 无关文字+附件:HTTP 200,约 17s
|
||||
先回答天气,再追加:另外已收到《F-030-verify.pdf》。这条消息没有要求总结或依据文档编写。需要我总结,或据此更新对应文档吗?
|
||||
|
||||
浏览器 http://127.0.0.1:3100(与 frp :58880 同一 Vite):
|
||||
- 仅附件发送按钮可用;用户气泡为「已上传文档:《F-030-verify.pdf》」;助手给出结构化梳理、初步审阅与 1/2/3 下一步。chat/stream 200。
|
||||
- 无文字且无附件:发送按钮保持禁用。
|
||||
- 文字「今天天气怎么样」+同一 PDF:先回复天气,再出现「另外已收到《F-030-verify.pdf》…」。chat/stream 200。
|
||||
Reference in New Issue
Block a user