refactor: move capacity_forecast_service from billing to monitoring
Some checks failed
CI / ruff (push) Failing after 8s
CI / pytest (push) Successful in 36m5s
CI / architecture (push) Successful in 11s
CI / dependency-scanning (push) Successful in 27s
CI / docs (push) Has been skipped
CI / audit (push) Successful in 8s

Resolves the billing (core) → monitoring (optional) architecture violation
by moving CapacityForecastService to the monitoring module where it belongs.

- Create BillingMetricsProvider to expose subscription counts via stats_aggregator
- Move CapacitySnapshot model from billing to monitoring
- Replace direct MerchantSubscription queries with stats_aggregator calls
- Fix middleware test mocks to cover StoreDomain/MerchantDomain fallback chains

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 20:58:22 +01:00
parent 7c43d6f4a2
commit 9c27fa02b0
16 changed files with 234 additions and 102 deletions

View File

@@ -172,7 +172,7 @@ async def get_growth_trends(
Returns growth rates and projections for key metrics.
"""
from app.modules.billing.services.capacity_forecast_service import (
from app.modules.monitoring.services.capacity_forecast_service import (
capacity_forecast_service,
)
@@ -189,7 +189,7 @@ async def get_scaling_recommendations(
Returns prioritized list of recommendations.
"""
from app.modules.billing.services.capacity_forecast_service import (
from app.modules.monitoring.services.capacity_forecast_service import (
capacity_forecast_service,
)
@@ -206,7 +206,7 @@ async def capture_snapshot(
Normally run automatically by daily background job.
"""
from app.modules.billing.services.capacity_forecast_service import (
from app.modules.monitoring.services.capacity_forecast_service import (
capacity_forecast_service,
)