Files
orion/docs/archive/SESSION_NOTE_2026-01-30_self-contained-module-routes.md
Samir Boulahtit 7a9dda282d refactor(scripts): reorganize scripts/ into seed/ and validate/ subfolders
Move 9 init/seed scripts into scripts/seed/ and 7 validation scripts
(+ validators/ subfolder) into scripts/validate/ to reduce clutter in
the root scripts/ directory. Update all references across Makefile,
CI/CD configs, pre-commit hooks, docs (~40 files), and Python imports.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 21:35:53 +01:00

8.9 KiB

Self-Contained Module Routes Migration Plan

Date: 2026-01-30 Goal: Migrate all routes to self-contained modules, remove all legacy route files

Current State

Modules (17 total)

analytics, billing, cart, catalog, checkout, cms, customers, dev_tools,
inventory, loyalty, marketplace, messaging, monitoring, orders, payments

Legacy Route Files to Migrate

Admin API Routes (34 files in app/api/v1/admin/)

File Target Module Status
admin_users.py PLATFORM CORE Keep in legacy
audit.py PLATFORM CORE Keep in legacy
auth.py PLATFORM CORE Keep in legacy
background_tasks.py monitoring Migrate
code_quality.py dev_tools Migrate
merchants.py PLATFORM CORE Keep in legacy
dashboard.py PLATFORM CORE Keep in legacy
email_templates.py messaging Migrate
features.py billing Migrate
images.py cms Migrate
inventory.py inventory Already migrated (re-export)
letzshop.py marketplace Already migrated (re-export)
logs.py monitoring Migrate
marketplace.py marketplace Already migrated (re-export)
media.py cms Migrate
menu_config.py PLATFORM CORE Keep in legacy
messages.py messaging Migrate
module_config.py PLATFORM CORE Keep in legacy
modules.py PLATFORM CORE Keep in legacy
monitoring.py monitoring Migrate
notifications.py messaging Migrate
order_item_exceptions.py orders Already migrated (re-export)
orders.py orders Already migrated (re-export)
platform_health.py monitoring Migrate
platforms.py PLATFORM CORE Keep in legacy
products.py catalog Migrate
settings.py PLATFORM CORE Keep in legacy
subscriptions.py billing Already migrated (re-export)
tests.py dev_tools Migrate
users.py PLATFORM CORE Keep in legacy
store_domains.py PLATFORM CORE Keep in legacy
store_products.py catalog Migrate
stores.py PLATFORM CORE Keep in legacy
store_themes.py cms Migrate

Store API Routes (24 files in app/api/v1/store/)

File Target Module Status
analytics.py analytics Migrate
auth.py PLATFORM CORE Keep in legacy
billing.py billing Already migrated (re-export)
dashboard.py PLATFORM CORE Keep in legacy
email_settings.py messaging Migrate
email_templates.py messaging Migrate
features.py billing Migrate
info.py PLATFORM CORE Keep in legacy
inventory.py inventory Already migrated (re-export)
invoices.py billing Migrate
letzshop.py marketplace Already migrated (re-export)
marketplace.py marketplace Already migrated (re-export)
media.py cms Migrate
messages.py messaging Migrate
notifications.py messaging Migrate
onboarding.py marketplace Migrate
order_item_exceptions.py orders Already migrated (re-export)
orders.py orders Already migrated (re-export)
payments.py payments Migrate
products.py catalog Migrate
profile.py PLATFORM CORE Keep in legacy
settings.py PLATFORM CORE Keep in legacy
team.py PLATFORM CORE Keep in legacy
usage.py billing Migrate

Page Routes (4 files in app/routes/)

File Target Module Status
admin_pages.py Split across modules Migrate page by page
store_pages.py Split across modules Migrate page by page
storefront_pages.py Split across modules Migrate page by page
platform_pages.py PLATFORM CORE Keep in legacy

Migration Summary

Files to Migrate (by module)

1. billing (5 routes)

  • app/api/v1/admin/features.py
  • app/api/v1/store/features.py
  • app/api/v1/store/invoices.py
  • app/api/v1/store/usage.py
  • Remove re-exports: subscriptions.py, billing.py

2. catalog (3 routes)

  • app/api/v1/admin/products.py
  • app/api/v1/admin/store_products.py
  • app/api/v1/store/products.py

3. cms (4 routes)

  • app/api/v1/admin/images.py
  • app/api/v1/admin/media.py
  • app/api/v1/admin/store_themes.py
  • app/api/v1/store/media.py

