Files
lijiaoqiao/docs/supply_gate_command_playbook_v1_2026-03-25.md

19 KiB
Raw Permalink Blame History

SUP Gate 命令级执行清单SUP-004~SUP-007

  • 版本v1.0
  • 日期2026-03-25
  • 目标:为测试团队提供可直接执行的命令清单,输出可回填证据
  • 关联任务:SUP-004SUP-005SUP-006SUP-007
  • 关联报告模板:
    • tests/supply/ui_sup_acc_report_2026-03-28.md
    • tests/supply/ui_sup_pkg_report_2026-03-29.md
    • tests/supply/ui_sup_set_report_2026-03-29.md
    • tests/supply/sec_sup_boundary_report_2026-03-30.md

1. 执行前准备

1.1 环境变量

在项目根目录创建并编辑 scripts/supply-gate/.env

API_BASE_URL="https://staging.example.com"
OWNER_BEARER_TOKEN="replace-me-owner-token"
VIEWER_BEARER_TOKEN="replace-me-viewer-token"
ADMIN_BEARER_TOKEN="replace-me-admin-token"

# 测试数据(可按环境替换)
TEST_PROVIDER="openai"
TEST_MODEL="gpt-4o"
TEST_ACCOUNT_ALIAS="sup_acc_cmd"
TEST_CREDENTIAL_INPUT="sk-test-replace-me"
TEST_PAYMENT_METHOD="alipay"
TEST_PAYMENT_ACCOUNT="tester@example.com"
TEST_SMS_CODE="123456"

# 可选:绕过平台直连供应方探测目标
SUPPLIER_DIRECT_TEST_URL=""

1.2 依赖检查

command -v curl >/dev/null
command -v jq >/dev/null

1.3 执行入口

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/run_all.sh"

真实 staging 推荐使用(含占位值与可达性预检):

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/staging_precheck_and_run.sh" "scripts/supply-gate/.env"

说明:

  1. staging_precheck_and_run.sh 默认会先执行 M-021 预检token runtime readiness
  2. staging_precheck_and_run.sh 默认会再执行 TOK-005 dry-run
  3. 如需临时跳过可设置:ENABLE_M021_PRECHECK=0ENABLE_TOK005_DRYRUN=0

2. SUP-004 账号挂载链路UI-SUP-ACC-001~006

执行脚本:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/sup004_accounts.sh"

最低断言:

  1. 验证接口返回 verify_status=pass/review_required
  2. 创建账号成功并返回 account_id
  3. 激活/暂停接口返回状态迁移成功。
  4. 审计日志接口可查询并返回 request_id

