#!/usr/bin/env bash set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$PROJECT_ROOT" if [[ ! -f .env ]]; then echo "ERROR: .env 不存在;请填写 NAS PostgreSQL/PostGIS 参数。" >&2 exit 2 fi source .venv/bin/activate SOURCE_ROOT="${CM95_SOURCE_DIR:-/root/sourceserver/cm95-data/CM93JAPAN}" LIMIT="${CM95_SMOKE_CELL_LIMIT:-20}" MANIFEST="build/smoke_fid_manifest.sqlite" cm95pg env-check cm95pg db-init cm95pg db-check cm95pg scan "$SOURCE_ROOT" cm95pg import "$SOURCE_ROOT" --limit "$LIMIT" cm95pg audit "$SOURCE_ROOT" --limit "$LIMIT" --precision-samples 20 --report logs/postgresql_smoke_audit.json DATASET_ID="$(SOURCE_ROOT="$SOURCE_ROOT" python - <<'PY' import os from pathlib import Path from cm93db.config import load_config from cm93db.database import connect root = str(Path(os.environ['SOURCE_ROOT']).resolve()) with connect(load_config()) as conn: with conn.cursor() as cur: cur.execute( "SELECT id FROM chart_dataset WHERE source_type='CM93' AND source_root=%s ORDER BY id LIMIT 1", (root,), ) row = cur.fetchone() if row is None: raise SystemExit('dataset not found') print(int(row['id'])) PY )" cm95pbf build-fid-manifest --dataset-id "$DATASET_ID" --manifest "$MANIFEST" --rebuild-fid-manifest cm95pbf build-tile --dataset-id "$DATASET_ID" --z 10 --x 914 --y 385 --profile delivery --manifest "$MANIFEST" --output-root build/smoke-pbf --report-root build/smoke-reports echo "PostgreSQL/PostGIS smoke: PASS"