mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-17 19:36:28 +02:00
Model-based queue assignment with filament validation and queue notifications (#162)
Model-based queue assignment: - Extract printer_model from sliced 3MF files during upload - Display sliced-for model in archive view - New queue mode: assign to "Any [Model]" instead of specific printer - Scheduler auto-assigns to first idle printer of matching model - Filament validation: only assign to printers with required filament types loaded - Waiting reason display shows why jobs are waiting (e.g., "Waiting for filament: Printer1 (needs PLA)") - "Waiting" status badge (purple) distinguishes from regular "Pending" Queue notifications (7 new events): - Job Added: When a job is added to queue - Job Assigned: When a model-based job is assigned to a printer - Job Started: When a queue job starts printing - Job Waiting: When a job is waiting for filament (enabled by default) - Job Skipped: When a job is skipped due to previous failure (enabled by default) - Job Failed: When a job fails to start (enabled by default) - Queue Complete: When all queued jobs finish Backend changes: - New columns: print_queue.target_model, print_queue.required_filament_types, print_queue.waiting_reason - New columns: notification_providers.on_queue_job_* (7 event triggers) - Notification templates for all queue events - Scheduler validates filament compatibility before model-based assignment - Queue API extracts filament types from 3MF when adding model-based items - Local backup/restore includes queue notification settings Frontend changes: - TypeScript interfaces updated for new fields - Queue page shows waiting reason and "Waiting" badge - Notification settings includes "Print Queue" section with 7 toggles Closes #162
This commit is contained in:
@@ -1002,6 +1002,8 @@ export interface PrintQueueItem {
|
||||
id: number;
|
||||
printer_id: number | null; // null = unassigned
|
||||
target_model: string | null; // Target printer model for model-based assignment
|
||||
required_filament_types: string[] | null; // Required filament types for model-based assignment
|
||||
waiting_reason: string | null; // Why a model-based job hasn't started yet
|
||||
// Either archive_id OR library_file_id must be set (archive created at print start)
|
||||
archive_id: number | null;
|
||||
library_file_id: number | null;
|
||||
@@ -1215,6 +1217,14 @@ export interface NotificationProvider {
|
||||
on_ams_ht_temperature_high: boolean;
|
||||
// Build plate detection
|
||||
on_plate_not_empty: boolean;
|
||||
// Print queue events
|
||||
on_queue_job_added: boolean;
|
||||
on_queue_job_assigned: boolean;
|
||||
on_queue_job_started: boolean;
|
||||
on_queue_job_waiting: boolean;
|
||||
on_queue_job_skipped: boolean;
|
||||
on_queue_job_failed: boolean;
|
||||
on_queue_completed: boolean;
|
||||
// Quiet hours
|
||||
quiet_hours_enabled: boolean;
|
||||
quiet_hours_start: string | null;
|
||||
@@ -1257,6 +1267,14 @@ export interface NotificationProviderCreate {
|
||||
on_ams_ht_temperature_high?: boolean;
|
||||
// Build plate detection
|
||||
on_plate_not_empty?: boolean;
|
||||
// Print queue events
|
||||
on_queue_job_added?: boolean;
|
||||
on_queue_job_assigned?: boolean;
|
||||
on_queue_job_started?: boolean;
|
||||
on_queue_job_waiting?: boolean;
|
||||
on_queue_job_skipped?: boolean;
|
||||
on_queue_job_failed?: boolean;
|
||||
on_queue_completed?: boolean;
|
||||
// Quiet hours
|
||||
quiet_hours_enabled?: boolean;
|
||||
quiet_hours_start?: string | null;
|
||||
@@ -1292,6 +1310,14 @@ export interface NotificationProviderUpdate {
|
||||
on_ams_ht_temperature_high?: boolean;
|
||||
// Build plate detection
|
||||
on_plate_not_empty?: boolean;
|
||||
// Print queue events
|
||||
on_queue_job_added?: boolean;
|
||||
on_queue_job_assigned?: boolean;
|
||||
on_queue_job_started?: boolean;
|
||||
on_queue_job_waiting?: boolean;
|
||||
on_queue_job_skipped?: boolean;
|
||||
on_queue_job_failed?: boolean;
|
||||
on_queue_completed?: boolean;
|
||||
// Quiet hours
|
||||
quiet_hours_enabled?: boolean;
|
||||
quiet_hours_start?: string | null;
|
||||
|
||||
Reference in New Issue
Block a user