feat: add module definition completeness validation and permissions

Add new validation rules MOD-020 to MOD-023 for module definition
completeness and standardize permissions across all modules.

Changes:
- Add MOD-020: Module definitions must have required attributes
- Add MOD-021: Modules with menus should have features
- Add MOD-022: Feature modules should have permissions
- Add MOD-023: Modules with routers should use get_*_with_routers pattern

Module permissions added:
- analytics: view, export, manage_dashboards
- billing: view_tiers, manage_tiers, view_subscriptions, manage_subscriptions, view_invoices
- cart: view, manage
- checkout: view_settings, manage_settings
- cms: view_pages, manage_pages, view_media, manage_media, manage_themes
- loyalty: view_programs, manage_programs, view_rewards, manage_rewards
- marketplace: view_integration, manage_integration, sync_products
- messaging: view_messages, send_messages, manage_templates
- payments: view_gateways, manage_gateways, view_transactions

Module improvements:
- Complete cart module with features and permissions
- Complete checkout module with features and permissions
- Add features to catalog module
- Add version to cms module
- Fix loyalty platform_router attachment
- Add path definitions to payments module
- Remove empty scheduled_tasks from dev_tools module

Documentation:
- Update module-system.md with new validation rules
- Update architecture-rules.md with MOD-020 to MOD-023

Tests:
- Add unit tests for module definition completeness
- Add tests for permission structure validation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-02 18:23:04 +01:00
parent 30a5c75e74
commit 967f08e4ba
50 changed files with 1014 additions and 66 deletions

View File

@@ -6,7 +6,7 @@ Defines the billing module including its features, menu items,
route configurations, and scheduled tasks.
"""
from app.modules.base import MenuItemDefinition, MenuSectionDefinition, ModuleDefinition, ScheduledTask
from app.modules.base import MenuItemDefinition, MenuSectionDefinition, ModuleDefinition, PermissionDefinition, ScheduledTask
from app.modules.enums import FrontendType
@@ -42,6 +42,39 @@ billing_module = ModuleDefinition(
"trial_management", # Manage vendor trial periods
"limit_overrides", # Override tier limits per vendor
],
# Module-driven permissions
permissions=[
PermissionDefinition(
id="billing.view_tiers",
label_key="billing.permissions.view_tiers",
description_key="billing.permissions.view_tiers_desc",
category="billing",
),
PermissionDefinition(
id="billing.manage_tiers",
label_key="billing.permissions.manage_tiers",
description_key="billing.permissions.manage_tiers_desc",
category="billing",
),
PermissionDefinition(
id="billing.view_subscriptions",
label_key="billing.permissions.view_subscriptions",
description_key="billing.permissions.view_subscriptions_desc",
category="billing",
),
PermissionDefinition(
id="billing.manage_subscriptions",
label_key="billing.permissions.manage_subscriptions",
description_key="billing.permissions.manage_subscriptions_desc",
category="billing",
),
PermissionDefinition(
id="billing.view_invoices",
label_key="billing.permissions.view_invoices",
description_key="billing.permissions.view_invoices_desc",
category="billing",
),
],
menu_items={
FrontendType.ADMIN: [
"subscription-tiers", # Manage tier definitions