Files
rostpoliplast/backend/migrations/002_create_line_tables.sql
Mephimeow 6c170fe1a2 new-g
2026-04-29 12:28:30 +00:00

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