Files
mkd/backend/migrate_doma_mappings.sql
2026-02-04 00:17:04 +05:00

41 lines
2.6 KiB
SQL
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Таблица для сопоставлений адресов из 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);