- 新增 5 档强度色 token(日/夜两套,含渐变填充与光晕 alpha),tokens.css - 板块轮动卡片改为 heat-tier-1..5,固定阈值 <65/65-74/75-84/85-94/95+ 映射青/蓝/紫/橙/红,9 个日期列共用同一套映射,与涨跌无关 - 悬停/选中/追踪三态用 --tier-* 局部变量统一驱动,选中态(当次点击格) 用渐变实色+2px 亮边+光晕,追踪态(其余同名格)保留档位底色+2px 描边 +圆点标记,不新增业务状态;修复 hover 规则与 selected 同优先级导致 悬停会覆盖选中/追踪样式的层叠顺序问题(:hover 增加 :not(.selected)) - 图例改为 5 档 + “颜色=强度档位,与涨跌无关” 说明,禁止对普通卡使用绿色 - 侧栏/品牌区去掉独立色块:.module-nav 融入页面 --canvas, 品牌区与顶栏同层(--header-bg),收起侧栏整行透明;仅作用于 非移动端且非「问天」路由,问天页面零改动 - 清理死代码:未生效的 .selected 旧规则与引用未定义变量的 --rotation-heat 声明 - 更新 e2e 断言以匹配新 tier 类名;重新生成 architecture-inventory.json Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
Governance Registries
These registries describe the approved product surface of the standalone application.
pages.config.json: primary page identity, navigation group, access expectation, scrolling, and mobile composition policy.features.config.json: feature ownership, backend access class, data scope, and availability.api.config.json: current routes generated from the preservedserver.pyAPI surface, with one feature owner and backend access class per route. Its dispatcher implementation lives inbackend/application.py.architecture-inventory.json: generated inventory of current pages, routes, tables, providers, model entry points, CSS layers, and remaining code hotspots.data-fields.config.json: canonical data products, provider eligibility, intended use, and known blocked datasets.datahub.config.json: official read-only client forxiaobai-datahub. Each dataset has its ownread/shadowflag; official reads default on.compose.yamlpins everyDATAHUB_READ_*to"1"so a leftover.env=0cannot silently keep official pages on the old APIs. Environment variables can still override a singleDATAHUB_SHADOW_*without a master switch. The old website APIs stay as emergency fallback only.data-quality.config.json: freshness, coverage, units, adjustment, point-in-time, and fail-closed rules for every canonical data product.jobs.config.json: background schedules, dependencies, lock keys, retry policy, timeouts, and output versions.
The registries are governance contracts, not substitutes for runtime authorization. Backend
access in backend/http/routes.py is authoritative; frontend visibility is only a presentation
concern and never grants access.
Regenerate the transitional API inventory after a route change:
python tools/build_api_registry.py
python tools/build_api_registry.py --check
python tools/build_architecture_inventory.py
python tools/build_architecture_inventory.py --check