Files
mkd/backend/migrate_doma_mappings.sql

41 lines
2.6 KiB
MySQL
Raw Permalink Normal View History

2026-02-04 00:17:04 +05:00
-- Таблица для сопоставлений адресов из 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);