4. messaging (7 routes)

  • app/api/v1/admin/email_templates.py
  • app/api/v1/admin/messages.py
  • app/api/v1/admin/notifications.py
  • app/api/v1/store/email_settings.py
  • app/api/v1/store/email_templates.py
  • app/api/v1/store/messages.py
  • app/api/v1/store/notifications.py

5. monitoring (4 routes)

  • app/api/v1/admin/background_tasks.py
  • app/api/v1/admin/logs.py
  • app/api/v1/admin/monitoring.py
  • app/api/v1/admin/platform_health.py

6. dev_tools (2 routes)

  • app/api/v1/admin/code_quality.py
  • app/api/v1/admin/tests.py

7. marketplace (1 route)

  • app/api/v1/store/onboarding.py
  • Remove re-exports: letzshop.py, marketplace.py

8. analytics (1 route)

  • app/api/v1/store/analytics.py

9. payments (1 route)

  • app/api/v1/store/payments.py

10. orders (cleanup)

  • Remove re-exports: orders.py, order_item_exceptions.py

11. inventory (cleanup)

  • Remove re-exports: inventory.py

Files to Keep in Platform Core (12 admin + 6 store = 18 files)

Admin:

  • admin_users.py - Admin user management (super admin only)
  • audit.py - Platform audit logs
  • auth.py - Admin authentication
  • merchants.py - Merchant management
  • dashboard.py - Admin dashboard
  • menu_config.py - Menu configuration
  • module_config.py - Module configuration
  • modules.py - Module management
  • platforms.py - Platform management
  • settings.py - Platform settings
  • users.py - Platform user management
  • store_domains.py - Store domain management
  • stores.py - Store management

Store:

  • auth.py - Store authentication
  • dashboard.py - Store dashboard
  • info.py - Store info endpoint
  • profile.py - Store profile
  • settings.py - Store settings
  • team.py - Store team management

Execution Plan

Phase 1: API Routes (Priority Order)

  1. messaging (7 files) - Largest module, get it done first
  2. billing (5 files) - Already partially migrated
  3. monitoring (4 files) - Self-contained
  4. cms (4 files) - Already partially migrated
  5. catalog (3 files) - Product management
  6. dev_tools (2 files) - Testing tools
  7. marketplace (1 file) - Just onboarding
  8. analytics (1 file) - Simple
  9. payments (1 file) - Simple
  10. Cleanup - Remove all re-export files for orders, inventory

Phase 2: Page Routes

Each module that has admin/store pages needs:

  1. Create app/modules/{module}/routes/pages/admin.py
  2. Create app/modules/{module}/routes/pages/store.py
  3. Move relevant page handlers from legacy files
  4. Update admin_pages.py / store_pages.py to import from modules

Phase 3: Storefront Routes

  1. cart module - Cart pages
  2. catalog module - Product listing, detail pages
  3. checkout module - Checkout flow
  4. customers module - Customer account pages

Pattern Reference (from customers module)

Module Route Structure

app/modules/{module}/
├── routes/
│   ├── __init__.py      # Lazy exports
│   ├── admin.py         # Admin API routes with admin_router
│   ├── store.py        # Store API routes with store_router
│   ├── api/             # Optional: Split API routes
│   │   ├── admin.py
│   │   ├── store.py
│   │   └── storefront.py
│   └── pages/           # HTML page routes
│       ├── admin.py
│       └── store.py
└── definition.py        # Module definition with router getters

Module Definition Pattern

def _get_admin_router():
    from app.modules.{module}.routes.admin import admin_router
    return admin_router

def _get_store_router():
    from app.modules.{module}.routes.store import store_router
    return store_router

# In get_{module}_module_with_routers():
{module}_module.admin_router = _get_admin_router()
{module}_module.store_router = _get_store_router()

Router Registration in app/api/v1/{admin,store}/__init__.py

# Import module router
from app.modules.{module}.routes.admin import admin_router as {module}_admin_router

# Include with module access control
router.include_router({module}_admin_router, tags=["admin-{module}"])
# Legacy: router.include_router({module}.router, tags=["admin-{module}"])

Validation

After each module migration:

  1. Run python scripts/validate/validate_architecture.py
  2. Test affected endpoints manually
  3. Verify imports work: python -c "from app.api.v1.admin import router"

Estimated Effort

  • API Routes: ~28 files to migrate across 9 modules
  • Page Routes: ~15-20 page handlers to move
  • Total: 1-2 sessions depending on complexity