feat: LocalPro Finder — спецификация фичей (отзывы, рейтинги, чат)

This commit is contained in:
2026-07-03 14:28:34 +00:00
parent 6ecb110768
commit 33882015d5
+198
View File
@@ -0,0 +1,198 @@
# LocalPro Finder — Спецификация фичей (Reviews, Ratings, Chat)
## Анализ конкурентов
### TaskRabbit
- **Отзывы:** Только после завершения задачи, верифицированные покупателем
- **Рейтинг:** 5-звёздочный с разбивкой по категориям (качество, пунктуальность, коммуникация)
- **Чат:** Встроенный мессенджер между клиентом и мастером в приложении
- **Безопасность:** Проверка личности и криминального прошлого мастера
### Thumbtack
- **Отзывы:** Детальные текстовые отзывы с фото работ, верификация через платформу
- **Рейтинг:** 5-звёздочный + "Top Pro" бейдж для лучших мастеров
- **Чат:** Встроенный чат до и после найма мастера
### HomeAdvisor
- **Отзывы:** Верифицированные отзывы с подтверждением работы, True Cost Guide
- **Рейтинг:** 5-звёздочный + лицензия/страховка мастера
- **Чат:** Через платформу, без показа личных контактов до найма
### Профи.ру (RU)
- **Отзывы:** Только после работы, проверка каждого отзыва, "Пять с плюсом" бейдж
- **Рейтинг:** 5-звёздочный + количество отзывов влияет на позицию в выдаче
- **Чат:** Мастера пишут сами клиенту, чат внутри платформы
---
## Фича 1: Система отзывов и рейтингов
### Модель данных
```yaml
Review:
id: uuid
master_id: uuid
client_id: uuid
project_id: uuid (обязательно для верификации)
rating: int(1-5)
categories:
quality: int(1-5)
punctuality: int(1-5)
communication: int(1-5)
professionalism: int(1-5)
text: string(max 2000)
photos: array[media_url] (до 5 фото работ)
verified: bool (только после завершения проекта)
helpful_votes: int
created_at: datetime
updated_at: datetime
```
### Правила
- Отзыв можно оставить **только** после завершённого проекта
- Каждый отзыв проходит модерацию (AI + ручная проверка для подозрительных)
- Мастер может ответить на отзыв в течение 7 дней
- Клиент может отредактировать отзыв в течение 48 часов
- Отзывы с фото получают приоритет в выдаче
### Расчёт рейтинга мастера
```python
rating = (reviews.aggregate(rating) * 0.6 +
reviews.aggregate(quality) * 0.25 +
reviews.count() * 0.15)
# Минимум 3 отзыва для отображения рейтинга
```
### Бейджи и уровни
- ⭐ "Новичок" — < 10 отзывов
- ⭐⭐ "Надёжный" — 10+ отзывов, рейтинг > 4.5
- ⭐⭐⭐ "Профи" — 50+ отзывов, рейтинг > 4.7
- 🏆 "Мастер года" — топ-3 в категории по отзывам
---
## Фича 2: Встроенный чат
### Архитектура
```yaml
ChatMessage:
id: uuid
chat_id: uuid (project-based)
sender_id: uuid
content_type: enum[text, image, file, voice]
content: string/blob
reply_to: uuid (reply to message)
read_at: datetime
created_at: datetime
Chat:
id: uuid
project_id: uuid
master_id: uuid
client_id: uuid
status: enum[active, completed, archived]
last_message_at: datetime
```
### Функционал
- **Текстовые сообщения** — мгновенная доставка (WebSocket)
- **Голосовые сообщения** — до 2 минут, конвертация в текст для поиска
- **Фото работ** — мастер может присылать фото процесса/результата
- **Файлы** — договоры, сметы, документы
- **Ответ на сообщение** (reply)
- **Статус прочтения** (двойные галочки)
- **Поиск по чату** — по ключевым словам
### Правила безопасности
- Контакты мастеров скрыты до начала проекта
- Чат ведётся только в рамках активного проекта
- История сохраняется 2 года после завершения
- Модерация на предмет оскорблений и спама
---
## Фича 3: AI-оценка стоимости (до выезда)
### Модель
```yaml
PriceEstimate:
project_id: uuid
category: string
location: geo
complexity: enum[simple, medium, complex]
estimated_cost_min: decimal
estimated_cost_max: decimal
confidence: float(0-1)
factors:
- {name: "area", value: sqm}
- {name: "materials_needed": bool}
- {name: "urgency": enum[standard, rush]}
```
### Источники данных для обучения
- Исторические цены по категориям и регионам
- Средние чеки конкурентов (TaskRabbit, Профи.ру)
- Региональные коэффициенты стоимости работ
- Сезонность спроса
---
## Фича 4: Онлайн-диагностика проблемы
### Flow
1. Клиент описывает проблему (текст + фото)
2. AI анализирует и задаёт уточняющие вопросы
3. Мастер получает диагностику перед выездом
4. Мастер подтверждает/корректирует оценку
### Пример
```
Клиент: "Потёк кран на кухне, капает"
AI → Вопросы: "Какой тип крана? (однорычажный / с двумя ручками)"
Мастер → "Выезжаю, замена картриджа ~1500₽"
```
---
## Фича 5: Подписка на обслуживание дома
### Тарифы
| Пакет | Цена/мес | Включено |
|-------|----------|----------|
| Базовый | 990₽ | 1 выезд/мес, скидка 10% на доп. работы |
| Стандарт | 2490₽ | 3 выезда/мес, приоритетный вызов, скидка 20% |
| Премиум | 4990₽ | Безлимитные выезды, мастер в резерве, скидка 30% |
### Преимущества подписки
- Фиксированная цена на типовые работы
- Приоритетный выезд (в течение 2 часов)
- Персональный менеджер
- Бесплатная диагностика
---
## Технический стек для реализации
### Backend
- **Язык:** Python (FastAPI) / Node.js (NestJS)
- **База данных:** PostgreSQL + Redis (кэш рейтингов)
- **Чат:** WebSocket (Socket.IO / Pusher)
- **Хранилище медиа:** S3-compatible (MinIO)
### Frontend
- **Mobile-first:** React Native / Flutter
- **Web:** Next.js (SSR для SEO)
### AI/ML
- **Оценка стоимости:** XGBoost + исторические данные
- **Диагностика:** Fine-tuned LLM (Qwen 7B или аналог)
- **Модерация отзывов:** BERT classifier
---
## Приоритеты разработки
1. **MVP (2 недели):** Чат + базовые отзывы
2. **V1 (4 недели):** Рейтинги + AI-оценка стоимости
3. **V2 (6 недель):** Онлайн-диагностика + подписки
4. **V3 (8 недель):** Бейджи, модерация, аналитика