Черновик отдаётся машинно; ссылка на список

Формат text записывает спорное слово как {основной|вариант|вариант} - ровно
тот выбор, что стоял перед человеком. Языковая модель разрешает такие места
по смыслу фразы: распознавание слышит слово отдельно, модель видит
предложение целиком. Формат json отдаёт голоса как есть, порог выбирает
вызывающая сторона.

Промпт и порядок опроса записаны в docs. Там же оговорено, чего приём
не делает: пропущенное на записи он не восстанавливает, и дописывать
слова модели прямо запрещено.

Со страниц записи и черновика не было пути назад, кроме кнопки браузера.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-18 16:07:37 +05:00
co-authored by Claude Opus 5
parent 7da85729e5
commit 839145179c
6 changed files with 213 additions and 3 deletions
+9
View File
@@ -164,6 +164,12 @@ def render_draft(draft: dict, job_id: str, token: str = "",
mark {{ background:#ffe89a; color:#22201d; padding:0 2px; border-radius:2px; }}
.alt {{ color:var(--dim); font-size:13px; margin-left:3px; }}
.gap {{ color:var(--warn); font-size:13px; padding:6px 0; font-weight:600; }}
.nav {{ font-size:13px; margin:-4px 0 10px; }}
.nav a {{ color:var(--dim); }}
.nav a:hover {{ color:var(--fg); }}
.nav {{ font-size:13px; margin:-4px 0 10px; }}
.nav a {{ color:var(--dim); }}
.nav a:hover {{ color:var(--fg); }}
.sticky {{ position:sticky; top:0; z-index:5; background:var(--bg);
padding:8px 0 6px; border-bottom:1px solid var(--line); }}
audio {{ width:100%; margin:0; }}
@@ -173,6 +179,8 @@ def render_draft(draft: dict, job_id: str, token: str = "",
</style></head><body><div class="wrap">
<h1>Черновик {html.escape(job_id[:8])}
<button class="copy" data-src="plain">скопировать для Word</button></h1>
<div class="nav"><a href="/v1/jobs/view{suffix}">← к списку</a>
&middot; <a href="/v1/jobs/{html.escape(job_id)}/view{suffix}">к расшифровке</a></div>
<div class="stats">
<div class="stat"><span class="k">Моделей</span><span class="v">{draft.get("models", 1)}</span></div>
<div class="stat"><span class="k">Слов</span><span class="v">{total}</span></div>
@@ -314,6 +322,7 @@ def render_job(job: dict, token: str = "") -> str:
button.copy:hover {{ border-color:var(--dim); }}
</style></head><body><div class="wrap">
<h1>Расшифровка {html.escape(str(job.get("job_id", ""))[:8])} - {html.escape(str(job.get("filename", "")))}</h1>
<div class="nav"><a href="/v1/jobs/view{token_suffix}">← к списку</a></div>
<div class="stats">{_stats_row(job)}</div>
{player}