Product Requirements · Dashboard Interactivity

投研看板交互升级
只读看板可探索的驾驶舱

卫星互联网投研看板(oaf.world 根)信息密度很高却只能看不能问。本 PRD 给它加一层「交互层」:全局切片 · 跨面板联动 · 列表下钻 · URL 深链 · ⌘K 搜索 · 自选关注——全部在已取的真实数据上操作,不新增任何编造

v1.0 · 2026-07-14状态: 待评审对象: index.html · 9 面板

01现状盘点 —— 看板有什么、缺什么

看板由 agent 管线每 6 小时刷新、页面每 10 分钟自动拉新,9 个面板。当前纯只读:取数即渲染,交互仅限右上齿轮(切数据源)与刷新。
面板数据源可交互性缺口
CEO / 投资 Brief/decision/weekly无法按主线聚焦
事件流/events不能展开详情 · 不能按主线/时间过滤 · 概念 tag 不可点
风险预警/alerts不能按主线/严重度过滤 · 不能下钻
主线热度趋势/trend图例不可 toggle · 无 hover 读数 · 不能刷选联动
公司矩阵/decision/weekly不能排序/按市场筛选 · 公司不可深链工作台
知识图谱·概念热度concept_stats不能按主线过滤 · 点概念不能反查关联事件
共性缺口:① 无全局切片(时间窗/主线)· ② 面板之间互不联动 · ③ 列表项不能下钻 · ④ 状态不可分享 · ⑤ 无个性化收藏。

02设计原则 · 交互层的铁律

对齐既有不变量:数字来自工具、LLM 只写叙事、缺数不编、强制免责、离线可测。交互层新增一条硬约束——只切片,不造数
① 只切片不造数过滤/排序/搜索只改变已取真实数据的可见性与顺序,绝不新增或推断数值。过滤后为空 → 诚实空态,绝不填充占位。
② 数字仍来自工具交互不改任何数值;LLM 叙事原样展示。「近 7 天该主线 12 条」是对真实数据的确定性计数
③ 无账号无 PII自选关注/布局只落 localStorage(本地、可清除),不登录、不上传、不采集。凭证仍只在数据源设置层。
④ 状态可深链可回退时间窗/主线/概念/搜索/展开项编码进 URL query,刷新与分享可还原。默认无参数 = 全量看板,SEO/首屏不变。
⑤ 离线可测过滤/搜索/排序/URL 编解码/计数全为纯函数,离线单测覆盖;交互路径 Playwright e2e 断言。
⑥ 免责常显不打断免责声明不被任何交互隐藏;10 分钟自动刷新保留当前过滤态,不跳回全量。

03界面设计稿 · 全局切片条 + 跨面板联动P0-A / P0-C✅ 已上线

顶部一个全局控件把整块看板按时间窗主线切片,所有面板只显示命中那一片;点趋势图某条主线线即聚焦该主线。当前视角编码进 URL,可复制分享。
oaf.world/?thread=运载发射&window=7d

● 卫星互联网投研看板 🔗 复制视角 重置

时间窗近7天近30天近90天全部
主线全部核心网终端芯片运载发射运营支撑⭐ 我的关注
当前视角:运载发射 · 近7天 · 12 条事件 · 5 家公司 · 8 个概念 (基于真实数据的确定性计数)
切片改变的是可见性与顺序,数值与来源标注不变;某面板在当前切片下无数据 → 显示「该主线/时间窗内暂无…」,不留空不编。

04界面设计稿 · 列表下钻P0-B✅ 已上线

点一条事件就地展开:完整描述 · 概念标签(可点=反查过滤)· 来源 · 关联上市公司深链工作台 · AI 研判(明示生成)· 一键带入议事厅。
oaf.world/?ev=irdm-q2-guide

事件流 运载发射 · 近7天

07-12猎鹰9 一箭21星 星链组网 运载发射
07-11铱星发布 Q2 收入指引上修 运营支撑
详情
铱星通信 Q2 收入指引上修,物联网订阅净增超预期…
概念(点击反查过滤)
卫星物联网 直连手机 星间链路
关联公司
铱星通信 US:IRDM工作台公司页 ↗
AI 研判 (AI 生成,仅供参考)
对运营层景气度偏正面
来源 ↗ ⚖ 带入议事厅
详情字段全部来自 /events 已有字段,无源的段不显示、不编;公司深链只对有 uid 的上市公司可点;展开态计入 ?ev=,分享即定位。

