How retailcrm/specialist-booking works
Specialist Booking is a Symfony backend plus an embedded Vue module for RetailCRM/Simla. CRM administrators configure specialists, specialties, branches, and working calendars; the booking UI (or agent API) obtains availability, then records the selected specialist and appointment time on a CRM order. The README documents availability as accounting for existing orders and CRM working/non-working-day settings. The graph preserves setup, administration, booking, and agent-facing capabilities; source excerpts are partial, so unsampled controller wiring is not expanded beyond supported relationships.
Main entry points: AdminCalendarController.php Schedule calendar · AccountController.php Account onboarding · index.ts Admin interface · AdminSpecialistController.php Specialist management
Components 23
CRM Setup
- Account onboarding
src/Controller/AccountController.php - CRM account client
src/Service/AccountManager.php - Module registration
src/Service/CrmModuleRegistration.php - Order custom fields
src/Service/CustomFieldManager.php
Specialist Admin
- Admin interface
embed/src/booking/index.ts - Specialist management
src/Controller/AdminSpecialistController.php - Schedule calendar
src/Controller/AdminCalendarController.php - Booking settings
src/Controller/AdminSettingsController.php
Booking Runtime
- Booking embed
embed/src/booking/BookingExtension.vue - Booking API
src/Controller/EmbedApiController.php - Agent booking API
src/Controller/AgentApiController.php - Slot scheduling
src/Service/SpecialistSchedule.php - CRM busy slots
src/Service/SpecialistBusySlotFetcher.php - Booking reader
src/Service/OrderBookingReader.php - Booking writer
src/Service/OrderBookingWriter.php
Domain Data
- Specialist repository
src/Repository/SpecialistRepository.php - Specialty repository
src/Repository/SpecialtyRepository.php - User preferences
src/Repository/UserPreferenceRepository.php - Booking domain records
src/Entity/Specialist.php
Other components
- CRM administrator
- Booking customer
- AI agent
- RetailCRM / Simla
Connections 30
- CRM administrator → Account onboarding: registers account
- Account onboarding → CRM account client: creates CRM client
- Account onboarding → Module registration: registers module
- Account onboarding → Order custom fields: ensures fields
- Module registration → RetailCRM / Simla: registers module
- Order custom fields → RetailCRM / Simla: creates order fields
- CRM administrator → Admin interface: configures booking
- Admin interface → Specialist management: manages specialists
- Admin interface → Schedule calendar: views schedule
- Admin interface → Booking settings: updates settings
- Specialist management → Specialist repository: loads specialists
- Specialist management → Specialty repository: loads specialties
- Specialist management → Booking domain records: persists changes
- Schedule calendar → Specialist repository: loads specialists
- Schedule calendar → Slot scheduling: computes free slots
- Schedule calendar → Booking reader: loads bookings
- Schedule calendar → User preferences: reads preferences
- Booking customer → Booking embed: selects appointment
- Booking embed → Booking API: requests availability
- Booking API → Specialist repository: finds specialists
- Booking API → Slot scheduling: computes availability
- Slot scheduling → CRM busy slots: checks busy times
- CRM busy slots → RetailCRM / Simla: loads branches and schedules
- AI agent → Agent booking API: requests booking
- Agent booking API → Specialist repository: finds specialists
- Agent booking API → Slot scheduling: validates slot
- Agent booking API → Booking writer: writes appointment
- Booking writer → RetailCRM / Simla: updates order
- Booking reader → RetailCRM / Simla: reads orders
- Schedule calendar → RetailCRM / Simla: searches customers