41 lines
2.6 KiB
SQL
Executable File
41 lines
2.6 KiB
SQL
Executable File
-- Таблица для сопоставлений адресов из Doma.AI с домами в локальной БД
|
||
CREATE TABLE IF NOT EXISTS doma_address_mappings (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
doma_address TEXT NOT NULL UNIQUE, -- Адрес из Doma.AI
|
||
building_id VARCHAR(50) NOT NULL REFERENCES buildings(id) ON DELETE CASCADE,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_doma_address_mappings_doma_address ON doma_address_mappings(doma_address);
|
||
CREATE INDEX IF NOT EXISTS idx_doma_address_mappings_building ON doma_address_mappings(building_id);
|
||
|
||
-- Таблица для сопоставлений имён сотрудников из Doma.AI с сотрудниками в локальной БД
|
||
CREATE TABLE IF NOT EXISTS doma_employee_mappings (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
doma_name TEXT NOT NULL UNIQUE, -- Имя из Doma.AI
|
||
employee_id VARCHAR(50) NOT NULL REFERENCES employees(id) ON DELETE CASCADE,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_doma_employee_mappings_doma_name ON doma_employee_mappings(doma_name);
|
||
CREATE INDEX IF NOT EXISTS idx_doma_employee_mappings_employee ON doma_employee_mappings(employee_id);
|
||
|
||
-- Таблица для ожидающих подтверждения сопоставлений
|
||
CREATE TABLE IF NOT EXISTS pending_doma_mappings (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
type VARCHAR(20) NOT NULL CHECK (type IN ('building', 'employee')),
|
||
doma_value TEXT NOT NULL, -- Адрес или имя из Doma.AI
|
||
suggested_id VARCHAR(50), -- Предложенный ID существующей записи
|
||
suggested_name TEXT, -- Название предложенной записи для отображения
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
resolved_at TIMESTAMPTZ,
|
||
resolved_by TEXT, -- Кто разрешил (user_id или 'system')
|
||
resolution VARCHAR(20) CHECK (resolution IN ('approved', 'rejected', 'new')), -- approved = использовать suggested_id, rejected = игнорировать, new = создать новую
|
||
resolved_id VARCHAR(50) -- ID, который был использован после разрешения
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_pending_mappings_type ON pending_doma_mappings(type);
|
||
CREATE INDEX IF NOT EXISTS idx_pending_mappings_resolved ON pending_doma_mappings(resolved_at);
|