Merge branch '0.1.8b' into feature/accurate-usage-tracking

This commit is contained in:
MartinNYHC
2026-02-06 09:21:44 +01:00
committed by GitHub
8 changed files with 81 additions and 94 deletions
+1
View File
@@ -91,6 +91,7 @@ async def get_settings(
"ams_history_retention_days",
"ftp_retry_count",
"ftp_retry_delay",
"ftp_timeout",
"mqtt_port",
]:
settings_dict[setting.key] = int(setting.value)
+2
View File
@@ -86,6 +86,7 @@ class AppSettings(BaseModel):
ftp_retry_enabled: bool = Field(default=True, description="Enable automatic retry for FTP operations")
ftp_retry_count: int = Field(default=3, description="Number of retry attempts for FTP operations (1-10)")
ftp_retry_delay: int = Field(default=2, description="Seconds to wait between FTP retry attempts (1-30)")
ftp_timeout: int = Field(default=30, description="FTP connection timeout in seconds (10-120)")
# MQTT Relay settings for publishing events to external broker
mqtt_enabled: bool = Field(default=False, description="Enable MQTT event publishing to external broker")
@@ -168,6 +169,7 @@ class AppSettingsUpdate(BaseModel):
ftp_retry_enabled: bool | None = None
ftp_retry_count: int | None = None
ftp_retry_delay: int | None = None
ftp_timeout: int | None = None
mqtt_enabled: bool | None = None
mqtt_broker: str | None = None
mqtt_port: int | None = None
-12
View File
@@ -76,18 +76,6 @@ class PrintScheduler:
if item.scheduled_time and item.scheduled_time > datetime.utcnow():
continue
# Safety: Skip stale items (older than 24 hours) to prevent phantom reprints
# This protects against items that got stuck in "pending" status due to
# crashes/restarts after the print already started
stale_threshold = timedelta(hours=24)
if item.created_at and datetime.utcnow() - item.created_at.replace(tzinfo=None) > stale_threshold:
logger.warning(f"Queue item {item.id} is stale (created {item.created_at}), marking as expired")
item.status = "expired"
item.error_message = "Queue item expired - older than 24 hours"
item.completed_at = datetime.utcnow()
await db.commit()
continue
# Skip items that require manual start
if item.manual_start:
continue