Демо · эпик batele-microservices#481 · issue batele-turbo#18 · реализация batele_pro_flutter (io_ui, Nunito Sans, зелёный #21C64F). Модель v3: чат НЕ привязан к заказу — это долгоживущий канал ПАРЫ участников (одна пара = один чат, сквозная история через все заказы и доставки). Контекст живёт на сообщении: message = {id, chatId, orderId?, orderShortId?, deliveryId?, ticketId?} — показывается чипом на сообщении. Два вида: (а) вся история пары с чипами доставок/заказов; (б) фильтр chatId+deliveryId — шапка-чип «D-7301 ✕», видны только сообщения доставки, композер авто-тегирует новые. Клик по чипу сообщения → включает фильтр (б). Пары создаются лениво; завершение доставки чат НЕ закрывает. kGreen — основной акцент UI; kPrimary #102DC6 в палитре есть, но в UI не используется. Легенда: курьер Бакыт Т. · клиент Айгерим А. · ресторан «Тандыр» · служба Boomerang Go · заказ #4821 / доставка D-7301 (+ прошлые D-7288, D-7295).
Чаты
Активная доставка · D-7301
Boomerang Go · моя служба
Жди 5 минут и вези обратно
D-7301Тандыр · ресторан
Заказ готов, можно забирать
D-7301Айгерим А. · клиент
Вы уже близко?
D-7301Ранее · история пар не исчезает
Плов-Центр · ресторан
Спасибо, буду заказывать ещё 🙌
D-7288Данияр К. · клиент
Оставил у консьержа, спасибо
D-7295Список — пары участников, не доставки. Превью показывает последнее сообщение и чип его контекста.
Инбокс = пары, не доставки. Одна пара = один сквозной чат; прошлые доставки (D-7288, D-7295) остаются в списке — история не исчезает, писать в старую пару можно.
Boomerang Go
Моя служба · сквозной чат
Забрал заказ в «Плов-Центр», еду к клиенту
Boomerang Go · Нурлан
Принято 👍 отметил в системе
Клиент не отвечает уже 10 минут. Что делать?
Boomerang Go · Нурлан
Жди 5 минут и вези обратно на филиал. Отметь «клиент недоступен».
Сквозной чат пары «курьер ↔ служба»: сообщения вчерашней доставки D-7288 и сегодняшней D-7301 в одной ленте, у каждого — чип доставки (message.deliveryId). Разделители дат. Тап по чипу → фильтр-режим (экран 3).
Boomerang Go
Моя служба
Клиент не отвечает уже 10 минут. Что делать?
Boomerang Go · Нурлан
Жди 5 минут и вези обратно на филиал. Отметь «клиент недоступен».
Понял, жду
Опционально: тап по чипу сообщения — показать только эту доставку. Отдельный фильтр-режим chatId + deliveryId: шапка-чип «D-7301 ✕» (снять — вернуться к сквозному), видны только сообщения доставки, композер авто-тегирует новые. Табы «Клиент / Заведение / Служба» переключают канал в том же контексте; unread на табах — точка (счётчик на канал, не на контекст).
#D-7301 · #4821
6.3 км · 14:05–14:45
Спасибо, всё вовремя привезли 🙏
Вы уже близко?
5 минут, подъезжаю по Джалу
Вход из доставки: карта + sheet, под шапкой — табы «Клиент / Заведение / Служба» (активный подчёркнут зелёным, у соседнего — точка непрочитанного на канал). По умолчанию видна вся история канала (в ленте и прошлая доставка D-7288) — фильтр не включён; чип D-7301 = только авто-тег композера («новое уйдёт с меткой D-7301»). Быстрое переключение вендор→курьер→служба в контексте доставки.
Айгерим А.
был(а) недавно · клиент
Нет сети — отправим автоматически
Оставьте, пожалуйста, у двери 🙏
Оставил у двери, как договаривались
Заказ у вас под дверью 👍
Пара «курьер ↔ клиент» в фильтре D-7301. Фото передачи; офлайн-баннер и ошибка — soft-red; сообщения в очереди (часики), «Повторить». Композер помечает новые сообщения D-7301.
Тандыр
Филиал «Центр» · ресторан · сквозной
Тандыр · Айзада
Заказ почти готов, ещё пару минут 🙌
Какой из двух пакетов #4821? На полке стоят два
Тандыр · Айзада
Тот, что с зелёной наклейкой 🟢 второй — не ваш
Забрал, спасибо! Поехал 🚗
Пара «курьер ↔ ресторан» — организация: подпись «Тандыр · Айзада» (senderMemberId). Контекст на сообщении — чип заказа «#4821» (orderShortId), не доставки.
Нургиза Б.
клиент · доставка D-7302
Нет сообщений
Пары с Нургизой Б. ещё не было. Напишите первым — чат создастся, дальнейшие доставки лягут в эту же пару.
Ленивое создание пары: пара «курьер ↔ Нургиза» не существует, пока не отправлено первое сообщение. Дальше все её заказы/доставки лягут в этот же сквозной чат.
Плов-Центр
ресторан · сквозной чат
Плов-Центр · Азиз
Спасибо за доставку, буду заказывать ещё 🙌
Спасибо! Хорошего вечера 🙂
Архива больше нет. Завершение доставки D-7288 не закрывает пару — системное сообщение по центру, но чат остаётся открытым: композер активен, писать в старую пару можно (следующий заказ продолжит эту же ленту).
14:29
пятница, 10 июля
Айгерим А.
сейчасДоставка D-7301 · Заказ #4821
Вы уже близко?
Boomerang Go · Нурлан
1 минДоставка D-7301
Жди 5 минут и вези обратно
Пуш уходит только офлайн-получателю (typing/read/presence/unread — по WebSocket). Заголовок = автор пары, вторая строка = контекст сообщения (доставка/заказ), тело = текст.