Рефакторинг бота — он должен поддерживать сценарии взаимодействия с пользователем
Onboarding: Сценарий 1 — «Ты дышишь этим прямо сейчас»
Пререквизит
OCR-движок распознавания PM2.5 с фото дисплея — реализован и работает.
User flow (пошагово)
Шаг 1: /start — карта Москвы
Пользователь впервые заходит в бота.
Бот отвечает:
🌍 Карта качества воздуха Москвы [карта — тепловая / точки — встроенное изображение или интерактив]Твои соседи уже передают данные. На районе сейчас 35 µg/m³.
Хочешь добавить свою точку?
[
📸 Отправить фото дисплея] [🏠 Пропустить, посмотреть карту]
Состояния:
- Карта не загрузилась → «Загружаю карту...», повтор через 3 с
- Нет данных по Москве → «Пока точек в Москве нет. Стань первым!»
- Пользователь нажал «Пропустить» → переход в главное меню (список команд)
Шаг 2: Пользователь отправляет фото дисплея
Система:
- Получает фото
- Отправляет на OCR-движок
- Распознаёт числовое значение PM2.5
Бот отвечает (сразу, без задержки):
🔄 Распознаю значение...
При успехе (2–3 секунды):
✅ Распознано: 24 µg/m³Теперь поделись геолокацией — так точка появится на карте.
[
📍 Отправить геолокацию]
При ошибке распознавания:
🤖 Не удалось разобрать значение. Попробуй сделать фото чётче — дисплей должен быть в центре кадра.[
📸 Отправить ещё раз] [✏️ Ввести вручную]
При ручном вводе:
Введи значение PM2.5 (число):
Шаг 3: Пользователь отправляет геолокацию
Бот отвечает:
🗺️ Точка определена: Москва, ЦАО Подписываю и отправляю в блокчейн...
Система:
- Подписывает данные ключом пользователя (серверным, не требуется кошелёк)
- Отправляет транзакцию в Ethereum (Hoodi)
- Ждёт подтверждения
- Обновляет агрегированные данные по району на карте
При успехе:
✅ Данные записаны в блокчейн! tx: 0xAB12...CD34Твоя точка — единственная с короной в этом районе
👑 [
👀 Смотреть карту] [📊 Мой профиль] [📢 Поделиться]
При ошибке транзакции:
⏳ Блокчейн перегружен. Данные не потеряются — опубликуем, как только пройдёт транзакция. Точка на карте появится в течение часа.
Шаг 4: Пользователь смотрит карту
Бот показывает карту Москвы с новой точкой — единственной, отмеченной короной.
🌍 Карта качества воздуха Москвы [карта с точками]
👑 Твоя точка — 24 µg/m³ (зелёная зона) Всего точек в Москве: 47 Стационарных: 31 • Мобильных: 16Ты молодец. Хочешь настроить автоматическую публикацию?
[
🔧 Собрать DIY-датчик] [👥 Рассказать друзьям]
Состояние «нет точек рядом»:
В твоём районе пока мало точек. Стань маяком — собери DIY-датчик и передавай данные каждый день.
[
🔧 Собрать DIY-датчик]
Сценарий сториз (6 кадров)
| Кадр | Изображение | Текст на экране | Звук / Субтитры |
|---|---|---|---|
| 1 | Дорожное движение, выхлопные трубы крупно, город в смоге | «Москва. Час пик.» | Шум улицы |
| 2 | Скриншот карты в боте: жёлтые и красные точки | «Кто-то уже дышит этим. 47 точек в Москве.» | — |
| 3 | Крупно: дисплей Air Purifier, значение 10, со стрелкой на цифре | «У меня на районе — 10. Всё спокойно.» | — |
| 4 | Анимация: фото отправляется в бота, затем чекмарка «распознано» | «Бот сам распознал с фото. Ничего вводить не надо.» | Звук отправки сообщения |
| 5 | Скриншот той же карты, но с новой зелёной точкой и короной | «Твоя точка на карте. Данные в блокчейне навсегда.» | — |
| 6 | Ссылка / кнопка | «Расскажи, чем дышишь ты →» | — |
Хронометраж: ~6 секунд, по 1 секунде на кадр.
Сообщения бота (полный текст)
/start — первое вхождение
🌍 Карта качества воздуха Москвы
Твои соседи уже передают данные.
На районе сейчас 35 µg/m³.
Хочешь добавить свою точку?Распознавание значения
🔄 Распознаю значение...Успех OCR
✅ Распознано: 24 µg/m³
Теперь поделись геолокацией — так точка появится на карте.Ошибка OCR
🤖 Не удалось разобрать значение.
Попробуй сделать фото чётче — дисплей должен быть в центре кадра.Подпись и блокчейн
🗺️ Точка определена: Москва, ЦАО
Подписываю и отправляю в блокчейн...Успех транзакции
✅ Данные записаны в блокчейн!
TX: 0xAB12...CD34
Твоя точка — единственная с короной в этом районе 👑Ошибка транзакции
⏳ Блокчейн перегружен.
Данные не потеряются — опубликуем, как только пройдёт транзакция.
Точка на карте появится в течение часа.Dependency: что нужно реализовать
| Компонента | Статус | Примечание |
|---|---|---|
| OCR-движок распознавания PM2.5 | Нужно | Критический блокер |
/start → карта Москвы (вместо досье) |
Нужно | Переписать логику start |
| Карта Москвы (данные + отрисовка) | Нужно | Переключение с Бишкека |
| Механика «корона» на новой точке | Нужно | Выделение точки пользователя |
| Геолокация → район (ЦАО, ЮАО и т.д.) | Нужно | Reverse geocoding для Москвы |
| Публикация подписи в блокчейн (серверный ключ) | Нужно | Пользователь без кошелька |