refactor: complete module-driven architecture migration

This commit completes the migration to a fully module-driven architecture:

## Models Migration
- Moved all domain models from models/database/ to their respective modules:
  - tenancy: User, Admin, Vendor, Company, Platform, VendorDomain, etc.
  - cms: MediaFile, VendorTheme
  - messaging: Email, VendorEmailSettings, VendorEmailTemplate
  - core: AdminMenuConfig
- models/database/ now only contains Base and TimestampMixin (infrastructure)

## Schemas Migration
- Moved all domain schemas from models/schema/ to their respective modules:
  - tenancy: company, vendor, admin, team, vendor_domain
  - cms: media, image, vendor_theme
  - messaging: email
- models/schema/ now only contains base.py and auth.py (infrastructure)

## Routes Migration
- Moved admin routes from app/api/v1/admin/ to modules:
  - menu_config.py -> core module
  - modules.py -> tenancy module
  - module_config.py -> tenancy module
- app/api/v1/admin/ now only aggregates auto-discovered module routes

## Menu System
- Implemented module-driven menu system with MenuDiscoveryService
- Extended FrontendType enum: PLATFORM, ADMIN, VENDOR, STOREFRONT
- Added MenuItemDefinition and MenuSectionDefinition dataclasses
- Each module now defines its own menu items in definition.py
- MenuService integrates with MenuDiscoveryService for template rendering

## Documentation
- Updated docs/architecture/models-structure.md
- Updated docs/architecture/menu-management.md
- Updated architecture validation rules for new exceptions

## Architecture Validation
- Updated MOD-019 rule to allow base.py in models/schema/
- Created core module exceptions.py and schemas/ directory
- All validation errors resolved (only warnings remain)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 21:02:56 +01:00
parent 09d7d282c6
commit d7a0ff8818
307 changed files with 5536 additions and 3826 deletions

View File

