mirror of
https://github.com/wasrusgen/zov-tech.git
synced 2026-06-03 18:04:47 +00:00
111 lines
8.5 KiB
Markdown
111 lines
8.5 KiB
Markdown
# ROADMAP — zov-tech CRM MiniApp
|
||
> Обновляется агентами автоматически. Последнее обновление: 2026-05-18 (вечер)
|
||
|
||
---
|
||
|
||
## 🎯 Продуктовая цель
|
||
Telegram MiniApp для 112 менеджеров салонов ЗОВ: подбор техники, замеры, сборки, CRM-клиенты.
|
||
Привязка менеджеров к куратору через инструмент. Клиентский кабинет — воронка покупки.
|
||
|
||
---
|
||
|
||
## ✅ Готово (реализовано)
|
||
|
||
### Инфраструктура
|
||
- [x] VPS на Docker (FastAPI + aiogram + Caddy)
|
||
- [x] GitHub Pages для MiniApp (auto-deploy при push в master)
|
||
- [x] Google Sheets как БД
|
||
- [x] HMAC-SHA256 аутентификация через Telegram initData
|
||
- [x] Pre-push hook: CSS-линтер + UI Playwright блокируют сломанный код
|
||
- [x] CI: GitHub Actions запускает тесты при каждом push
|
||
|
||
### Модули MiniApp (менеджер/admin)
|
||
- [x] Список клиентов + поиск + карточка клиента
|
||
- [x] Создание/редактирование клиента
|
||
- [x] Замеры: создание, фото, закрытие заявки
|
||
- [x] Заявка на замер (назначение замерщику)
|
||
- [x] Сборки: создание, список, детальная карточка
|
||
- [x] Подбор техники (proposals): создание, варианты, голосование клиента
|
||
- [x] Подбор через AI (GigaChat/Claude)
|
||
- [x] Приватность клиентских данных (имена/телефоны скрыты визуально)
|
||
- [x] 4 темы оформления: Default, Foundry, Boardroom, Atelier
|
||
- [x] Экран #/me — профиль для всех ролей (менеджер / сотрудник / клиент)
|
||
- [x] Экран #/master — входящие заявки для замерщика/сборщика
|
||
- [x] Экран #/inbox — входящие задачи менеджера (решение по подбору)
|
||
|
||
### Качество
|
||
- [x] 15-секундный таймаут на все fetch-запросы (все модули)
|
||
- [x] CSS-линтер (запрещённые паттерны + WCAG-контраст)
|
||
- [x] Smoke API тесты (12 эндпоинтов)
|
||
- [x] Полный тест кабинета менеджера (19 сценариев)
|
||
- [x] UI Playwright smoke (15 проверок — все экраны включая #/inbox, #/me)
|
||
- [x] CI: smoke-ui.yml — Playwright против GitHub Pages после каждого деплоя
|
||
- [x] Docker login на VPS (без 429 при ребилде)
|
||
|
||
---
|
||
|
||
## 🔄 В работе
|
||
|
||
| Задача | Агент | Статус |
|
||
|--------|-------|--------|
|
||
| Доступ сервисного аккаунта к Google Drive (отгрузки/поступления) | devops | ⏳ ждём подтверждения |
|
||
|
||
---
|
||
|
||
## 📋 Бэклог (приоритизирован)
|
||
|
||
### Приоритет 1 — Завершение MVP менеджера
|
||
- [x] Экран «Мой статус» — #/me реализован
|
||
- [x] Входящие задачи менеджера — #/inbox реализован
|
||
- [ ] Отгрузки и поступления склада (⏳ блокер: share Drive с zov-backend@zov-sborka.iam.gserviceaccount.com)
|
||
|
||
### Приоритет 2 — Клиентский кабинет ✅
|
||
- [x] Базовый клиентский экран #/c/cabinet
|
||
- [x] История заказов клиента #/c/orders (подборы + сборки, таймлайн)
|
||
- [x] Самозамер #/c/selfmeasure (5-шаговый мастер + бэкенд)
|
||
- [x] Детальная карточка сборки #/c/assembly/:id
|
||
- [x] Цена замера: 2500₽ + 40₽/км за КАД — везде в UI
|
||
- [ ] Калькулятор стоимости кухни — отложен (недостаточно данных)
|
||
|
||
### Приоритет 2б — Договоры и документы (новый блок)
|
||
- [ ] **Модуль Contracts** — лист Contracts в Sheets: номер, дата, стоимость кухни/техники/камня, схема оплаты (50/70/100%), аванс, остаток, срок изготовления, тип фасадов
|
||
- [ ] **Личный дашборд сборщика** (#/master/dashboard): календарь работ, заработок по дням, итого за период (8-9% от kitchen_price)
|
||
- [ ] **Платформенный модуль подписи** (SignRequest) — единая инфраструктура для всех документов:
|
||
- Подпись пальцем на экране (canvas) когда клиент/сторона присутствует
|
||
- Удалённая подпись: ссылка в Telegram/SMS → клиент подписывает со своего устройства
|
||
- Подпись представителя (строитель, уполномоченный) с отметкой «подписал представитель»
|
||
- Отметка «без подписи» с причиной (клиент недоступен)
|
||
- Применимо к: актам сборки, актам доставки (водители/экспедиторы), актам приёмки товара, будущим документам
|
||
- **Два метода подписи (оба реализуются):**
|
||
- `canvas` — клиент рисует подпись пальцем на экране, сохраняется PNG
|
||
- `code` — бот/SMS отправляет одноразовый код, клиент вводит = подтверждение через Telegram ID или номер телефона
|
||
- Поля: `sign_token` (72ч), `signed_via` (canvas/code/proxy/absent), `signed_by_name`, `signed_by_tg_id`, `signed_by_phone`, `signature_file`, timestamp
|
||
- [ ] **Цифровой акт сборки** (#/c/act/:id): Акт№3 (сборка+выезд) + Акт№4 (приёмка товара) — использует SignRequest
|
||
- [ ] **Прайс на доп. работы** — голосовой ввод → форматированный PDF/JPEG с факсимиле → отправка в бот или на email; источник: `! ПРАЙС-ЛИСТ.xlsx` (41 позиция, уже структурирован)
|
||
- [ ] ⚠️ Уточнить: сборщик получает 8% или 9% от стоимости кухни (прайс неоднозначен)
|
||
- [ ] ⚠️ Уточнить: выезд замерщика 2500₽ vs выезд на сборку 1500₽ — разные тарифы, проверить
|
||
|
||
### Приоритет 3 — Аналитика и управление
|
||
- [ ] Дашборд куратора: активность менеджеров, воронка сделок
|
||
- [ ] Реестр менеджеров: поле `last_order_date`, 90-дневный контроль активности
|
||
- [ ] Метрики: количество замеров, подборов, сборок по менеджеру
|
||
|
||
### Приоритет 4 — Монетизация
|
||
- [ ] Платёжная интеграция (Telegram Stars / ЮKassa)
|
||
- [ ] Статусы подписки менеджеров (бесплатно / платно)
|
||
|
||
### Технический долг
|
||
- [ ] `Content-Type: application/json` в `_fetchWithTimeout` (все модули)
|
||
- [ ] Аудит `app.js` роутера на edge cases
|
||
- [ ] Тест карточки клиента в Playwright (нужна фикстура)
|
||
- [ ] Staging-окружение (отдельный VPS или Docker Compose override)
|
||
- [ ] **platform.js** — абстракция над Telegram.WebApp для миграции на VK Max (Фаза 1: Telegram; Фаза 2: VK Max отдельно; параллельное тестирование двух систем не ведём)
|
||
- [ ] **Пункт ПЭП в договоре** — добавить в шаблон договора купли-продажи согласие на простую электронную подпись (ФЗ-63) для актов через Telegram/SMS
|
||
|
||
---
|
||
|
||
## 🚫 Не в скоупе (решение принято)
|
||
- Нативное мобильное приложение (остаётся MiniApp)
|
||
- База знаний, Обучение, FAQ (отдельный продукт)
|
||
- Партнёрская комиссия от производителей
|