#!/bin/bash # ============================================================ # RAG DACH Vollabdeckung — Deploy & Ingest Script # Laeuft auf dem Mac Mini im Hintergrund (nohup) # ============================================================ set -e LOG_FILE="/Users/benjaminadmin/Projekte/breakpilot-pwa/ingest-$(date +%Y%m%d-%H%M%S).log" PROJ="/Users/benjaminadmin/Projekte/breakpilot-pwa" DOCKER="/usr/local/bin/docker" COMPOSE="$DOCKER compose -f $PROJ/docker-compose.yml" exec > >(tee -a "$LOG_FILE") 2>&1 echo "============================================================" echo "RAG DACH Deploy & Ingest — Start: $(date)" echo "Logfile: $LOG_FILE" echo "============================================================" # Phase 1: Check prerequisites echo "" echo "[1/6] Pruefe Docker-Services..." $COMPOSE ps qdrant embedding-service klausur-service 2>/dev/null || true # Phase 2: Restart klausur-service to pick up new code echo "" echo "[2/6] Rebuilding klausur-service..." cd "$PROJ" $COMPOSE build --no-cache klausur-service echo "Build fertig." echo "" echo "[3/6] Restarting klausur-service..." $COMPOSE up -d klausur-service echo "Warte 15 Sekunden auf Service-Start..." sleep 15 # Check if klausur-service is healthy echo "Pruefe klausur-service Health..." for i in 1 2 3 4 5; do if curl -sf http://127.0.0.1:8086/health > /dev/null 2>&1; then echo "klausur-service ist bereit." break fi echo "Warte auf klausur-service... ($i/5)" sleep 10 done # Phase 3: Run ingestion for new DACH laws only (not all — that would re-ingest existing ones) echo "" echo "[4/6] Starte Ingestion der neuen DACH-Gesetze (P1 zuerst)..." # P1 — Deutschland echo "" echo "--- Deutschland P1 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ DE_DDG DE_BGB_AGB DE_EGBGB DE_UWG DE_HGB_RET DE_AO_RET DE_TKG 2>&1 || echo "DE P1 hatte Fehler (non-fatal)" # P1 — Oesterreich echo "" echo "--- Oesterreich P1 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ AT_ECG AT_TKG AT_KSCHG AT_FAGG AT_UGB_RET AT_BAO_RET AT_MEDIENG 2>&1 || echo "AT P1 hatte Fehler (non-fatal)" # P1 — Schweiz echo "" echo "--- Schweiz P1 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ CH_DSV CH_OR_AGB CH_UWG CH_FMG 2>&1 || echo "CH P1 hatte Fehler (non-fatal)" # 3 fehlgeschlagene Quellen nachholen echo "" echo "--- 3 fehlgeschlagene Quellen ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ LU_DPA_LAW DK_DATABESKYTTELSESLOVEN EDPB_GUIDELINES_1_2022 2>&1 || echo "Fix-3 hatte Fehler (non-fatal)" echo "" echo "[5/6] Starte Ingestion P2 + P3..." # P2 — Deutschland echo "" echo "--- Deutschland P2 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ DE_PANGV DE_DLINFOV DE_BETRVG 2>&1 || echo "DE P2 hatte Fehler (non-fatal)" # P2 — Oesterreich echo "" echo "--- Oesterreich P2 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ AT_ABGB_AGB AT_UWG 2>&1 || echo "AT P2 hatte Fehler (non-fatal)" # P2 — Schweiz echo "" echo "--- Schweiz P2 ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ CH_GEBUV CH_ZERTES 2>&1 || echo "CH P2 hatte Fehler (non-fatal)" # P3 echo "" echo "--- P3 (DE + CH) ---" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --ingest \ DE_GESCHGEHG DE_BSIG DE_USTG_RET CH_ZGB_PERS 2>&1 || echo "P3 hatte Fehler (non-fatal)" # Phase 4: Rebuild admin-v2 frontend echo "" echo "[6/6] Rebuilding admin-v2 Frontend..." $COMPOSE build --no-cache admin-v2 $COMPOSE up -d admin-v2 echo "admin-v2 neu gestartet." # Phase 5: Status check echo "" echo "============================================================" echo "FINAL STATUS CHECK" echo "============================================================" echo "" $COMPOSE exec -T klausur-service python -m legal_corpus_ingestion --status 2>&1 || echo "Status-Check fehlgeschlagen" echo "" echo "============================================================" echo "Fertig: $(date)" echo "Logfile: $LOG_FILE" echo "============================================================"