Commit Graph
3 Commits
Author SHA1 Message Date
admin d97fb0fe84 项目管理界面:统一视图 + 提示收进「!」 + 数据时效可见
用户口径(2026-10-06 逐字)
- 「没安装机制的工作区不显示  黄字描述都放到 !号的图标中,不显示在工作台」
- 「这里分类不要按照工作区分了,记住 项目管理是统一管理」

改动
1. 统一视图(默认「全部」)
   - ⛔ 删掉「按工作区分块」,改为**一张四列看板**汇总本机所有目标的卡片
   - 归属改由**卡片上的「目标」标签**体现(.badge.goal),⛔ 不靠分区
   - 选择器默认「全部(N 个目标)」;选单个目标仍可切到单项目视图
   - 顺带删掉随分区一起废掉的样式(projgroup/pghead/lane* 等,共 15 行死代码)

2. 提示一律收进右上角「!」图标
   - 工作台上去掉所有黄字横幅(原来是 notice 容器)
   - 「!」无内容时淡显且不可点;有内容时点开弹层、点外面/Esc 关闭
   - 未装机制的工作区**彻底不显示**(含原来那行「扫到但没装机制 N 个目录」)
     ⚠️ 后端仍保留 `skipped` 字段(只给 CLI/取证用),UI 不再展示

3. 数据时效可见 + 自动刷新
   - 服务出快照时带 `epoch`;页面读数「数据 N 秒前」**只用服务的 epoch 算**,
     ⛔ 不用本地 Date.now() 顶上(否则刷新一次就"变新",看不出数据其实没动)
   - 超 15 秒 ⇒ 读数转黄(.is-stale),一眼看出"只是轮询、数据没动"
   - 每秒重画时效读数(⛔ 不重新取数)
   - 轮询自适应:数据有变化 ⇒ 3 秒一探;连续 3 次没变 ⇒ 放到 15 秒;一变立刻回收
   - 「刷新」按钮改手动模式:扫描中/已刷新有即时反馈(toast)

4. 操作反馈改一次性 toast(新建/删除/失败),⛔ 不常驻工作台

实测(浏览器侧,强刷新避开缓存)
- 6 张卡片全部落在一张四列板上,标签正确(本机协作 ×1 / vibe-product ×11)
- 四个列标题只出现一次(不再是每区一套)
- 「!」有 1 条内容、默认收起、点击展开、再点关闭
- 时效读数「数据 2 秒前」正常跳动
2026-10-06 09:17:17 +08:00
admin 89f820a0f8 项目管理界面:改为跨工作区 + 增删落地(回收站走 SHFileOperationW)
用户口径:「项目管理管的是本机所有工作区的项目 不是单个工作区的,可以
通过项目管理工具 创建新目标(新工作区),管理目标」。

数据面
- ⛔ 不再拉「单一上游看板」(并非每个区都起着 board.py ⇒ 会静默漏区)
- ✅ 直读各区文件:goal.json / tasks.json / collabd-state.json / collabd.config.json
- 「装了机制」判据=有 collabd.config.json 或 goal.json;跳过的也带出来
  (skipped 列表,同族 P0「作用域不许静默排除」)

增删
- 增:POST /api/create → init_workspace.py(骨架+目标登记)
- 删(轻):POST /api/delete{mode:"goal"} ⇒ goal.json 改名归档(可逆)
- 删(重):POST /api/delete{mode:"ws"} ⇒ 送系统回收站(可逆)

回收站:本机 gio/trash-put/trash 全没有,PowerShell Add-Type 被安全策略
拦 ⇒ 改走纯 ctypes 调 Windows Shell API SHFileOperationW。两个坑:
  ① pFrom 必须手搓双 NUL 结尾缓冲(LPCWSTR 会在第一个 NUL 截断)
  ② 判据⛔ 不是 rc==0 —— 实测成功时 rc 恒为 2(Shell 脏状态)⇒ 假报错。
     真判据=原路径不存在 且 fAnyOperationsAborted 为假

其它修复
- init_workspace.py 子进程输出按 GBK 解码 ⇒ 中文乱码 ⇒ 显式 encoding=utf-8
- 起服务只许触发计划任务(裸 & 活不过工具调用边界,被 SIGTERM)

实测:列表 3 个项目 + 12 个未装机制目录;增删两种粒度 HTTP 端到端全通;
      _pmtest-* 五个测试目录已进回收站且可恢复($I 元数据逐条核对)。
2026-10-06 09:01:10 +08:00
admin 1b68b1ac3f 项目管理界面:照 dsh-task-board 模式新建(目标=项目 · 只读复用现有看板 · 端口20100)
用户逐字:「不动现有任务会话看板 不是让你整体搬是照的他的模式做一个 项目管理的界面
          来管理 执行任务,目标等于项目」

- 新增 交付物/项目管理界面/{project-board.py,.html,-launch.py}
- 映射:目标→项目、任务类别→工作流、台账条目→卡片、会话→可跳转
- 数据源=现有看板已算好的 /board.json(⛔ 不重算、⛔ 不直读台账)
- 列=机制真实四态(待执行/执行中/有阻碍/已完成),⛔ 不硬套它那五列
- 现有看板 20099 / board.py / board.html 零改动
- 坑:pythonw.exe 下 sys.stdout is None ⇒ print/flush 崩(终端好、计划任务死)⇒ 加 _say() 兜
2026-10-06 08:23:15 +08:00