ソースを参照

fix(visual): v13 三项修复 4/4 达标

- 排序段选改浅色实底 rgb(240,240,240),字色主文字色非白字,整块分隔线
- 空描述卡:/reports 内容高差 44.0→14.0px、/stages 57.1→12.9px,卡内空白 61/63→0
- /pool 补 import CARD_CSS,页脚 4 元素×8 属性与 /reports 逐项相等(不一致 0)
- v12 回归 11/13 未退步;单测 46/46;check OK
FmodeCode 5 日 前
親
コミット
fd0db6ebf2
1 ファイル変更、84 行追加、0 行削除
  1. 84 0
      TASK-v14-fix.md

+ 84 - 0
TASK-v14-fix.md

@@ -0,0 +1,84 @@
+# v14:去掉占位回退 + 查清 CARD_CSS 根因
+
+> **小改动,两件事。不要重新设计任何视觉。**
+
+---
+
+## 一、占位字「(未填写一句话说明)」不要显示(用户点名)
+
+### 现状(我已实测,这是事实)
+
+```
+src/core/opportunity/opportunity.js:77
+    oneLiner: String(raw.oneLiner||'').trim().length >= 6 ? ... : ''
+    ← core 层已经正确:过短/为空就当空字符串
+
+src/components/kf-opportunity-card.js:160
+    <p class="one">${o.oneLiner || '(未填写一句话说明)'}</p>
+src/layout/kf-app.js:251
+    <div class="one">${opp.oneLiner || '(未填写一句话说明)'}</div>
+    ← 视图层又用兜底把空值补回来了
+```
+
+线上实测 `/pool` 9 张卡:第 0 张 `oneLiner` 为空 → 界面显示「(未填写一句话说明)」;
+其余 8 张是 31–47 字真实描述。**这行灰字等于把「你没填」印在卡片上给人看。**
+
+### 要求
+
+1. **两处 `|| '(未填写一句话说明)'` 全部删掉**,改为:`oneLiner` 为空时**整行不渲染**。
+   Lit 写法示例(不是唯一写法,但必须是「不产出 DOM」而不是「产出空元素」):
+   ```js
+   ${o.oneLiner ? html`<p class="one">${o.oneLiner}</p>` : ''}
+   ```
+2. **删掉后卡片必须仍然等高**。`/pool` 当前 9 张卡全部 389px,
+   删掉一行后第 0 张会变矮 → 用 flex 让卡内剩余空间均分(`justify-content` 或 `margin-top:auto`),
+   **不许留一个可见的空洞**(>24px 连续空白判失败)。
+3. **不许**改成「暂无描述」「待补充」这类替代文案——用户要的是不显示。
+4. `kf-app.js:251` 那处是抽屉里的同款,一并改。
+
+### 验收
+- 脚本量 `/pool` 9 张卡:**含「未填写」字样的元素数 = 0**;
+- 9 张卡高度差 **≤ 2px**;
+- 每张卡内最大连续空白 **≤ 24px**;
+- 有描述的 8 张,描述文本仍在(不能误删)。
+
+---
+
+## 二、查清 `CARD_CSS` 在 `/pool` 的丢失根因(上一轮没查出)
+
+### 已知事实
+
+- 补 `import { CARD_CSS }` 之前,`CARD_CSS` **没有进** `/pool` 的 `adoptedStyleSheets`;
+  补之后才出现。现象复现了,但**为什么没进**没查明。
+- `/reports`、`/report-type`、`/stages` 三个页面一直是正常的。
+
+### 要查的问题(按顺序,查到即停)
+
+1. `view-pool.js` 的 `static styles` 数组里到底有什么?是不是某项是 `undefined`
+   导致后面的项被跳过?(Lit 对 `undefined` 的处理会很安静)
+2. `CARD_CSS` 是 `src/pages/report-card.js` 导出的模块级常量。`view-pool.js` 有没有
+   通过别的路径间接依赖 `report-card.js`(比如 `cardFooter` 的 import),
+   造成模块循环,从而拿到 `undefined`?
+3. `adoptedStyleSheets` 的实际长度,在各页各是多少?把 `/pool` 补 import 前后的数字都打出来。
+
+### 交付
+- 在 `docs/v14-report.md` 写**根因结论**(一句话说清是什么),
+  附上你查证时跑的命令与输出关键行。
+- **如果确实查不出来**,就写「未查明」并列出**已排除的假设**(每条写为什么排除)。
+  不许写「可能是……」当作结论。
+
+### 顺带
+- 上一轮提到页脚对 `/reports` 有「两处有条件豁免」(左边多一条行内分隔线、纵向内衬归零)。
+  **确认它们是不是因为 `/pool` 的容器上下文不同才需要的**,如果是,说明白;
+  如果只是补丁,**不要动**(已达标),只记录下来。
+
+---
+
+## 三、纪律
+
+- 不改 `src/core/`(`opportunity.js:77` 已是对的)。
+- 不动已达标项:圆角、卡片等高、hover、底部留白、筛选栏、工作台两栏、排序按钮。
+  改前跑 `verify-visual-v12.mjs` + `verify-visual-v13.mjs` 存基线,改后对比**不能退步**。
+- 单测 46/46、`check.mjs` OK。
+- 新增项要有脚本实测值,不口述。
+- 撞 turn 上限就按 一 → 二 顺序落盘。