文档: 上下文管理派工与决策单+UIUX三维走查报告
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# 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 红条先例)
|
||||
Reference in New Issue
Block a user