133 lines
5.6 KiB
Markdown
133 lines
5.6 KiB
Markdown
---
|
||
pageType: source
|
||
id: source.brd
|
||
title: BRD
|
||
sourceType: local-file
|
||
sourcePath: /home/node/.openclaw/workspace/tasks/snowbike-rag/BRD.md
|
||
ingestedAt: 2026-04-09T22:22:18.682Z
|
||
updatedAt: 2026-04-09T22:22:18.682Z
|
||
status: active
|
||
---
|
||
|
||
# BRD
|
||
|
||
## Source
|
||
- Type: `local-file`
|
||
- Path: `/home/node/.openclaw/workspace/tasks/snowbike-rag/BRD.md`
|
||
- Bytes: 5102
|
||
- Updated: 2026-04-09T22:22:18.682Z
|
||
|
||
## Content
|
||
```text
|
||
# Бизнес-требования: Семантический поиск по данным Telegram (Сноубайк Россия)
|
||
|
||
## 1. Проблема
|
||
|
||
У нас есть 155 000 сообщений из Telegram-группы «Сноубайк Россия» (12 топиков). Сейчас поиск работает только по точным словам внутри Telegram — найти нужный ответ среди тысяч сообщений практически невозможно.
|
||
|
||
**Пример:** чтобы узнать, какое масло рекомендуют для Polaris 850, нужно:
|
||
- Знать точную формулировку
|
||
- Листать сотни сообщений вручную
|
||
- Объединять ответы из разных обсуждений
|
||
|
||
---
|
||
|
||
## 2. Что хотим получить
|
||
|
||
Систему, которая **отвечает на вопросы** по базе знаний, а не просто ищет сообщения.
|
||
|
||
**Примеры запросов:**
|
||
• «Какое масло рекомендуют для Polaris 850?»
|
||
• «Где лучше кататься зимой в Подмосковье?»
|
||
• «Какие гусеницы подходят на Timber S800?»
|
||
• «Кто продавал запчасти для Lynx в Китае?»
|
||
• «Какие проблемы бывают с Yamaha Mountain Max?»
|
||
|
||
---
|
||
|
||
## 3. Как должен работать
|
||
|
||
1. Пользователь задаёт вопрос на русском языке
|
||
2. Система находит 10–20 самых релевантных сообщений (по смыслу, не по точным словам)
|
||
3. LLM формирует ответ на основе найденных сообщений
|
||
4. В ответе указаны источники: дата, автор, топик
|
||
5. Если информации недостаточно — система честно говорит об этом
|
||
|
||
---
|
||
|
||
## 4. Ключевые требования
|
||
|
||
### 4.1 Поиск
|
||
• Понимать смысл запроса (не только точные слова)
|
||
• Допускать опечатки и синонимы
|
||
• Искать по всем 12 топикам одновременно
|
||
• Фильтровать по конкретному топику (опционально)
|
||
• Сортировать по релевантности или дате
|
||
|
||
### 4.2 Ответы
|
||
• На русском языке
|
||
• Краткие и по существу
|
||
• С указанием источников (кто, когда, в каком топике)
|
||
• Агрегированные (если 5 человек рекомендуют одно масло — обобщить)
|
||
|
||
### 4.3 Данные
|
||
• Работать с сырыми данными Telegram Collector
|
||
• Обновляться ежедневно после загрузки новых сообщений
|
||
• Не ломать существующую систему сбора данных
|
||
|
||
### 4.4 Скорость
|
||
• Ответ на запрос: до 3 секунд
|
||
• Индексация новых сообщений: до 1 минуты в день
|
||
|
||
### 4.5 Стоимость
|
||
• LLM: ~$0.005 за запрос (приемлемо)
|
||
• Embeddings: бесплатно (локальная модель)
|
||
• Хранение: ~1.5 ГБ дополнительно (приемлемо)
|
||
|
||
---
|
||
|
||
## 5. Что НЕ входит в эту задачу
|
||
|
||
• Голосовой интерфейс (добавим позже)
|
||
• Поиск по медиа-файлам (фото, видео)
|
||
• Учёт пользователей и авторизация
|
||
• Мобильное приложение
|
||
• Перевод на другие языки
|
||
|
||
---
|
||
|
||
## 6. Пользователи
|
||
|
||
• **Слава** — основной пользователь
|
||
• Потенциально: друзья, участники группы (позже, через веб-интерфейс)
|
||
|
||
---
|
||
|
||
## 7. Критерии приёмки
|
||
|
||
✅ Ответ на вопрос «какое масло для Polaris 850» — содержит конкретные рекомендации с источниками
|
||
✅ Ответ на вопрос «где кататься в Подмосковье» — содержит локации из чата
|
||
✅ Система честно говорит «не знаю», когда информации нет
|
||
✅ Ежедневно обновляется после cron-загрузки
|
||
✅ Работает без интернета (embeddings), кроме LLM
|
||
|
||
---
|
||
|
||
## 8. Приоритет и этапы
|
||
|
||
**Этап 1 (MVP):** Индексация + поиск + LLM ответ — **сейчас**
|
||
**Этап 2:** Веб-интерфейс (Flask UI) — **позже**
|
||
**Этап 3:** Голосовой запрос — **позже**
|
||
**Этап 4:** Множественные источники (другие каналы) — **когда понадобится**
|
||
|
||
```
|
||
|
||
## Notes
|
||
<!-- openclaw:human:start -->
|
||
<!-- openclaw:human:end -->
|
||
|
||
## Related
|
||
<!-- openclaw:wiki:related:start -->
|
||
- No related pages yet.
|
||
<!-- openclaw:wiki:related:end -->
|