- 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>
18 lines
668 B
Python
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
|