证据输出:

  1. tests/supply/artifacts/sup004/*.json
  2. tests/supply/artifacts/sup004/summary.txt

3. SUP-005 套餐发布链路UI-SUP-PKG-001~006

执行脚本:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/sup005_packages.sh"

最低断言:

  1. 草稿创建成功并返回 package_id
  2. 上架后状态为 active
  3. 暂停后状态为 paused
  4. 下架返回成功(expired/paused 合法)。
  5. 批量调价返回 success_count + failed_count = total
  6. 复制成功并返回新的 package_id

证据输出:

  1. tests/supply/artifacts/sup005/*.json
  2. tests/supply/artifacts/sup005/summary.txt

4. SUP-006 结算提现链路UI-SUP-SET-001~005

执行脚本:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/sup006_settlements.sh"

最低断言:

  1. 账单查询成功返回 summary
  2. 提现申请成功返回 settlement_id 且状态 pending
  3. 撤销申请接口返回状态变更。
  4. 对账单下载接口返回 download_url
  5. 收益流水接口返回分页与记录字段。

证据输出:

  1. tests/supply/artifacts/sup006/*.json
  2. tests/supply/artifacts/sup006/summary.txt

5. SUP-007 凭证边界专项SEC-SUP-001~002

执行脚本:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/sup007_boundary.sh"

最低断言:

  1. 平台凭证访问主路径成功(映射 M-014
  2. 外部 query key 请求被拒绝(映射 M-016
  3. 响应/导出样本脱敏扫描无可复用凭证片段(映射 M-013
  4. 若配置 SUPPLIER_DIRECT_TEST_URL,直连探测应失败或被阻断(映射 M-015

证据输出:

  1. tests/supply/artifacts/sup007/*.json
  2. tests/supply/artifacts/sup007/summary.txt

6. 回填要求

执行完成后,必须回填:

  1. tests/supply/ui_sup_acc_report_2026-03-28.md
  2. tests/supply/ui_sup_pkg_report_2026-03-29.md
  3. tests/supply/ui_sup_set_report_2026-03-29.md
  4. tests/supply/sec_sup_boundary_report_2026-03-30.md
  5. reports/supply_gate_review_2026-03-31.md

所有回填项需要包含:

  1. 结论PASS/FAIL/BLOCKED
  2. 证据路径json/screenshot/log
  3. 责任人签字

7. 依赖兼容审计命令M-017

执行脚本:

cd "/home/long/project/立交桥"
./scripts/ci/dependency-audit-check.sh 2026-03-27

最低断言:

  1. 四件套文件存在且非空:
    1. reports/dependency/sbom_2026-03-27.spdx.json
    2. reports/dependency/lockfile_diff_2026-03-27.md
    3. reports/dependency/compat_matrix_2026-03-27.md
    4. reports/dependency/risk_register_2026-03-27.md
  2. 输出结果为 PASS,并生成 dependency_audit_result_2026-03-27.md

8. 分阶段门禁失败回退演练M-018/M-019

执行脚本:

cd "/home/long/project/立交桥"
./scripts/ci/stage-gate-drill.sh G3 2026-03-27

最低断言:

  1. G3 失败后必须触发回退到 G2。
  2. 后续阶段冻结,不允许继续升波。
  3. 生成原始日志与演练报告:
    1. reports/gates/stage_gate_drill_2026-03-27.log
    2. reports/gates/stage_gate_drift_drill_report_2026-03-27.md

9. 本地 Mock 联调模式(仅演练)

执行命令:

cd "/home/long/project/立交桥"
python3 "scripts/mock/supply_gateway_mock_server.py"

另开终端执行:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/run_all.sh" "scripts/supply-gate/.env.local-mock"

说明:

  1. 本模式仅用于脚本联调与产物验证,不代表 staging/生产可发布。
  2. 生产放行仍需在真实 staging 地址与真实短期 token 下复跑并验收。

10. TOK-005 凭证边界 Dry-Run开发阶段

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/tok005_boundary_dryrun.sh" "scripts/supply-gate/.env"

最低断言:

  1. go test ./...platform-token-runtime 通过。
  2. Query key 外拒规则存在(key/api_key/token)。
  3. 审计脱敏断言存在且通过(禁止敏感值落审计)。
  4. TOK 用例可执行覆盖完整(TOK-LIFE-001~008TOK-AUD-001~007)。
  5. staging 就绪性检查结果可追溯NO 时需明确阻塞原因)。

证据输出:

  1. reports/gates/tok005_dryrun_*.md
  2. reports/gates/tok005_dryrun_*.log
  3. tests/supply/artifacts/tok005_dryrun_*/go_test_output.txt

说明:

  1. Dry-run 仅用于开发阶段门禁前置验证,不可替代真实 staging 联调结论。
  2. 真实放行仍以 staging_precheck_and_run.sh + SUP-007/TOK-005 实测结果为准。

11. TOK-006 统一 Gate 汇总Dry-Run + SUP-004~007

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/tok006_gate_bundle.sh" "scripts/supply-gate/.env"

可选开关:

# 默认 1先执行 TOK-005 dry-run
ENABLE_TOK005_DRYRUN=1

# 默认 0仅汇总现有 SUP 报告,不触发 run_all
ENABLE_SUP_RUN=0

