баг при смене страницы

This commit is contained in:
2025-07-24 15:39:44 +03:00
parent a13bbc7a68
commit f9e7905d55
16 changed files with 2356 additions and 9 deletions

90
database-schema.sql Normal file
View File

@@ -0,0 +1,90 @@
-- Схема БД для элемента "Условия поверки"
-- Таблица лабораторий
CREATE TABLE laboratories (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
code VARCHAR(50) UNIQUE NOT NULL, -- Уникальный код лаборатории
description TEXT,
address TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Таблица типов условий поверки (температура, влажность, давление и т.д.)
CREATE TABLE condition_types (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL, -- "Температура", "Влажность", "Давление"
unit VARCHAR(20), -- "°C", "%", "кПа"
data_type VARCHAR(20) DEFAULT 'number', -- number, string, boolean
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Связь лаборатории с типами условий (какие условия отслеживает каждая лаборатория)
CREATE TABLE laboratory_condition_types (
id SERIAL PRIMARY KEY,
laboratory_id INTEGER REFERENCES laboratories(id) ON DELETE CASCADE,
condition_type_id INTEGER REFERENCES condition_types(id) ON DELETE CASCADE,
is_required BOOLEAN DEFAULT false, -- Обязательно ли это условие для данной лаборатории
default_value VARCHAR(100), -- Значение по умолчанию
min_value DECIMAL(10,3), -- Минимальное значение (для валидации)
max_value DECIMAL(10,3), -- Максимальное значение (для валидации)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(laboratory_id, condition_type_id)
);
-- Таблица для сохранения условий по дням
CREATE TABLE daily_conditions (
id SERIAL PRIMARY KEY,
laboratory_id INTEGER REFERENCES laboratories(id) ON DELETE CASCADE,
date DATE NOT NULL,
conditions JSONB NOT NULL, -- JSON объект с условиями: {"temperature": 23.5, "humidity": 45.2, "pressure": 101.3}
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(100), -- Кто создал запись
UNIQUE(laboratory_id, date) -- Одна запись условий на день для лаборатории
);
-- Индексы для оптимизации
CREATE INDEX idx_daily_conditions_lab_date ON daily_conditions(laboratory_id, date);
CREATE INDEX idx_daily_conditions_date ON daily_conditions(date);
CREATE INDEX idx_laboratory_condition_types_lab ON laboratory_condition_types(laboratory_id);
-- Вставка начальных данных
-- Типы условий
INSERT INTO condition_types (name, unit, data_type, description) VALUES
('Температура', '°C', 'number', 'Температура окружающей среды'),
('Влажность', '%', 'number', 'Относительная влажность воздуха'),
('Атмосферное давление', 'кПа', 'number', 'Атмосферное давление'),
('Давление среды', 'МПа', 'number', 'Давление рабочей среды'),
('Напряжение сети', 'В', 'number', 'Напряжение питающей сети'),
('Частота сети', 'Гц', 'number', 'Частота питающей сети');
-- Примеры лабораторий
INSERT INTO laboratories (name, code, description) VALUES
('Лаборатория температуры', 'TEMP_LAB', 'Лаборатория поверки температурных приборов'),
('Лаборатория давления', 'PRESS_LAB', 'Лаборатория поверки приборов давления'),
('Электрическая лаборатория', 'ELEC_LAB', 'Лаборатория поверки электрических приборов');
-- Настройка условий для лабораторий
-- Лаборатория температуры
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
(1, 1, true, '20', 15, 30), -- Температура
(1, 2, true, '50', 30, 80), -- Влажность
(1, 3, false, '101.3', 80, 120); -- Атмосферное давление
-- Лаборатория давления
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
(2, 1, true, '23', 18, 28), -- Температура
(2, 2, false, '45', 20, 70), -- Влажность
(2, 3, true, '101.3', 90, 110), -- Атмосферное давление
(2, 4, true, '0.1', 0, 100); -- Давление среды
-- Электрическая лаборатория
INSERT INTO laboratory_condition_types (laboratory_id, condition_type_id, is_required, default_value, min_value, max_value) VALUES
(3, 1, true, '22', 20, 25), -- Температура
(3, 2, true, '60', 40, 70), -- Влажность
(3, 5, true, '220', 198, 242), -- Напряжение сети
(3, 6, true, '50', 49.5, 50.5); -- Частота сети