First commit

This is base for automatization translating
This commit is contained in:
anker-na-20
2026-05-21 10:45:27 +03:00
commit b6dd80e749
18 changed files with 222507 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
-- Таблица документов (исходных файлов)
CREATE TABLE IF NOT EXISTS documents (
id SERIAL PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
file_type VARCHAR(20) NOT NULL, -- pdf, docx, txt, ...
original_path TEXT NOT NULL, -- путь к файлу в /data/input
output_path TEXT, -- итоговый PDF с переводом
source_language VARCHAR(10) DEFAULT 'zh',
target_language VARCHAR(10) DEFAULT 'ru',
page_count INT,
status VARCHAR(30) DEFAULT 'pending', -- pending, processing, completed, failed
error_message TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
+37
View File
@@ -0,0 +1,37 @@
CREATE TABLE IF NOT EXISTS translations (
id SERIAL PRIMARY KEY,
source_text TEXT NOT NULL,
translated_text TEXT NOT NULL,
raw_output TEXT,
model_name VARCHAR(100) NOT NULL,
prompt TEXT NOT NULL,
prompt_id INT,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS golden_examples (
id SERIAL PRIMARY KEY,
source_text TEXT NOT NULL, -- китайский
reference_text TEXT NOT NULL, -- идеальный русский перевод
domain VARCHAR(50) DEFAULT 'tech',
description TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by VARCHAR(100)
);
CREATE TABLE IF NOT EXISTS prompt_runs (
id SERIAL PRIMARY KEY,
prompt_id INT NOT NULL REFERENCES prompts(id),
model_name VARCHAR(100) NOT NULL,
golden_example_id INT NOT NULL REFERENCES golden_examples(id),
source_text TEXT NOT NULL,
reference_text TEXT NOT NULL,
model_output TEXT NOT NULL,
llm_score NUMERIC, -- оценка LLM-оценщика (0..10)
bleu_score NUMERIC,
other_metrics JSONB,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
+10
View File
@@ -0,0 +1,10 @@
CREATE TABLE IF NOT EXISTS translations (
id SERIAL PRIMARY KEY,
source_text TEXT NOT NULL,
translated_text TEXT NOT NULL,
raw_output TEXT,
model_name VARCHAR(100) NOT NULL,
prompt TEXT NOT NULL,
prompt_id INT,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
+40
View File
@@ -0,0 +1,40 @@
-- docker/db/prompts.sql
-- Таблица для хранения версий промптов
CREATE TABLE IF NOT EXISTS prompts (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL, -- логическое имя, напр. 'zh_ru_tech'
version INT NOT NULL, -- 1,2,3...
body TEXT NOT NULL, -- текст промпта
is_active BOOLEAN NOT NULL DEFAULT FALSE,
comment TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE UNIQUE INDEX IF NOT EXISTS ux_prompts_name_version
ON prompts(name, version);
-- Первая версия системного промпта zh_ru_tech (config/prompts/zh_ru_tech.v1.md)
INSERT INTO prompts (name, version, body, is_active, comment)
VALUES (
'zh_ru_tech',
1,
$PROMPT$
Ты профессиональный переводчик технической документации с китайского языка на русский.
Требования к переводу:
- Переводи строго на РУССКИЙ язык.
- Не добавляй объяснений, комментариев, рассуждений или перевода на другие языки.
- Сохраняй структуру исходного текста: абзацы, списки, заголовки.
- Не изменяй числа, формулы, единицы измерения и обозначения.
- Код, псевдокод и конфигурации оставляй без изменений, переводить можно только комментарии.
- Термины переводи последовательно: если один раз перевёл термин определённым образом, используй тот же перевод далее.
Ответ:
- Выведи только готовый перевод на русском языке.
- Не добавляй пояснений до или после перевода.
$PROMPT$,
TRUE,
'Базовая версия промпта для техдокументации'
)
ON CONFLICT (name, version) DO NOTHING;