PRAGMA journal_mode=WAL; PRAGMA foreign_keys=ON; CREATE TABLE IF NOT EXISTS organizations ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); -- Белый список телефонов по организациям. -- phone хранится только цифрами, напр. "79001234567" CREATE TABLE IF NOT EXISTS org_users ( id INTEGER PRIMARY KEY AUTOINCREMENT, org_id INTEGER NOT NULL REFERENCES organizations(id) ON DELETE CASCADE, phone TEXT NOT NULL, display_name TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')), UNIQUE(phone) ); -- Реальные пользователи MAX, которые написали боту CREATE TABLE IF NOT EXISTS bot_users ( id INTEGER PRIMARY KEY AUTOINCREMENT, max_user_id INTEGER NOT NULL UNIQUE, max_chat_id INTEGER, username TEXT, first_name TEXT, phone TEXT, -- заполняется после шаринга контакта org_id INTEGER REFERENCES organizations(id), is_authorized INTEGER NOT NULL DEFAULT 0, -- 1 = авторизован is_blocked INTEGER NOT NULL DEFAULT 0, -- 1 = заблокирован created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS tickets ( id INTEGER PRIMARY KEY AUTOINCREMENT, org_id INTEGER NOT NULL REFERENCES organizations(id), created_by INTEGER NOT NULL REFERENCES bot_users(id), description TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'open', -- open / in_progress / closed last_comment TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS ticket_attachments ( id INTEGER PRIMARY KEY AUTOINCREMENT, ticket_id INTEGER NOT NULL REFERENCES tickets(id) ON DELETE CASCADE, attachment_type TEXT NOT NULL, -- image / audio / file / video attachment_url TEXT, filename TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); -- Лог всех входящих и исходящих сообщений CREATE TABLE IF NOT EXISTS message_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, direction TEXT NOT NULL, -- 'in' / 'out' max_user_id INTEGER, max_chat_id INTEGER, message_id TEXT, text TEXT, attachment_json TEXT, -- JSON-строка списка вложений created_at TEXT NOT NULL DEFAULT (datetime('now')) );