Manchmal ist die richtige Antwort auf ein Code-Review nicht die Liste der Fixes, sondern ein Neuanfang. Dieses Projekt ist ein Beispiel dafür. Der Kunde bleibt hier auf eigenen Wunsch ungenannt.
Ausgangslage
Ein Reiseveranstalter, der Pakete aus Eintrittskarten, Hotel und Anreise für Sportveranstaltungen anbietet, hatte ein Portal für Angebote und Buchungen. Es war von mehreren Personen in drei Branches entwickelt worden, von denen keiner vollständig war. Im Review fanden sich die Klassiker, die wir aus schnell gewachsenen Projekten kennen: Zugangsdaten im Repository und Funktionen, die serverseitig keine Anmeldung prüften. Der fachliche Kern – wie eine Buchung beim Veranstalter entsteht – war nirgends dokumentiert.
Lösung
Statt den Altbestand zu flicken, hat ein Agent das Portal neu gebaut: Next.js 15, PostgreSQL, Docker, Deployment per Git-Push. Secrets liegen verschlüsselt in der Datenbank und werden im Admin-Bereich gepflegt, nicht in Umgebungsdateien. Jede Route prüft serverseitig, ob der Aufrufer darf. Benutzerkonten, Änderungsprotokoll und ein nächtlicher Datenbank-Dump gehören zum Standard.
Der fachliche Teil hat die meiste Zeit gekostet. Die Schnittstelle zum Veranstalter nimmt dieselben Leistungszeilen entgegen, die die Sachbearbeitung bisher von Hand in eine Maske tippte. Entscheidend war eine Erkenntnis aus dem Gespräch mit dem Kunden: Optionsbuchungen verfallen nicht, sie werden nach Ablauf der Frist zur zahlungspflichtigen Festbuchung. Eine Frist ist also keine Verfalls-, sondern eine Kaufauslösung. Daraus entstand ein Kontingent-Panel, das begehrte Sessions auf Platzhalter optioniert und stündlich vor Fristende erneuert – erst neu buchen, dann die alte Option freigeben, nie umgekehrt.
Am zweiten Tag folgte eine Gesamtprüfung des eigenen Werks mit 67 bestätigten Befunden. Sie fand zwei Fehler, die der Agent selbst eingebaut hatte: Ein Datenbank-Constraint hatte den Kalkulator seit Mittag lahmgelegt, und der Buchungsweg zum Veranstalter war gebaut, aber nie eingehängt. Beides wurde behoben, bevor jemand es gemerkt hätte.
Ergebnis
- Angebot, Bestätigungsmail mit PDF, Kundenseite mit verbindlicher Annahme, Arbeitsliste mit Fristen für Unterlagen, Mahnung und Nachfassen
- Optionieren, Festschreiben, Umbuchen und Stornieren über die Veranstalter-Schnittstelle – einschließlich der Antwortcodes, die kein Fehler sind
- Offen benannt: Die Buchungsstrecke zum Veranstalter geht erst nach dem gemeinsamen Abnahmetest mit dem Veranstalter live
Was wir daraus gelernt haben
Der Agent hat den Code in Stunden geschrieben. Die Tage gingen in das Verstehen der Domäne: Was bedeutet eine Frist wirklich, welche Rückmeldung des Veranstalters ist ein Vorgang mit Nummer und welche ein Fehler, wer ist rechtlich Veranstalter und wer Vermittler. Diese Fragen beantwortet kein Modell, die stellt man dem Kunden. Und: Eine Gesamtprüfung des eigenen Werks ist kein Misstrauen gegenüber der KI, sondern der Teil der Arbeit, der aus schnellem Code ein Produkt macht.