update: Major Overhaul to all subsystems
This commit is contained in:
@@ -17,6 +17,15 @@ from builder.router import router as builder_router
|
||||
from manufacturing.router import router as manufacturing_router
|
||||
from firmware.router import router as firmware_router
|
||||
from admin.router import router as admin_router
|
||||
from crm.router import router as crm_products_router
|
||||
from crm.customers_router import router as crm_customers_router
|
||||
from crm.orders_router import router as crm_orders_router
|
||||
from crm.comms_router import router as crm_comms_router
|
||||
from crm.media_router import router as crm_media_router
|
||||
from crm.nextcloud_router import router as crm_nextcloud_router
|
||||
from crm.quotations_router import router as crm_quotations_router
|
||||
from crm.nextcloud import close_client as close_nextcloud_client, keepalive_ping as nextcloud_keepalive
|
||||
from crm.mail_accounts import get_mail_accounts
|
||||
from mqtt.client import mqtt_manager
|
||||
from mqtt import database as mqtt_db
|
||||
from melodies import service as melody_service
|
||||
@@ -50,6 +59,30 @@ app.include_router(builder_router)
|
||||
app.include_router(manufacturing_router)
|
||||
app.include_router(firmware_router)
|
||||
app.include_router(admin_router)
|
||||
app.include_router(crm_products_router)
|
||||
app.include_router(crm_customers_router)
|
||||
app.include_router(crm_orders_router)
|
||||
app.include_router(crm_comms_router)
|
||||
app.include_router(crm_media_router)
|
||||
app.include_router(crm_nextcloud_router)
|
||||
app.include_router(crm_quotations_router)
|
||||
|
||||
|
||||
async def nextcloud_keepalive_loop():
|
||||
await nextcloud_keepalive() # eager warmup on startup
|
||||
while True:
|
||||
await asyncio.sleep(45)
|
||||
await nextcloud_keepalive()
|
||||
|
||||
|
||||
async def email_sync_loop():
|
||||
while True:
|
||||
await asyncio.sleep(settings.email_sync_interval_minutes * 60)
|
||||
try:
|
||||
from crm.email_sync import sync_emails
|
||||
await sync_emails()
|
||||
except Exception as e:
|
||||
print(f"[EMAIL SYNC] Error: {e}")
|
||||
|
||||
|
||||
@app.on_event("startup")
|
||||
@@ -59,12 +92,20 @@ async def startup():
|
||||
await melody_service.migrate_from_firestore()
|
||||
mqtt_manager.start(asyncio.get_event_loop())
|
||||
asyncio.create_task(mqtt_db.purge_loop())
|
||||
asyncio.create_task(nextcloud_keepalive_loop())
|
||||
sync_accounts = [a for a in get_mail_accounts() if a.get("sync_inbound") and a.get("imap_host")]
|
||||
if sync_accounts:
|
||||
print(f"[EMAIL SYNC] IMAP configured for {len(sync_accounts)} account(s) - starting sync loop")
|
||||
asyncio.create_task(email_sync_loop())
|
||||
else:
|
||||
print("[EMAIL SYNC] IMAP not configured - sync loop disabled")
|
||||
|
||||
|
||||
@app.on_event("shutdown")
|
||||
async def shutdown():
|
||||
mqtt_manager.stop()
|
||||
await mqtt_db.close_db()
|
||||
await close_nextcloud_client()
|
||||
|
||||
|
||||
@app.get("/api/health")
|
||||
@@ -74,3 +115,4 @@ async def health_check():
|
||||
"firebase": firebase_initialized,
|
||||
"mqtt": mqtt_manager.connected,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user