@@ -2,11 +2,207 @@
"""
Tenancy module Pydantic schemas.
Request/response schemas for platform, company, vendor, and admin user management.
Currently schemas remain in models/schema/ - this package is a placeholder
for future migration.
Request/response schemas for platform, company, vendor, admin user, and team management.
"""
# Schemas will be migrated here from models/schema/
# For now, import from legacy location if needed:
# from models.schema.vendor import VendorDetailResponse
# Company schemas
from app.modules.tenancy.schemas.company import (
CompanyBase,
CompanyCreate,
CompanyCreateResponse,
CompanyDetailResponse,
CompanyListResponse,
CompanyResponse,
CompanySummary,
CompanyTransferOwnership,
CompanyTransferOwnershipResponse,
CompanyUpdate,
)
# Vendor schemas
from app.modules.tenancy.schemas.vendor import (
LetzshopExportFileInfo,
LetzshopExportRequest,
LetzshopExportResponse,
VendorCreate,
VendorCreateResponse,
VendorDetailResponse,
VendorListResponse,
VendorResponse,
VendorSummary,
VendorUpdate,
)
# Admin schemas
from app.modules.tenancy.schemas.admin import (
AdminAuditLogFilters,
AdminAuditLogListResponse,
AdminAuditLogResponse,
AdminDashboardStats,
AdminNotificationCreate,
AdminNotificationListResponse,
AdminNotificationResponse,
AdminNotificationUpdate,
AdminSessionListResponse,
AdminSessionResponse,
AdminSettingCreate,
AdminSettingDefaultResponse,
AdminSettingListResponse,
AdminSettingResponse,
AdminSettingUpdate,
ApplicationLogFilters,
ApplicationLogListResponse,
ApplicationLogResponse,
BulkUserAction,
BulkUserActionResponse,
BulkVendorAction,
BulkVendorActionResponse,
ComponentHealthStatus,
FileLogResponse,
LogCleanupResponse,
LogDeleteResponse,
LogFileInfo,
LogFileListResponse,
LogSettingsResponse,
LogSettingsUpdate,
LogSettingsUpdateResponse,
LogStatistics,
PlatformAlertCreate,
PlatformAlertListResponse,
PlatformAlertResolve,
PlatformAlertResponse,
PublicDisplaySettingsResponse,
RowsPerPageResponse,
RowsPerPageUpdateResponse,
SystemHealthResponse,
)
# Team schemas
from app.modules.tenancy.schemas.team import (
BulkRemoveRequest,
BulkRemoveResponse,
InvitationAccept,
InvitationAcceptResponse,
InvitationResponse,
PermissionCheckRequest,
PermissionCheckResponse,
RoleBase,
RoleCreate,
RoleListResponse,
RoleResponse,
RoleUpdate,
TeamErrorResponse,
TeamMemberBase,
TeamMemberInvite,
TeamMemberListResponse,
TeamMemberResponse,
TeamMemberUpdate,
TeamStatistics,
UserPermissionsResponse,
)
# Vendor domain schemas
from app.modules.tenancy.schemas.vendor_domain import (
DomainDeletionResponse,
DomainVerificationInstructions,
DomainVerificationResponse,
VendorDomainCreate,
VendorDomainListResponse,
VendorDomainResponse,
VendorDomainUpdate,
)
__all__ = [
# Company
"CompanyBase",
"CompanyCreate",
"CompanyCreateResponse",
"CompanyDetailResponse",
"CompanyListResponse",
"CompanyResponse",
"CompanySummary",
"CompanyTransferOwnership",
"CompanyTransferOwnershipResponse",
"CompanyUpdate",
# Vendor
"LetzshopExportFileInfo",
"LetzshopExportRequest",
"LetzshopExportResponse",
"VendorCreate",
"VendorCreateResponse",
"VendorDetailResponse",
"VendorListResponse",
"VendorResponse",
"VendorSummary",
"VendorUpdate",
# Admin
"AdminAuditLogFilters",
"AdminAuditLogListResponse",
"AdminAuditLogResponse",
"AdminDashboardStats",
"AdminNotificationCreate",
"AdminNotificationListResponse",
"AdminNotificationResponse",
"AdminNotificationUpdate",
"AdminSessionListResponse",
"AdminSessionResponse",
"AdminSettingCreate",
"AdminSettingDefaultResponse",
"AdminSettingListResponse",
"AdminSettingResponse",
"AdminSettingUpdate",
"ApplicationLogFilters",
"ApplicationLogListResponse",
"ApplicationLogResponse",
"BulkUserAction",
"BulkUserActionResponse",
"BulkVendorAction",
"BulkVendorActionResponse",
"ComponentHealthStatus",
"FileLogResponse",
"LogCleanupResponse",
"LogDeleteResponse",
"LogFileInfo",
"LogFileListResponse",
"LogSettingsResponse",
"LogSettingsUpdate",
"LogSettingsUpdateResponse",
"LogStatistics",
"PlatformAlertCreate",
"PlatformAlertListResponse",
"PlatformAlertResolve",
"PlatformAlertResponse",
"PublicDisplaySettingsResponse",
"RowsPerPageResponse",
"RowsPerPageUpdateResponse",
"SystemHealthResponse",
# Team
"BulkRemoveRequest",
"BulkRemoveResponse",
"InvitationAccept",
"InvitationAcceptResponse",
"InvitationResponse",
"PermissionCheckRequest",
"PermissionCheckResponse",
"RoleBase",
"RoleCreate",
"RoleListResponse",
"RoleResponse",
"RoleUpdate",
"TeamErrorResponse",
"TeamMemberBase",
"TeamMemberInvite",
"TeamMemberListResponse",
"TeamMemberResponse",
"TeamMemberUpdate",
"TeamStatistics",
"UserPermissionsResponse",
# Vendor Domain
"DomainDeletionResponse",
"DomainVerificationInstructions",
"DomainVerificationResponse",
"VendorDomainCreate",
"VendorDomainListResponse",
"VendorDomainResponse",
"VendorDomainUpdate",
]