kundencenter/apps/api
Kundencenter b64cec21a4 fix(cli): Migrationen mit Prüfsumme und Sperre gegen Parallelausführung härten
Zweite Hälfte von #100 (P2, Nightbot-Befund): schema_migrations kannte
bisher nur den Dateinamen, keine Prüfsumme. Wurde eine bereits
angewendete Migrationsdatei nachträglich bearbeitet (versehentlich,
Merge-Konflikt o. Ä.), lief der nächste `pnpm migrate` klaglos durch –
die Änderung wurde nie angewendet, Umgebungen konnten unbemerkt
auseinanderdriften. Außerdem gab es keine Sperre: zwei gleichzeitige
Migrationsläufe (z. B. zwei parallele Deploys) hätten sich in die
Quere kommen können.

- Neue Spalte schema_migrations.checksum (SHA-256 des Dateiinhalts,
  ALTER TABLE ... ADD COLUMN IF NOT EXISTS für bestehende Installationen).
  Bereits angewendete Migrationen ohne gespeicherte Prüfsumme werden
  einmalig nachgetragen; weicht eine vorhandene Prüfsumme vom aktuellen
  Dateiinhalt ab, bricht die Migration mit klarer Fehlermeldung ab statt
  die Änderung stillschweigend zu ignorieren.
- GET_LOCK('kc_migrate', 10) um den gesamten Lauf (selbes Muster wie die
  Audit-Hash-Kette), verhindert parallele Migrationsläufe.
- Sauberer Fehlerausstieg (Meldung + Exit-Code) statt Stack-Trace.

Gegen die Testdatenbank durchexerziert: Prüfsummen-Nachtrag, No-Op-
Wiederholung, manipulierte Prüfsumme (bricht korrekt ab), danach wieder
sauberer Lauf. Gegen die echte Produktionsdatenbank angewendet: alle 31
bestehenden Migrationen jetzt mit Prüfsumme, kc-api läuft weiter.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 11:36:52 +02:00
..
src fix(cli): Migrationen mit Prüfsumme und Sperre gegen Parallelausführung härten 2026-09-29 11:36:52 +02:00
test Rechnungen: Rabatt je Position 2026-09-28 11:01:19 +02:00
package.json feat: IMAP-Posteingang fürs Ticketsystem (Mail-Antworten -> Tickets) 2026-09-28 17:35:58 +02:00
tsconfig.json Stand vor Einführung des Nacht-Agenten 2026-09-27 00:51:32 +02:00
vitest.config.ts Ticket-Anhänge: Bilder/PDF hochladen und anzeigen (geprüft anhand der Dateikennung) 2026-09-27 08:53:27 +02:00