Files
vector/backend/migrations/003_create_users_and_analysis_log.sql
T
2026-06-06 18:31:55 +00:00

42 lines
2.0 KiB
SQL

-- Миграция: создание таблиц users и analysis_log
-- Дата: 2026-05-04
-- Таблица пользователей для аутентификации
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
username VARCHAR(100) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
hashed_password VARCHAR(255) NOT NULL,
full_name VARCHAR(255),
role VARCHAR(20) NOT NULL DEFAULT 'operator', -- operator/field/admin
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT NOW(),
last_login TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_users_username ON users (username);
CREATE INDEX IF NOT EXISTS idx_users_email ON users (email);
CREATE INDEX IF NOT EXISTS idx_users_role ON users (role);
-- Таблица логов анализа
CREATE TABLE IF NOT EXISTS analysis_log (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
case_id UUID NOT NULL REFERENCES cases(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE SET NULL,
analysis_type VARCHAR(50) NOT NULL, -- scoring/claude/geo/psychotype
input_data JSONB,
output_data JSONB,
execution_time FLOAT, -- в секундах
status VARCHAR(20) DEFAULT 'success', -- success/error/partial
error_message TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_analysis_log_case_id ON analysis_log (case_id);
CREATE INDEX IF NOT EXISTS idx_analysis_log_user_id ON analysis_log (user_id);
CREATE INDEX IF NOT EXISTS idx_analysis_log_created_at ON analysis_log (created_at);
CREATE INDEX IF NOT EXISTS idx_analysis_log_type ON analysis_log (analysis_type);
COMMENT ON TABLE users IS 'Пользователи системы с ролями operator/field/admin';
COMMENT ON TABLE analysis_log IS 'Лог всех анализов случаев для аудита и отладки';