run-verify-e2e-chat-004-20260401-1941Пройдено: V0, V1, V2, V3, V4, V4-DB, V5 (7 из 11)
Провалено: V6, V7, V8, V9, V10
Корневая причина: ThreadPreview не реализован в ChatPanel диспетчера. Ответы на thread показываются как inline-сообщения в канале. Диспетчер не может ответить в thread → клиент не получает ответ.
Дополнительно: Баг дублирования сообщений в Client ChatWidget.
| # | Модуль | Блок | Статус | Детали |
|---|---|---|---|---|
| V0 | DB | Подготовка — заказ в маршруте | PASS | Order PZ-0556 в маршруте 4a3947c3 (PLANNED), route_channel_id: odeesywc4fd5dg67noig5xia3h |
| V1 | Technician | Техник подтверждает маршрут | PASS | Логин testtechnik@test.com/sova-sova. Нажал "Принять" → "Да". DB: route=IN_PROGRESS, order=ASSIGNED. |
| V2 | Client | Клиент открывает заказ | PASS | Заказ PZ-0556 показывает "Техник назначен", техник "Test Technik", кнопка "Написать" видна. |
| V3 | Client | ChatWidget открыт | PASS | ChatWidget открылся в приложении (/chatNew?orderId=...), НЕ Telegram. WebSocket подключён к wss://api-test.zarady.ru. |
| V4 | Client | Клиент отправил сообщение | PASS | "Когда приедет техник по заказу?" отображается в ChatWidget. ⚠️ Баг: сообщение показывается дважды (BUG-002). |
| V4-DB | DB | Thread создан в MM | PASS | mm_order_thread: order→route-channel, mm_root_post_id=g3o5hrmcajgo7yki1du474fzyc |
| V5 | MM API | Thread в Mattermost корректен | PASS | Root post: ":speech_balloon: Чат с клиентом по заказу PZ-0556". 1 reply: ":raising_hand: Клиент Apple Moderator: Когда приедет техник по заказу?" |
| V6 | Dispatcher | ThreadPreview в route-канале | FAIL | ThreadPreview НЕ реализован. Thread reply показывается как inline-сообщение от evcharge-bot. Нет индикатора "N ответов", нет collapsed block. (BUG-001) |
| V7 | Dispatcher | Диспетчер раскрывает thread | FAIL | ThreadPreview не существует — нечего раскрывать. Клик по root post ":speech_balloon:" не открыл thread panel. |
| V8 | Dispatcher | Диспетчер отвечает в thread | FAIL | Thread composer недоступен. Диспетчер отправил "Техник будет через 30 минут, уже выехал." в channel-level composer. Пост root_id=NULL (не thread reply). |
| V9 | Client | Клиент видит ответ | FAIL | Клиент НЕ видит ответ. Bot Service маршрутизирует только thread replies (root_id=mm_root_post_id). Ответ диспетчера без root_id не был доставлен. |
| V10 | DB+MM API | Финальная верификация | FAIL | Thread содержит 2 поста (root + 1 reply клиента). Ожидалось 3 (+ ответ диспетчера). mm_order_thread маппинг корректен: channel=route-20270402-technik-4a39. |
Описание: Thread replies к root post order-чата отображаются как inline сообщения в route-канале от evcharge-bot, а не как collapsed ThreadPreview с индикатором "N ответов". Диспетчер не может открыть thread panel и ответить в thread.
Модуль: Dispatcher (ev-dispatcher4)
Шаги воспроизведения:
Ожидалось: Root post + "1 ответ" collapsed block → клик → thread panel с composer
Получено: Root post + отдельное inline-сообщение от evcharge-bot
Описание: После отправки сообщения клиент видит его дважды в ChatWidget. В DB (mm_order_thread) запись одна — проблема в Flutter state/rendering.
Модуль: Client (ElectroCharge)
Шаги воспроизведения: Открыть order-чат → отправить сообщение → сообщение отображается 2 раза
Описание: Следствие BUG-001. Диспетчер отвечает в канале (не в thread), поэтому Bot Service не маршрутизирует ответ клиенту.
Модуль: Dispatcher + Bot Service
Fix: Исправить BUG-001 (ThreadPreview). После этого ответы будут идти через thread composer с root_id → Bot Service доставит клиенту.
| Checkpoint | Query | Result |
|---|---|---|
| V0 — Route exists | orders + routes + mm_channel_mapping WHERE idClient='2a0b...' | ✅ PZ-0556, route PLANNED, channel odeesywc4fd5dg67noig5xia3h |
| V1 — Status after accept | routes + route_points + orders WHERE route_id='4a3947c3...' | ✅ route=IN_PROGRESS, order=ASSIGNED |
| V4-DB — Thread created | SELECT * FROM mm_order_thread WHERE order_id='f6dbb424...' | ✅ mm_root_post_id=g3o5hrmcajgo7yki1du474fzyc, channel=odeesywc4fd5dg67noig5xia3h |
| V10 — Final thread check | mm_order_thread JOIN mm_channel_mapping | ✅ Маппинг корректен: channel=route-20270402-technik-4a39 |