refactor: move letzshop endpoints to marketplace module and add vendor service tests
Move letzshop-related functionality from tenancy to marketplace module: - Move admin letzshop routes to marketplace/routes/api/admin_letzshop.py - Move letzshop schemas to marketplace/schemas/letzshop.py - Remove letzshop code from tenancy module (admin_vendors, vendor_service) - Update model exports and imports Add comprehensive unit tests for vendor services: - test_company_service.py: Company management operations - test_platform_service.py: Platform management operations - test_vendor_domain_service.py: Vendor domain operations - test_vendor_team_service.py: Vendor team management Update module definitions: - billing, messaging, payments: Minor definition updates Add architecture proposals documentation: - Module dependency redesign session notes - Decouple modules implementation plan - Module decoupling proposal Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,10 @@ from app.modules.marketplace.schemas.letzshop import (
|
||||
LetzshopCachedVendorDetailResponse,
|
||||
LetzshopVendorDirectorySyncResponse,
|
||||
LetzshopCreateVendorFromCacheResponse,
|
||||
# Product Export
|
||||
LetzshopExportRequest,
|
||||
LetzshopExportFileInfo,
|
||||
LetzshopExportResponse,
|
||||
)
|
||||
from app.modules.marketplace.schemas.onboarding import (
|
||||
# Step status
|
||||
@@ -184,6 +188,10 @@ __all__ = [
|
||||
"LetzshopCachedVendorDetailResponse",
|
||||
"LetzshopVendorDirectorySyncResponse",
|
||||
"LetzshopCreateVendorFromCacheResponse",
|
||||
# Letzshop - Product Export
|
||||
"LetzshopExportRequest",
|
||||
"LetzshopExportFileInfo",
|
||||
"LetzshopExportResponse",
|
||||
# Onboarding - Step status
|
||||
"StepStatus",
|
||||
"CompanyProfileStepStatus",
|
||||
|
||||
@@ -624,3 +624,41 @@ class LetzshopCreateVendorFromCacheResponse(BaseModel):
|
||||
message: str
|
||||
vendor: dict[str, Any] | None = None
|
||||
letzshop_vendor_slug: str
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Product Export Schemas
|
||||
# ============================================================================
|
||||
|
||||
|
||||
class LetzshopExportRequest(BaseModel):
|
||||
"""Request body for Letzshop export to pickup folder."""
|
||||
|
||||
include_inactive: bool = Field(
|
||||
default=False,
|
||||
description="Include inactive products in export"
|
||||
)
|
||||
|
||||
|
||||
class LetzshopExportFileInfo(BaseModel):
|
||||
"""Info about an exported file."""
|
||||
|
||||
language: str
|
||||
filename: str | None = None
|
||||
path: str | None = None
|
||||
size_bytes: int | None = None
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class LetzshopExportResponse(BaseModel):
|
||||
"""Response from Letzshop export to folder."""
|
||||
|
||||
success: bool
|
||||
message: str
|
||||
vendor_code: str
|
||||
export_directory: str
|
||||
files: list[LetzshopExportFileInfo]
|
||||
celery_task_id: str | None = None # Set when using Celery async export
|
||||
is_async: bool = Field(default=False, serialization_alias="async") # True when queued via Celery
|
||||
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
Reference in New Issue
Block a user