51 lines
2.2 KiB
SQL
51 lines
2.2 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
CREATE TABLE line_stages (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
stage_order INT NOT NULL UNIQUE,
|
|
equipment VARCHAR(200),
|
|
mqtt_topic VARCHAR(200)
|
|
);
|
|
|
|
CREATE TABLE sensor_readings (
|
|
id SERIAL PRIMARY KEY,
|
|
stage_id INT REFERENCES line_stages(id) ON DELETE CASCADE,
|
|
sensor VARCHAR(100) NOT NULL,
|
|
value DOUBLE PRECISION NOT NULL,
|
|
unit VARCHAR(20),
|
|
timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE production_events (
|
|
id SERIAL PRIMARY KEY,
|
|
stage_id INT REFERENCES line_stages(id) ON DELETE CASCADE,
|
|
event_type VARCHAR(100) NOT NULL,
|
|
data TEXT,
|
|
timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Индексы для производительности
|
|
CREATE INDEX idx_sensor_readings_stage ON sensor_readings(stage_id, timestamp DESC);
|
|
CREATE INDEX idx_production_events_stage ON production_events(stage_id, timestamp DESC);
|
|
|
|
-- Начальные данные этапов линии
|
|
INSERT INTO line_stages (name, description, stage_order, equipment, mqtt_topic) VALUES
|
|
('Разгрузка', 'Приемка лома, взвешивание', 1, 'Рампа, весы', '/sensor/weight/party'),
|
|
('QR Сортировка', 'Сканирование QR-кодов', 2, 'Camera Module v3', '/qr/result'),
|
|
('Подача', 'Загрузка на конвейер', 3, 'Danfoss VLT FC 302', '/drive/telemetry'),
|
|
('Дробление', 'Шредер / Дробилка', 4, 'SEW MOVITRAC', '/drive/vibration'),
|
|
('Мойка', 'Очистка, флотация', 5, 'Ванна, насосы', '/sensor/level'),
|
|
('Сушка', 'Удаление влаги', 6, 'Центрифуга', '/sensor/dry/temp'),
|
|
('Экструзия', 'Плавление, грануляция', 7, 'ABB ACS880', '/extruder/pressure'),
|
|
('Манипулятор', 'Упаковка, паллетирование', 8, 'Робот-упаковщик', '/robot/cycle');
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP TABLE IF EXISTS production_events;
|
|
DROP TABLE IF EXISTS sensor_readings;
|
|
DROP TABLE IF EXISTS line_stages;
|
|
-- +goose StatementEnd
|