Files
xiaobai-review/tools/README.md
T
施工员andmultica-agent 3eaa36a8d5 feat(HEL-560): 数据中枢接管数据源/模型池/会员,注册改一次性邀请码
主站
- 新增 m0006 invite_codes 迁移;注册强制邀请码(首个管理员除外),消码与建号
  同一事务,并发提交只有一个能成功
- 新增 /api/hub-admin/* 服务端点(共享 HUB_ADMIN_TOKEN,先于鉴权校验),供数据
  中枢桥接读写会话/密码/模型池/会员/邀请码,并提供供应商模型列表拉取
- 前端:注册表单加邀请码(桌面 login、index.html、移动端);「系统管理」改为
  「数据中枢」入口指向 8766,原模型池与会员管理分区移除,仅留「行情管理」;
  随之清理陈旧 CSS

数据中枢
- 取消独立账号:删除 hub_admin/hub_sessions 与登录、改密、锁定逻辑,改为校验
  主站 xiaobai_session,仅管理员可进,CSRF 由会话派生,危险操作二次确认走主站
- 控制台新增数据源凭证可编辑区(原有内容一项不删)、供应商制模型池(自动拉取
  /models,失败退回卡内手动录入)、会员管理与邀请码页
- 日夜双主题:颜色收敛为同名 token 换值,SVG 改用 inline style 以吃到变量

自测
- 主站 verify_baseline 通过(498 项);数据中枢 235 项通过
- tools/verify_datahub_console.py 端到端跑通两服务真实对话;
  tools/verify_datahub_console_ui.py 浏览器跑通门禁/凭证/模型池/会员/主题/1030 窄屏

Co-authored-by: multica-agent <github@multica.ai>
2026-09-16 11:44:09 +08:00

3.5 KiB

Maintenance tools

Run these commands from the application root. This directory contains only active startup, registry, and verification tools.

Normal maintenance

  • powershell -ExecutionPolicy Bypass -File tools/start_local.ps1 [-Port 8797]: start the local application in a hidden process and keep logs, the PID, and Python cache under runtime/ instead of the source root.
  • python tools/verify_baseline.py: all unit tests, registry checks, every frontend JavaScript syntax check, Git whitespace check, and read-only SQLite integrity check.
  • python tools/verify_baseline.py --e2e: the same checks plus Playwright. The verifier owns the local static-server lifecycle so the command exits cleanly on Windows.
  • python tools/build_api_registry.py [--check]: generate or verify config/api.config.json from backend/http/dispatch.py and the registered backend/features/*/routes.py owners.
  • python tools/build_architecture_inventory.py [--check]: generate or verify config/architecture-inventory.json from the current source tree.
  • python tools/verify_datahub_console.py: end-to-end self-test for the Data Hub console bridge — invite-code single use, admin-only gate, credential masking, model pool and membership round-trips, service-token checks. Starts both services on temporary ports with temporary data directories and restores the repository state on exit.
  • python tools/verify_datahub_console_ui.py [--shots <dir>]: the browser pass over the same sandbox (gate, credential editor, vendor model pool, members and invite codes, day/night themes, 1030px narrow layout). Requires Playwright and a local Chromium.
  • python tools/backfill_recent_snapshots.py --account <admin> [--lookback 60] [--dry-run]: auditable recent trading-day dashboard snapshot backfill. See docs/maintenance/行情历史补档.md.
  • tools/update_from_main.sh (deployed to the server as ~/xiaobai-build/update-from-main.sh): the server-side update-and-build entry for the managed local worktree at /opt/1panel/docker/compose/xiaobaifupan. Fetches Gitea main, enforces branch/clean/fast-forward checks, builds a main-<shortsha> tagged image with the revision label, and verifies the label after the build. tools/xiaobai-git is the matching git wrapper for that worktree (status/log/diff).
  • bash tools/build_image.sh <commit> <tag>: agent-grade entry that streams git archive <commit> to the deploy host over SSH (default moxiaobai@192.168.200.11), refuses tags that do not end with the commit short SHA, verifies the revision label after the build, and appends a record to ~/xiaobai-build/BUILD_LOG.tsv on the host. Before building, it runs tools/check_deploy_baseline.sh so the candidate commit must contain the currently running container's Git revision as an ancestor.
  • bash tools/check_deploy_baseline.sh <commit> [--live-revision <sha>]: deployment ancestor gate. Reads the live org.opencontainers.image.revision from the running xiaobai-review container (or --live-revision in tests), prints the live SHA, candidate SHA, file diff, and commits the candidate would drop, then exits if the live revision is not an ancestor of the candidate.

verify_baseline.py does not inspect a parent checkout or skip tests according to files outside this application. Historical comparison scripts were retired after final standalone acceptance; their results remain under docs/migration/evidence/ and their source remains recoverable from Git history.