Files
xiaobai-review/config
施工员andmultica-agent a4dbe2bcf8 fix(HEL-564): 数据中枢入口固定内网 IP,不再按主机名推导
- 主站桌面端/移动端「数据中枢」入口固定 http://192.168.200.11:8766/admin/
  (XIAOBAI_DATAHUB_URL 仍可覆盖):域名只反代 8765,推导出的 <域名>:8766 打不开,
  同时避免数据中枢被外网摸到
- 中枢 _review_url 不再从 Host 头推导,统一取 REVIEW_PUBLIC_URL,
  默认 http://192.168.200.11:8765;compose 与 .env.example 示例值同步
- 补回归测试:Host 为域名且未配 REVIEW_PUBLIC_URL 时登录链接仍为固定内网地址
- 文档写明 Cookie 按门牌区分的边界与部署说明

Co-authored-by: multica-agent <github@multica.ai>
2026-09-16 15:23:45 +08:00
..

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 preserved server.py API surface, with one feature owner and backend access class per route. Its dispatcher implementation lives in backend/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 for xiaobai-datahub. Each dataset has its own read / shadow flag; official reads default on. compose.yaml pins every DATAHUB_READ_* to "1" so a leftover .env =0 cannot silently keep official pages on the old APIs. Environment variables can still override a single DATAHUB_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