Auto-create todos on print events

- 'Clean build plate on {printer}' after every 3rd completed print per printer
- 'Check filament status' when a roll drops below 100 g after starting a job

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Martin Hohenberg
2026-06-19 07:37:16 +02:00
parent 8ecace0493
commit 223a1b7f1e

View File

@@ -359,6 +359,8 @@ def start_job(job_id: int, printer_id: int = Form(...), db: Session = Depends(ge
f"(AMS slot {roll['slot']}{roll['material']} {roll['color']}, "
f"{roll['weight_remaining_g']} g remaining, least-full roll selected)"
)))
if roll["weight_remaining_g"] - weight_g < 100:
db.add(Todo(title="Check filament status"))
else:
db.add(JobLog(job_id=job_id, message=f"FilamentDB: print log failed for roll #{roll['roll_id']}"))
else:
@@ -422,6 +424,16 @@ def finish_job(job_id: int, db: Session = Depends(get_db)):
job.printer.status = PrinterStatus.idle
db.add(JobLog(job_id=job_id, message=f"Job finished on {printer_name}"))
# Every 3rd completed print on this printer → cleaning reminder
if job.printer_id:
done_count = db.query(PrintJob).filter(
PrintJob.printer_id == job.printer_id,
PrintJob.status == JobStatus.done,
).count()
if (done_count + 1) % 3 == 0:
db.add(Todo(title=f"Clean build plate on {printer_name}", printer_id=job.printer_id))
db.commit()
return RedirectResponse(url=f"/jobs/{job_id}", status_code=HTTP_303_SEE_OTHER)