admin-profiles.html
This commit is contained in:
104
database.js
104
database.js
@@ -193,6 +193,110 @@ function createSQLiteTables() {
|
||||
)`);
|
||||
|
||||
console.log('✅ Таблица для пользовательских настроек инициализирована');
|
||||
|
||||
// Таблица для типов документов
|
||||
db.run(`CREATE TABLE IF NOT EXISTS document_types (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
description TEXT,
|
||||
template_path TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)`);
|
||||
|
||||
// Таблица для документов
|
||||
db.run(`CREATE TABLE IF NOT EXISTS documents (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
document_type_id INTEGER NOT NULL,
|
||||
status TEXT DEFAULT 'draft',
|
||||
created_by INTEGER NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
approved_at DATETIME,
|
||||
approved_by INTEGER,
|
||||
rejected_at DATETIME,
|
||||
rejected_by INTEGER,
|
||||
rejection_reason TEXT,
|
||||
file_path TEXT,
|
||||
file_name TEXT,
|
||||
file_size INTEGER,
|
||||
version INTEGER DEFAULT 1,
|
||||
parent_document_id INTEGER,
|
||||
FOREIGN KEY (document_type_id) REFERENCES document_types (id),
|
||||
FOREIGN KEY (created_by) REFERENCES users (id),
|
||||
FOREIGN KEY (approved_by) REFERENCES users (id),
|
||||
FOREIGN KEY (rejected_by) REFERENCES users (id),
|
||||
FOREIGN KEY (parent_document_id) REFERENCES documents (id)
|
||||
)`);
|
||||
|
||||
// Таблица для этапов согласования
|
||||
db.run(`CREATE TABLE IF NOT EXISTS approval_stages (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
document_type_id INTEGER NOT NULL,
|
||||
stage_number INTEGER NOT NULL,
|
||||
stage_name TEXT NOT NULL,
|
||||
approver_role TEXT,
|
||||
approver_user_id INTEGER,
|
||||
is_required BOOLEAN DEFAULT true,
|
||||
can_edit BOOLEAN DEFAULT false,
|
||||
can_comment BOOLEAN DEFAULT true,
|
||||
deadline_days INTEGER,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(document_type_id, stage_number),
|
||||
FOREIGN KEY (document_type_id) REFERENCES document_types (id),
|
||||
FOREIGN KEY (approver_user_id) REFERENCES users (id)
|
||||
)`);
|
||||
|
||||
// Таблица для согласования документов
|
||||
db.run(`CREATE TABLE IF NOT EXISTS document_approvals (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
document_id INTEGER NOT NULL,
|
||||
stage_id INTEGER NOT NULL,
|
||||
approver_user_id INTEGER NOT NULL,
|
||||
status TEXT DEFAULT 'pending',
|
||||
comments TEXT,
|
||||
approved_at DATETIME,
|
||||
rejected_at DATETIME,
|
||||
deadline DATETIME,
|
||||
notified_at DATETIME,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(document_id, stage_id, approver_user_id),
|
||||
FOREIGN KEY (document_id) REFERENCES documents (id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (stage_id) REFERENCES approval_stages (id),
|
||||
FOREIGN KEY (approver_user_id) REFERENCES users (id)
|
||||
)`);
|
||||
|
||||
// Таблица для комментариев к документам
|
||||
db.run(`CREATE TABLE IF NOT EXISTS document_comments (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
document_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
is_internal BOOLEAN DEFAULT false,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (document_id) REFERENCES documents (id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||
)`);
|
||||
|
||||
// Таблица для истории изменений документов
|
||||
db.run(`CREATE TABLE IF NOT EXISTS document_history (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
document_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
action TEXT NOT NULL,
|
||||
changes TEXT,
|
||||
version INTEGER,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (document_id) REFERENCES documents (id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||
)`);
|
||||
|
||||
console.log('✅ Таблицы для согласования документов созданы');
|
||||
|
||||
// Запускаем проверку и обновление структуры таблиц
|
||||
setTimeout(() => {
|
||||
|
||||
Reference in New Issue
Block a user