-- Звонки из Виртуальной АТС МегаФон. Номера клиентов — персональные данные: доступ только -- из админки, записи разговоров не храним — только ссылку АТС. CREATE TABLE pbx_calls ( uid text PRIMARY KEY, -- идентификатор звонка в АТС type text NOT NULL DEFAULT '', -- in | out | missed status text NOT NULL DEFAULT '', -- success | missed | busy | notavailable… client text NOT NULL DEFAULT '', -- номер клиента, как прислала АТС client_key text NOT NULL DEFAULT '', -- ключ номера (10 цифр), как в отчёте по каналам via text NOT NULL DEFAULT '', -- номер «Через»: на какой номер клиники звонили via_key text NOT NULL DEFAULT '', user_login text NOT NULL DEFAULT '', user_name text NOT NULL DEFAULT '', started_at timestamptz NOT NULL, wait int NOT NULL DEFAULT 0, duration int NOT NULL DEFAULT 0, record_url text NOT NULL DEFAULT '', raw jsonb NOT NULL DEFAULT '{}', synced_at timestamptz NOT NULL DEFAULT now() ); CREATE INDEX pbx_calls_started_idx ON pbx_calls (started_at); CREATE INDEX pbx_calls_client_idx ON pbx_calls (client_key, started_at); CREATE INDEX pbx_calls_via_idx ON pbx_calls (via_key); -- Номер клиники → канал рекламы. Задаётся в админке; один канал может иметь несколько номеров. CREATE TABLE pbx_lines ( via_key text PRIMARY KEY, channel text NOT NULL, updated_at timestamptz NOT NULL DEFAULT now() ); -- Журнал загрузок из АТС: когда и что забрали, чем закончилось. CREATE TABLE pbx_sync_log ( id bigserial PRIMARY KEY, started_at timestamptz NOT NULL DEFAULT now(), finished_at timestamptz, period_from timestamptz NOT NULL, period_to timestamptz NOT NULL, calls int NOT NULL DEFAULT 0, error text NOT NULL DEFAULT '', manual boolean NOT NULL DEFAULT false );