Merge origin/dev into feat/rag-clinical-guidelines
CI / ruff · pytest (pull_request) Successful in 2m9s

Conflict in app/api/routes.py: /demo/personas keeps the dev version (demo console, DB patients
with scenarios); the patient app gets its own /patient/demo-personas (synthetic ЕМИАС accounts).
Anonymous sign-in now always creates a doctor-less pseudonymous profile, since the dialog API
of #12 serves known profiles only.

Refs #77

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 15:22:29 +03:00
co-authored by Claude Opus 5.5
82 changed files with 9945 additions and 153 deletions
+5 -3
View File
@@ -9,7 +9,8 @@
- таблицы -> markdown; у таблицы-продолжения на новой странице повторяется шапка,
строка, разорванная границей страницы, склеивается;
- колонтитулы (повторяющиеся строки вверху/внизу страниц) вырезаются;
- маркеры страниц `--- стр. N ---` для ссылок на источник;
- маркеры страниц `--- стр. N ---` для ссылок на источник; абзац, перетёкший на новую
страницу, склеивается, а место перехода помечается `⟦стр. N⟧`;
- текст с картинок (блок-схемы и т.п.) берётся из figures/<имя pdf>.p<N>.txt
(ручная транскрипция) и вставляется в конец своей страницы;
- если есть manual/<имя pdf>.txt, берётся он (документы, которые автоматом
@@ -211,9 +212,10 @@ def convert(pdf_path: Path) -> str:
if not text:
continue
if first_on_page and prev and prev[0] == "text" and text[0].islower():
# абзац перетёк на новую страницу: дописываем его хвост к началу
# абзац перетёк на новую страницу: дописываем его хвост к началу, а место
# перехода помечаем ⟦стр. N⟧ — чанкер по метке ставит верную страницу в цитату
head, _, rest = text.partition("\n")
prev[1] = prev[1] + " " + head
prev[1] = prev[1] + f" ⟦стр. {num}⟧ " + head
if rest:
blocks.append(["text", rest])
else: