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