Samir Boulahtit
c419090531
feat: complete modular platform architecture (Phases 1-5)
Phase 1 - Vendor Router Integration:
- Wire up vendor module routers in app/api/v1/vendor/__init__.py
- Use lazy imports via __getattr__ to avoid circular dependencies
Phase 2 - Extract Remaining Modules:
- Create 6 new module directories: customers, cms, analytics, messaging,
dev_tools, monitoring
- Each module has definition.py and route wrappers
- Update registry to import from extracted modules
Phase 3 - Database Table Migration:
- Add PlatformModule junction table for auditable module tracking
- Add migration zc2m3n4o5p6q7_add_platform_modules_table.py
- Add modules relationship to Platform model
- Update ModuleService with JSON-to-junction-table migration
Phase 4 - Module-Specific Configuration UI:
- Add /api/v1/admin/module-config/* endpoints
- Add module-config.html template and JS
Phase 5 - Integration Tests:
- Add tests/fixtures/module_fixtures.py
- Add tests/integration/api/v1/admin/test_modules.py
- Add tests/integration/api/v1/modules/test_module_access.py
Architecture fixes:
- Fix JS-003 errors: use ...data() directly in Alpine components
- Fix JS-005 warnings: add init() guards to prevent duplicate init
- Fix API-001 errors: add MenuActionResponse Pydantic model
- Add FE-008 noqa for dynamic number input in template
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 18:19:00 +01:00
..
2025-10-28 21:07:26 +01:00
2025-12-01 21:51:07 +01:00
2026-01-13 20:35:46 +01:00
2026-01-11 17:52:28 +01:00
2025-12-02 19:39:08 +01:00
2026-01-11 17:35:16 +01:00
2025-12-03 22:30:31 +01:00
2025-12-20 20:33:48 +01:00
2025-11-28 19:30:17 +01:00
2025-12-12 23:04:41 +01:00
2025-12-13 13:33:03 +01:00
2025-12-27 10:25:36 +01:00
2025-12-13 12:19:54 +01:00
2025-12-19 21:18:31 +01:00
2026-01-11 17:52:28 +01:00
2025-11-28 19:30:17 +01:00
2026-01-11 17:52:28 +01:00
2025-12-01 21:50:09 +01:00
2026-01-11 17:52:28 +01:00
2025-12-18 21:04:33 +01:00
2025-11-28 19:30:17 +01:00
2025-12-11 17:28:54 +01:00
2025-12-13 13:36:56 +01:00
2026-01-11 17:52:28 +01:00
2025-12-19 21:18:06 +01:00
2025-12-20 21:17:41 +01:00
2025-12-20 20:33:48 +01:00
2025-12-18 21:04:33 +01:00
2025-12-20 13:11:47 +01:00
2026-01-11 17:52:28 +01:00
2025-12-01 21:51:07 +01:00
2026-01-11 17:52:28 +01:00
2026-01-11 17:52:28 +01:00
2025-12-20 20:33:48 +01:00
2025-12-21 14:08:31 +01:00
2025-12-11 17:28:54 +01:00
2025-12-21 20:57:47 +01:00
2025-11-28 19:30:17 +01:00
2025-11-28 19:30:17 +01:00
2025-12-13 22:36:09 +01:00
2025-11-28 19:30:17 +01:00
2026-01-11 17:52:28 +01:00
2025-12-24 18:15:27 +01:00
2025-12-24 18:15:27 +01:00
2025-12-24 23:41:20 +01:00
2026-01-11 17:52:28 +01:00
2025-12-26 20:51:13 +01:00
2026-01-11 17:52:28 +01:00
2026-01-11 17:52:28 +01:00
2026-01-01 18:12:09 +01:00
2026-01-11 17:52:28 +01:00
2026-01-02 20:31:48 +01:00
2026-01-11 17:52:28 +01:00
2026-01-02 21:26:12 +01:00
2026-01-03 17:16:27 +01:00
2026-01-03 18:29:26 +01:00
2026-01-05 22:23:47 +01:00
2026-01-06 21:32:59 +01:00
2026-01-08 01:11:00 +01:00
2026-01-08 01:11:00 +01:00
2026-01-23 14:31:23 +01:00
2026-01-19 16:46:15 +01:00
2026-01-19 18:25:56 +01:00
2026-01-23 14:08:02 +01:00
2026-01-23 14:31:23 +01:00
2026-01-24 18:44:49 +01:00
2026-01-26 18:19:00 +01:00