6.3 KiB
项目详情页走查报告(概览/文件/依赖图)
走查日期:2026-08-09 范围:
src/views/ProjectDetail.vue(1346 行)+src/components/project/(FileExplorer 837 / FileTree 405 / DependencyGraph 490 / FilePreview / GitChanges / ModuleNode)+ 后端src-tauri/src/commands/module.rs方法:3 路并行 Explore agent(概览/文件/依赖图)+ 主代理独立核查 ProjectDetail.vue 本体 性质:只走查登记,不实施代码(守 session-role-diagnose-only) 关联:UIUX 扩展审查(2026-08-02)、TaskDetail 走查(2026-08-09,同批父子任务详情页)
一、概览 tab(ProjectDetail.vue)— 18 项
P1(3 项)
| # | 问题 | 位置 |
|---|---|---|
| O1 | projectTasks 无 df-data-changed 本地监听 → AI/其它视图改任务后概览任务列表陈旧(TaskDetail 已做 B-260616-18,此处漏做) | :534-542, :849-863 |
| O2 | 工作流日志/DAG/进度读全局 liveEvents,无项目隔离 → 跨项目数据错配(正在看项目 A 显示 B 的工作流) | :676-689, :696-709 |
| O3 | 概览工程列表与 FileExplorer 双向不同步 → 文件 tab 增删改工程后切回概览 modules 陈旧 | :548-555 |
P2(5 项)
| # | 问题 | 位置 |
|---|---|---|
| O4 | 快速切项目 loadProjectTasks/loadModules 竞态(无 seq 守卫) | :866-871 |
| O5 | WorkflowDagDisplay 边条件编辑 emit update:dagJson 父级未监听 → 编辑静默失效回退 | :326 |
| O6 | onUnmounted stopEventListener 停全局 workflow 监听,可能波及其他视图(共享单例) | :876-880 |
| O7 | 折叠态 descExpanded/workflowLogCollapsed 跨项目残留 | :457-462 |
| O8 | 概览任务列表无 loading 态、无 limit 分页(超上限静默截断) | :537, :292-309 |
| O9 | 项目状态映射不完整:in_progress/testing 等无 i18n 文案 | constants/project.ts:11-15 |
P3(10 项)
O10 checkPath 重复触发(watch+显式双发)· O11 loading 态误判(store.error 非空显示"不存在")· O12 任务卡片只读不可点击跳详情 · O13 模板多次 parseStack 重复 JSON.parse · O14 sourceScores 宽度未 clamp · O15 日志自动滚动打断上翻 · O16 descCollapsible 字符数近似 vs TaskDetail DOM 测量不一致 · O17 onMounted 链式 await startEventListener 抛错跳过 checkPath · O18 handleSync 未刷模块/灵感
二、文件 tab(FileExplorer/FileTree/FilePreview/GitChanges)— 24 项
P1(3 项)
| # | 问题 | 位置 |
|---|---|---|
| F1 | AI 写文件后自动切变更视图不刷新 GitChanges 列表 + 徽标计数被清零(v-show 不重挂载,GitChanges 唯一重拉是 watch moduleId) | FileExplorer:399-411, :368 |
| F2 | 子目录展开失败把父级整棵树替换为错误态且无法自愈(error 置父实例,优先于列表渲染) | FileTree:157-181, :14 |
| F3 | 中文文件名 git status 八进制转义未还原 → 变更视图乱码/打不开/树无徽标(core.quotepath 默认) | module.rs:1081-1091, GitChanges:66-73 |
P2(9 项)
F4 git diff 仅 unstaged(staged/untracked 空 diff)· F5 切工程后 gitStatusData 不清 → 徽标张冠李戴 · F6 GitChanges 切工程遗留提交详情/选中态 · F7 文件树切工程双重请求+短暂显示旧文件 · F8 零工程文件 tab 永久转圈无空态 · F9 打开文件 tab 即全量 git status+log 扫描(纯浏览也扫)· F10 变更视图点文件默认看原文非 diff · F11 切 tab v-if 反复销毁重建 FileExplorer(状态全丢+重复扫描)· F12 FilePreview 大文件同步高亮阻塞 UI
P3(12 项)
F13 GitChanges.selectFile 拉 diff 从不渲染 · F14 refresh 用固定 50ms 睡 · F15 展开目录无加载反馈 · F16 findEntryGitStatus 全缓存线性扫描 · F17 双击目录无 in-flight 去重 · F18 FilePreview 切文件头部 size 残留 · F19 R 状态样式不一致 · F20 提交搜索只过滤已加载 50 条 · F21 提交 diff 含空格路径解析失败 · F22 目录不存在误显"非 Git 仓库" · F23 面包屑点击不展开目标目录 · F24 文件树 git 徽标模块路径≠仓库根失效
三、依赖图 tab(DependencyGraph)— 18 项
P0(1 项)
| # | 问题 | 位置 |
|---|---|---|
| G1 | 节点 Vue 组件从未注册到 x6-vue-shape → 节点根本不渲染(register({shape,component}) 未调用,component 字段库内不读;ModuleNode 读 props.data 但 vue-shape 传 {node,graph}) |
:82, :174-185, ModuleNode:18-26 |
P1(3 项)
| # | 问题 | 位置 |
|---|---|---|
| G2 | UX-P0-4 环高亮仍是空操作(attrs.body 选择器在 vue-shape 无 body 元素) | :186-190 |
| G3 | 删除参与依赖的工程必失败(FK 约束无级联清理)→ remove_project_module 报错+前端误导 | module.rs:249-260 |
| G4 | 点击节点无任何效果(emit 无人监听 + router.push 重复导航空操作) | :230-233 |
P2(9 项)
G5 cycleNodes 跨数据变更/跨项目不重置 · G6 重复依赖可重复添加(前后端无去重)· G7 添加依赖不防环 · G8 边删除按钮定位偏移(未计工具栏高度)· G9 依赖加载失败静默吞掉→误导性空态 · G10 添加依赖失败无反馈 · G11 边 hover 监听重复累积(off 删不掉旧 handler)· G12 每次 renderGraph 重置视野 + 拖拽位置被 dagre 覆盖 · G13 无加载态
P3(5 项)
G14 后端 add_module_dependency 不校验 from==to 与模块归属 · G15 exportPNG 回调错误无法 catch · G16 ModuleNode 路径截断省略号混用+兜底丢根锚点 · G17 死配置/未过滤项(History/Snapline 无 UI、archived 进图、dep_type 回落)· G18 detect_module_cycles 只标节点不标边(需确认是否逐环展示)
四、优先级建议
P0(崩页/核心不可用):G1 依赖图节点不渲染 P1(数据正确性/一致性):F3 中文 git 乱码 · G3 删依赖工程必失败 · O2 工作流跨项目串数据 · O1 任务列表陈旧 · F1 变更视图不刷新 P2(体验/打磨):O3 模块双向同步 · F8 零工程空态 · F9 全量 git 扫描 · F11 切 tab 状态丢失 · G2 环高亮 · G4 节点点击死代码
五、登记去向
- 本报告:
docs/05-代码审查/项目详情页走查-2026-08-09.md - 看板:
docs/todo.md增登记条目(P0/P1 优先,P2/P3 分批) - 不实施:本次仅走查登记(用户明确要求先检查做记录)