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>
116 lines
3.7 KiB
YAML
116 lines
3.7 KiB
YAML
# Beauty Business service snapshot — Phases 14.0–14.7 complete.
|
||
# Spec: docs/ai-framework/service-snapshot-policy.md
|
||
|
||
schema_version: 1
|
||
snapshot_version: 1
|
||
|
||
service_name: beauty_business
|
||
commercial_product: Torbat Beauty
|
||
current_version: "0.14.7.0"
|
||
current_phase: beauty-business-14-7
|
||
last_completed_phase: beauty-business-14-7
|
||
next_phase: null
|
||
|
||
completed_phases:
|
||
- beauty-business-14-0
|
||
- beauty-business-14-1
|
||
- beauty-business-14-2
|
||
- beauty-business-14-3
|
||
- beauty-business-14-4
|
||
- beauty-business-14-5
|
||
- beauty-business-14-6
|
||
- beauty-business-14-7
|
||
remaining_phases: []
|
||
|
||
registered_modules:
|
||
- organizations
|
||
- branches
|
||
- roles
|
||
- permissions_catalog
|
||
- configuration
|
||
- settings
|
||
- external_providers
|
||
- audit
|
||
- staff_schedules
|
||
- staff_availabilities
|
||
- schedule_exceptions
|
||
- appointment_types
|
||
- appointments
|
||
- waiting_list
|
||
- treatment_rooms
|
||
- stations
|
||
- branch_policies
|
||
- service_categories
|
||
- beauty_services
|
||
- customer_profiles
|
||
- package_definitions
|
||
- membership_plans
|
||
- staff_profiles
|
||
- commission_rules
|
||
- marketing_campaign_refs
|
||
- loyalty_integrations
|
||
- communication_integrations
|
||
- integration_dispatches
|
||
- outbox
|
||
|
||
enabled_capabilities:
|
||
- foundation
|
||
- booking_engine
|
||
- salon_management
|
||
- service_catalog
|
||
- customer_management
|
||
- packages_memberships
|
||
- staff_commission
|
||
- marketing_loyalty_integration
|
||
|
||
enabled_bundles:
|
||
- torbat_beauty
|
||
|
||
public_apis:
|
||
- { method: GET, path: /health, permission: public }
|
||
- { method: GET, path: /capabilities, permission: public }
|
||
- { method: GET, path: /metrics, permission: public }
|
||
- { method: "*", path: /api/v1/organizations, permission: beauty_business.organizations.* }
|
||
- { method: "*", path: /api/v1/branches, permission: beauty_business.branches.* }
|
||
- { method: "*", path: /api/v1/appointments, permission: beauty_business.appointments.* }
|
||
- { method: "*", path: /api/v1/services, permission: beauty_business.services.* }
|
||
- { method: "*", path: /api/v1/customers, permission: beauty_business.customers.* }
|
||
- { method: "*", path: /api/v1/staff, permission: beauty_business.staff.* }
|
||
- { method: "*", path: /api/v1/marketing-campaigns, permission: beauty_business.marketing.* }
|
||
- { method: "*", path: /api/v1/integration-dispatches, permission: beauty_business.integrations.* }
|
||
|
||
published_events:
|
||
- { event_type: beauty_business.organization.created, version: "1" }
|
||
- { event_type: beauty_business.branch.created, version: "1" }
|
||
- { event_type: beauty_business.appointment.created, version: "1" }
|
||
- { event_type: beauty_business.appointment.completed, version: "1" }
|
||
- { event_type: beauty_business.service.created, version: "1" }
|
||
- { event_type: beauty_business.customer.created, version: "1" }
|
||
- { event_type: beauty_business.staff.created, version: "1" }
|
||
- { event_type: beauty_business.integration.dispatched, version: "1" }
|
||
|
||
permission_prefix: beauty_business.*
|
||
|
||
active_adrs: []
|
||
integration_contracts:
|
||
- CRMProvider
|
||
- AccountingProvider
|
||
- LoyaltyProvider
|
||
- CommunicationProvider
|
||
- DeliveryProvider
|
||
- ExperienceProvider
|
||
- StorageProvider
|
||
- AIProvider
|
||
- IdentityProvider
|
||
|
||
known_limitations:
|
||
- Secondary entities (ServiceVariant, BranchOperatingHours, PackageLine, CommissionEntry) have models/migrations but no dedicated CRUD routes
|
||
- Integration dispatches use mock providers locally; no live CRM/Loyalty/Communication SDK calls
|
||
- Event publisher uses transactional outbox; no external bus drain wired
|
||
- Independent from Healthcare module (separate service, DB, frontend /beauty)
|
||
|
||
open_todos: []
|
||
|
||
last_handover_reference: docs/phase-handover/phase-14-7.md
|
||
last_updated: "2026-07-26"
|