Рефакторинг бота — он должен поддерживать сценарии взаимодействия с пользователем

Onboarding: Сценарий 1 — «Ты дышишь этим прямо сейчас»

Пререквизит

OCR-движок распознавания PM2.5 с фото дисплея — реализован и работает.


User flow (пошагово)

Шаг 1: /start — карта Москвы

Пользователь впервые заходит в бота.

Бот отвечает:

🌍 Карта качества воздуха Москвы [карта — тепловая / точки — встроенное изображение или интерактив]

Твои соседи уже передают данные. На районе сейчас 35 µg/m³.

Хочешь добавить свою точку?

[📸 Отправить фото дисплея] [🏠 Пропустить, посмотреть карту]

Состояния:

  • Карта не загрузилась → «Загружаю карту...», повтор через 3 с
  • Нет данных по Москве → «Пока точек в Москве нет. Стань первым!»
  • Пользователь нажал «Пропустить» → переход в главное меню (список команд)

Шаг 2: Пользователь отправляет фото дисплея

Система:

  1. Получает фото
  2. Отправляет на OCR-движок
  3. Распознаёт числовое значение PM2.5

Бот отвечает (сразу, без задержки):

🔄 Распознаю значение...

При успехе (2–3 секунды):

Распознано: 24 µg/m³

Теперь поделись геолокацией — так точка появится на карте.

[📍 Отправить геолокацию]

При ошибке распознавания:

🤖 Не удалось разобрать значение. Попробуй сделать фото чётче — дисплей должен быть в центре кадра.

[📸 Отправить ещё раз] [✏️ Ввести вручную]

При ручном вводе:

Введи значение PM2.5 (число):

Шаг 3: Пользователь отправляет геолокацию

Бот отвечает:

🗺️ Точка определена: Москва, ЦАО Подписываю и отправляю в блокчейн...

Система:

  1. Подписывает данные ключом пользователя (серверным, не требуется кошелёк)
  2. Отправляет транзакцию в Ethereum (Hoodi)
  3. Ждёт подтверждения
  4. Обновляет агрегированные данные по району на карте

При успехе:

Данные записаны в блокчейн! 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 для Москвы
Публикация подписи в блокчейн (серверный ключ) Нужно Пользователь без кошелька