Files
teamvis-selfhost/supabase/migrations/0033_visitor_preregister.sql
T
2026-06-25 16:38:31 +02:00

46 lines
1.9 KiB
SQL

-- Voranmeldung von Besuchern.
-- ====================================================================
-- Mitarbeiter koennen im Self-Service-Portal vorab Besucher anmelden,
-- bevor diese am Empfang erscheinen. Am Empfangs-Tablet gibt es dann
-- eine "Erwartet"-Liste mit Ein-Klick-Eintragen — der Lead-Insert
-- erfolgt automatisch, Tipparbeit am Tresen entfaellt.
--
-- Lifecycle:
-- pending → wartet auf Eintreffen
-- arrived → wurde am Empfang erfasst (lead_id verknuepft)
-- expired → war 24h nach erwarteter Zeit nicht da
-- cancelled → vom MA storniert
create table if not exists public.visitor_preregistrations (
id uuid primary key default gen_random_uuid(),
-- MA der die Voranmeldung erstellt hat
employee_id uuid not null references public.employees(id) on delete cascade,
-- Daten des erwarteten Besuchers
visitor_first_name text not null,
visitor_last_name text not null,
visitor_company text,
visitor_email text,
visitor_phone text,
reason text,
-- Erwarteter Termin (kann null sein bei "irgendwann heute")
expected_at timestamptz,
-- Lifecycle
status text not null default 'pending'
check (status in ('pending', 'arrived', 'expired', 'cancelled')),
-- Bei status='arrived' Verknuepfung zum entstandenen Lead
arrived_lead_id uuid references public.card_leads(id) on delete set null,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
create index if not exists visitor_preregistrations_employee_idx
on public.visitor_preregistrations (employee_id, created_at desc);
-- Index fuer "heute pending" im Empfang-Tablet
create index if not exists visitor_preregistrations_pending_idx
on public.visitor_preregistrations (expected_at)
where status = 'pending';
alter table public.visitor_preregistrations enable row level security;
-- Default deny — Zugriff ueber Service-Role (Admin + Kiosk).