ppt-tool/backend/workers/retention_worker.py
Vadym Samoilenko c97841f6d1 Phase 6: Export & Polish — brand export, client dashboard, retention, analytics
- Brand-enforced export pipeline (PPTX/PDF with auto brand fonts/colors/logo)
- Client library dashboard with two-level navigation (client grid → detail tabs)
- Data retention service with ARQ cron jobs (daily cleanup + weekly purge)
- Brand-adaptive UI theme via CSS custom properties (dynamic per client)
- Analytics dashboard with overview, usage, quality, and performance metrics

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:41:58 +00:00

18 lines
668 B
Python

"""ARQ tasks for data retention cleanup."""
from services.retention_service import RetentionService
async def retention_cleanup_task(ctx: dict) -> dict:
"""Daily task: soft-delete expired presentations per client retention policy."""
service = RetentionService()
result = await service.run_cleanup()
print(f"Retention cleanup: {result}")
return result
async def retention_purge_task(ctx: dict) -> dict:
"""Weekly task: permanently delete records soft-deleted 30+ days ago."""
service = RetentionService()
result = await service.purge_soft_deleted(days_after_soft_delete=30)
print(f"Retention purge: {result}")
return result