把现有 Flask dashboard 打磨成:加载快 / 术语统一不混淆 / 中英双语 / 关键信息一目了然 / 过程指标折叠。本任务 = Phase 1(性能/术语/i18n/折叠,均可机验);审美级视觉重设计(见 #19)留 Phase 2,不在本任务。不大改重写,在现有原生 JS + Flask 模板栈上改。
代码在 master 分支(默认分支)。从 master 切分支 feat/dashboard-refresh,不动主线、不动数据库、不改后端 API 的返回字段/语义(只改前端怎么展示)。改动范围:web/templates/index.html、web/static/js/app.js(及 agenda.js / manuscript_routing.js)、web/static/css/style.css、新增 web/static/js/i18n.js。
代码定位若行号漂移,以函数名/字段名/语义为准。
A. 渐进加载(修首屏慢)
现状:app.js 初始化时一次性触发多个 loadXTab() + overview 多个接口 → 首屏并发 8–10 个请求,几个是重查询。
目标:
- 首屏只加载当前(默认 Overview)tab 的数据;其余 tab 的 load 不在 init 触发。
- 切到某 tab 才加载;已加载过缓存,不重复请求(沿用现有
papersLoaded 这类标志)。
- 首屏渲染完且空闲后(
requestIdleCallback,无则 setTimeout),后台预取其余 tab 写入缓存,切过去秒开。
- 重的 overview 知识图谱延后到首屏文字内容之后渲染。
B. 术语统一(消除"同概念多名字")
只改前端展示用词,不改后端字段名/表名/API。同一概念全站一个名;修掉 tab 导航名与标题不一致。
| 规范名(en) |
中文 |
替换掉这些旧叫法 |
| Source Paper |
文献 |
"Papers"(输入文献处)/"Paper DB"/"Pipeline Papers" |
| Research Area |
研究领域 |
"Taxonomy Node"/"Field"/"domain"/"node";子级 Sub-area 子领域 |
| Result |
基准结果 |
"Results" |
| Benchmark Matrix |
基准矩阵 |
"Evidence"(矩阵处)/"Method × Dataset Matrix" |
| Claim |
论断 |
"Claims & Insights" 里的 claims |
| Research Insight |
研究洞见 |
"Insights"/"Research Insights"(= insights 表) |
| Discovery |
深度发现 |
"Deep Discovery"/"Deep Insight"/"Idea"/"IDEA #"/"Paper Idea"(= deep_insights 表) |
| Opportunity |
机会点 |
保留,但与 Insight 区分清楚(= node_opportunities 表) |
| Experiment Run |
实验运行 |
"Experiment"/"Run"/"RUN #"/"Main run";"forge" 字样从界面去掉 |
| Generated Manuscript |
生成稿件 |
"Generated Paper"/"Manuscript"/"Research Paper Generation" |
| Submission Bundle |
投稿包 |
"Complete Papers"/"Bundle" |
关键消歧:insights(Research Insight)与 deep_insights(Discovery)是两张不同的表,绝不可再共用 "insight" 一词;Experiments 里那行 deep_insights 不准再叫 "Idea",叫 Discovery。explore 视图三名("Taxonomy Map"/"Research Area Explorer"/"Opportunity Map")统一为一个;tab 导航名与标题全部对齐。
C. i18n 中英双语
- 默认语言 =
navigator.language:以 zh 开头→中文,否则→英文;右上角手动切换,选择存 localStorage。
- 新增
web/static/js/i18n.js:{en:{...}, zh:{...}} 词典(en/zh 键集合必须相等)+ t(key) + 扫描 data-i18n 属性替换文本的应用函数。
- HTML 静态文案加
data-i18n;JS 注入文案走 t(key)。
- 清理死代码:
web/app.py 中重复定义的中文版 _planned_tracks(被英文版覆盖)、app.js 中被 renderExperimentGroupsV2 覆盖的中文版 renderExperimentGroups,删掉;界面里写死的遗留中文(tooltip、实验组渲染等)收进 i18n 词典。
D. 精简 / 折叠(前台留 6,过程指标进"高级",不删除)
- 前台保留 6 个主 tab:Overview、Explore(Research Area Explorer)、Evidence(Benchmark Matrix)、Generated(Generated Manuscript)、Insights(Research Insight)、Papers(Source Paper)。
- 其余收进可展开的 "Advanced / 高级" 区(默认收起,不删):Feed、Providers、Paper-progress、Experiments 内部字段、Discoveries(并入 Overview 最新动态)、Agenda;以及概览里的 Meta-Learning Report / Loop Inspection / Automation Services / GPU 调度 / 文件路径 / "Internal stage" / CPU eligible / Manuscript Routing & Lint 等过程项。
- 去重:顶栏 4 项指标条与概览 4 张卡完全重复 → 去掉或改成不重复内容(PR 说明选哪个);合并 "Generated Papers" 与 "Total Manuscripts" 同数双标;合并三处重复的"已完成论文"计数。
Allowed / Forbidden
Allowed: web/templates/*.html、web/static/js/*.js(含新增 i18n.js)、web/static/css/style.css;web/app.py/web/*_routes.py 中仅限删除已确认的死代码(重复中文 _planned_tracks)。
Forbidden: 不改任何后端 API 的返回字段/语义;不删 tab/功能(过程项是折叠,不是删);不动 DB / agents/ / orchestrator/ / contracts/;不引入前端框架(保持原生 JS + Flask);不做 #19 审美级重设计(Phase 2)。
验收标准(可机验)
- 渐进加载:init/
DOMContentLoaded 路径不再调用非当前 tab 的 loadXTab();有 idle 预取(requestIdleCallback/setTimeout)+ 每 tab 缓存标志;init 直接触发的数据请求数 ≤ 当前 tab 所需。
- 术语统一:全站搜索,旧词不再作为用户可见 label 出现(
IDEA #、作标题的 Deep Insight、大小写混用的 RUN #、"Method × Dataset Matrix"、explore 三名);每个规范概念只对应一个展示名。
- i18n:
i18n.js 存在且 en/zh 键集合相等;navigator.language zh→中文、否则英文(切换函数可字符串级断言);data-i18n 覆盖原写死文案;遗留中文不再硬编码于 HTML/JS 文案。
- 死代码清理:中文版
renderExperimentGroups 与重复 _planned_tracks 已删,引用指向保留版本。
- 折叠结构:前台只剩 6 个主 tab,其余在"Advanced/高级"默认收起;顶栏重复指标条已去重;重复计数已合并。
- 不破坏:
python -c "import web.app" 可导入;启动 Flask 后 / 与 /api/stats 返回 200(API 行为未变)。
实现红线(不可用这些方式蒙混过验收): 旧 label 必须真改而非注释掉;i18n en/zh 键必须对齐;懒加载不可表面改而别处又全量拉;"折叠"不可只 CSS 隐藏却仍在首屏请求其数据。
不在本任务(留 Phase 2)
#19 审美(配色/留白/知识图谱美观)——本任务不做。
重部署步骤(写进 PR 描述)
- host 上
git fetch && git checkout feat/dashboard-refresh
.env / 数据库不动(配置与数据自动保留)
sudo systemctl restart deepgraph-web
- 验证
https://deepgraph.sora2.today 首屏更快、双语生效、术语清爽
完成定义
六条验收全过 + 死代码清理 + 在 feat/dashboard-refresh 分支(不推 main/master、不自行合并)+ 开 PR,PR 描述含 changed files / 验收命令与结果 / 重部署步骤 / 已知 non-goals(#19 审美)。
把现有 Flask dashboard 打磨成:加载快 / 术语统一不混淆 / 中英双语 / 关键信息一目了然 / 过程指标折叠。本任务 = Phase 1(性能/术语/i18n/折叠,均可机验);审美级视觉重设计(见 #19)留 Phase 2,不在本任务。不大改重写,在现有原生 JS + Flask 模板栈上改。
代码在
master分支(默认分支)。从 master 切分支feat/dashboard-refresh,不动主线、不动数据库、不改后端 API 的返回字段/语义(只改前端怎么展示)。改动范围:web/templates/index.html、web/static/js/app.js(及 agenda.js / manuscript_routing.js)、web/static/css/style.css、新增web/static/js/i18n.js。代码定位若行号漂移,以函数名/字段名/语义为准。
A. 渐进加载(修首屏慢)
现状:
app.js初始化时一次性触发多个loadXTab()+ overview 多个接口 → 首屏并发 8–10 个请求,几个是重查询。目标:
papersLoaded这类标志)。requestIdleCallback,无则setTimeout),后台预取其余 tab 写入缓存,切过去秒开。B. 术语统一(消除"同概念多名字")
只改前端展示用词,不改后端字段名/表名/API。同一概念全站一个名;修掉 tab 导航名与标题不一致。
insights表)deep_insights表)node_opportunities表)关键消歧:
insights(Research Insight)与deep_insights(Discovery)是两张不同的表,绝不可再共用 "insight" 一词;Experiments 里那行deep_insights不准再叫 "Idea",叫 Discovery。explore 视图三名("Taxonomy Map"/"Research Area Explorer"/"Opportunity Map")统一为一个;tab 导航名与标题全部对齐。C. i18n 中英双语
navigator.language:以zh开头→中文,否则→英文;右上角手动切换,选择存localStorage。web/static/js/i18n.js:{en:{...}, zh:{...}}词典(en/zh 键集合必须相等)+t(key)+ 扫描data-i18n属性替换文本的应用函数。data-i18n;JS 注入文案走t(key)。web/app.py中重复定义的中文版_planned_tracks(被英文版覆盖)、app.js中被renderExperimentGroupsV2覆盖的中文版renderExperimentGroups,删掉;界面里写死的遗留中文(tooltip、实验组渲染等)收进 i18n 词典。D. 精简 / 折叠(前台留 6,过程指标进"高级",不删除)
Allowed / Forbidden
Allowed:
web/templates/*.html、web/static/js/*.js(含新增 i18n.js)、web/static/css/style.css;web/app.py/web/*_routes.py中仅限删除已确认的死代码(重复中文_planned_tracks)。Forbidden: 不改任何后端 API 的返回字段/语义;不删 tab/功能(过程项是折叠,不是删);不动 DB /
agents//orchestrator//contracts/;不引入前端框架(保持原生 JS + Flask);不做 #19 审美级重设计(Phase 2)。验收标准(可机验)
DOMContentLoaded路径不再调用非当前 tab 的loadXTab();有 idle 预取(requestIdleCallback/setTimeout)+ 每 tab 缓存标志;init 直接触发的数据请求数 ≤ 当前 tab 所需。IDEA #、作标题的Deep Insight、大小写混用的RUN #、"Method × Dataset Matrix"、explore 三名);每个规范概念只对应一个展示名。i18n.js存在且 en/zh 键集合相等;navigator.languagezh→中文、否则英文(切换函数可字符串级断言);data-i18n覆盖原写死文案;遗留中文不再硬编码于 HTML/JS 文案。renderExperimentGroups与重复_planned_tracks已删,引用指向保留版本。python -c "import web.app"可导入;启动 Flask 后/与/api/stats返回 200(API 行为未变)。实现红线(不可用这些方式蒙混过验收): 旧 label 必须真改而非注释掉;i18n en/zh 键必须对齐;懒加载不可表面改而别处又全量拉;"折叠"不可只 CSS 隐藏却仍在首屏请求其数据。
不在本任务(留 Phase 2)
#19 审美(配色/留白/知识图谱美观)——本任务不做。
重部署步骤(写进 PR 描述)
git fetch && git checkout feat/dashboard-refresh.env/ 数据库不动(配置与数据自动保留)sudo systemctl restart deepgraph-webhttps://deepgraph.sora2.today首屏更快、双语生效、术语清爽完成定义
六条验收全过 + 死代码清理 + 在
feat/dashboard-refresh分支(不推 main/master、不自行合并)+ 开 PR,PR 描述含 changed files / 验收命令与结果 / 重部署步骤 / 已知 non-goals(#19 审美)。