Add AI auto-check worker, share link message/link fields, and update journal/settings UI

This commit is contained in:
dev
2026-09-11 10:29:49 +03:00
parent 3850fe35e4
commit b7e798b867
20 changed files with 1403 additions and 127 deletions
+30
View File
@@ -29,11 +29,24 @@ CREATE TABLE IF NOT EXISTS entries (
student_name VARCHAR(150) NOT NULL,
group_id INT NOT NULL REFERENCES groups(id),
description TEXT NOT NULL,
description_original TEXT,
description_ai TEXT,
ai_status VARCHAR(20) NOT NULL DEFAULT 'pending',
ai_checked_at TIMESTAMPTZ,
ai_error TEXT,
photo_path VARCHAR(255),
deleted_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT now()
);
ALTER TABLE entries ADD COLUMN IF NOT EXISTS description_original TEXT;
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;
CREATE INDEX IF NOT EXISTS idx_entries_ai_pending ON entries(id) WHERE ai_status = 'pending' AND deleted_at IS NULL;
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT
@@ -41,6 +54,10 @@ CREATE TABLE IF NOT EXISTS settings (
INSERT INTO settings (key, value) VALUES ('spam_interval_min', '30')
ON CONFLICT (key) DO NOTHING;
INSERT INTO settings (key, value) VALUES ('ai_prompt', 'Ты — редактор текстов для педагогического журнала. Исправь грамматические, орфографические и пунктуационные ошибки. Сохрани смысл и стиль. Верни ТОЛЬКО исправленный текст, без пояснений.')
ON CONFLICT (key) DO NOTHING;
INSERT INTO settings (key, value) VALUES ('ai_autocheck_enabled', 'true')
ON CONFLICT (key) DO NOTHING;
CREATE TABLE IF NOT EXISTS share_links (
id SERIAL PRIMARY KEY,
@@ -53,6 +70,8 @@ CREATE TABLE IF NOT EXISTS share_links (
anonymize_names BOOLEAN DEFAULT false,
expires_at TIMESTAMPTZ,
access_password_hash VARCHAR(255),
message TEXT,
link_url VARCHAR(500),
created_at TIMESTAMPTZ DEFAULT now()
);
@@ -86,6 +105,17 @@ CREATE TABLE IF NOT EXISTS project_files (
detached_at TIMESTAMPTZ
);
CREATE TABLE IF NOT EXISTS entry_photos (
id SERIAL PRIMARY KEY,
entry_id INT NOT NULL REFERENCES entries(id) ON DELETE CASCADE,
photo_path VARCHAR(255) NOT NULL,
caption TEXT,
sort_order INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_entry_photos_entry_id ON entry_photos(entry_id);
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,