refactor: remove all backward compatibility code across 70 files
Some checks failed
CI / ruff (push) Successful in 11s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has started running

Clean up 28 backward compatibility instances identified in the codebase.
The app is not live, so all shims are replaced with the target architecture:

- Remove legacy Inventory.location column (use bin_location exclusively)
- Remove dashboard _extract_metric_value helper (use flat metrics dict)
- Remove legacy stat field duplicates (total_stores, total_imports, etc.)
- Remove 13 re-export shims and class aliases across modules
- Remove module-enabling JSON fallback (use PlatformModule junction table)
- Remove menu_to_legacy_format() conversion (return dataclasses directly)
- Remove title/description from MarketplaceProductBase schema
- Clean billing convenience method docstrings
- Clean test fixtures and backward-compat comments
- Add PlatformModule seeding to init_production.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 13:20:29 +01:00
parent b0db8133a0
commit aad18c27ab
70 changed files with 501 additions and 841 deletions

View File

@@ -6,7 +6,7 @@ Detects platform from host/domain/path and injects into request.state.
This middleware runs BEFORE StoreContextMiddleware to establish platform context.
Handles two routing modes:
1. Production: Domain-based (oms.lu, loyalty.lu → Platform detection)
1. Production: Domain-based (omsflow.lu, rewardflow.lu → Platform detection)
2. Development: Path-based (localhost:9999/platforms/oms/*, localhost:9999/platforms/loyalty/*)
URL Structure:
@@ -42,7 +42,7 @@ class PlatformContextManager:
Detect platform context from request.
Priority order:
1. Domain-based (production): oms.lu → platform code "oms"
1. Domain-based (production): omsflow.lu → platform code "oms"
2. Path-based (development): localhost:9999/platforms/oms/* → platform code "oms"
3. Default: localhost without /platforms/ prefix → 'main' platform (marketing site)
@@ -74,12 +74,12 @@ class PlatformContextManager:
# For now, assume non-localhost hosts that aren't subdomains are platform domains
if "." in host_without_port:
# This could be:
# - Platform domain: oms.lu, loyalty.lu
# - Store subdomain: store.oms.lu
# - Platform domain: omsflow.lu, rewardflow.lu
# - Store subdomain: store.omsflow.lu
# - Custom domain: shop.mymerchant.com
# We detect platform domain vs subdomain by checking if it's a root domain
parts = host_without_port.split(".")
if len(parts) == 2: # e.g., oms.lu (root domain)
if len(parts) == 2: # e.g., omsflow.lu (root domain)
return {
"domain": host_without_port,
"detection_method": "domain",
@@ -409,7 +409,7 @@ class PlatformContextMiddleware:
if host_without_port and host_without_port not in ["localhost", "127.0.0.1"]:
if "." in host_without_port:
parts = host_without_port.split(".")
if len(parts) == 2: # Root domain like oms.lu
if len(parts) == 2: # Root domain like omsflow.lu
return {
"domain": host_without_port,
"detection_method": "domain",