# HANDOFF · 态势层 v4（Greenfield）

- **Live**: https://market-sa-v4.pages.dev/
- **目录**: `artifacts/market-situational-awareness-v4-cloudflare/`
- **Pages 项目**: `market-sa-v4`（production branch `main`）
- **分支**: `cursor/market-sa-v4-150b`
- **硬约束遵守**: 未改动、未部署 v1 / v2 / v3（`market-situational-awareness` / `market-sa-v2` / `market-sa-v3`）

## v4 相对 v3 的重做要点（不是换皮）

1. **「今天 / 昨天」升格为页面级机关**。v3 的日切开关埋在图二里；v4 把它放进常驻 sticky 状态条，一处切、全页换：图二地图、座次 slopegraph、简报、AI 包、状态条的「有效 / 已过期」全部同步。时效性从「图二的一个功能」变成整页的骨架。
2. **图二从「色块权重网」重做为「座次列地图」**。v3 用凸包色块 + 自由散点；v4 每块说法是一根竖列——**列的顺序就是当天座次、列宽就是声量、点的深度就是时效**（越旧越沉）。换日时列会真的换位、新列整根长出来、撤出的点整颗消失，「结构变了」不用解说词就能看见。
3. **新增两日座次 slopegraph**。8/13 → 8/14 的名次连线：政策 1→4、需求 2→1、供给 3→2、电力从「场外」虚线进第 3。结构差分有了一张专门的、可指着讲的小图（v3 没有这个视图）。
4. **图一与图二共用同一套空间语法**：新的在上、旧的往下沉、碰到虚线（过期线 / 4 天+）就出局。v3 图一是横向漏斗、图二是散点网，两图语法不同；v4 统一成「下沉 = 变旧」，学一次看两张图。
5. **视觉整体推倒**：v3 浅色海雾绿 + 单图深底；v4 全页深灰蓝单栏（≤600px，手机是唯一版式，桌面只是居中），系统字体 + mono 时间戳，语义色只给说法（蓝/金/紫/玫瑰）+ 状态（薄荷=有效、锈橙=过期）。无 Google Fonts、无紫白渐变、无大 glow、无仪表盘卡片丛林。
6. **事实点按主说法着色**（v3 全部薄荷绿单色）：+2 新事实天然带着新说法的玫瑰色进场，「新颜色入场」在点、列、芯片、图例、简报五处一致。

## 两日结构差分表

| 差分 | 规格 | v4 实现 |
|------|------|---------|
| +事实 | 今天比昨天多 2 个新节点 | 「电力缺口曝光」「液冷订单上修」，玫瑰虚线圈 + 标签「· 新」，昨天视图整颗不在 |
| −事实 | 昨天有、今天没有恰好 1 个 | 「出口管制加码传闻」8/13 显著度 0.94 最吵；8/14 整颗从图上拿掉（详情卡明说「不是缩成淡点」） |
| 叙事 | 新颜色说法入场 + 权重重排 | 「电不够用了」玫瑰色新列 + 筛选芯片「电力·新」只在今天出现；座次 政策1→4 / 需求2→1 / 供给3→2 / 电力场外→3 |
| 对比轴 | 今天 / 昨天 | 8/14 vs 8/13，sticky 状态条全局切换 |
| 事实数 | 9 → 10 颗 | 面板栏与 slopegraph 双处标注「9 颗 / 10 颗」，肉眼可数 |

## 验收清单

- [x] 全新实现（版式、图形语法、代码全部重写；v3 仅作产品参考，未复制 HTML）
- [x] 三图齐全：采集时效 / 成图两日结构差分 / 开放 DELTA + WATCH + AI 包
- [x] +2 / −1 事实 + 新色叙事，肉眼可数（虚线圈 ×2、撤出 ×1、玫瑰新列）
- [x] 今天/昨天全局同步（地图、slopegraph 高亮、简报、包、状态条、筛选芯片）
- [x] 手机 ~390px 第一阅读体验（单栏、38px+ 点按目标、canvas 按 dpr 渲染）
- [x] https://market-sa-v4.pages.dev/ 可访问
- [x] v3 / v2 / v1 未被改写（未动其目录与 Pages 项目）
- [x] 样例免责声明在页（顶部细带 + 分析小卡 + 页脚）
- [x] `prefers-reduced-motion` 静态可读（动画停，切日直接落位重绘）

## 妥协与已知边界

- 图二取消了 v3 的「拖一拖」节点拖拽：列式布局里点位携带语义（列=归属、深度=时效），拖动会破坏编码，故只保留点按详情。
- 座次 slopegraph 为静态 SVG（两日数据一次画好，切日只切换高亮），不随筛选芯片过滤。
- 状态条右侧的「切片有效 / 已过期」文字在 <460px 视口下隐藏（放不下），状态仍由日按钮高亮与图三过期态表达。
- `color-mix()` 用于关注卡底色，老浏览器降级为纯色 panel（有 `@supports` 兜底）。
- 简报 tab「预测 / 社媒」为演示壳（禁用态），与 v3 同策略。

## 运维

```bash
npm install
npm run build
npx wrangler pages deploy dist --project-name market-sa-v4 --branch main --commit-dirty=true
```

数据都在 `index.html` 内嵌 `DAYS` / `FACTS` / `NARR` 三个对象里：换一天的样例，改 `DAYS.t / DAYS.y` 与 `FACTS[*].t / .y` 即可，图二、slopegraph 之外的文案（简报、包）也在同一对象树中。
