refactor: Consolidate standalone services into admin-v2, add new SDK modules
Remove standalone services (ai-compliance-sdk root, developer-portal, dsms-gateway, dsms-node, night-scheduler) and legacy compliance/dsgvo pages. Add new SDK pipeline modules (academy, document-crawler, dsb-portal, incidents, whistleblower, reporting, sso, multi-tenant, industry-templates). Add drafting engine, legal corpus files (AT/CH/DE), pitch-deck, blog and Förderantrag pages. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,9 +16,7 @@ services:
|
||||
- "8000:8000" # HTTPS Backend API
|
||||
- "8086:8086" # HTTPS Klausur Service
|
||||
- "8089:8089" # HTTPS Edu-Search proxy (edu-search runs on 8088)
|
||||
- "8093:8093" # HTTPS AI Compliance SDK
|
||||
- "8443:8443" # HTTPS Jitsi Meet (https://macmini:8443/)
|
||||
- "3006:3006" # HTTPS Developer Portal (https://macmini:3006/)
|
||||
volumes:
|
||||
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
||||
- vault_certs:/etc/nginx/certs:ro
|
||||
@@ -35,14 +33,10 @@ services:
|
||||
condition: service_started
|
||||
website:
|
||||
condition: service_started
|
||||
ai-compliance-sdk:
|
||||
condition: service_started
|
||||
admin-v2:
|
||||
condition: service_started
|
||||
jitsi-web:
|
||||
condition: service_started
|
||||
developer-portal:
|
||||
condition: service_started
|
||||
extra_hosts:
|
||||
- "breakpilot-edu-search:host-gateway"
|
||||
networks:
|
||||
@@ -744,7 +738,6 @@ services:
|
||||
- BACKEND_URL=http://backend:8000
|
||||
- CONSENT_SERVICE_URL=http://consent-service:8081
|
||||
- KLAUSUR_SERVICE_URL=http://klausur-service:8086
|
||||
- SDK_URL=http://ai-compliance-sdk:8090
|
||||
# Woodpecker CI Status
|
||||
- WOODPECKER_URL=${WOODPECKER_URL:-http://woodpecker-server:8000}
|
||||
- WOODPECKER_TOKEN=${WOODPECKER_TOKEN:-}
|
||||
@@ -759,118 +752,29 @@ services:
|
||||
depends_on:
|
||||
- backend
|
||||
- consent-service
|
||||
- ai-compliance-sdk
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
|
||||
# ============================================
|
||||
# Developer Portal - Oeffentliches SDK-Dokumentationsportal
|
||||
# Access: https://macmini:3006/
|
||||
# Pitch Deck - Interactive Investor Presentation
|
||||
# Next.js auf Port 3012
|
||||
# ============================================
|
||||
developer-portal:
|
||||
pitch-deck:
|
||||
build:
|
||||
context: ./developer-portal
|
||||
context: ./pitch-deck
|
||||
dockerfile: Dockerfile
|
||||
platform: linux/arm64
|
||||
container_name: breakpilot-pwa-developer-portal
|
||||
expose:
|
||||
- "3000"
|
||||
container_name: breakpilot-pwa-pitch-deck
|
||||
ports:
|
||||
- "3012:3000"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
|
||||
# ============================================
|
||||
# AI Compliance SDK - Multi-Tenant RBAC & LLM Gateway
|
||||
# Go auf Port 8090 (intern), 8093 (extern)
|
||||
# CFO Use-Case: Namespace-isolierte KI-Nutzung
|
||||
# ============================================
|
||||
ai-compliance-sdk:
|
||||
build:
|
||||
context: ./ai-compliance-sdk
|
||||
dockerfile: Dockerfile
|
||||
platform: linux/arm64 # Mac Mini Apple Silicon
|
||||
container_name: breakpilot-pwa-ai-compliance-sdk
|
||||
# Port 8093 wird über nginx proxied (ai-compliance-sdk:8090 intern)
|
||||
environment:
|
||||
- PORT=8090
|
||||
- ENVIRONMENT=${ENVIRONMENT:-development}
|
||||
# PostgreSQL for RBAC, Policies, Audit
|
||||
- DATABASE_URL=postgres://breakpilot:breakpilot123@postgres:5432/breakpilot_db?sslmode=disable
|
||||
- JWT_SECRET=${JWT_SECRET:-your-super-secret-jwt-key-change-in-production}
|
||||
# LLM Provider Configuration
|
||||
- LLM_PROVIDER=${SDK_LLM_PROVIDER:-ollama}
|
||||
- LLM_FALLBACK_PROVIDER=${SDK_LLM_FALLBACK_PROVIDER:-anthropic}
|
||||
# Ollama (Mac Mini lokal - DSGVO-konform)
|
||||
- OLLAMA_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
|
||||
- OLLAMA_DEFAULT_MODEL=${OLLAMA_DEFAULT_MODEL:-qwen2.5:14b}
|
||||
# Anthropic (Cloud-Fallback via Syseleven BSI-Cloud)
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
||||
- ANTHROPIC_DEFAULT_MODEL=${ANTHROPIC_DEFAULT_MODEL:-claude-sonnet-4-20250514}
|
||||
# PII Detection & Redaction
|
||||
- PII_REDACTION_ENABLED=${PII_REDACTION_ENABLED:-true}
|
||||
- PII_REDACTION_LEVEL=${PII_REDACTION_LEVEL:-strict}
|
||||
# Audit Trail
|
||||
- AUDIT_RETENTION_DAYS=${AUDIT_RETENTION_DAYS:-365}
|
||||
- AUDIT_LOG_PROMPTS=${AUDIT_LOG_PROMPTS:-false}
|
||||
# CORS
|
||||
- ALLOWED_ORIGINS=http://localhost:3002,https://macmini:3002,http://admin-v2:3000
|
||||
- DATABASE_URL=postgres://breakpilot:breakpilot123@host.docker.internal:5432/breakpilot_db
|
||||
- OLLAMA_URL=http://host.docker.internal:11434
|
||||
- OLLAMA_MODEL=qwen3:30b-a3b
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8090/health"]
|
||||
interval: 30s
|
||||
timeout: 3s
|
||||
start_period: 10s
|
||||
retries: 3
|
||||
restart: unless-stopped
|
||||
|
||||
# DSMS Node - Dezentrales Speichersystem (Private IPFS)
|
||||
dsms-node:
|
||||
build:
|
||||
context: ./dsms-node
|
||||
dockerfile: Dockerfile
|
||||
container_name: breakpilot-pwa-dsms-node
|
||||
ports:
|
||||
- "4001:4001" # Swarm P2P
|
||||
- "5001:5001" # IPFS API
|
||||
- "8085:8080" # IPFS Gateway (8085 um Konflikt mit Backend zu vermeiden)
|
||||
volumes:
|
||||
- dsms_data:/data/ipfs
|
||||
environment:
|
||||
- IPFS_PROFILE=server
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "ipfs id > /dev/null 2>&1 || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
start_period: 30s
|
||||
retries: 3
|
||||
|
||||
# DSMS Gateway - REST API für DSMS
|
||||
dsms-gateway:
|
||||
build:
|
||||
context: ./dsms-gateway
|
||||
dockerfile: Dockerfile
|
||||
container_name: breakpilot-pwa-dsms-gateway
|
||||
ports:
|
||||
- "8082:8082"
|
||||
environment:
|
||||
- IPFS_API_URL=http://dsms-node:5001
|
||||
- IPFS_GATEWAY_URL=http://dsms-node:8080
|
||||
- JWT_SECRET=${JWT_SECRET:-your-super-secret-jwt-key-change-in-production}
|
||||
depends_on:
|
||||
dsms-node:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
@@ -1674,32 +1578,6 @@ services:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
|
||||
# ============================================
|
||||
# Night Scheduler - Nachtabschaltung
|
||||
# Stoppt Services nachts, startet sie morgens
|
||||
# API: http://localhost:8096
|
||||
# ============================================
|
||||
night-scheduler:
|
||||
build: ./night-scheduler
|
||||
container_name: breakpilot-pwa-night-scheduler
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./night-scheduler/config:/config
|
||||
- ./docker-compose.yml:/app/docker-compose.yml:ro
|
||||
environment:
|
||||
- COMPOSE_PROJECT_NAME=breakpilot-pwa
|
||||
ports:
|
||||
- "8096:8096"
|
||||
networks:
|
||||
- breakpilot-pwa-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
|
||||
# ============================================
|
||||
# Woodpecker CI - Agent
|
||||
# Executes pipeline steps in containers
|
||||
@@ -1751,8 +1629,6 @@ volumes:
|
||||
# Valkey Session Cache
|
||||
valkey_data:
|
||||
driver: local
|
||||
dsms_data:
|
||||
driver: local
|
||||
klausur_uploads:
|
||||
driver: local
|
||||
eh_uploads:
|
||||
|
||||
Reference in New Issue
Block a user