Grotti 3.6.0: Lauf-Identität nach Filament-Pause, robustere Queue, Projekte/Aufträge list-first und API-Polish.

This commit is contained in:
Dominic Gundel committed 2026-10-25 08:24:24 +01:00
1 parent d1eb87ba25
commit 2b1e36634a
53 files changed
+4254 -636

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
# Lauf-Identität: ein physischer Druck = ein Lauf
## Regel
Zusammengelegt wird nur mit **Beweis**, nicht nur wegen Zeit und Dateiname:
1. Der neue Moonraker-Job hat `print_duration` ≥ Dauer des Vorgängers − 30 s, und die Lücke `end→start` ist höchstens 5 s (Anycubic setzt `end_time` erst beim Fortsetzen).
2. Oder der Watcher hat `paused → printing` bei gleicher Datei gesehen (`watcher_resume`, `printers.active_run_id`).
Ein Neustart mit `print_duration` ≤ 60 s wird nie zusammengelegt.
## Pfade
| Pfad | Datei |
| --- | --- |
| Beweis | `jobs.is_filament_resume` |
| Fold | `jobs.fold_filament_resume` |
| Abgleich | `jobs.sync_history` (Advisory-Lock) |
| Job-Aliase | `run_jobs` + `history_job_retired` |
| Leere Hülle | übersprungen in `_sync_one_job` |
| Live-Abzug | erst History; Fallback nach 10 min (`LIVE_DEDUCT_FALLBACK_S`) |
| Manuell | `POST /api/v1/laeufe/<id>/verbinden` |
## Queue
In `print_active` heißt nur `complete` fertig. `cancelled`/`standby` werden entprellt (`TERMINAL_CONFIRM_HITS`). Echter Abbruch → Status `cancelled`, nicht „Fertig.“.
## Reparatur
`scripts/laeufe_reparieren.py` (Probelauf standardmäßig, `--apply` nach Freigabe).
Verwaiste `live:`-Läufe nur an offenen History-Jobs **derselben Datei**; `adopt_live_run` greift geschlossene Live-Läufe nur ≤ 2 h.