Skip to content

[Dashboard] Phase 1:渐进加载 + 术语统一 + 中英双语 + 过程指标折叠 #30

Closed

Description

@Protocol-zero-0

把现有 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 个请求,几个是重查询。
目标:

  1. 首屏只加载当前(默认 Overview)tab 的数据;其余 tab 的 load 不在 init 触发。
  2. 切到某 tab 才加载;已加载过缓存,不重复请求(沿用现有 papersLoaded 这类标志)。
  3. 首屏渲染完且空闲后(requestIdleCallback,无则 setTimeout),后台预取其余 tab 写入缓存,切过去秒开。
  4. 重的 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 中英双语

  1. 默认语言 = navigator.language:以 zh 开头→中文,否则→英文;右上角手动切换,选择存 localStorage。
  2. 新增 web/static/js/i18n.js:{en:{...}, zh:{...}} 词典(en/zh 键集合必须相等)+ t(key) + 扫描 data-i18n 属性替换文本的应用函数。
  3. HTML 静态文案加 data-i18n;JS 注入文案走 t(key)。
  4. 清理死代码: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)。

验收标准(可机验)

  1. 渐进加载:init/DOMContentLoaded 路径不再调用非当前 tab 的 loadXTab();有 idle 预取(requestIdleCallback/setTimeout)+ 每 tab 缓存标志;init 直接触发的数据请求数 ≤ 当前 tab 所需。
  2. 术语统一:全站搜索,旧词不再作为用户可见 label 出现(IDEA #、作标题的 Deep Insight、大小写混用的 RUN #、"Method × Dataset Matrix"、explore 三名);每个规范概念只对应一个展示名。
  3. i18n:i18n.js 存在且 en/zh 键集合相等;navigator.language zh→中文、否则英文(切换函数可字符串级断言);data-i18n 覆盖原写死文案;遗留中文不再硬编码于 HTML/JS 文案。
  4. 死代码清理:中文版 renderExperimentGroups 与重复 _planned_tracks 已删,引用指向保留版本。
  5. 折叠结构:前台只剩 6 个主 tab,其余在"Advanced/高级"默认收起;顶栏重复指标条已去重;重复计数已合并。
  6. 不破坏:python -c "import web.app" 可导入;启动 Flask 后 / 与 /api/stats 返回 200(API 行为未变)。

实现红线(不可用这些方式蒙混过验收): 旧 label 必须真改而非注释掉;i18n en/zh 键必须对齐;懒加载不可表面改而别处又全量拉;"折叠"不可只 CSS 隐藏却仍在首屏请求其数据。

不在本任务(留 Phase 2)

#19 审美(配色/留白/知识图谱美观)——本任务不做。

重部署步骤(写进 PR 描述)

  1. host 上 git fetch && git checkout feat/dashboard-refresh
  2. .env / 数据库不动(配置与数据自动保留)
  3. sudo systemctl restart deepgraph-web
  4. 验证 https://deepgraph.sora2.today 首屏更快、双语生效、术语清爽

完成定义

六条验收全过 + 死代码清理 + 在 feat/dashboard-refresh 分支(不推 main/master、不自行合并)+ 开 PR,PR 描述含 changed files / 验收命令与结果 / 重部署步骤 / 已知 non-goals(#19 审美)。

Activity

  1. Protocol-zero-0 commented on Jun 6, 2026

    @Protocol-zero-0
    ContributorAuthor

    Phase 1 follow-up:全量双语 + 术语修正(同一分支 feat/dashboard-refresh,补到 PR #31)

    PR #31 已实现 Phase 1 主体,但仍有约 60 个用户可见字符串是写死英文(空状态、统计标签、insight 类型、状态/阶段、服务名、agenda/routing 消息),中文浏览器仍会看到英文;另有 3 处术语未对齐。本补丁在同一分支补齐,让中英双语真正覆盖全站。不改后端 API、不引框架、不删 tab。

    术语修正(3 处)

    • app.js ~1953 / index.html ~371 "No experiment ideas are active yet…" → 用 Discovery 措辞(不再用 "ideas")。
    • 搜索区 "Taxonomy Nodes"(app.js ~2254)→ "Research Areas / 研究领域"。
    • tier 标签写死的 PARADIGM/DISCOVERY(app.js ~1577)→ 用已存在的 i18n 键 discoveries.tier1 / discoveries.tier2。

    全量 i18n 扫一遍(新增约 40–50 键 × en/zh,键集合必须相等)

    按 i18n.js 现有约定(命名空间点号键、t(key, vars)、data-i18n)新增,覆盖:

    • empty.* —— "No … yet" 空状态约 15 条(paper-progress / generated / insights / discoveries / auto-research / experiments / search / explore)。
    • paperProgress.* 统计标签(Source Papers In Progress / Paper Jobs / Active Manuscripts / Blocked Jobs);generated.* 统计标签(Generated Manuscript / Ready / Stale / Drafting)。
    • insights.type.*(6 类:Contradiction / Method Transfer / Assumption Challenge / Ignored Limitation / Paradigm Exhaustion / Cross-Domain Bridge)—— app.js 的 INSIGHT_TYPES 与 index.html 过滤 <option> 同步。
    • status.stage.*(friendlyAutomationStage)/ status.cpu.* / 实验状态词。
    • experiments.service.*(Paper Pipeline / Auto Research / EvoScientist / PaperOrchestra / GPU Scheduler)+ work-lane 标签。
    • agenda.*(agenda.js 消息)/ manuscript.*(manuscript_routing.js 标签)。
    • papers.status.*(index.html 过滤 <option>:Extracted / Reasoned / Processing / Fetched / Error)。
    • 带变量的动态标题:app.js ~517 "What Is Happening In {name}?"、~527 "Sub-areas of {name} ({count})" → t(key, {name, count})。

    替换方式:JS 字面量 → t('key') / t('key', {vars});静态 HTML → data-i18n / data-i18n-placeholder / data-i18n-title。

    验收(在 PR #31 上一并验)

    • i18n.js 的 en / zh 键集合相等;上面 3 处旧术语字符串在 4 个前端文件(index.html / app.js / agenda.js / manuscript_routing.js)中不再出现。
    • python -c "import web.app" ok;pytest tests/test_web_app.py -q 全绿(测试扩展保持 additive,不弱化现有);Flask 起来后 / 与 /api/stats 返回 200。
    • 不改后端 API 返回字段/语义;不删 tab/功能;不引入前端框架。
  2. Protocol-zero-0 commented on Jun 9, 2026

    @Protocol-zero-0
    ContributorAuthor

    已实现并上线,关闭本 issue。

    通过 PR #31 完成,并已部署 deepgraph.joulebeat.com、用真无头浏览器实测通过:

    • 中英双语:新增 i18n.js,en/zh 键集合相等,默认按 navigator.language(zh*→中文),右上角可切换并存 localStorage;
    • 术语统一:insights(研究洞见)与 deep_insights(深度发现)等不再混用一个名,tab 名与标题对齐;
    • 折叠:前台保留 6 个主 tab(Overview/Explore/Evidence/Generated/Insights/Papers),其余收进默认折叠的 Advanced(未删);
    • 渐进加载:首屏只拉 Overview,其余 tab idle 预取 + 每 tab 缓存标志。

    后续相关改进(首屏接口性能、加载后响应性)分别在 #34 及后续修复中处理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions