Files
Aknaproff/migrations/0001_initial_schema.sql
Deploy Bot 64403d6fd6 v4.1.21: Реструктуризация проекта для Synology ARM
- Реструктуризация: src/ разбит на middleware/, utils/, repositories/ (удалены), routes/ (удалены)
- Добавлен src/original-html.ts — полный HTML с reportModal
- Добавлен src/index.tsx.backup — React-компонент с reportModal
- Миграции переименованы (0001_initial_schema.sql)
- Добавлена миграция 0018 (удалена позже)
- Docker: multi-stage build, wrangler.toml
- Frontend: public/static/app.js + style.css
- seed.sql добавлен
- Документация: CHANGELOG, CHANGES_v4.1.0-4.1.9, PROJECT_STRUCTURE
2026-01-14 18:37:00 +02:00

81 lines
2.6 KiB
SQL

-- Users table
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
full_name TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'user',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
deleted_at DATETIME DEFAULT NULL,
deleted_by INTEGER DEFAULT NULL
);
-- Production records table
CREATE TABLE IF NOT EXISTS production_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
month INTEGER NOT NULL,
year INTEGER NOT NULL,
client_name TEXT NOT NULL,
type TEXT,
offer_number TEXT NOT NULL,
work_number TEXT NOT NULL,
quantity INTEGER NOT NULL,
color TEXT,
notes TEXT,
problems TEXT,
installer TEXT,
price DECIMAL(10, 2),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
deleted_at DATETIME DEFAULT NULL,
deleted_by INTEGER DEFAULT NULL
);
-- Status checkboxes table
CREATE TABLE IF NOT EXISTS status_checkboxes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
record_id INTEGER NOT NULL,
material_date DATE,
material2_date DATE,
package_date DATE,
worksheets_date DATE,
cutting_date DATE,
glazing_date DATE,
ready_date DATE,
issued_date DATE,
worksheets_error INTEGER DEFAULT 0,
cutting_error INTEGER DEFAULT 0,
glazing_error INTEGER DEFAULT 0,
ready_error INTEGER DEFAULT 0,
issued_error INTEGER DEFAULT 0,
material_confirmed INTEGER DEFAULT 0,
material2_confirmed INTEGER DEFAULT 0,
worksheets_confirmed INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (record_id) REFERENCES production_records(id) ON DELETE CASCADE
);
-- Audit log table
CREATE TABLE IF NOT EXISTS audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
record_id INTEGER,
field_name TEXT NOT NULL,
old_value TEXT,
new_value TEXT,
action_type TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (record_id) REFERENCES production_records(id)
);
-- Create indexes
CREATE INDEX IF NOT EXISTS idx_production_records_month_year ON production_records(month, year);
CREATE INDEX IF NOT EXISTS idx_production_records_client ON production_records(client_name);
CREATE INDEX IF NOT EXISTS idx_production_records_deleted ON production_records(deleted_at);
CREATE INDEX IF NOT EXISTS idx_status_checkboxes_record ON status_checkboxes(record_id);
CREATE INDEX IF NOT EXISTS idx_audit_log_record ON audit_log(record_id);
CREATE INDEX IF NOT EXISTS idx_audit_log_user ON audit_log(user_id);