最低断言:

  1. 输出单页 gate 汇总报告(含 TOK-005 + SUP-004~007
  2. 生成明确发布判定:GO / CONDITIONAL_GO / NO_GO
  3. 若存在 mock 证据或 staging readiness != YES,不得输出 GO。

证据输出:

  1. reports/gates/tok006_gate_bundle_*.md
  2. reports/gates/tok006_gate_bundle_*.log
  3. reports/gates/tok006_release_decision_onepager_template_v1_2026-03-30.md(模板)

12. Superpowers 严格分阶段验证(代码+脚本+门禁)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/superpowers_stage_validate.sh"

阶段定义(当前实现):

  1. PHASE-01TOK 运行时代码测试Go 单测)
  2. PHASE-02SUP-004~SUP-007 本地 mock 脚本联调
  3. PHASE-03TOK-005 凭证边界 dry-runmock 环境)
  4. PHASE-04TOK-006 统一 Gate 汇总
  5. PHASE-05依赖兼容审计门禁M-017
  6. PHASE-06分阶段回退演练门禁M-018/M-019
  7. PHASE-07真实 staging 预检(无真值时应 DEFERRED
  8. PHASE-08每日指标快照生成M-017/M-018/M-019
  9. PHASE-097日趋势报告生成M-017/M-018/M-019
  10. PHASE-10token 运行态就绪度检查M-021

结果判定:

  1. 任一阶段 FAIL => NO_GO
  2. 无 FAIL 且存在 DEFERRED => CONDITIONAL_GO
  3. 全部 PASS => GO

可选环境变量:

# PHASE-07 使用的环境文件,默认 scripts/supply-gate/.env
STAGING_ENV_FILE="scripts/supply-gate/.env"

证据输出:

  1. reports/gates/superpowers_stage_validation_*.md
  2. reports/gates/superpowers_stage_validation_*.log
  3. tests/supply/artifacts/superpowers_stage_validation_*/phase*.log

13. TOK-007 发布门禁复审(自动汇总)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/tok007_release_recheck.sh"

最低断言:

  1. 自动读取最新 TOK-006 汇总报告。
  2. 自动读取最新 Superpowers 阶段验证报告。
  3. 自动读取 SUP Gate 汇总评审结论。
  4. 输出复审结论(GO / CONDITIONAL GO / NO-GO)与动作建议。

证据输出:

  1. review/outputs/tok007_release_recheck_*.md
  2. reports/gates/tok007_release_recheck_*.log

14. 最终决议一致性校验Final vs TOK-007

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/final_decision_consistency_check.sh"

最低断言:

  1. 可解析 final_decisionTOK-007superpowers_stage_validation 三类结论。
  2. final_decisionTOK-007 不一致,输出 WARN(不自动覆盖签署结论)。
  3. 若任一来源不可解析,输出 FAIL 并阻断自动流程。

证据输出:

  1. reports/gates/final_decision_consistency_*.md
  2. reports/gates/final_decision_consistency_*.log

15. 最终决议候选稿生成(不覆盖签署原件)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/tok007_generate_final_decision_candidate.sh"

最低断言:

  1. 输入源必须包括 review/final_decision_2026-03-31.md 与最新 tok007_release_recheck_*.md
  2. 输出文件位于 review/outputs/final_decision_candidate_from_tok007_*.md
  3. 仅生成候选稿,不覆盖原签署文件。

证据输出:

  1. review/outputs/final_decision_candidate_from_tok007_*.md
  2. reports/gates/tok007_generate_candidate_*.log

16. M-021 Token Runtime 就绪度检查

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/token_runtime_readiness_check.sh" "$(date +%F)"

可选开关:

# 默认 0跳过本地端口冒烟适配受限沙箱环境
ENABLE_TOKEN_RUNTIME_SMOKE=0

# 置 1执行本地服务启动 + issue + audit-events 冒烟
ENABLE_TOKEN_RUNTIME_SMOKE=1

# 可选:指定冒烟起始端口(默认 18082若被占用会自动顺延
TOKEN_RUNTIME_SMOKE_PORT=18082

最低断言:

  1. 输出 token_runtime_readiness_*.md 报告并给出百分比结果。
  2. 运行态代码与契约工件完整API入口/HTTP处理/OpenAPI/Dockerfile
  3. platform-token-runtime 测试与构建均通过。
  4. 若就绪度 <100%,脚本必须返回失败并阻断后续门禁。

证据输出:

  1. reports/gates/token_runtime_readiness_*.md
  2. reports/gates/token_runtime_readiness_*.log
  3. reports/gates/token_runtime_go_test_*.log
  4. reports/gates/token_runtime_go_build_*.log

17. Token 审计事件查询TOK-REAL-002

本地服务启动:

cd "/home/long/project/立交桥/platform-token-runtime"
export PATH="/home/long/project/立交桥/.tools/go-current/bin:$PATH"
go run ./cmd/platform-token-runtime

审计查询示例:

curl -sS "http://127.0.0.1:18081/api/v1/platform/tokens/audit-events?limit=20" \
  -H "X-Request-Id: req-audit-query-demo"

最低断言:

  1. 返回 200,且结构包含 request_id/data.total/data.items
  2. 返回项包含 event_id/event_name/request_id/route/result_code/created_at
  3. 响应不包含 access_token 或上游敏感凭证明文。

证据输出:

  1. platform-token-runtime/internal/httpapi/token_api_test.go(自动化用例)
  2. reports/gates/token_runtime_readiness_*.md(检查项 TOK-REAL-002-C1/C2

18. Staging 证据自动回填草稿

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/staging_evidence_autofill.sh"

可选参数(用于锁定本次流水证据,避免误取历史 latest

bash "scripts/ci/staging_evidence_autofill.sh" \
  --staging-run-log "reports/gates/staging_run_2026-03-30_184432.log" \
  --stage-report "reports/gates/superpowers_stage_validation_2026-03-30_184433.md" \
  --token-readiness "reports/gates/token_runtime_readiness_2026-03-30_184435.md" \
  --tok007-report "review/outputs/tok007_release_recheck_2026-03-30_184436.md" \
  --pipeline-report "reports/gates/superpowers_release_pipeline_2026-03-30_184434.md"

最低断言:

  1. 自动抽取 PHASE-07M-013~M-016M-021 与 TOK-007 机判结论。
  2. 输出证据路径清单,便于人工补齐与签署。
  3. 不得自动上调为 GO仅生成草稿。

证据输出:

  1. reports/gates/staging_token_go_evidence_autofill_*.md
  2. reports/gates/staging_token_go_evidence_autofill_*.log

19. 一键 Staging 发布流水

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/staging_release_pipeline.sh" "scripts/supply-gate/.env"

local/mock 防误跑(默认拦截):

# 仅当明确要做 local/mock 演练时启用
ALLOW_LOCAL_MOCK_STAGING=1 \
bash "scripts/ci/staging_release_pipeline.sh" "scripts/supply-gate/.env.local-mock"

说明:

  1. STEP-01staging_precheck_and_run.sh(含 M-021/TOK-005/SUP run_all
  2. STEP-02superpowers_release_pipeline.sh(使用 STAGING_ENV_FILE)。
  3. STEP-03staging_evidence_autofill.sh 自动生成回填草稿(显式绑定本次流水证据文件)。
  4. 检测到 local/mock env 且未设置 ALLOW_LOCAL_MOCK_STAGING=1 时,脚本应直接失败,防止误把演练结果当成真实 staging 证据。

可选监控(默认关闭、非阻断):

ENABLE_MINIMAX_MONITORING=1 \
MINIMAX_ENV_FILE="scripts/supply-gate/.env.minimax-dev" \
MINIMAX_RUN_ACTIVE_SMOKE=0 \
bash "scripts/ci/superpowers_release_pipeline.sh"

说明:

  1. 开启后会在 STEP-05 额外执行 Minimax 每日快照 + 7 日趋势生成。
  2. 该步骤是监控辅助项,失败仅记 WARN,不阻断 SUP 主门禁判定。

证据输出:

  1. reports/gates/staging_release_pipeline_*.md
  2. reports/gates/staging_release_pipeline_*.log

20. Minimax 上游独立 Smoke不并入 SUP 发布门禁)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/supply-gate/minimax_upstream_smoke.sh" "scripts/supply-gate/.env.minimax-dev"

可选环境变量:

# 默认 /v1/messages
MINIMAX_SMOKE_PATH="/v1/messages"

# 默认 minimax-smoke-model可替换为实际模型
MINIMAX_SMOKE_MODEL="your-model-id"

# 默认 20 秒
MINIMAX_TIMEOUT_SECONDS=20

最低断言:

  1. 输出 reports/gates/minimax_upstream_smoke_*.md 报告。
  2. 报告必须包含 base 连通探测与 active 鉴权探测两段结果。
  3. 分类规则需区分:PASS / PASS_AUTH_REACHED / FAIL_AUTH / FAIL_PATH / FAIL_NETWORK

说明:

  1. 该脚本仅用于“上游Minimax连通与鉴权可达性”验证。
  2. 该脚本不参与 SUP-004~SUP-007 业务契约发布门禁判定。
  3. 若 Minimax 返回 404/405,优先检查 API_BASE_URL + MINIMAX_SMOKE_PATH 组合是否正确。

21. Minimax 上游每日快照CI 汇总)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/minimax_upstream_daily_snapshot.sh" "$(date +%F)" "scripts/supply-gate/.env.minimax-dev"

可选环境变量:

# 默认 0仅汇总最新 smoke 报告,不触发网络请求
RUN_ACTIVE_SMOKE=0

# 置 1执行一次实时 smoke 后再汇总
RUN_ACTIVE_SMOKE=1

最低断言:

  1. 生成 reports/gates/minimax_upstream_daily_snapshot_*.md
  2. 生成/更新 reports/gates/minimax_upstream_daily_snapshots.csv
  3. 明确标注 RUN_ACTIVE_SMOKE 取值,区分“实时探测”与“仅汇总”。
  4. 默认优先汇总“非 dry-run”最新报告避免将联调证据误当真实上游证据。

说明:

  1. 该快照是“上游可达性趋势”证据,不替代 SUP 发布门禁。
  2. 建议在定时任务中默认 RUN_ACTIVE_SMOKE=0,将实时探测作为受控任务执行。
  3. 若仅存在 PASS_DRY_RUN 报告,快照状态应为 CONDITIONAL_PASS

22. Minimax 上游 7 日趋势报告

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/minimax_upstream_trend_report.sh" "$(date +%F)"

最低断言:

  1. 生成 reports/gates/minimax_upstream_trend_7d_*.md
  2. 报告包含最近 7 条(不足 7 条按实际)快照的状态统计。
  3. 趋势状态遵循 PASS_7D / CONDITIONAL_7D / NOT_READY / INSUFFICIENT_DATA

说明:

  1. 该趋势报告用于 F-03连续观测证据收敛不替代 staging 发布门禁。
  2. 建议与第 21 节每日快照搭配执行,形成“日报 + 周趋势”组合。

23. 一键生成本地 STG 环境owner/viewer/admin token

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/generate_local_staging_env.sh" "scripts/supply-gate/.env.staging-real"

可选环境变量:

# 默认 http://127.0.0.1:18080
API_BASE_URL_VALUE="http://127.0.0.1:18080"

# 默认 http://127.0.0.1:18081
TOKEN_RUNTIME_URL="http://127.0.0.1:18081"

# 默认 7200 秒2小时
TOKEN_TTL_SECONDS=7200

# 默认 1若 token runtime 不可用则自动拉起临时实例
START_RUNTIME_IF_NEEDED=1

最低断言:

  1. 生成 scripts/supply-gate/.env.staging-real(权限 600)。
  2. 文件包含 OWNER_BEARER_TOKEN / VIEWER_BEARER_TOKEN / ADMIN_BEARER_TOKEN 三类 token。
  3. 生成摘要报告 reports/gates/local_staging_env_generation_*.md(仅 hash不泄露明文 token

说明:

  1. 该脚本生成的是“本地开发/联调用”平台 token非外部 LLM 厂商 key。
  2. 切换真实 staging 时,只需替换 API_BASE_URL_VALUE 并重新执行脚本即可刷新 token 与 env。

24. 真实 STG 就绪度检查(地址+token+可达性)

执行命令:

cd "/home/long/project/立交桥"
bash "scripts/ci/staging_real_readiness_check.sh" "scripts/supply-gate/.env.staging-real"

最低断言:

  1. API_BASE_URL 非占位值,且不是 localhost/127.0.0.1
  2. 三类 token 非空且非占位值。
  3. API_BASE_URL 基础可达性检查通过(curl -I000)。
  4. 生成报告 reports/gates/staging_real_readiness_*.md

说明:

  1. 结果为 READY 才建议进入真实 STG 放行口径验证。
  2. 结果为 BLOCKED 时,应先修复地址或 token再执行 staging_release_pipeline.sh