-- Таблица для сопоставлений адресов из 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);