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

Результаты, обработанные до 0.14.0, не содержат массива sentences. Пустой
блок разметки выглядел бы поломкой страницы - теперь он говорит, что нужно
отправить запись заново.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-17 14:03:46 +05:00
co-authored by Claude Opus 5
parent 774f3d0027
commit 456e86ef9a
2 changed files with 25 additions and 5 deletions
+16 -5
View File
@@ -67,6 +67,20 @@ def render_job(job: dict) -> str:
# Внутри <script> символ < опасен: последовательность </script> в тексте
# закрыла бы тег и всё, что дальше, браузер прочитал бы как разметку.
if sentences:
roles_block = (
'<div class="hint">Вставьте ответ модели - строку из букв M и C, '
'по одной на предложение. Диалог соберётся ниже, и станет видно, '
'где ошибка: в тексте от сервиса или в расстановке ролей.</div>'
'<textarea id="roles" placeholder="MMCMMCC..." spellcheck="false"></textarea>')
else:
# Массив предложений появился в 0.14.0. Без него собирать диалог не из
# чего, и молчаливо пустой блок выглядел бы поломкой страницы.
roles_block = (
'<div class="hint bad">В этом результате нет разбивки на предложения: '
'запись обработана версией сервиса старше 0.14.0. Отправьте её заново, '
'чтобы собрать диалог по ролям.</div>')
payload = json.dumps(
[{"n": s["n"], "text": s["text"], "start": s["start"]} for s in sentences],
ensure_ascii=False).replace("<", "\\u003c").replace("\u2028", "\\u2028")
@@ -119,10 +133,7 @@ def render_job(job: dict) -> str:
{"".join(rows) or "<div class=hint>реплик нет</div>"}
<h2>Разметка ролей</h2>
<div class="hint">Вставьте ответ модели - строку из букв M и C, по одной
на предложение. Диалог соберётся ниже, и станет видно, где ошибка:
в тексте от сервиса или в расстановке ролей.</div>
<textarea id="roles" placeholder="MMCMMCC..." spellcheck="false"></textarea>
{roles_block}
<div id="check" class="hint"></div>
<div id="out" class="roles"></div>
</div>
@@ -151,5 +162,5 @@ function draw() {{
buf.push(s.text.replace(/[&<>]/g, c => ({{'&':'&amp;','<':'&lt;','>':'&gt;'}})[c])); }});
flush(); out.innerHTML = html;
}}
box.addEventListener('input', draw);
if (box) box.addEventListener('input', draw);
</script></body></html>"""