Files
boc/projects/landvex/build.sh
T
Bernt f4f853d94b landvex: Datafabrik + Vision + Infrastruktur för 50GB skalning
Datafabrik:
- Skördare: crawler, källvitlista, upphandlingsskördare
- Extraktor: LLM-baserad schemastyrd extraktion
- Upplösare: Entitetsupplösning och deduplicering
- Köer: Schemalagd / kunddriven / fält
- Agentorkestrering: 20+ parallella agenter

Vision:
- Identify-modell: ResNet50 + kontrastivt lärande
- Träningspipeline: NT-Xent loss
- Vektordatabas: FAISS för snabb sökning
- OCR-pipeline: Typskyltsläsning

Infrastruktur:
- Docker Compose production
- Terraform för AWS ECS
- Prometheus + Grafana monitorering
- Neo4j + FAISS + MinIO + Redis
2026-07-05 06:25:51 +00:00

81 lines
3.8 KiB
Bash
Executable File

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