Add frontend/modules/loyalty with types, API client, design system, feature pages and thin App Router routes under app/loyalty/. BFF proxy at app/api/loyalty/. Include loyalty frontend docs. Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
"""No-op mock implementations of platform provider contracts — Phase 14.7."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
from uuid import UUID
|
|
|
|
|
|
class MockAccountingProvider:
|
|
async def create_receivable_ref(
|
|
self, *, tenant_id: UUID, reference: str, payload: dict[str, Any]
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "reference": reference, "provider": "mock_accounting"}
|
|
|
|
|
|
class MockCRMProvider:
|
|
async def resolve_contact(
|
|
self, *, tenant_id: UUID, contact_ref: str
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "contact_ref": contact_ref, "provider": "mock_crm"}
|
|
|
|
|
|
class MockLoyaltyProvider:
|
|
async def resolve_member(
|
|
self, *, tenant_id: UUID, member_ref: str
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "member_ref": member_ref, "provider": "mock_loyalty"}
|
|
|
|
|
|
class MockCommunicationProvider:
|
|
async def send(
|
|
self,
|
|
*,
|
|
tenant_id: UUID,
|
|
channel: str,
|
|
template_key: str,
|
|
to: str,
|
|
payload: dict[str, Any],
|
|
) -> None:
|
|
return None
|
|
|
|
|
|
class MockDeliveryProvider:
|
|
async def create_delivery_ref(
|
|
self, *, tenant_id: UUID, reference: str, payload: dict[str, Any]
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "reference": reference, "provider": "mock_delivery"}
|
|
|
|
|
|
class MockExperienceProvider:
|
|
async def resolve_site(
|
|
self, *, tenant_id: UUID, site_ref: str
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "site_ref": site_ref, "provider": "mock_experience"}
|
|
|
|
|
|
class MockStorageProvider:
|
|
async def resolve_file(
|
|
self, *, tenant_id: UUID, file_ref: str
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "file_ref": file_ref, "provider": "mock_storage"}
|
|
|
|
|
|
class MockIdentityProvider:
|
|
async def resolve_user(
|
|
self, *, tenant_id: UUID, user_ref: str
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "user_ref": user_ref, "provider": "mock_identity"}
|
|
|
|
|
|
class MockBookingEngineProvider:
|
|
async def reserve_slot(
|
|
self, *, tenant_id: UUID, request: dict[str, Any]
|
|
) -> dict[str, Any]:
|
|
return {"ok": True, "provider": "mock_booking_engine", "request": request}
|