diff --git a/.gitea/workflows/rag-ingest.yaml b/.gitea/workflows/rag-ingest.yaml new file mode 100644 index 0000000..1a55348 --- /dev/null +++ b/.gitea/workflows/rag-ingest.yaml @@ -0,0 +1,73 @@ +# Gitea Actions — RAG Legal Corpus Ingestion +# +# Manuell triggerbarer Workflow zur Ingestion von Rechtstexten in Qdrant. +# Trigger: Gitea UI → Actions → "RAG Ingestion" → Run +# +# Phasen: gesetze, eu, templates, datenschutz, verbraucherschutz, verify, version, all +# +# Voraussetzung: RAG-Service und Qdrant muessen auf Hetzner laufen. + +name: RAG Ingestion + +on: + workflow_dispatch: + inputs: + phase: + description: 'Ingestion Phase (gesetze, eu, templates, datenschutz, verbraucherschutz, verify, version, all)' + required: true + default: 'verbraucherschutz' + +jobs: + ingest: + runs-on: docker + container: python:3.12-slim + steps: + - name: Setup + run: | + apt-get update -qq && apt-get install -y -qq git curl > /dev/null 2>&1 + + - name: Checkout + run: | + git clone --depth 1 --branch main ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git . + + - name: Check RAG service + run: | + # RAG-Service laeuft auf dem Host, nicht im Container + # Qdrant ist extern erreichbar + echo "Checking Qdrant..." + curl -sf "${QDRANT_URL}/collections" > /dev/null 2>&1 \ + && echo "Qdrant: OK" \ + || echo "WARNUNG: Qdrant nicht erreichbar (${QDRANT_URL})" + + echo "Checking RAG API..." + curl -sf -k "${RAG_URL}" -X POST 2>/dev/null | head -c 200 \ + && echo "" && echo "RAG API: OK" \ + || echo "WARNUNG: RAG API nicht erreichbar (${RAG_URL})" + env: + QDRANT_URL: "https://qdrant-dev.breakpilot.ai" + RAG_URL: "https://localhost:8097/api/v1/documents/upload" + + - name: Run Ingestion + run: | + set -euo pipefail + PHASE="${{ github.event.inputs.phase }}" + + echo "=== RAG Ingestion: Phase ${PHASE} ===" + echo "" + + # Konfiguration fuer Hetzner + export WORK_DIR="/tmp/rag-ingestion" + export RAG_URL="https://localhost:8097/api/v1/documents/upload" + export QDRANT_URL="https://qdrant-dev.breakpilot.ai" + export SDK_URL="https://localhost:8093" + + mkdir -p "$WORK_DIR"/{pdfs,repos,texts} + + if [ "$PHASE" = "all" ]; then + bash scripts/ingest-legal-corpus.sh + else + bash scripts/ingest-legal-corpus.sh --only "$PHASE" + fi + + echo "" + echo "=== Ingestion abgeschlossen ==="