Files

56 lines
3.4 KiB
Markdown
Raw Permalink 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.

# 失败插入卡片重试与删除:任务计划
## 目标
为图片/附件“插入失败”卡片增加可用的“重试”和“删除”操作:重试沿用原附件并正确更新卡片状态,删除只移除对应失败项;同时保证重复点击、再次失败、会话恢复和现有发送流程不被破坏。
## 范围
- 失败卡片的前端渲染、事件处理和状态同步。
- 必要的后端/API 复用或补充。
- 定向回归测试、样式和无障碍状态。
- 不重构无关消息链路,不覆盖当前工作区中的“独立任务看板”改动。
## 阶段
1. **初始化任务上下文并定位失败附件链路** — `complete`
2. **明确重试与删除交互契约并补充回归测试** — `complete`
3. **实现失败卡片重试与删除行为** — `complete`
4. **完善操作按钮样式与无障碍状态** — `complete`
5. **运行定向测试并修复问题** — `complete`
6. **执行差异审查与完整回归** — `complete`
7. **清理临时跟踪文件并交付** — `complete`
## 验收条件
- 仅失败卡片展示“重试”和“删除”。
- 点击“重试”后复用原附件,进入明确的处理中状态;成功后不再显示失败操作,失败后恢复可重试状态并保留可理解的错误提示。
- 重试过程中禁用重复操作,避免并发插入或重复提交。
- 点击“删除”只移除目标失败卡片,不影响消息文本、其他附件或其他消息。
- 刷新/恢复会话后的失败卡片仍可执行两项操作,或按现有持久化边界保持一致行为。
- 定向测试与项目相关回归通过;无新增控制台错误。
## 关键决策
| 决策 | 原因 |
|---|---|
| 使用独立 `.planning` 与 Trellis 任务目录,不切换 `.trellis/.current-task` | 当前工作区另有“独立任务看板”任务正在运行,避免跨会话状态覆盖 |
| 先追踪现有插入请求和失败状态,再决定是否新增 API | 优先复用既有链路,减少协议与持久化风险 |
| 以失败项标识作为重试/删除目标,不按文件名匹配 | 同名附件可能同时存在,必须精确操作单项 |
## 风险与约束
- `public/app.js`、`server.js` 等文件已有未提交改动;补丁必须保持局部并在最终差异中区分本任务内容。
- 删除属于界面内失败项清理,不删除用户磁盘上的原始文件或服务器无关资源。
- 所有自动化测试单次运行控制在 60 秒内。
## 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| Trellis 新任务默认未生成 `prd.md` | 1 | 按工作流要求显式创建 PRD,并保留已生成的上下文清单与任务元数据 |
| `codebase-memory-mcp` 补查 `send` / `clearUserMessageIndex` 时 transport closed | 1 | 核心链路已通过 MCP 确认;剩余局部实现按约定降级为 `rg/sed` 校验,不重复相同失败调用 |
| 前端单测跨 `vm` 上下文对象被 `deepStrictEqual` 判为原型不一致 | 1 | 对实际发送载荷先做 JSON 规范化,再比较纯数据结构;功能载荷本身完全一致 |
| 回归命令漏写 `--target`,误执行完整回归 | 1 | 完整回归已通过;查明 CLI 只解析 `--target` 或环境变量,后续仅补跑未覆盖的专项目标 |
| 计划同步补丁引用了研究文档中的错误标题 | 1 | 补丁未生效;读取实际计划文件后改用现有“资源”区段作为追加锚点 |