## 背景 前端审计第二轮(2026-08-21,10 视角并行研究)发现一批交互可靠性问题:操作失败被静默吞掉、错误坍缩为假空态、成排死控件。与第一轮 #1816-#1820 不重叠,聚合追踪。 ## 所属部分 - [x] 前端 - [ ] 后端 - [x] 客户端 ## 要做什么 - [ ] Composer 发送失败丢内容:`ConversationHost.tsx` `resetAfterSubmit` 在请求前清空 text/mentions/attachments,catch 不回滚;`submitState='error'` 无渲染消费 → 失败回灌内容 + 重试入口 - [ ] 附件上传失败静默吞 + 无 failed 相:`ConversationHost.tsx` catch 只删进度条目,无附件引用的文件被静默丢弃;`AttachmentUploadState` 只有 hashing/uploading/done → 补失败态与重试;`composer/upload.ts:50` 有真实 XHR 进度实现但零引用,接线 - [ ] 审批决策失败静默且成功 toast 先于请求:`workbenchTranscriptChromeActionMappers.ts` fire-and-forget → 乐观更新 + 失败回滚 + 错误提示 - [ ] Web 消息操作失败全部 `.catch(() => {})`:`app/web/src/App.tsx` pin/unpin/forward/recall/reaction/regenerate/cancel,成功 toast 却乐观先行 → 失败可见 + 状态恢复 - [ ] Desktop Agents 页 error = 永久 skeleton:`app/desktop/src/App.tsx` `loading = data === undefined` 且 retry 不 refetch → 对齐 Web 版 RecoveryPanel + 真 refetch - [ ] 文档页 error = 永久 skeleton:`useWorkbenchDocsRoute.ts` + `DocTableViews.tsx` 无 error 分支 → 补 error + retry - [ ] 联系人 error 坍缩为假空态:`hubDataMapping.ts` undefined→空 members;好友请求数据被丢弃从不渲染 → 三态分离 - [ ] Skill/MCP 市场 error prop 死链:`AgentMarketParts.tsx` 接受 error prop 但两个 App 都不传 → 接线 - [ ] Web 切会话闪现旧消息:messages `placeholderData` 无 `isPlaceholderData` 守卫(`webWorkbenchTranscript.ts`) - [ ] Desktop 切会话误导性「暂无消息」:`itemsLoading` 计算了但无 UI 消费 - [ ] 置顶公告横幅不可关闭:`ChatViewBridge.tsx` `onDismiss: undefined`;多条置顶只显示 pins[0] - [ ] 侧边栏内联重命名 onBlur 丢弃输入:`ConversationSidebar.tsx:433` - [ ] `WorkspaceHeader.tsx` 整排死控件:消息/云文档/新频道 tab + 新任务/待确认/会话设置按钮全无 onClick → 接线或下线 - [ ] `ChatEngineeringColumn.tsx` 「会话」tab 永久静态占位 - [ ] `AddContactModal.tsx` 二维码硬编码「有效期至 2026年7月18日」已过期 → 动态计算或下线 ## 验收标准 - [ ] 所有操作失败有用户可见反馈,无假成功 - [ ] 错误不再坍缩为空态;空态与加载态可区分 - [ ] 相关包 typecheck/test 通过;新行为带测试 ## 相关文档 - `docs/architecture.md` 非协商边界 #6(诚实性承诺)
背景
前端审计第二轮(2026-08-21,10 视角并行研究)发现一批交互可靠性问题:操作失败被静默吞掉、错误坍缩为假空态、成排死控件。与第一轮 #1816-#1820 不重叠,聚合追踪。
所属部分
要做什么
ConversationHost.tsxresetAfterSubmit在请求前清空 text/mentions/attachments,catch 不回滚;submitState='error'无渲染消费 → 失败回灌内容 + 重试入口ConversationHost.tsxcatch 只删进度条目,无附件引用的文件被静默丢弃;AttachmentUploadState只有 hashing/uploading/done → 补失败态与重试;composer/upload.ts:50有真实 XHR 进度实现但零引用,接线workbenchTranscriptChromeActionMappers.tsfire-and-forget → 乐观更新 + 失败回滚 + 错误提示.catch(() => {}):app/web/src/App.tsxpin/unpin/forward/recall/reaction/regenerate/cancel,成功 toast 却乐观先行 → 失败可见 + 状态恢复app/desktop/src/App.tsxloading = data === undefined且 retry 不 refetch → 对齐 Web 版 RecoveryPanel + 真 refetchuseWorkbenchDocsRoute.ts+DocTableViews.tsx无 error 分支 → 补 error + retryhubDataMapping.tsundefined→空 members;好友请求数据被丢弃从不渲染 → 三态分离AgentMarketParts.tsx接受 error prop 但两个 App 都不传 → 接线placeholderData无isPlaceholderData守卫(webWorkbenchTranscript.ts)itemsLoading计算了但无 UI 消费ChatViewBridge.tsxonDismiss: undefined;多条置顶只显示 pins[0]ConversationSidebar.tsx:433WorkspaceHeader.tsx整排死控件:消息/云文档/新频道 tab + 新任务/待确认/会话设置按钮全无 onClick → 接线或下线ChatEngineeringColumn.tsx「会话」tab 永久静态占位AddContactModal.tsx二维码硬编码「有效期至 2026年7月18日」已过期 → 动态计算或下线验收标准
相关文档
docs/architecture.md非协商边界 M0: 更新调研索引、竞品覆盖和 ByteDance 溯源 #6(诚实性承诺)