diff --git a/localpro-finder-spec.md b/localpro-finder-spec.md new file mode 100644 index 0000000..efaeea3 --- /dev/null +++ b/localpro-finder-spec.md @@ -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 недель):** Бейджи, модерация, аналитика