From 835c0b3cc36e09866d575a6712b3298a2f0bd3e9 Mon Sep 17 00:00:00 2001 From: AR 15 M4 Date: Thu, 23 Apr 2026 10:43:41 +0500 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=BB=D0=B0=D0=BD=20=D0=A1=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D1=82=D0=B0=202.5=20=E2=80=94=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=20=D0=BF=D0=B8=D0=BB=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit По итогам Спринтов 1–2 накопился технический долг и несколько косяков, которые видно при живой работе в «Песочнице». Выделяем промежуточный спринт-доработок перед заходом на Спринт 3: - Качество RAG: чанкер тащит в базу markdown-ссылки, блоки навигации вроде «Вернуться на:», дубликаты меню — из-за этого в LLM уходит мусор вместо полезного контекста. - UI: ответ ассистента рендерится plain text с сырыми ** и дефисами списков — в чате это читать тяжело. - Системный промпт зашит в services/llm_client.py — перед Спринтом 3 (редактор промпта) его логично вынести в отдельный файл. - Логи: logger.exception сейчас съедается конфигом uvicorn, traceback при 500-х не виден — диагностика вслепую. - README не обновлялся с init-коммита, не отражает ни Спринта 1, ни 2. Co-Authored-By: Claude Opus 4.7 (1M context) --- SPRINTS.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/SPRINTS.md b/SPRINTS.md index 8200703..c306b35 100644 --- a/SPRINTS.md +++ b/SPRINTS.md @@ -87,6 +87,35 @@ --- +## Спринт 2.5. Доработки после пилота Спринтов 1–2 + +### Цель +Закрыть технический долг, накопленный за первые два спринта: почистить чанки от markdown-мусора, сделать ответ агента читаемым в UI, подготовить системный промпт к вынесению в редактор (Спринт 3) и навести порядок в логах и README. + +### Статус: ⏳ Запланирован + +### Задачи + +**Качество RAG:** +- [ ] Почистить чанки: убрать markdown-ссылки `[текст](url)`, блоки навигации `**Вернуться на:**`, дубликаты меню; добавить нормализацию/переиндексацию текущей базы (или documented reindex procedure) + +**UI:** +- [ ] Markdown-рендер ответов ассистента в «Песочнице» (жирный, курсив, списки, код); реплики пациента оставить plain text + +**Системность:** +- [ ] Вынести системный промпт из `services/llm_client.py` в отдельный файл (например, `prompts/system_prompt.md`), загружать при старте — задел под Спринт 3 +- [ ] Привести логи в порядок: настроить root-logger так, чтобы `logger.exception` писался в stderr/файл; не ломать uvicorn access/error +- [ ] Обновить `README.md` под текущее состояние: две страницы, `/chat` + `/threads`, SQLite + Alembic, как запустить и как мигрировать + +### Критерий готовности +- [ ] Загружаем свежую wiki-статью → в её чанках нет markdown-ссылок и блоков «Вернуться на:» +- [ ] На «Песочнице» ответ агента рендерится с жирным/курсивом/списками +- [ ] Системный промпт хранится в отдельном файле, правится без трогания кода +- [ ] При ошибке в `/chat` в логах виден читаемый traceback +- [ ] README описывает актуальное состояние (две страницы, эндпоинты, запуск, миграции) + +--- + ## Спринт 3. Настройки агента: системный промпт и правила ### Цель