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
+3 -3
View File
@@ -10,7 +10,7 @@ import "dotenv/config";
* betriebsbereiten Zustand her:
* 1. Layout: dem Node einmalig Zone + Kapazität zuweisen und anwenden (ohne Layout
* lehnt Garage jeden Schreibzugriff mit „no capacity" ab).
* 2. Bucket `S3_BUCKET` (Default isms-documents) anlegen.
* 2. Bucket `S3_BUCKET` (Default craftvia-documents) anlegen.
* 3. Access-Key deterministisch IMPORTIEREN — aus S3_ACCESS_KEY/S3_SECRET_KEY der
* Coolify-Env, damit App-Env und Garage denselben Schlüssel teilen (kein
* Nachpflegen erzeugter Keys).
@@ -58,7 +58,7 @@ function readCfg(): Cfg | null {
}
const accessKeyId = process.env.S3_ACCESS_KEY?.trim();
const secretKey = process.env.S3_SECRET_KEY?.trim();
const bucket = process.env.S3_BUCKET?.trim() || "isms-documents";
const bucket = process.env.S3_BUCKET?.trim() || "craftvia-documents";
if (!accessKeyId || !secretKey) {
throw new Error(
"GARAGE_ADMIN_TOKEN ist gesetzt, aber S3_ACCESS_KEY/S3_SECRET_KEY fehlen. " +
@@ -210,7 +210,7 @@ async function ensureKey(cfg: Cfg): Promise<void> {
const imported = await admin(cfg, "POST", "/v1/key/import", {
accessKeyId: cfg.accessKeyId,
secretAccessKey: cfg.secretKey,
name: "isms-app",
name: "craftvia-app",
});
if (imported.status === 200) {
log(`Access-Key ${cfg.accessKeyId} importiert.`);