主站 - 新增 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>
3.5 KiB
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 underruntime/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 verifyconfig/api.config.jsonfrombackend/http/dispatch.pyand the registeredbackend/features/*/routes.pyowners.python tools/build_architecture_inventory.py [--check]: generate or verifyconfig/architecture-inventory.jsonfrom 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. Seedocs/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 Giteamain, enforces branch/clean/fast-forward checks, builds amain-<shortsha>tagged image with the revision label, and verifies the label after the build.tools/xiaobai-gitis the matching git wrapper for that worktree (status/log/diff).bash tools/build_image.sh <commit> <tag>: agent-grade entry that streamsgit archive <commit>to the deploy host over SSH (defaultmoxiaobai@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.tsvon the host. Before building, it runstools/check_deploy_baseline.shso 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 liveorg.opencontainers.image.revisionfrom the runningxiaobai-reviewcontainer (or--live-revisionin 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.