# 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"
