L13 Planung: Plantafel-, Einplan-, Empfehlungs-, Live- und Verzugsdienste mit API und Meldungen

Services board/schedule (L2 assign+update in inTransaction, Versionskonflikt, Audit), recommend (Luftlinie + freie Kolonnenzeit), live (Kolonnen, ohne Geräte-Koordinaten), watch (Verzug ab 80 %, Überschreitung, gefährdete Folgeaufträge, früher fertig mit Vorschlägen), Kolonnenkapazität. Job planning-watch alle 5 min, Events planning.capacity_freed/overrun/followup_at_risk (In-App an Backoffice + Teamleiter, Dedupe im Audit-Log), L12-Adapter für source/approvalStatus/manual. API /api/v1/planning/{board,schedule,recommendations,live} + OpenAPI. Tests core, recommend, live, watch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 10:13:39 +02:00
co-authored by Claude Opus 5
parent 213bcca3a1
commit 5e10523df6
29 changed files with 2579 additions and 6 deletions
+10 -3
View File
@@ -45,7 +45,10 @@
"emergency_completed": "Notdiensteinsatz abgeschlossen",
"import_ready_for_review": "Import zur Prüfung",
"import_failed": "Fehler bei Dokumentverarbeitung",
"sync_failed": "Synchronisationsfehler"
"sync_failed": "Synchronisationsfehler",
"planning_capacity_freed": "Früher fertig",
"planning_overrun": "Geplante Dauer überschritten",
"planning_followup_at_risk": "Folgeauftrag gefährdet"
},
"events": {
"work_order_assigned": { "title": "Neuer Auftrag {number}", "message": "{title} – {customer} wurde Ihrem Team zugewiesen." },
@@ -64,7 +67,10 @@
"emergency_completed": { "title": "Notdiensteinsatz {number} abgeschlossen", "message": "{customer}: zur Prüfung und Abrechnung." },
"import_ready_for_review": { "title": "Import zur Prüfung bereit", "message": "Die Daten aus {fileName} liegen zur Prüfung vor." },
"import_failed": { "title": "Fehler bei Dokumentverarbeitung", "message": "{fileName} konnte nicht verarbeitet werden." },
"sync_failed": { "title": "Synchronisation fehlgeschlagen", "message": "Eine Änderung konnte nicht übernommen werden ({reason})." }
"sync_failed": { "title": "Synchronisation fehlgeschlagen", "message": "Eine Änderung konnte nicht übernommen werden ({reason})." },
"planning_capacity_freed": { "title": "{team} früher fertig: {number}", "message": "{title} – {customer}: {minutes} min vor dem geplanten Ende abgeschlossen. Freie Zeit auf der Plantafel nutzen." },
"planning_overrun": { "title": "Geplante Dauer überschritten: {number}", "message": "{team} bei {customer}: {percent} % der geplanten Dauer erfasst." },
"planning_followup_at_risk": { "title": "Folgeauftrag gefährdet: {number}", "message": "{title} – {customer} ({team}) ist gefährdet durch Verzug {blocker}." }
},
"fallback": {
"unknown": "unbekannt",
@@ -178,7 +184,8 @@
"voice_note": "Sprachnotiz",
"notification": "Benachrichtigung",
"notification_settings": "Benachrichtigungseinstellungen",
"sync_operation": "Synchronisation"
"sync_operation": "Synchronisation",
"planning_alert": "Planungshinweis"
}
}
}