diff --git a/db/init.sql b/db/init.sql index 03bbda5..e5af457 100644 --- a/db/init.sql +++ b/db/init.sql @@ -24,6 +24,13 @@ CREATE TABLE IF NOT EXISTS groups ( cover_path VARCHAR(255) ); +CREATE TABLE IF NOT EXISTS modules ( + id SERIAL PRIMARY KEY, + name VARCHAR(200) NOT NULL UNIQUE, + lessons_count INT NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ DEFAULT now() +); + CREATE TABLE IF NOT EXISTS students ( id SERIAL PRIMARY KEY, name VARCHAR(150) NOT NULL UNIQUE, @@ -35,6 +42,7 @@ CREATE TABLE IF NOT EXISTS entries ( id SERIAL PRIMARY KEY, student_name VARCHAR(150) NOT NULL, group_id INT NOT NULL REFERENCES groups(id), + module_id INT REFERENCES modules(id) ON DELETE SET NULL, description TEXT NOT NULL, description_original TEXT, description_ai TEXT, @@ -52,8 +60,10 @@ ALTER TABLE entries ADD COLUMN IF NOT EXISTS description_ai TEXT; ALTER TABLE entries ADD COLUMN IF NOT EXISTS ai_status VARCHAR(20) NOT NULL DEFAULT 'pending'; ALTER TABLE entries ADD COLUMN IF NOT EXISTS ai_checked_at TIMESTAMPTZ; ALTER TABLE entries ADD COLUMN IF NOT EXISTS ai_error TEXT; +ALTER TABLE entries ADD COLUMN IF NOT EXISTS module_id INT REFERENCES modules(id) ON DELETE SET NULL; CREATE INDEX IF NOT EXISTS idx_entries_ai_pending ON entries(id) WHERE ai_status = 'pending' AND deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_entries_module_id ON entries(module_id); CREATE OR REPLACE FUNCTION notify_entries_changed() RETURNS trigger AS $$ BEGIN diff --git a/db/migration.sql b/db/migration.sql index 6806479..97e26c3 100644 --- a/db/migration.sql +++ b/db/migration.sql @@ -223,3 +223,13 @@ ON CONFLICT (key) DO NOTHING; ALTER TABLE entries ADD COLUMN IF NOT EXISTS photo_original_path VARCHAR(255); ALTER TABLE photo_jobs ADD COLUMN IF NOT EXISTS applied BOOLEAN NOT NULL DEFAULT false; + +CREATE TABLE IF NOT EXISTS modules ( + id SERIAL PRIMARY KEY, + name VARCHAR(200) NOT NULL UNIQUE, + lessons_count INT NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ DEFAULT now() +); + +ALTER TABLE entries ADD COLUMN IF NOT EXISTS module_id INT REFERENCES modules(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_entries_module_id ON entries(module_id); diff --git a/public/admin.js b/public/admin.js index 31a5ac0..e7c79b9 100644 --- a/public/admin.js +++ b/public/admin.js @@ -56,6 +56,7 @@ function buildSidebar(active) { { page: 'trash', label: 'Корзина', icon: 'trash-2' }, ]; const adminNav = [ + { page: 'modules', label: 'Темы модулей', icon: 'layers' }, { page: 'branches', label: 'Филиалы', icon: 'building-2' }, { page: 'users', label: 'Пользователи', icon: 'user-cog' }, { page: 'worker', label: 'Воркер ИИ', icon: 'bot' }, diff --git a/public/index.html b/public/index.html index dec638b..647344a 100644 --- a/public/index.html +++ b/public/index.html @@ -127,6 +127,13 @@ nav a:hover{color:var(--text)} + +
diff --git a/public/journal.html b/public/journal.html index 379665b..d60e4d1 100644 --- a/public/journal.html +++ b/public/journal.html @@ -43,6 +43,7 @@
+
@@ -76,6 +77,10 @@
+
+ + +