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