05界面设计稿 · ⌘K 全局搜索 + 自选关注P1-A / P1-B✅ 已上线

⌘K 唤起命令面板,在已取数据里模糊匹配概念/公司/事件 → 深链/过滤/定位。★ 收藏落 localStorage,「我的关注」一键只看关注项。纯客户端、无新增网络、无账号。
oaf.world/ · ⌘K
🔍 星间链路
概念星间链路→ 过滤看板
公司铱星通信 US:IRDM→ 工作台公司页
事件07-11 铱星 Q2 指引…→ 展开定位
在已取的事件/公司/概念上建轻索引做模糊匹配 + 排序(纯函数);无匹配显示「未找到」。★ 收藏仅存本地、可导出/清除,页面标注「仅存本地」。

06需求分级 · P0 / P1 / P2

需求要点
P0-A全局切片条 + 跨面板联动 时间窗/主线 chips → 事件/预警/概念/公司全看板过滤;趋势图淡化非选中主线;视角行确定性计数;空态诚实
P0-B列表下钻 事件展开详情(摘要/概念/关联公司/来源);概念·主线·公司 chip 反查过滤(带入议事厅深链 → M2 跨页)
P0-CURL 状态深链 状态 ⇄ URL ?w=&t=&c= + history/popstate;复制视角;重置;默认无参=全量
P1-A⌘K 全局搜索 命令面板在已取数据(概念/公司/事件)模糊匹配 + 排序 → 过滤/筛选/展开定位;键盘 ↑↓/Enter/Esc
P1-B自选关注 公司/概念 ★ 收藏落 localStorage(持久化);「⭐ 我的关注」联动过滤事件/概念;无账号无 PII
P1-C趋势图交互 点主线卡聚焦(联动 P0 主线切片)· 悬停柱在卡头读数(日期·值)
P1-D公司矩阵排序 按 综合分/提及/研判 稳定排序 · 公司行 ★ 收藏(市场字段无源→暂不做市场筛选,缺数不编)
P2-B布局自定义 面板折叠/显示隐藏/↑↓ 重排(9 面板)· localStorage 持久化 · 一键恢复默认 · 仅本地
P2-C对比模式 两主线并排比确定性指标(热度/动量/事件数/概念数/龙头)· 较大值高亮 · 事件按当前时间窗 · 缺数留白
P2-A/D反馈标注 / 多人视角反馈需轻后端持久化→暂不做;多人视角偏离定位→暂缓(roadmap)

07技术方案 · 一层轻状态 + 纯函数

把现有「取数 → 渲染」改为「取数 → DASH_STATEapplyFilters 派生 → 渲染」。零新增后端端点(全客户端在已取数据上操作)。
fetch 真实数据DASH_STATE {window,thread,concept,q,watch,ev}applyFilters(纯函数)各面板渲染派生结果URL / localStorage
需求前端后端/数据不变量落点
全局切片+联动applyFilters(data,state) 纯函数派生可见数据;各渲染函数改读派生结果零新增(客户端过滤已取 /events·/alerts·/trend·concept_stats)过滤纯函数可单测;空态诚实
列表下钻展开态 + 详情卡渲染既有字段;概念联动;议事厅深链复用 /events 现有字段无源段不显示不编;深链仅限有 uid
URL 深链syncURL()/parseURL() + history + popstate默认无参 = 全量
⌘K 搜索命令面板 + search(index,q) 纯函数已取数据建轻索引纯客户端、无新增网络
自选关注loadWatch()/saveWatch() localStorage仅本地、无 PII、无上传
图表/矩阵图例 toggle · hover 读数 · sortRows() 纯函数数值只读不改

08里程碑 & 风险

里程碑
阶段内容
M1 本期P0-A 全局切片+联动 · P0-B 下钻 · P0-C URL 深链
M2 P1-A ⌘K · P1-B 自选关注 · P1-C 趋势交互 · P1-D 矩阵排序
M3 P2-B 布局自定义 · P2-C 对比模式
BacklogP2-A 反馈标注(需轻后端)· P2-D 多人视角
风险与合规
造数错觉过滤/排序改变可见性与顺序,数值与来源不变;每视角标「基于 N 条真实数据」;空态诚实
隐私关注/布局仅存本地、可清除,不上传不采集;页面标注「仅存本地」
刷新一致10 分钟自动刷新保留过滤态,重跑 applyFilters 而非跳回全量
表述边界thesis_impact 等 AI 研判明示「AI 生成」;免责常显不被交互隐藏