Backoffice stage 2: chats (support + concierge, files)
- ChatThread per client/provider and channel; messages get files, internal notes, source (bot/mini app) and delivery errors; reply templates. Migration moves old concierge messages into threads. - Routing: subscribers write to the concierge, others to support; /support and /concierge in the client bot; staff can take, transfer, close and move threads. - Telegram: photos/documents from clients and providers, replies with the channel header, files sent from storage, notifications only to the assignee or the channel's staff, "Reply" into a specific thread. - New admin: /chats with list, conversation, notes, files, templates, client panel; "Message" button on the client card; dashboard counts threads awaiting reply. - Client mini app: in-app chat screen sharing the same conversation. - Old admin keeps working on the same data (notes hidden there). - Tests for routing, notes, assign/close/move, lists, recipients; separate test DB via TEST_DB_NAME; dev:chats-demo script. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
d452824c62
commit
23ffb2bf1d
46 files changed
+4176
-144
No files matched your search
@@ -442,7 +442,9 @@
|
||||
"PROVIDER_NOT_LINKED": "Исполнитель ещё не открыл рабочий бот по инвайту — написать ему пока некуда.",
|
||||
"CARD_EXPIRED": "QR устарел или недействителен — попросите клиента открыть карту заново.",
|
||||
"OFFER_NOT_AVAILABLE": "Это предложение недоступно на уровне клиента.",
|
||||
"OFFER_LIMIT_REACHED": "Лимит по этому предложению уже исчерпан."
|
||||
"OFFER_LIMIT_REACHED": "Лимит по этому предложению уже исчерпан.",
|
||||
"CONCIERGE_SUBSCRIBERS_ONLY": "Личный консьерж — для подписчиков Barev+ и Barev Elite. Пока пишите в поддержку — мы тоже поможем.",
|
||||
"ASSIGNEE_NO_ACCESS": "У этого сотрудника нет доступа к этому каналу."
|
||||
},
|
||||
"client": {
|
||||
"nav": {
|
||||
@@ -654,6 +656,20 @@
|
||||
"used_ONCE": "уже получено",
|
||||
"used_WEEK": "снова со следующей недели",
|
||||
"used_MONTH": "снова со следующего месяца"
|
||||
},
|
||||
"chat": {
|
||||
"title": "Чат с Barev Club",
|
||||
"support": "Поддержка",
|
||||
"concierge": "Личный консьерж",
|
||||
"hint": "Это та же переписка, что в чате с ботом: ответ придёт и сюда, и в Telegram.",
|
||||
"empty": "Напишите, чем помочь, — ответим здесь.",
|
||||
"placeholder": "Сообщение…",
|
||||
"send": "Отправить",
|
||||
"attach": "Прикрепить фото или файл",
|
||||
"conciergeOnly": "Личный консьерж — в Barev+ и Barev Elite",
|
||||
"team": "Barev Club",
|
||||
"fileTooBig": "Файл больше 10 МБ",
|
||||
"file": "Файл"
|
||||
}
|
||||
},
|
||||
"pro": {
|
||||
@@ -815,7 +831,12 @@
|
||||
"cmdHelp": "Помощь",
|
||||
"webRequestOrdered": "Заявка №{{request}} принята и оформлена как заказ №{{order}} на {{date}}. Статус — в приложении.",
|
||||
"webRequestLinked": "Заявка №{{request}} принята. Оператор свяжется с тобой и подтвердит время.",
|
||||
"conciergeReceived": "Передали консьержу — ответим здесь, в этом чате."
|
||||
"conciergeReceived": "Передали консьержу — ответим здесь, в этом чате.",
|
||||
"supportReceived": "Передали в поддержку — ответим здесь, в этом чате.",
|
||||
"channelSupport": "Теперь вы пишете в поддержку. Просто отправьте сообщение, фото или файл.",
|
||||
"channelConcierge": "Теперь вы пишете личному консьержу. Просто отправьте сообщение, фото или файл.",
|
||||
"cmdSupport": "Написать в поддержку",
|
||||
"cmdConcierge": "Написать консьержу (Barev+)"
|
||||
},
|
||||
"pro": {
|
||||
"notLinked": "Этот бот — для исполнителей Barev Club. Попроси у оператора ссылку-приглашение.",
|
||||
@@ -844,7 +865,11 @@
|
||||
"newRequest": "Заявка из приложения №{{number}}",
|
||||
"newWebRequest": "Заявка с сайта №{{number}}",
|
||||
"loginOk": "Вход в админку подтверждён — вернитесь в браузер.",
|
||||
"loginExpired": "Ссылка для входа устарела — обновите страницу админки."
|
||||
"loginExpired": "Ссылка для входа устарела — обновите страницу админки.",
|
||||
"channelSupport": "Поддержка",
|
||||
"channelConcierge": "Консьерж",
|
||||
"file": "файл",
|
||||
"chatAssigned": "{{by}} передал(а) вам диалог: {{name}}"
|
||||
},
|
||||
"partner": {
|
||||
"valid": "{{name}} — {{level}}, карта действует",
|
||||
@@ -948,7 +973,8 @@
|
||||
"openPlan": "Открыть приложение",
|
||||
"concierge": "Консьерж Barev Club",
|
||||
"subscriptionActivated": "{{plan}} включён до {{date}}. Скидки уже в ценах услуг.",
|
||||
"operator": "Оператор Barev Club"
|
||||
"operator": "Оператор Barev Club",
|
||||
"support": "Поддержка Barev Club"
|
||||
},
|
||||
"admin": {
|
||||
"nav": {
|
||||
|
||||
Reference in new issue
Block a user