--- phase: 06- plan: 06 type: execute wave: 5 depends_on: - 06-05 gap_closure: true files_modified: - backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py - backend/tests/test_uploads_middleware_core_logic.py autonomous: true requirements: - ATREF-04 must_haves: truths: - "提及文件(ref_kind=mention)发送时不应被识别为本次新上传文件。" - " 的 new_files 区块仅包含真实上传附件,不包含 mention 引用。" artifacts: - path: "backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py" provides: "按 metadata 区分真实上传与 mention 引用" contains: "_files_from_kwargs" - path: "backend/tests/test_uploads_middleware_core_logic.py" provides: "mention 引用过滤回归测试" contains: "ref_kind" --- 关闭 UAT 新增 gap:修复“ref_kind=mention, ref_source=upload 被当作本次上传文件”的误判。 Purpose: 保持提及文件与真实上传附件在后端语义分离,避免 injected 误导模型。 Output: Middleware 仅接收真实上传文件为 new_files,mention 引用不再进入 uploaded_files state update。 @.planning/phases/06-/06-UAT.md @backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py @backend/tests/test_uploads_middleware_core_logic.py Task 1: 过滤 mention 引用,避免误判为新上传 backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py 在 `_files_from_kwargs` 解析 `additional_kwargs.files` 时,若条目 `ref_kind == "mention"` 则直接跳过,不纳入 `new_files`。保留现有 filename 校验、size/path 归一化、磁盘存在性检查逻辑。 - `ref_kind=mention` 条目不会进入返回列表。 - 普通上传条目(无 ref_kind)行为不变。 - `before_agent` 的 `` 注入仅反映真实上传。 Task 2: 补充回归测试覆盖 mention 过滤 backend/tests/test_uploads_middleware_core_logic.py 新增测试:当 files 中包含 `ref_kind=mention`(含 `ref_source=upload`)时,`_files_from_kwargs` 不返回该条目;并验证 mixed list 下真实上传仍可保留。 - 新增测试在修复前失败、修复后通过。 - 不影响已有核心 middleware 测试。 - `cd backend && pytest -q tests/test_uploads_middleware_core_logic.py -k "mention or files_from_kwargs"` - UAT 新增 gap 的 root cause 与修复措施一一对应。 - 计划可直接由 `/gsd-execute-phase 6 --gaps-only` 执行。 After completion, create `.planning/phases/06-/06-06-SUMMARY.md`