Files
CM95/scripts/cm95_postgresql_smoke.sh
2026-10-02 18:03:26 +08:00

47 lines
1.5 KiB
Bash

#!/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"