memory: §44 A方案收工vibe-product(已取证) + 界面四处返修(嵌套grid/虚胖/维度纠偏/命名)

This commit is contained in:
admin committed 2026-10-06 09:39:24 +08:00
1 parent 5d0745c470
commit f97541fd29
1 file changed
+103
+103
View File
@@ -510,3 +510,106 @@ vibe-product 上一条会话(10-06 08:15~08:20)已诊断出两条缺陷并**
⇒ 我的处置建议:**收工该目标**(`lifecycle=已完成` ⇒ 会 `supervise_stop` 停掉该区常驻)。
⚠️ 但这属**跨工作区状态变更** ⇒ 仍按 §40.8「先报用户、⛔ 不擅自动手」。
## 44、A 方案执行:收工 vibe-product(用户拍板)+ 界面三处返修
### 44.1 A 方案 —— 收工 vibe-product(**已执行并取证**)
用户拍板「A. 只收工 vibe-product」。正解入口=**`collabd.py --set-life 已完成`**
(⛔ 不是手改 `goal.json`:`goal_life_set()` 在写盘后会**自动调 `supervise_stop()`**,
手改只写字段、**常驻照跑**)。
cd E:/ProgramData/AIProject/vibe-product
python .workbuddy/collab/collabd.py --set-life 已完成 \
--by "pm-board-main-20261006" --check-why "三路全过、队列全 done ⇒ 用户拍板 A 方案:收工"
回显:`✅ 目标状态:进行中 → 已完成 |常驻程序:已优雅退出(pid 432,因:目标已完成…)`
🔴 **三条取证**(⛔ 不看回显就报成功):
| 观测量 | 收工前 | 收工后 |
|---|---|---|
| `tasklist /FI "PID eq 432"` | 进程在 | **没有运行的任务匹配指定标准** ⇒ 真没了 |
| `_collabd.log` 35 s 增量 | 32 s 涨 **1357 B**(每分钟约 2.5 KB 空转) | **0 字节** |
| `goal.json.lifecycle` | 进行中 | 已完成(`lifecycle_at/by/why` 留痕齐) |
⚠️ 备份在 `tmp/supervise-inbox/goal.json.bak-setlife-20261006-0926`(11160 B)⇒ 可回滚。
🔴 **连带结论($43.3 三条新问题):① 已消解**(收工即停写投影);**③ 不成立**(`collabd.py`
副本与技能源 md5 都是 `955bd92009d7cd0cccc53d867f591b49` ⇒ 已同步,**上轮记的"未核"要划掉**)。
②「`NEXT.md` 过期投影」的**共性缺陷仍在**(`paused_round()` 只在 `--once` 分支跑)
—— 停了这个区只是治标,⛔ 未修机制。
### 44.2 界面返修三处(用户当轮四条反馈)
**① 「卡片挤到一起去了」—— 真因=嵌套 grid(P0 级,我自己上一轮引入的)**
`renderAll()` 写 `cols.innerHTML = '<div class="cols">' + …`,而容器 `#cols` **本身就带
`class="cols"`** ⇒ 内层 div 成了外层 grid 的一个 grid item,先被压到 `min-width:auto`
(=内容宽 **399 px**),再在 399 px 里自己切 4 列 ⇒ **每列 89 px、卡片 67 px**。
实测:col 89px / card 67px / 页高 3192px
修后:col ~400px / card 381px / 页高 1415px
✅ 判据:**`#cols` 是容器时,内层⛔ 不能再套 `.cols`**。同族坑:光看 CSS 全对
(`.cols{grid-template-columns:repeat(4,minmax(0,1fr))}` 逐字正确),**读样式表查不出错**
⇒ 必须量 `getBoundingClientRect()`。⚠️ 我上一轮"统一视图"改造时引入,**用户肉眼先发现的**。
**② 「卡片上下之间的距离太远」** grid 默认 `align-items:stretch` ⇒ 12 张卡全在「已完成」、
另三列空着,**四列被拉成等高** ⇒ 整页虚胖。改 `align-items:start`。
连带:卡片 `gap` 9→6、`.cards` padding 10→8、`.col` `min-height:160px`→0、`main` 下 padding 60→40。
**③ 工作区 / 目标 两个维度串了(用户逐字纠正:「下拉框是选工作区的 跟目标没关系」)**
我上一版写「全部(**N 个目标**)」,而 N 取的是 `projects.length` = **工作区条数**
⇒ 把两个维度混成一个数(用户看到"3 个目标"才追问"本机不是只有一个目标吗")。
事实(`/api/projects` 实测):
| # | dir | name(改前) | has_goal | 卡片 |
|---|---|---|---|---|
| 0 | `ai1net-dsh-server` | 本机协作 | true | 1 |
| 1 | `vibe-product` | vibe-product | true | 11 |
| 2 | `agent-product` | (未命名 · agent-product) | **false** | 0 |
⚠️ 我一度把 #2 判成"空壳"、建议藏起来 —— **用户否了**:「加载机制就可以显示」
⇒ 它**装了机制只是没登记目标**(目录里**没有 `goal.json`**,但有 `collabd-state.json`
+ `_ensure.stamp`)。用户说它的目标是「加载机制」。
⇒ **口径:装了机制的工作区一律列出**,⛔ 不许因"没目标"就藏(同族「作用域不许静默排除」)。
改后:① 标签「项目」→「**工作区**」;② 选项文字=**目录名(+目标名)**;
③ 「全部(**3 个工作区**)」;④ 概要条分开报「工作区 3 个 / 其中已登记目标 **2** 个」;
⑤ `!` 弹层措辞改「装了机制但还没登记目标」。
**④ 「显示的是目录名,应该是真正名称」** `project-board.py:209` 原 `name = short or title`
⇒ 登记过 `short` 的区一律显示短名。改 **`title or short`**(都没有 ⇒ 「未登记目标 · <dir>」,
⛔ 不再印「(未命名 · …)」,用户原话「未命名 看不懂个是什么」)。
🔴 **我怀疑过是收工操作的副作用,查完是虚惊**:`goal.json` 的 `title`/`short`
**收工前后逐字一致**(与备份 diff)⇒ 不是新问题,是老口径。
⇒ 教训:**报"疑似副作用"前先 diff 备份**,⛔ 别让怀疑变成向用户上报的事实。
### 44.3 卡片信息重排 + 本工作区高亮
- **工作区名移到卡片末行**(用户:「工作区名称要不要 放到卡片下面」)⇒ 采纳。
`.wsrow`(上边框分隔)+ `.wsname`(等宽字体)+ `.wsself` 角标「本工作区」。
⛔ 不再混在 badge 堆里(那样会被忽略)。
- **本工作区卡片换色**(用户:「本工作区的卡片是不得 换个颜色」)⇒ `.card.is-self`
蓝底 + 蓝框 + 标题提亮。🔴 判定**来自服务端 `self` 字段**,⛔ 前端不硬编码目录名:
启动器注入 `DSH_PM_BOARD_SELF_WS`=**启动器文件位置往上两级**。
⚠️ ⛔ 不能用 `Path.cwd()` —— 实测计划任务的工作目录是 `交付物/项目管理界面`,
**不是工作区根**,那样算出来的"本工作区"是错的。
- **修时间戳印成 `1791957640.7257342`**:台账 `t_start`/`t_end` 有两种形态
(ISO 串 / **纯数字 Unix 秒**),原 `fmtWhen` 只认前者、不匹配就**原样返回**。
补:`1e9 < n < 4e9` ⇒ 走 `new Date(n*1000)` 转本地时间。
### 44.4 浏览器侧验收(沿用的两条硬规矩)
1. **必须强刷新**:`new_tab` 后直接读 DOM 会读到**旧缓存**(本轮又差点误判)。
✅ `cdp("Network.setCacheDisabled", cacheDisabled=True)` + `cdp("Page.navigate", …)`
+ `wait_for_load()` + `sleep(3)`。
2. **量尺寸⛔ 不靠读 CSS**:本轮"CSS 全对但渲染全错"就是靠 `getBoundingClientRect()` 抓到的。
3. ⚠️ harness 预导入里**没有 `sleep`** ⇒ 脚本头部自己 `import time; def sleep(s): time.sleep(s)`。
4. ⚠️ 探针选择器要跟着结构改:去掉内层 `.cols` 后 `#cols > .cols > .col` **恒为 0 条**
(不是布局坏了)⇒ 改 `#cols > .col`。