deerflow2/.planning/phases/06-/06-UAT.md

145 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
status: diagnosed
phase: 06-
source:
- 06-01-SUMMARY.md
- 06-02-SUMMARY.md
- 06-03-SUMMARY.md
- 06-COMMIT-SUMMARY.md
- 06-SUMMARY.md
started: 2026-04-15T03:14:38Z
updated: 2026-04-15T06:02:00Z
---
## Current Test
[testing complete]
## Tests
### 1. 输入 @ 可看到当前线程文件候选并可过滤
expected: 在输入框输入 @ 后出现候选列表,继续输入关键字可过滤,且候选仅来自当前线程。
result: issue
reported: "出现的候选列表应该在紧贴在input的上方"
severity: cosmetic
### 2. 选择候选后显示引用 chip 且支持删除/去重
expected: 选择候选后,输入区显示可删除 chip重复选择同一文件不会重复新增可通过删除按钮或 Backspace 移除最后一个 chip。
result: issue
reported: "我希望引用的图片出现在textarea中而不是在input上方而且不要复用tag组件"
severity: major
### 3. 引用上限为 10超过会被阻止并提示
expected: 单条消息最多只能添加 10 个引用;尝试添加第 11 个时出现错误提示且不会新增。
result: issue
reported: "限制为6个。且点击后端列表的时候不要收起input"
severity: major
### 4. 失效引用会被自动移除,但文本发送不被阻断
expected: 当某个已选引用失效时,发送时会提示“部分引用已失效,已自动移除”,其余内容仍成功发送。
result: skipped
reason: "本地无法测试失效引用。"
### 5. 带引用的消息可正常发送并保持文件上下文
expected: 发送包含引用的消息后,消息成功进入对话流;引用对应的文件信息在后续上下文中可用。
result: issue
reported: "文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention包含 ref_kind/ref_source上传文件会被当作上下文传参且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。发送提及文件时也会被误认为发送文件(例如 ref_kind=mention、ref_source=upload 的对象被当作 upload。"
severity: major
## Summary
total: 5
passed: 0
issues: 5
pending: 0
skipped: 1
blocked: 0
## Gaps
- truth: "在输入框输入 @ 后出现候选列表,继续输入关键字可过滤,且候选仅来自当前线程。"
status: failed
reason: "User reported: 出现的候选列表应该在紧贴在input的上方"
severity: cosmetic
test: 1
root_cause: "候选面板使用 `DropdownMenuContent` 默认定位,且未绑定输入框锚点/上边缘约束,导致面板位置与输入区视觉预期不一致。"
artifacts:
- path: "frontend/src/components/workspace/input-box.tsx"
issue: "mention dropdown positioned by generic menu behavior, not explicitly anchored above textarea"
missing:
- "将候选列表定位策略改为紧贴输入区上方(含滚动与窗口边界处理)"
debug_session: ""
- truth: "选择候选后,输入区显示可删除 chip重复选择同一文件不会重复新增可通过删除按钮或 Backspace 移除最后一个 chip。"
status: failed
reason: "User reported: 我希望引用的图片出现在textarea中而不是在input上方而且不要复用tag组件"
severity: major
test: 2
root_cause: "当前引用展示放在输入区外层绝对定位容器,并复用了 `Tag` 组件;未实现 textarea 内联引用预览组件。"
artifacts:
- path: "frontend/src/components/workspace/input-box.tsx"
issue: "references rendered in absolute `bottom-full` area using `Tag`"
- path: "frontend/src/components/ui/tag.tsx"
issue: "component reused for mention chips against UX requirement"
missing:
- "实现 textarea 内联引用卡片/图片缩略块"
- "替换 Tag 复用,使用专用引用 UI 组件"
debug_session: ""
- truth: "单条消息最多只能添加 10 个引用;尝试添加第 11 个时出现错误提示且不会新增。"
status: failed
reason: "User reported: 限制为6个。且点击后端列表的时候不要收起input"
severity: major
test: 3
root_cause: "上限常量硬编码为 10同时选择候选后调用 `setMentionOpen(false)` 并存在外部点击收起逻辑,导致输入态被打断。"
artifacts:
- path: "frontend/src/components/workspace/input-box.tsx"
issue: "`MAX_REFERENCES_PER_MESSAGE = 10` and mention selection closes dropdown/input focus"
missing:
- "上限从 10 改为 6 并同步提示文案"
- "选择候选后保持输入框展开与焦点,不自动收起"
debug_session: ""
- truth: "发送包含引用的消息后,消息成功进入对话流;引用对应的文件信息在后续上下文中可用。"
status: failed
reason: "User reported: 文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention包含 ref_kind/ref_source上传文件会被当作上下文传参且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。"
severity: major
test: 5
root_cause: "artifact 引用仅以前端构造的 `additional_kwargs.files` 元数据提交,缺少后端可解析的上下文绑定信号;另外 `@` 触发依赖当前 token 解析,未覆盖“任意输入位置”策略。"
artifacts:
- path: "frontend/src/core/threads/submit-files.ts"
issue: "references appended as metadata only; no backend-compatible context discriminator beyond ref_source"
- path: "frontend/src/core/threads/hooks.ts"
issue: "submit envelope does not include explicit artifact-context contract for backend resolution"
- path: "frontend/src/components/workspace/input-box.tsx"
issue: "mention trigger tied to `findMentionToken` result and closes when token not matched"
missing:
- "补充 artifact 引用的后端可消费上下文字段(与 uploads 对齐)"
- "确保任意输入位置输入 `@` 都可触发候选"
debug_session: ""
- truth: "若已输入文本,在任意位置输入 `@` 仍应弹出候选;选择文件后不得清空已输入问题文本。"
status: failed
reason: "User reported: 如果已经输入了文字,再输入@的时候,应该弹出候选列表,如果选择了文件,不要清空已经输入的问题"
severity: major
test: 5
root_cause: "当前选择候选后会执行文本 token 替换并 `trimEnd`,在已有输入场景可能导致用户已输入问题文本被截断或清空。"
artifacts:
- path: "frontend/src/components/workspace/input-box.tsx"
issue: "`selectMentionCandidate` mutates textarea value when resolving mention token"
missing:
- "选择候选后仅移除当前 mention token不影响其余已输入文本"
- "补充“已有文本 + 中途 @ + 选中文件”回归测试"
debug_session: ""
- truth: "提及文件ref_kind=mention发送时应保留 mention 语义,不应被系统识别为“本次新上传文件”。"
status: failed
reason: "User reported: 在发送提及文件的时候,系统误认为我的提及文件是发送文件。因为上传时传了 {filename,size,path,status,ref_kind:mention,ref_source:upload}。"
severity: major
test: 5
root_cause: "后端 UploadsMiddleware 在 `_files_from_kwargs` 中仅按 `filename/size/path/status` 解析 `additional_kwargs.files`,没有排除 `ref_kind=mention`,导致 mention 引用被归类为 new_files 并注入 `<uploaded_files>` 的“uploaded in this message”块。"
artifacts:
- path: "backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py"
issue: "`_files_from_kwargs` ignores `ref_kind/ref_source` and classifies mention references as newly uploaded files"
- path: "frontend/src/core/threads/submit-files.ts"
issue: "references use `ref_kind=mention` with `ref_source=upload|artifact`; middleware currently does not honor this discriminator"
missing:
- "在 `_files_from_kwargs` 过滤 `ref_kind=mention` 条目,不将其计入 new_files"
- "补充 middleware 单测覆盖 mention 条目不被识别为本次上传"
debug_session: ""