1.5 KiB
1.5 KiB
Lauf-Identität: ein physischer Druck = ein Lauf
Regel
Zusammengelegt wird nur mit Beweis, nicht nur wegen Zeit und Dateiname:
- Der neue Moonraker-Job hat
print_duration≥ Dauer des Vorgängers − 30 s, und die Lückeend→startist höchstens 5 s (Anycubic setztend_timeerst beim Fortsetzen). - Oder der Watcher hat
paused → printingbei gleicher Datei gesehen (watcher_resume,printers.active_run_id).
Ein Neustart mit print_duration ≤ 60 s wird nie zusammengelegt.
Ein Live-Lauf wird nur übernommen, wenn der Dateiname übereinstimmt (eine noch namenlose Hülle zählt zum neuen Druck). Ein Abbruch-Ereignis auf eine bereits gelöschte Zeile rollt den Abgleich nicht zurück.
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.