| phase |
plan |
type |
wave |
depends_on |
gap_closure |
files_modified |
autonomous |
requirements |
must_haves |
| 06- |
06 |
execute |
5 |
|
true |
| backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py |
| backend/tests/test_uploads_middleware_core_logic.py |
|
true |
|
| truths |
artifacts |
| 提及文件(ref_kind=mention)发送时不应被识别为本次新上传文件。 |
| <uploaded_files> 的 new_files 区块仅包含真实上传附件,不包含 mention 引用。 |
|
| path |
provides |
contains |
| backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py |
按 metadata 区分真实上传与 mention 引用 |
_files_from_kwargs |
|
| path |
provides |
contains |
| backend/tests/test_uploads_middleware_core_logic.py |
mention 引用过滤回归测试 |
ref_kind |
|
|
|
关闭 UAT 新增 gap
:修复“ref_kind=mention, ref_source=upload 被当作本次上传文件”的误判。
Purpose: 保持提及文件与真实上传附件在后端语义分离,避免 injected <uploaded_files> 误导模型。
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"`
<success_criteria>
- UAT 新增 gap 的 root cause 与修复措施一一对应。
- 计划可直接由
/gsd-execute-phase 6 --gaps-only 执行。
</success_criteria>
After completion, create `.planning/phases/06-/06-06-SUMMARY.md`