Files
Backend/utils/InitalizeDB.py
T
Kirill eabc193d8b feat(utils/InitalizeDB.py): PSQL initializing
Add script with is connected to db and initialize it
2025-10-23 23:01:22 +03:00

80 lines
2.1 KiB
Python

import psycopg
from PostgressConnect import PSQLConnect, PSQLCursor
from loadDotEnv import initializeENV
state = initializeENV()
conn = PSQLConnect()
cur = PSQLCursor(conn)
cur.execute('''
-- Пользователи системы
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL, -- 'operator', 'admin', 'viewer'
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Роботы
CREATE TABLE robots (
id VARCHAR(50) PRIMARY KEY, -- 'RB-001'
status VARCHAR(50) DEFAULT 'active',
battery_level INTEGER,
last_update TIMESTAMP,
current_zone VARCHAR(10),
current_row INTEGER,
current_shelf INTEGER
);
-- Товары
CREATE TABLE products (
id VARCHAR(50) PRIMARY KEY, -- 'TEL-4567'
name VARCHAR(255) NOT NULL,
category VARCHAR(100),
min_stock INTEGER DEFAULT 10,
optimal_stock INTEGER DEFAULT 100
);
-- История инвентаризации
CREATE TABLE inventory_history (
id SERIAL PRIMARY KEY,
robot_id VARCHAR(50) REFERENCES robots(id),
product_id VARCHAR(50) REFERENCES productsuid),
quantity INTEGER NOT NULL,
zone VARCHAR(10) NOT NULL,
row_number INTEGER,
shelf_number INTEGER,
status VARCHAR(50), -- 'OK', 'LOW_STOCK', 'CRITICAL'
scanned_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Прогнозы ИИ
CREATE TABLE ai_predictions (
id SERIAL PRIMARY KEY,
product_id VARCHAR(50) REFERENCES products(id),
prediction_date DATE NOT NULL,
days_until_stockout INTEGER,
recommended_order INTEGER,
confidence_score DECIMAL(3,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Индексы для оптимизации
REATE INDEX idx_inventory_scanned ON inventory_history(scanned_at DESC);
CREATE INDEX idx_inventory_product ON inventory_history(product_id);
CREATE INDEX idx_inventory_zone ON inventory_history(zone);
''')
conn.commit()
cur.close()
conn.close()
print("DB is Initialized")