Infra: Worker/Garage/Test-Runner

- docker-compose.yml: explizite Build-Targets (runner/migrate) — Ursache für
  "npx not found" bei garage-provision war das Default-Target (letzte Stage =
  Garage-Image ohne Node); worker startet npm run worker:mail; Defaults craftvia
- Coolify-Compose: incident-inbound-worker und sync-policy-templates entfernt,
  Rollen-/Bucket-/Image-Namen auf craftvia
- Dockerfile: seed/ und docs/wizard-uebergabe entfernt, messages/ im Runner
- npm: Name craftvia, Scripts test (scripts/run-tests.ts) und gate, ISMS-Pakete
  entfernt (handlebars, marked, sanitize-html, @xyflow/react, @dagrejs/dagre,
  html-to-image, imapflow, mailparser, exceljs, @dnd-kit/core)
- .env-Beispiele, launch.json (craftvia-dev), CI-Kommentare umbenannt

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 11:44:58 +02:00
co-authored by Claude Opus 5
parent 6f3f5a5947
commit ba7d6ac3ed
45 changed files with 167 additions and 7932 deletions
+18 -18
View File
@@ -1,21 +1,21 @@
# --- Datenbank ---
POSTGRES_USER=isms
POSTGRES_PASSWORD=isms
POSTGRES_DB=isms
DATABASE_URL=postgresql://isms:isms@localhost:5432/isms?schema=public
POSTGRES_USER=craftvia
POSTGRES_PASSWORD=craftvia
POSTGRES_DB=craftvia
DATABASE_URL=postgresql://craftvia:craftvia@localhost:5432/craftvia?schema=public
# --- Row Level Security (F-04) — lokal AUS (Owner-Betrieb) ---
# Lokal bleibt RLS aus: Der Owner isms ist Superuser/BYPASSRLS und sieht trotz
# --- Row Level Security (F-04) –€” lokal AUS (Owner-Betrieb) ---
# Lokal bleibt RLS aus: Der Owner craftvia ist Superuser/BYPASSRLS und sieht trotz
# FORCE alle Daten. Zum scharfen Testen die beiden Zeilen aktivieren (die Rolle
# isms_app zuvor mit LOGIN+Passwort versehen, s. scripts/test-rls-enforcement.ts):
# craftvia_app zuvor mit LOGIN+Passwort versehen, s. scripts/test-rls-enforcement.ts):
# RLS_ENFORCED=true
# RLS_DATABASE_URL=postgresql://isms_app:isms_app_local@localhost:5432/isms?schema=public
# RLS_DATABASE_URL=postgresql://craftvia_app:craftvia_app_local@localhost:5432/craftvia?schema=public
# --- Redis (BullMQ) ---
# F-18: Redis läuft mit requirepass. REDIS_PASSWORD muss zum docker-compose-Default
# passen; das Passwort steht zusätzlich in der REDIS_URL (redis://:<pw>@host:port).
REDIS_PASSWORD=isms-redis
REDIS_URL=redis://:isms-redis@localhost:6379
# F-18: Redis läuft mit requirepass. REDIS_PASSWORD muss zum docker-compose-Default
# passen; das Passwort steht zusätzlich in der REDIS_URL (redis://:<pw>@host:port).
REDIS_PASSWORD=craftvia-redis
REDIS_URL=redis://:craftvia-redis@localhost:6379
# --- Objektspeicher (Garage / S3-kompatibel) ---
# Sind alle vier S3_*-Pflichtvariablen gesetzt, nutzt der Storage-Adapter das echte
@@ -28,7 +28,7 @@ REDIS_URL=redis://:isms-redis@localhost:6379
S3_ENDPOINT=http://localhost:3900
S3_ACCESS_KEY=GKdead0000beef0000cafe0000
S3_SECRET_KEY=0000000000000000000000000000000000000000000000000000000000000001
S3_BUCKET=isms-documents
S3_BUCKET=craftvia-documents
# Region beidseitig us-east-1 (deckt sich mit garage.toml s3_region). forcePathStyle ist
# im Code fest gesetzt - Garage bedient ausschliesslich Path-Style.
S3_REGION=us-east-1
@@ -61,9 +61,9 @@ AUTH_URL=http://localhost:3000
AI_PROVIDER=anthropic
AI_API_KEY=
# --- Anthropic (KI-Entwurf Control-Beschreibungen, Audit-Vorbereitung) ---
# --- Anthropic (Lotse KI-Assistent, Auftragsimport) ---
# Ohne ANTHROPIC_API_KEY ist die KI-Anbindung deaktiviert (graceful degradation):
# kein Entwurf, Status bleibt „manuell zu erfassen", die UI funktioniert weiter.
# kein Entwurf, Status bleibt –€žmanuell zu erfassen", die UI funktioniert weiter.
ANTHROPIC_API_KEY=
# Optionale Modell-ID; Default: claude-opus-5
ANTHROPIC_MODEL=claude-opus-5
@@ -71,7 +71,7 @@ ANTHROPIC_MODEL=claude-opus-5
# --- E-Mail / SMTP (SEC1) ---
# Dev: Mailpit oder Mailhog (docker-compose Service `mailhog`, SMTP auf 1025,
# Weboberflaeche auf 8025). Gegen localhost wird TLS bewusst nicht erzwungen.
# Prod: dedizierte Absenderdomain mit SPF, DKIM und DMARC — Vorbedingung vor
# Prod: dedizierte Absenderdomain mit SPF, DKIM und DMARC –€” Vorbedingung vor
# dem ersten Produktivversand. Secrets ausschliesslich aus dem Secret-Store.
SMTP_HOST=localhost
SMTP_PORT=1025
@@ -82,8 +82,8 @@ SMTP_USER=
SMTP_PASSWORD=
# Absenderadresse und Anzeigename. MAIL_FROM/MAIL_FROM_NAME werden als Alias
# ebenfalls akzeptiert.
SMTP_FROM=no-reply@certvia.de
MAIL_FROM_NAME=Certvia
SMTP_FROM=no-reply@craftvia.de
MAIL_FROM_NAME=Craftvia
# Optionale Antwortadresse (sonst keine Reply-To-Kopfzeile).
MAIL_REPLY_TO=
# Basis fuer absolute Links in Mails. Faellt auf AUTH_URL zurueck.