#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" MODE="${1:-default}" case "$MODE" in default|local-candidate) ;; *) echo "Usage: bash scripts/check-minimal.sh [local-candidate]" >&2 exit 2 ;; esac echo "=== [1/7] Process Contract Gate ===" if [[ "$MODE" == "local-candidate" ]]; then echo "[SKIP] local-candidate 不读取历史 Issue CSV 流程基线" else ( cd "$ROOT_DIR" node scripts/qa/check-process-contract.mjs --baseline ) fi echo "" echo "=== [2/7] Governance + Sensitive Content ===" ( cd "$ROOT_DIR" node scripts/qa/check-trellis-governance.mjs node scripts/qa/check-sensitive-content.mjs bash -n scripts/qa/run-live-smoke-readiness.sh bash -n deploy/trialrun/deploy.sh ) echo "" echo "=== [3/7] Server Prisma Validate ===" ( cd "$ROOT_DIR/server" npm run prisma:validate ) echo "" echo "=== [4/7] Server Static Checks ===" ( cd "$ROOT_DIR/server" node --check src/routes/reimbursements.js node --check src/routes/workflow.js node --check src/routes/delegations.js node --check src/routes/invoicePool.js node --check src/routes/invoicePool/verification.js node --check src/routes/invoicePool/read.js node --check src/routes/invoicePool/shared/selects.js node --check src/routes/invoicePool/shared/mappers.js node --check src/routes/invoicePool/shared/schemas.js node --check src/routes/invoicePool/shared/helpers.js node --check src/routes/audit.js node --check src/routes/users.js node --check src/routes/dashboard.js node --check src/routes/budgets.js node --check src/routes/integrations.js node --check src/routes/featureFlags.js node --check src/routes/travelOrders.js node --check src/routes/notifications.js node --check src/jobs/delegationRevokeJob.js node --check src/jobs/ocrJob.js node --check src/jobs/pgBossJobs.js node --check src/jobs/verificationJob.js node --check src/jobs/integrationOutboxJob.js node --check src/jobs/integrationOutboxWorker.js node --check src/services/ocr/index.js node --check src/services/verification/index.js node --check src/services/featureFlags/index.js node --check src/services/integrations/outbox.js node --check src/services/integrations/erp.js node --check src/services/integrations/dispatcher.js bash -n scripts/regression-workflow-actions.sh bash -n scripts/regression-audit.sh bash -n scripts/regression-ocr.sh bash -n scripts/regression-org-settings.sh bash -n scripts/regression-auth-security.sh bash -n scripts/regression-verification.sh bash -n scripts/regression-dashboard.sh bash -n scripts/regression-budget.sh bash -n scripts/regression-integrations.sh bash -n scripts/regression-feature-flags.sh bash -n scripts/security-baseline.sh bash -n scripts/benchmark-dashboard.sh bash -n scripts/regression-all.sh ) echo "" echo "=== [5/7] Server Unit Tests ===" ( cd "$ROOT_DIR/server" npm test ) echo "" echo "=== [6/7] Client Typecheck + Build ===" ( cd "$ROOT_DIR/client" npm run typecheck npm run build ) echo "" echo "=== [7/7] Feature Matrix Consistency ===" if [[ "$MODE" == "local-candidate" ]]; then echo "[SKIP] local-candidate 不读取历史 Issue CSV 功能矩阵" else ( cd "$ROOT_DIR" python3 scripts/validate-feature-matrix.py ) fi echo "" echo "[OK] Minimal checks passed"