docs: DEVLOG-Eintrag fuer M6

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-12 09:02:58 +02:00
co-authored by Claude Opus 5
parent 98d170b68a
commit 928f841adb
2 changed files with 117 additions and 8 deletions
+110 -2
View File
@@ -6,13 +6,121 @@ die Übersicht aus `scripts/zeit.sh summe`.
## Zeit je Meilenstein
| Meilenstein | Art | Minuten | Stunden |
| ----------- | ------ | ------- | --------- |
| ----------- | ------ | -------- | --------- |
| M1 | claude | 161 | 2,68 |
| M2 | claude | 44 | 0,73 |
| M3 | claude | 41 | 0,68 |
| M4 | claude | 167 | 2,78 |
| M5 | claude | 420 | 7,00 |
| **Gesamt** | | **833** | **13,88** |
| M6 | claude | 733 | 12,22 |
| **Gesamt** | | **1566** | **26,10** |
---
## 2026-09-12 – M6: Integrationen
**Dauer:** 733 Minuten (20:47–09:00), Art `claude`.
> Die Zahl täuscht. Ein großer Teil davon war Warten auf Docker-Bauten, die
> in der Nacht dreimal hängen blieben — einmal 39 Minuten ohne eine Zeile
> Ausgabe. Die eigentliche Arbeit war knapper.
**Ziel der Sitzung:** Aufgaben dort abholen, wo sie entstehen — ohne dass die
Planung darunter leidet, die hier passiert.
### Erledigt
- Gemeinsame Aufnahmestelle für alle Integrationen (21 Tests)
- Zammad, lesend, mit Suchausdruck aus der Konfiguration
- Telegram: erfassen, melden, abhaken — mit Kopplung über Einmalcode
- Spiegel zwischen den Instanzen: Belegung ohne Titel, Aufgaben nur markiert
- Seite „Integrationen" mit Zustand, Fehler und Knopf für den Sofortlauf
- Gespiegelte Belegung in der Wochenansicht
- 4 neue E2E-Tests, 9 neue Integrationsprüfungen, Handbuchseite
### Entscheidungen mit Begründung
**Das Ursprungssystem führt Titel, Notiz, Verweis und Fälligkeit — mehr
nicht.** Bereich, Projekt, Priorität und geschätzter Aufwand gehören der
Planung. Wer ein Ticket einsortiert und schätzt, muss sich darauf verlassen
können, dass der nächste Abgleich das nicht wegräumt. Ohne diese Trennung
wäre die Wochenplanung nach jedem Lauf kaputt.
**Zammad wird nur gelesen.** Ein Ticket schließt man im Ticketsystem, sonst
weiß die Kollegin nicht, warum es plötzlich zu ist. Umgekehrt darf Zammad
hier abhaken — dort ist die Wahrheit über den Zustand des Tickets.
**Telegram holt ab, statt einen Webhook zu bekommen.** Ein Webhook verlangt
eine von außen erreichbare Adresse mit gültigem Zertifikat. Der Planer soll
auch hinter einem Anschluss ohne feste Adresse laufen, und der Preis dafür
sind zwei Minuten Verzögerung.
**Unbekannte Chats bekommen keine Antwort — auch keine Fehlermeldung.** Wer
die Kennung des Bots kennt, könnte ihm sonst schreiben und daran erkennen,
dass es diesen Planer gibt. Die einzige Ausnahme ist ein gültiger
Kopplungscode.
**Der Kopplungscode entstand aus einem Widerspruch.** Erst sollte die
Chatkennung von Hand eingetragen werden. Nur: Um sie zu erfahren, müsste der
Bot Unbekannten antworten — genau das, was er nicht darf. Der Code dreht die
Richtung um: Er kommt aus der Anwendung, in die man sich anmelden muss.
**Der Spiegel schickt Belegung ohne Titel.** Daheim soll zu sehen sein,
_dass_ die Zeit weg ist, nicht woran gearbeitet wird. Aufgaben gehen nur
einzeln markiert mit — ein Schalter für einen ganzen Bereich würde zu leicht
Kundennamen nach Hause schicken.
**Was der Sender nicht mehr schickt, verschwindet beim Empfänger.** Sonst
stünde daheim für immer eine Sperre, die es längst nicht mehr gibt. Für
Aufgaben gilt das nicht: Sie sind Planung, keine Sperre.
**Jede Sendung ist fünf Minuten gültig.** Ohne Frist ließe sich ein
abgefangenes Paket beliebig oft erneut einspielen. Der Empfänger antwortet
auf jeden Fehlschlag gleich — falsches Geheimnis, verstellte Uhr und Unsinn
im Inhalt sind von außen nicht zu unterscheiden.
**Die Demo-Instanz redet mit niemandem.** Sie ist mit erfundenen Daten
gefüllt und steht nur für Bilder. Solange `DEMO_MODUS` gilt, starten die
Jobs für Zammad, Telegram und den Spiegel gar nicht erst.
### Probleme und Lösungen
| Problem | Lösung |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Die Kopfleiste verschluckte mit dem elften Eintrag „Einstellungen" und „Protokoll" | Sie ist jetzt breiter als die Inhaltsspalte. Eine Leiste, die Punkte stillschweigend abschneidet, ist schlimmer als eine, die nicht bündig mit dem Text steht. Gefunden im aufgenommenen Bild. |
| Der Kartentext erklärte noch den Weg von vor dem Kopplungscode | Ersetzt. Ebenfalls erst im Bild aufgefallen — im Code war beides für sich stimmig. |
| Ein Kürzungstest schlug an der Grenze fehl | Nicht der Test war falsch, sondern der Vergleich: Eine Worttrennung bei genau der halben Titellänge wurde abgelehnt. Jetzt `>=`. |
| Ein regulärer Ausdruck ging beim Schreiben über die Shell kaputt | Das Muster steht jetzt als benannte Konstante im Code, geschrieben mit dem Edit-Werkzeug statt über ein Skript. |
| Ein unsichtbares Zeichen (U+200B) landete mitten in einem Funktionsnamen | Entfernt und die Datei danach abgesucht. |
| Das Aufräumen im Integrationstest hätte fremde Telegram-Chats treffen können | Es trifft jetzt genau die Kennung, die der Lauf selbst angelegt hat. |
| Docker-Bauten blieben dreimal hängen, einmal 39 Minuten ohne Ausgabe | Kein Codeproblem: Nach Abbruch und Neustart lief derselbe Bau in Minuten durch. Die Bilder mussten deshalb viermal angestoßen werden. |
### Offene Punkte
- **Der Wartungsplaner ist nicht angebunden.** Die Aufnahmestelle steht
bereit und die Seite führt ihn als sichtbare Lücke; es fehlt allein das
Abholen. Dafür muss erst feststehen, was das Produkt an Schnittstelle
hergibt.
- Zammad und Telegram sind gegen die Logik geprüft, nicht gegen die echten
Dienste — dafür fehlen Zugangsdaten. Der Spiegel dagegen ist end-to-end
geprüft, weil beide Enden dieselbe Anwendung sind.
- Ein Telegram-Chat lässt sich nicht umbenennen. Fällt das im Alltag auf,
ist es ein Einzeiler.
### Commits
- 7f8f505 feat: Datenmodell und Umgebung für Integrationen
- e4d3547 feat: Aufnahmeregeln für Integrationen als reine Logik
- 6dad333 feat: Zammad, Telegram und den Spiegel anbinden
- bc60e5f feat: Integrationen takten und Telegram als dritten Meldeweg
- 1281c3e feat: Integrationen sichtbar und bedienbar machen
- 0d0f850 feat: Gespiegelte Belegung in der Wochenansicht zeigen
- 4da2f3d test: Spiegel-Eingang und Integrationstabellen absichern
- 3befcc1 feat: Aufgaben einzeln zum Spiegeln freigeben
- f5eadef feat: Lauf von Hand anstoßen und Spiegelschalter in der Liste
- 3c7cdbb chore: Demo-Daten, Bildaufnahme und Platz in der Kopfleiste
- 475b1d5 docs: Handbuchseite, README und Fahrplan für M6
- 98d170b docs: Handbuchbilder für M6 neu aufnehmen
---
+1
View File
@@ -4,3 +4,4 @@ datum;start;ende;minuten;meilenstein;art;notiz
2026-09-10;17:48;18:29;41;M3;claude;M3 Kalender lesen fertig
2026-09-10;20:42;23:29;167;M4;claude;M4 Wochenplanung fertig
2026-09-11;06:35;13:35;420;M5;claude;M5 Benachrichtigungen fertig
2026-09-11;20:47;09:00;733;M6;claude;M6 Integrationen fertig
1 datum start ende minuten meilenstein art notiz
4 2026-09-10 17:48 18:29 41 M3 claude M3 Kalender lesen fertig
5 2026-09-10 20:42 23:29 167 M4 claude M4 Wochenplanung fertig
6 2026-09-11 06:35 13:35 420 M5 claude M5 Benachrichtigungen fertig
7 2026-09-11 20:47 09:00 733 M6 claude M6 Integrationen fertig