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:
28
backend/migrations/010_booking_guests.sql
Normal file
28
backend/migrations/010_booking_guests.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- Migration 010 — booking_guests: per-booking guest roster with documents
|
||||
|
||||
CREATE TABLE IF NOT EXISTS booking_guests (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
booking_id UUID NOT NULL REFERENCES bookings(id) ON DELETE CASCADE,
|
||||
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
|
||||
guest_id UUID REFERENCES guests(id) ON DELETE SET NULL,
|
||||
|
||||
first_name VARCHAR(100) NOT NULL,
|
||||
last_name VARCHAR(100) NOT NULL,
|
||||
middle_name VARCHAR(100),
|
||||
|
||||
birth_date DATE,
|
||||
is_child BOOLEAN NOT NULL DEFAULT false,
|
||||
is_main BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
passport_series VARCHAR(20),
|
||||
passport_number VARCHAR(20),
|
||||
passport_issued_by TEXT,
|
||||
passport_issue_date DATE,
|
||||
nationality VARCHAR(100),
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_booking_guests_booking ON booking_guests(booking_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_booking_guests_guest ON booking_guests(guest_id);
|
||||
Reference in New Issue
Block a user