Files
wiki/tasks/snowbike-rag/docs/BRD-UI.md
2026-04-12 21:55:33 +03:00

5.7 KiB
Raw Blame History

Бизнес-требования: Веб-интерфейс для Snowbike RAG

1. Проблема

API работает, но пользоваться им можно только через curl. Нужен красивый и удобный веб-интерфейс для поиска по базе знаний сноубайков.


2. Что хотим получить

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

URL: https://openclaw.mva154.duckdns.org/snowbike-rag/


3. Функциональные требования

3.1 Страница поиска (главная)

• Поле ввода запроса (большое, по центру экрана) • Кнопка «Найти» или отправка по Enter • История последних запросов (локально, в браузере)

3.2 Результаты поиска

• Ответ LLM — красиво оформленный (Markdown → HTML) • Источники — список карточек:

  • Дата сообщения
  • Название топика (цветовая метка)
  • Превью текста (2-3 строки, с выделением ключевых слов)
  • Ссылка на оригинальное сообщение в Telegram (если возможно: https://t.me/snowbikerussia/{message_id}) • Количество найденных источников • Время ответа (мс)

3.3 Фильтры (опционально, но желательно)

• Выбор топика (чекбоксы или мультиселект) • Сортировка: по релевантности / по дате • Лимит результатов: 5 / 10 / 20

3.4 Статистика

• Ссылка или панель «О базе данных»:

  • Всего сообщений
  • Количество топиков
  • Последнее обновление
  • Статус ChromaDB (заполняется / готов)

4. Технические требования

4.1 Стек

• Flask (уже есть, порт 5557) • HTML + CSS + JavaScript (без сборщиков, без React/Vue) • Tailwind CSS через CDN (для быстрой стилизации) • Markdown-рендеринг ответов: marked.js через CDN • Подсветка синтаксиса в коде (если есть в ответах): highlight.js через CDN

4.2 Адаптивность

• Мобильная версия (responsive) • Хорошо выглядит на экране телефона (основной сценарий использования)

4.3 Скорость

• Страница загружается < 1 секунды • Запрос показывает спиннер/анимацию загрузки • Результаты появляются плавно (fade-in)

4.4 Цветовая схема

• Тёмная тема (по умолчанию) • Акцентный цвет: синий (#3B82F6) или оранжевый (#F97316) • Фон: #0F172A (тёмно-синий) • Текст: #F1F5F9 (светло-серый) • Карточки: #1E293B (чуть светлее фона)


5. UX-требования

5.1 Поле ввода

• Placeholder: «Спросите про сноубайки...» • Автофокус при загрузке • Многострочное поле (textarea, 2 строки) • Кнопка отправки справа (иконка 🔍)

5.2 Ответ

• Заголовок: «Ответ» • Текст ответа — основной контент (крупный шрифт) • Источники — ниже ответа, в виде списка • Каждый источник — мини-карточка с датой, топиком, превью

5.3 Анимации

• Спиннер при загрузке (dots или skeleton) • Плавное появление результатов (fadeIn 0.3s) • Hover-эффект на карточках источников

5.4 Ошибки

• Если API недоступен: «Сервис временно недоступен» • Если нет результатов: «По вашему запросу ничего не найдено» • Если запрос слишком короткий: «Введите более точный запрос»


6. Что НЕ входит

• Авторизация и пользовательские аккаунты • История запросов на сервере (только localStorage) • Экспорт результатов (PDF, Markdown) • Голосовой ввод • Переключение языка


7. Критерии приёмки

Открывается https://openclaw.mva154.duckdns.org/snowbike-rag/ — видно страницу поиска Ввод «какое масло для Polaris» → ответ с источниками за < 15 секунд Ответ красиво оформлен (заголовки, списки, выделение) Источники — карточки с датой, топиком, превью Хорошо выглядит на телефоне Тёмная тема Загрузка показывает спиннер


8. Приоритет

Сейчас: Страница поиска + результаты + адаптивность Позже: Фильтры по топикам, статистика, ссылки в Telegram