#!/usr/bin/env bash set -euo pipefail echo "═══════════════════════════════════════════════════════════" echo " Landvex IOL — Bygg & Driftsättning" echo "═══════════════════════════════════════════════════════════" # ─── Konfiguration ───────────────────────────────────────── DATA_DIR="${PWD}/10-data" DB_DIR="${PWD}/db" API_DIR="${PWD}/api" SCRIPT_DIR="${PWD}/scripts" DATAFABRIK_DIR="${PWD}/datafabrik" VISION_DIR="${PWD}/vision" # ─── Steg 1: Validera indata ─────────────────────────────── echo "" echo "▶ Steg 1: Validerar indata..." python3 "${SCRIPT_DIR}/export_csv.py" python3 "${DB_DIR}/load_to_neo4j.py" # ─── Steg 2: Bygg Docker-images ──────────────────────────── echo "" echo "▶ Steg 2: Bygger Docker-images..." docker compose build api docker compose -f docker-compose.prod.yml build datafabrik vision-trainer # ─── Steg 3: Starta tjänster ─────────────────────────────── echo "" echo "▶ Steg 3: Startar API..." docker compose up -d api # ─── Steg 4: Health check ────────────────────────────────── echo "" echo "▶ Steg 4: Health check..." sleep 2 HEALTH=$(curl -s http://localhost:8081/health) POSTER=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin)['poster'])") KANTER=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin)['kanter'])") echo " ✅ API: ${POSTER} poster, ${KANTER} kanter" # ─── Steg 5: Snabbtest ───────────────────────────────────── echo "" echo "▶ Steg 5: Snabbtest av endpoints..." curl -s 'http://localhost:8081/v0/search?q=belysning' | python3 -m json.tool | grep '"antal"' curl -s 'http://localhost:8081/v0/objects/LVX-TRP-0102' | python3 -m json.tool | grep '"lvx_id"' # ─── Steg 6: Datafabrik (valfritt) ───────────────────────── if [ "${1:-}" == "--med-datafabrik" ]; then echo "" echo "▶ Steg 6: Startar Datafabrik..." docker compose -f docker-compose.prod.yml up -d datafabrik echo " ✅ Datafabrik startad" fi # ─── Steg 7: Vision (valfritt) ───────────────────────────── if [ "${1:-}" == "--med-vision" ]; then echo "" echo "▶ Steg 7: Startar Vision-träning..." docker compose -f docker-compose.prod.yml --profile training up -d vision-trainer echo " ✅ Vision-tränare startad" fi echo "" echo "═══════════════════════════════════════════════════════════" echo " ✅ Landvex IOL är driftsatt!" echo "" echo " API: http://localhost:8081" echo " Health: http://localhost:8081/health" echo " Neo4j: bolt://localhost:7687" echo " Grafana: http://localhost:3000" echo " Prometheus: http://localhost:9090" echo "" echo " Kommandon:" echo " ./build.sh --med-datafabrik # Inkludera datafabrik" echo " ./build.sh --med-vision # Inkludera vision-träning" echo "" echo " Agentorkestrering:" echo " python3 datafabrik/agent_orkestrering.py --tier 1" echo "═══════════════════════════════════════════════════════════"