# DevFlow 整体 UI/UX 三维走查 — 易用 / 智能 / 可靠 > 日期: 2026-09-29 | 统筹: AI-Ops | 方法: 3 路只读子代理并行走查 + 主代理抽查核验 > 范围: 非 aichat 全部页面(aichat 区已有 09-28/09-29 两轮 56 项覆盖,不重复) > 核验: 主代理对高严重度条目抽查 4 条(Knowledge 假成功 toast/阶段徽章硬编码/AiHome 空占位/extractNow 零调用),全部属实 > 派工: 修复批次与决策项见《02-架构设计/专项设计/aichat上下文管理-派工与决策单-2026-09-29.md》第二部分(UI/UX 扩展节) --- ## 一、易用性维度 ### 基线核对: 08-02《UIUX扩展审查》P0+P1 共 12 项全部已修 ✅ | 项 | 证据 | |----|------| | P0 project.rs 空if块 | 7f0edce,现 6 处 return Err(project.rs:172/288/380/494/558/813) | | P0 git.rs exec_git 返 success+NO_WINDOW | git.rs:87-90 (String,bool);:48-60 creation_flags | | P0 module.rs NO_WINDOW | module.rs:629-634(同 7f0edce) | | P0 DependencyGraph 环高亮 | :346-348 cycleNodes 经 renderGraph 注入,4df91ed 深化防环 | | P0 FileExplorer closeDropdown | :422-423 closest('.module-dropdown') | | P0 Tasks 快捷菜单 | :923 document click 监听 | | P1 统计源解耦 | f736f43,stores/project.ts:111-117 独立 COUNT 通道 | | P1 长 AI 文本折叠 | 9e85cad,MessageList/ConflictResolver/HelpRequiredCard/ToolResultBody 四处 | | P1 AuditLog 后端筛选+total | audit/record.rs:222-249 WHERE+COUNT | | P1 usePersistedRef | composable 存在,五页接入 | | P1 审批体系一致 | 13ecd7e/4860505 浮窗计时+四键统一+拒绝确认+失败 toast | | P1 git status 缓存 | 5a92e60,module.rs:354-383 TTL 缓存 | **结论**: 08-02 基线 P0/P1 已清零,P2 打磨随近期提交消化大半。易用性存量债已还清。 ### 易用性增量(3 条) 1. **原生 alert 残留+绕过 i18n**: Tasks.vue:828 `alert('请选择项目')` — Tauri webview 原生弹窗,项目已自建 ConfirmDialog 就是为此,全 views 仅剩此一处 2. **分离窗口坏参数无错误态**: FileExplorerDetached.vue:4-6 `?projectId=` 缺失时永远 spinner,无错误/空态 3. **dev 路由进生产**: router/index.ts:69-72 `/dev/x6` 无 `import.meta.env.DEV` 守卫 其余抽查良好: 删除均有 ConfirmDialog、表单有防双击、详情页有返回路径。 ## 二、智能化维度(AI 触点盘点) ### 触点地图要点(13 页面) - **有触点**: TaskDetail(AI 执行推进+TaskOutputCard+自审)、Projects(AI 扫描填表+批量导入 LLM)、Ideas(对抗式评估)、Knowledge(被动收件箱)、Settings(AI 配置齐全)、ApprovalPopup(审批本身) - **零触点**: Tasks(全页手工,无一处 AI)、Dashboard(纯 SQL 计数)、AuditLog(纯分页)、AiHome(**空占位 div,讽刺:AI 首页零内容**) - **架构缺口**: AiChat 不接收业务上下文 props(AiChat.vue:150-152 仅 detached),业务页对 75 个注册工具零触达;唯一上下文通道是用户手打 @提及 ### 空白发现(按 价值×成本 排序,前 5) 1. **知识库「立即提炼」按钮**: 后端链路全就绪零调用 — `knowledge_extract_now` 已注册(lib.rs:483)/api 已封装(stores/knowledge.ts:191)/views 零引用(grep 实证 0)。自动提炼每会话仅 1 次且失败静默。**纯接线活** 2. **想法批量对抗评估**: `evaluate_ideas_batch`(idea.rs:318)已实现,前端无任何调用。Ideas 过滤栏加批量入口即可。**纯接线活** 3. **业务页带上下文开 AI 面板**(最大架构缺口): useAiPanel 暴露 `openWithAugmentation({kind:'task',id})` 预填 @提及+指令模板,复用 augmentation/resolvers.rs 解析链。解锁「就此任务问 AI」全场景 4. **工作流失败 AI 诊断**: 失败仅静态文案,后端已有 failed_node 结构化信息(workflow.rs:411-430)无人消费。失败旁加「AI 诊断」发会话分析 5. **Dashboard AI 洞察位**: 统计纯本地计数,项目进度是硬编码映射表(constants/project.ts:52-59 planning=20%/in_progress=55%);AI 工具 get_project_timeline 已能答"上周做了什么"但无产品出口。加 AI 周报卡 其余: 任务推进前风险检查(复用 AiSelfReviewNode)/对话转任务草稿(create_task 工具+idea 关联已有)/项目健康度真实化(先用 count 通道替换映射表,不必 AI)。 ### 交互一致性 AI 触点至少四套范式并存: 入口(🤖 ghost 按钮/accent 实心/header primary/无入口)、失败提示(内联 warning/eval-error/error-banner/自管 toast)各页各异。建议抽「AI 触点」通用组件统一,否则每个新 AI 功能都在复制新样式。 ## 三、可靠性维度(15 条,按严重度) ### 数据错(成功假象/竞态/重复提交) 1. **Knowledge 新建失败仍弹成功 toast 且丢表单** views/Knowledge.vue:384-393 — store.create 吞错返 null,视图不检查返回值直接关弹窗+success(对照 Projects.vue:304 有 `if (!r) return` 守卫) 2. **AuditLog 翻页竞态** views/AuditLog.vue:289 — load() 无序号守卫,prevPage/nextPage 无 loading 拦截,慢旧响应覆盖新页数据 3. **TaskDrawer 切任务慢响应覆盖** components/task/TaskDrawer.vue:249-258 — 常驻挂载+watch taskId 触发 load 无守卫,A 数据盖到 B 上 4. **GitChanges 双触发源竞态+失败静默清空** components/project/GitChanges.vue:352 — watch(moduleId)+watch(refreshKey) 并发,旧响应晚到覆盖;:371/:421/:439 三处 catch 静默 5. **回收站恢复/彻底删除无 pending 禁用** views/Projects.vue:83-84 — 双击同帧两次 purge(不可逆级联物理删) 6. **灵感状态切换失败零反馈** views/Ideas.vue:452 — 无 try/catch 成 unhandled rejection,badge 静默回弹(同文件其他操作有 catch,此处漏网) ### 布局破 7. **Diff 长行静默裁剪不可滚动** components/project/FilePreview.vue:1063-1067 — `white-space:pre; overflow:hidden` flex min-width 归零,diff 核心信息不可读 8. **Markdown 宽表格被裁** views/TaskDetail.vue:916 + TaskOutputCard.vue:93-97 — ai-md.css:59 约定滚动交各页容器,AiChat 加了这两处没加 9. **ConfirmDialog 长路径溢出** components/ConfirmDialog.vue:82-86 — 360px 弹窗无 word-break,Windows 反斜杠路径画出去 10. **浅色主题滚动条隐身** styles/global.css:132-133 — 白色低透明 thumb 硬编码,light 无 override ### 视觉契约破坏(硬编码绕过 token) 11. **任务阶段徽章 6 色 Material 硬编码** views/ProjectDetail.vue:1430-1436 — 浅色主题下 #64b5f6/#ffc107 对比度塌陷;ProjectCard.vue:140 同款 12. **优先级色零散硬编码** views/Tasks.vue:1247 + TaskDetail.vue:877 + TaskBatchBar.vue:272-273(Element 调色板 #67c23a 非 --df-success) 13. **git untracked 绕过已定义 token** GitChanges.vue:671 + FilePreview.vue:658 — `#999` 而 `--df-git-untracked` 就定义在 global.css:47 14. **FileExplorer 增删/扫描失败仅 console** components/project/FileExplorer.vue:529/545/464 — 无任何 UI 反馈(同款操作 ProjectDetail:812 有 Message.error) 15. **Dashboard 加载失败渲染成空数据假象** views/Dashboard.vue:81-94 — store 吞错写 state.error,页面与两面板均不消费,故障时显示"暂无灵感"+统计归零 ### 干净面(实测确认,无需担心) stores 层序号守卫(project/tasks/knowledge)与审批链(_approvalInFlight/processingId/submitting)防御完整;看板拖拽/批量动作/双击防护完整;渐变 10 处均 token 填充无违规;FileTree 77 处 hex 为 SVG 图标品牌色合法。 --- ## 四、专项: AI 工具授权目录体验(用户需求 2026-09-29) 用户实测痛点(截图实证): agent 任务中被路径授权拦截(微信目录属白名单外/敏感路径),工具执行失败,体验中断。 现状体系(audit/path_auth.rs): 三层判定 — 黑名单硬拒(Denied,不挂起)/白名单外挂起(NeedsAuth→DirAuthDialog 四级授权 once/session/always/deny)/白名单放行(Authorized)。 需求: 加「一键放行」总开关。设计建议(已可派工,细节见派工单 A1): - 开关落点: `check_file_tool_auth` 读 Settings KV,bypass 开启时 NeedsAuth→Authorized 直通 - **黑名单保留硬拒**(安全自保护: .ssh/.aws/凭据目录防 AI 误读,与体验无关) — 是否连黑名单一起放行作为子决策 D2 - UI 显眼性: 开启时对话区常驻横幅「授权已放行」,防静默裸奔(对齐 claude code bypassPermissions 红条先例)