# 失败插入卡片重试与删除:任务计划 ## 目标 为图片/附件“插入失败”卡片增加可用的“重试”和“删除”操作:重试沿用原附件并正确更新卡片状态,删除只移除对应失败项;同时保证重复点击、再次失败、会话恢复和现有发送流程不被破坏。 ## 范围 - 失败卡片的前端渲染、事件处理和状态同步。 - 必要的后端/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 | 补丁未生效;读取实际计划文件后改用现有“资源”区段作为追加锚点 |