Add multi-guest management: per-booking roster, docs, guest autocomplete

- Migration 010: booking_guests table (roster per booking with passport data)
- Backend: /bookings/:id/guests CRUD — auto-links/creates guest profiles by passport
- Backend: /hotel-settings GET/PATCH for key-value settings (require_guest_docs)
- BookingDetailPanel: Гости tab with multi-guest list, inline add/edit form,
  guest autocomplete (debounced search in guests table), child/main badges,
  passport fields for adults, scan stub, require-docs warning
- SettingsPage: toggle "Обязательное заполнение документов гостей"
- Pass slug prop through CalendarPage → BookingCalendar → BookingDetailPanel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-19 20:53:07 +03:00
parent de4fb2126b
commit 873a9a4fc4
10 changed files with 803 additions and 11 deletions

View File

@@ -16,7 +16,9 @@ import housekeepingRoutes from './routes/housekeeping'
import channelsRoutes from './routes/channels'
import usersRoutes from './routes/users'
import netupRoutes from './routes/netup'
import guestsRoutes from './routes/guests'
import guestsRoutes from './routes/guests'
import bookingGuestsRoutes from './routes/booking-guests'
import hotelSettingsRoutes from './routes/hotel-settings'
export async function buildApp() {
const fastify = Fastify({
@@ -75,6 +77,8 @@ export async function buildApp() {
await fastify.register(usersRoutes)
await fastify.register(netupRoutes)
await fastify.register(guestsRoutes)
await fastify.register(bookingGuestsRoutes)
await fastify.register(hotelSettingsRoutes)
return fastify
}