feat: complete billing module migration (Phase 5)
Migrates billing module to self-contained structure: - Create app/modules/billing/services/ with subscription, stripe, admin services - Create app/modules/billing/models/ re-exporting from central location - Create app/modules/billing/schemas/ re-exporting from central location - Create app/modules/billing/tasks/ with 4 scheduled Celery tasks - Create app/modules/billing/exceptions.py with module-specific exceptions - Update definition.py with is_self_contained=True and scheduled_tasks Celery task migration: - reset_period_counters -> billing module - check_trial_expirations -> billing module - sync_stripe_status -> billing module - cleanup_stale_subscriptions -> billing module - capture_capacity_snapshot remains in legacy (will go to monitoring) Backward compatibility: - Create re-exports in app/services/ for subscription, stripe, admin services - Old import paths continue to work - Update celery_config.py to use module-defined schedules Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -49,10 +49,12 @@ if SENTRY_DSN:
|
||||
# TASK DISCOVERY
|
||||
# =============================================================================
|
||||
# Legacy tasks (will be migrated to modules over time)
|
||||
# NOTE: Most subscription tasks have been migrated to app.modules.billing.tasks
|
||||
# The subscription module is kept for capture_capacity_snapshot (will move to monitoring)
|
||||
LEGACY_TASK_MODULES = [
|
||||
"app.tasks.celery_tasks.marketplace",
|
||||
"app.tasks.celery_tasks.letzshop",
|
||||
"app.tasks.celery_tasks.subscription",
|
||||
"app.tasks.celery_tasks.subscription", # Kept for capture_capacity_snapshot only
|
||||
"app.tasks.celery_tasks.export",
|
||||
"app.tasks.celery_tasks.code_quality",
|
||||
"app.tasks.celery_tasks.test_runner",
|
||||
@@ -141,32 +143,9 @@ celery_app.conf.task_routes = {
|
||||
# =============================================================================
|
||||
|
||||
# Legacy scheduled tasks (will be migrated to module definitions)
|
||||
# NOTE: Subscription tasks have been migrated to billing module (see definition.py)
|
||||
LEGACY_BEAT_SCHEDULE = {
|
||||
# Reset usage counters at start of each period
|
||||
"reset-period-counters-daily": {
|
||||
"task": "app.tasks.celery_tasks.subscription.reset_period_counters",
|
||||
"schedule": crontab(hour=0, minute=5), # 00:05 daily
|
||||
"options": {"queue": "scheduled"},
|
||||
},
|
||||
# Check for expiring trials and send notifications
|
||||
"check-trial-expirations-daily": {
|
||||
"task": "app.tasks.celery_tasks.subscription.check_trial_expirations",
|
||||
"schedule": crontab(hour=1, minute=0), # 01:00 daily
|
||||
"options": {"queue": "scheduled"},
|
||||
},
|
||||
# Sync subscription status with Stripe
|
||||
"sync-stripe-status-hourly": {
|
||||
"task": "app.tasks.celery_tasks.subscription.sync_stripe_status",
|
||||
"schedule": crontab(minute=30), # Every hour at :30
|
||||
"options": {"queue": "scheduled"},
|
||||
},
|
||||
# Clean up stale/orphaned subscriptions
|
||||
"cleanup-stale-subscriptions-weekly": {
|
||||
"task": "app.tasks.celery_tasks.subscription.cleanup_stale_subscriptions",
|
||||
"schedule": crontab(hour=3, minute=0, day_of_week=0), # Sunday 03:00
|
||||
"options": {"queue": "scheduled"},
|
||||
},
|
||||
# Capture daily capacity snapshot for analytics
|
||||
# Capacity snapshot - will be migrated to monitoring module
|
||||
"capture-capacity-snapshot-daily": {
|
||||
"task": "app.tasks.celery_tasks.subscription.capture_capacity_snapshot",
|
||||
"schedule": crontab(hour=0, minute=0), # Midnight daily
|
||||
|
||||
Reference in New Issue
Block a user