@inspirer-dev/crm-dashboard 1.0.42 → 1.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/translations/en.json +111 -6
- package/admin/src/translations/ru.json +111 -6
- package/admin/src/types/crm.ts +34 -15
- package/dist/_chunks/en-BIgUnT9A.mjs +86 -0
- package/dist/_chunks/en-CdGCb6EW.js +86 -0
- package/dist/_chunks/{index-pMzvnKEe.js → index-DBzHyMTU.js} +215 -145
- package/dist/_chunks/ru-0SymptLG.js +86 -0
- package/dist/_chunks/ru-Bs6gLZAD.mjs +86 -0
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +6 -2
- package/dist/server/index.mjs +6 -2
- package/package.json +1 -1
- package/server/src/services/service.ts +15 -12
- package/dist/_chunks/en-Bar3xmYk.mjs +0 -16
- package/dist/_chunks/en-CMBkwPq9.js +0 -16
- package/dist/_chunks/ru-9mrg61lt.js +0 -16
- package/dist/_chunks/ru-CJuWxs7W.mjs +0 -16
|
@@ -2,17 +2,122 @@
|
|
|
2
2
|
"crm-dashboard.plugin.name": "CRM Dashboard",
|
|
3
3
|
|
|
4
4
|
"crm-dashboard.rules.label": "Segment Rules",
|
|
5
|
-
"crm-dashboard.rules.description": "
|
|
5
|
+
"crm-dashboard.rules.description": "Define WHO receives this campaign. Build conditions based on user attributes (balance, registration date, activity, etc.) to target the right audience.",
|
|
6
6
|
|
|
7
7
|
"crm-dashboard.trigger-config.label": "Trigger Configuration",
|
|
8
|
-
"crm-dashboard.trigger-config.description": "
|
|
8
|
+
"crm-dashboard.trigger-config.description": "Define WHEN the campaign sends messages. Choose between: scheduled (cron-based, e.g., every day at 10:00) or event-triggered (e.g., when user registers, makes deposit).",
|
|
9
9
|
|
|
10
10
|
"crm-dashboard.cancel-conditions.label": "Cancel Conditions",
|
|
11
|
-
"crm-dashboard.cancel-conditions.description": "
|
|
11
|
+
"crm-dashboard.cancel-conditions.description": "Last-minute checks before sending. If any condition is true at send time, the message is skipped. Example: don't send 'make a deposit' if user already deposited today.",
|
|
12
12
|
|
|
13
|
-
"crm-dashboard.telegram-buttons.label": "Buttons",
|
|
14
|
-
"crm-dashboard.telegram-buttons.description": "
|
|
13
|
+
"crm-dashboard.telegram-buttons.label": "Telegram Buttons",
|
|
14
|
+
"crm-dashboard.telegram-buttons.description": "Add clickable buttons below the message. Each button has text and a URL. Use 'row' to group buttons horizontally (same row number = same line).",
|
|
15
15
|
|
|
16
16
|
"crm-dashboard.campaign-steps-flow.label": "Campaign Steps",
|
|
17
|
-
"crm-dashboard.campaign-steps-flow.description": "
|
|
17
|
+
"crm-dashboard.campaign-steps-flow.description": "Build the user journey: add delays between messages, create A/B tests to compare variants, and chain multiple message steps.",
|
|
18
|
+
|
|
19
|
+
"crm-dashboard.global-settings.enableSending.label": "Enable Sending",
|
|
20
|
+
"crm-dashboard.global-settings.enableSending.description": "Master ON/OFF switch for all CRM messages. When disabled, no campaigns will send any messages. Use this to pause everything during maintenance or emergencies.",
|
|
21
|
+
|
|
22
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.label": "Max Messages Per Day",
|
|
23
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.description": "Maximum messages one user can receive in 24 hours across ALL campaigns. Prevents spam. Example: if set to 3, user won't get 4th message even if 4 campaigns target them.",
|
|
24
|
+
|
|
25
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.label": "Max Messages Per Hour",
|
|
26
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.description": "Maximum messages one user can receive within 1 hour. Prevents message flooding. Example: if set to 2, user won't get 3rd message within same hour.",
|
|
27
|
+
|
|
28
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.label": "Global Cooldown (minutes)",
|
|
29
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.description": "Minimum waiting time between ANY two messages to the same user. Example: if set to 30, after sending one message, system waits 30 minutes before sending another (from any campaign).",
|
|
30
|
+
|
|
31
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.label": "Default Campaign Cooldown (days)",
|
|
32
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.description": "How many days to wait before the SAME campaign can message the same user again. Prevents repetitive messages. Individual campaigns can override this.",
|
|
33
|
+
|
|
34
|
+
"crm-dashboard.global-settings.quietHoursEnabled.label": "Quiet Hours Enabled",
|
|
35
|
+
"crm-dashboard.global-settings.quietHoursEnabled.description": "When ON, no messages are sent during quiet hours (night time). Respects user sleep and improves engagement. Turn OFF only if you need 24/7 messaging.",
|
|
36
|
+
|
|
37
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.label": "Quiet Hours Start",
|
|
38
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.description": "Time when quiet period begins (no messages sent). Example: 22:00 means no messages from 10 PM. Used for users without timezone data.",
|
|
39
|
+
|
|
40
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.label": "Quiet Hours End",
|
|
41
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.description": "Time when quiet period ends (messages resume). Example: 09:00 means messages can be sent from 9 AM. Used for users without timezone data.",
|
|
42
|
+
|
|
43
|
+
"crm-dashboard.global-settings.defaultTimezone.label": "Default Timezone",
|
|
44
|
+
"crm-dashboard.global-settings.defaultTimezone.description": "Fallback timezone for users whose timezone is unknown. Used to calculate quiet hours. Example: UTC, Europe/Moscow, America/New_York.",
|
|
45
|
+
|
|
46
|
+
"crm-dashboard.global-settings.timezoneOverrides.label": "Timezone Overrides",
|
|
47
|
+
"crm-dashboard.global-settings.timezoneOverrides.description": "Custom quiet hours and rate limits for specific timezones. Example: Russian users might have different quiet hours (23:00-10:00 Moscow time) than US users.",
|
|
48
|
+
|
|
49
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.label": "Priority Conflict Behavior",
|
|
50
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.description": "What happens when multiple campaigns want to message the same user at the same time?",
|
|
51
|
+
|
|
52
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only": "Send Highest Only",
|
|
53
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only.description": "Only send the message from the campaign with highest priority. Other messages are cancelled. Best for: avoiding spam, ensuring most important message gets through.",
|
|
54
|
+
|
|
55
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others": "Queue Others",
|
|
56
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others.description": "Send highest priority first, put others in queue for later. Messages wait until cooldown passes. Best for: ensuring all messages eventually reach user.",
|
|
57
|
+
|
|
58
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others": "Drop Others",
|
|
59
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others.description": "Send highest priority, permanently discard others (no retry). Best for: time-sensitive campaigns where delayed messages lose relevance.",
|
|
60
|
+
|
|
61
|
+
"crm-dashboard.global-settings.testMode.label": "Test Mode",
|
|
62
|
+
"crm-dashboard.global-settings.testMode.description": "When ON, campaigns only send to test users (listed below). Use this to test campaigns before going live. Real users won't receive anything.",
|
|
63
|
+
|
|
64
|
+
"crm-dashboard.global-settings.testUserIds.label": "Test User IDs",
|
|
65
|
+
"crm-dashboard.global-settings.testUserIds.description": "List of user IDs that receive messages in test mode. Format: [123, 456, 789]. Only these users get messages when Test Mode is ON.",
|
|
66
|
+
|
|
67
|
+
"crm-dashboard.campaign.name.label": "Campaign Name",
|
|
68
|
+
"crm-dashboard.campaign.name.description": "Internal name for this campaign. Used in admin panel and analytics. Make it descriptive, e.g., 'Welcome Series - Day 1' or 'Deposit Reminder - Inactive Users'.",
|
|
69
|
+
|
|
70
|
+
"crm-dashboard.campaign.isActive.label": "Active",
|
|
71
|
+
"crm-dashboard.campaign.isActive.description": "Campaign ON/OFF switch. Only active campaigns send messages. Inactive campaigns are paused but keep their settings.",
|
|
72
|
+
|
|
73
|
+
"crm-dashboard.campaign.cooldownHours.label": "Cooldown (hours)",
|
|
74
|
+
"crm-dashboard.campaign.cooldownHours.description": "Minimum hours between messages from THIS campaign to the same user. Example: 24 means user can only get one message per day from this campaign.",
|
|
75
|
+
|
|
76
|
+
"crm-dashboard.campaign.priority.label": "Priority",
|
|
77
|
+
"crm-dashboard.campaign.priority.description": "Campaign importance (0-100, higher = more important). When multiple campaigns compete to send at same time, highest priority wins. Default: 5.",
|
|
78
|
+
|
|
79
|
+
"crm-dashboard.campaign.dailyCapPerUser.label": "Daily Cap Per User",
|
|
80
|
+
"crm-dashboard.campaign.dailyCapPerUser.description": "Maximum messages THIS campaign can send to one user per day. Example: 1 means user gets at most 1 message daily from this campaign.",
|
|
81
|
+
|
|
82
|
+
"crm-dashboard.campaign.ignoreQuietHours.label": "Ignore Quiet Hours",
|
|
83
|
+
"crm-dashboard.campaign.ignoreQuietHours.description": "When ON, this campaign can send during quiet hours (night time). Use sparingly for urgent/time-critical messages only.",
|
|
84
|
+
|
|
85
|
+
"crm-dashboard.campaign.allowReEntry.label": "Allow Re-Entry",
|
|
86
|
+
"crm-dashboard.campaign.allowReEntry.description": "Can users enter this campaign multiple times? When ON, user can restart the journey after completing it. When OFF, user goes through campaign only once ever.",
|
|
87
|
+
|
|
88
|
+
"crm-dashboard.campaign.reEntryDelayDays.label": "Re-Entry Delay (days)",
|
|
89
|
+
"crm-dashboard.campaign.reEntryDelayDays.description": "If re-entry is allowed, how many days must pass before user can enter again? Example: 30 means user waits 30 days after completing before restarting.",
|
|
90
|
+
|
|
91
|
+
"crm-dashboard.campaign.startDate.label": "Start Date",
|
|
92
|
+
"crm-dashboard.campaign.startDate.description": "Campaign becomes active on this date. Before this date, campaign won't send even if Active is ON. Leave empty for immediate start.",
|
|
93
|
+
|
|
94
|
+
"crm-dashboard.campaign.endDate.label": "End Date",
|
|
95
|
+
"crm-dashboard.campaign.endDate.description": "Campaign automatically stops on this date. After this date, no new messages are sent. Leave empty for no end date.",
|
|
96
|
+
|
|
97
|
+
"crm-dashboard.timezone-settings.timezone.label": "Timezone",
|
|
98
|
+
"crm-dashboard.timezone-settings.timezone.description": "IANA timezone identifier. Examples: Europe/Moscow, America/New_York, Asia/Tokyo. Find your timezone at timeanddate.com.",
|
|
99
|
+
|
|
100
|
+
"crm-dashboard.timezone-settings.quietHoursStart.label": "Quiet Hours Start",
|
|
101
|
+
"crm-dashboard.timezone-settings.quietHoursStart.description": "When to stop sending messages in this timezone. Example: 23:00 for Moscow users.",
|
|
102
|
+
|
|
103
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.label": "Quiet Hours End",
|
|
104
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.description": "When to resume sending messages in this timezone. Example: 10:00 for Moscow users.",
|
|
105
|
+
|
|
106
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.label": "Max Messages Per Day (override)",
|
|
107
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.description": "Override daily message limit for users in this timezone. Leave empty to use global default.",
|
|
108
|
+
|
|
109
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.label": "Max Messages Per Hour (override)",
|
|
110
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.description": "Override hourly message limit for users in this timezone. Leave empty to use global default.",
|
|
111
|
+
|
|
112
|
+
"crm-dashboard.template.name.label": "Template Name",
|
|
113
|
+
"crm-dashboard.template.name.description": "Internal name for this template. Example: 'Welcome Message', 'Deposit Reminder'.",
|
|
114
|
+
|
|
115
|
+
"crm-dashboard.template.channel.label": "Channel",
|
|
116
|
+
"crm-dashboard.template.channel.description": "Where to send this message: Telegram, Email, Push notification, or SMS.",
|
|
117
|
+
|
|
118
|
+
"crm-dashboard.template.title.label": "Title",
|
|
119
|
+
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
120
|
+
|
|
121
|
+
"crm-dashboard.template.body.label": "Message Body",
|
|
122
|
+
"crm-dashboard.template.body.description": "The actual message text. Supports variables like {{user.name}}, {{user.balance}}. For Telegram: supports Markdown formatting."
|
|
18
123
|
}
|
|
@@ -2,17 +2,122 @@
|
|
|
2
2
|
"crm-dashboard.plugin.name": "CRM Панель",
|
|
3
3
|
|
|
4
4
|
"crm-dashboard.rules.label": "Правила сегмента",
|
|
5
|
-
"crm-dashboard.rules.description": "
|
|
5
|
+
"crm-dashboard.rules.description": "Определите КОГО таргетировать. Создайте условия по атрибутам пользователя (баланс, дата регистрации, активность и т.д.) для выбора нужной аудитории.",
|
|
6
6
|
|
|
7
7
|
"crm-dashboard.trigger-config.label": "Настройка триггера",
|
|
8
|
-
"crm-dashboard.trigger-config.description": "
|
|
8
|
+
"crm-dashboard.trigger-config.description": "Определите КОГДА отправлять сообщения. Выберите: по расписанию (cron, например каждый день в 10:00) или по событию (регистрация, депозит и т.д.).",
|
|
9
9
|
|
|
10
10
|
"crm-dashboard.cancel-conditions.label": "Условия отмены",
|
|
11
|
-
"crm-dashboard.cancel-conditions.description": "
|
|
11
|
+
"crm-dashboard.cancel-conditions.description": "Проверка перед отправкой. Если условие выполнено — сообщение отменяется. Пример: не отправлять 'сделай депозит', если пользователь уже пополнил сегодня.",
|
|
12
12
|
|
|
13
|
-
"crm-dashboard.telegram-buttons.label": "Кнопки",
|
|
14
|
-
"crm-dashboard.telegram-buttons.description": "
|
|
13
|
+
"crm-dashboard.telegram-buttons.label": "Кнопки Telegram",
|
|
14
|
+
"crm-dashboard.telegram-buttons.description": "Добавьте кликабельные кнопки под сообщением. Каждая кнопка имеет текст и ссылку. Поле 'row' группирует кнопки горизонтально (одинаковый номер = одна строка).",
|
|
15
15
|
|
|
16
16
|
"crm-dashboard.campaign-steps-flow.label": "Шаги кампании",
|
|
17
|
-
"crm-dashboard.campaign-steps-flow.description": "
|
|
17
|
+
"crm-dashboard.campaign-steps-flow.description": "Постройте путь пользователя: добавьте задержки между сообщениями, создайте A/B тесты для сравнения вариантов, объедините несколько шагов в цепочку.",
|
|
18
|
+
|
|
19
|
+
"crm-dashboard.global-settings.enableSending.label": "Включить отправку",
|
|
20
|
+
"crm-dashboard.global-settings.enableSending.description": "Главный выключатель всех CRM-сообщений. Когда выключен — ни одна кампания не отправляет сообщения. Используйте для паузы во время техработ или в экстренных случаях.",
|
|
21
|
+
|
|
22
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.label": "Макс. сообщений в день",
|
|
23
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.description": "Максимум сообщений одному пользователю за 24 часа от ВСЕХ кампаний. Защита от спама. Пример: если 3, то 4-е сообщение не дойдёт, даже если 4 кампании таргетируют пользователя.",
|
|
24
|
+
|
|
25
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.label": "Макс. сообщений в час",
|
|
26
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.description": "Максимум сообщений одному пользователю за 1 час. Защита от потока сообщений. Пример: если 2, то 3-е сообщение в течение часа не отправится.",
|
|
27
|
+
|
|
28
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.label": "Глобальный кулдаун (минуты)",
|
|
29
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.description": "Минимальное время ожидания между ЛЮБЫМИ двумя сообщениями одному пользователю. Пример: если 30, то после отправки система ждёт 30 минут перед следующим сообщением (от любой кампании).",
|
|
30
|
+
|
|
31
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.label": "Кулдаун кампании по умолчанию (дни)",
|
|
32
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.description": "Сколько дней ждать, прежде чем ТА ЖЕ кампания снова напишет тому же пользователю. Защита от повторений. Отдельные кампании могут переопределить это значение.",
|
|
33
|
+
|
|
34
|
+
"crm-dashboard.global-settings.quietHoursEnabled.label": "Тихие часы включены",
|
|
35
|
+
"crm-dashboard.global-settings.quietHoursEnabled.description": "Когда включено — сообщения не отправляются в ночное время. Уважает сон пользователя и улучшает вовлечённость. Выключайте только если нужна рассылка 24/7.",
|
|
36
|
+
|
|
37
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.label": "Начало тихих часов",
|
|
38
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.description": "Время начала тихого периода (сообщения не отправляются). Пример: 22:00 — нет сообщений с 22:00. Используется для пользователей без данных о часовом поясе.",
|
|
39
|
+
|
|
40
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.label": "Конец тихих часов",
|
|
41
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.description": "Время окончания тихого периода (отправка возобновляется). Пример: 09:00 — сообщения с 9 утра. Используется для пользователей без данных о часовом поясе.",
|
|
42
|
+
|
|
43
|
+
"crm-dashboard.global-settings.defaultTimezone.label": "Часовой пояс по умолчанию",
|
|
44
|
+
"crm-dashboard.global-settings.defaultTimezone.description": "Резервный часовой пояс для пользователей с неизвестной зоной. Используется для расчёта тихих часов. Примеры: UTC, Europe/Moscow, America/New_York.",
|
|
45
|
+
|
|
46
|
+
"crm-dashboard.global-settings.timezoneOverrides.label": "Переопределения часовых поясов",
|
|
47
|
+
"crm-dashboard.global-settings.timezoneOverrides.description": "Индивидуальные тихие часы и лимиты для конкретных часовых поясов. Пример: для российских пользователей другие тихие часы (23:00-10:00 по Москве), чем для американских.",
|
|
48
|
+
|
|
49
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.label": "Поведение при конфликте приоритетов",
|
|
50
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.description": "Что делать, если несколько кампаний хотят отправить сообщение одному пользователю одновременно?",
|
|
51
|
+
|
|
52
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only": "Только с высшим приоритетом",
|
|
53
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only.description": "Отправить только сообщение с высшим приоритетом. Остальные отменяются. Подходит для: избежания спама, гарантии доставки важного сообщения.",
|
|
54
|
+
|
|
55
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others": "Поставить остальные в очередь",
|
|
56
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others.description": "Отправить с высшим приоритетом, остальные в очередь на потом. Сообщения ждут окончания кулдауна. Подходит для: гарантии доставки всех сообщений со временем.",
|
|
57
|
+
|
|
58
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others": "Отбросить остальные",
|
|
59
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others.description": "Отправить с высшим приоритетом, остальные удалить навсегда (без повтора). Подходит для: срочных кампаний, где отложенные сообщения теряют актуальность.",
|
|
60
|
+
|
|
61
|
+
"crm-dashboard.global-settings.testMode.label": "Тестовый режим",
|
|
62
|
+
"crm-dashboard.global-settings.testMode.description": "Когда включён — кампании отправляют только тестовым пользователям (список ниже). Используйте для проверки кампаний перед запуском. Реальные пользователи ничего не получат.",
|
|
63
|
+
|
|
64
|
+
"crm-dashboard.global-settings.testUserIds.label": "ID тестовых пользователей",
|
|
65
|
+
"crm-dashboard.global-settings.testUserIds.description": "Список ID пользователей для тестового режима. Формат: [123, 456, 789]. Только эти пользователи получают сообщения при включённом тестовом режиме.",
|
|
66
|
+
|
|
67
|
+
"crm-dashboard.campaign.name.label": "Название кампании",
|
|
68
|
+
"crm-dashboard.campaign.name.description": "Внутреннее название кампании. Используется в админке и аналитике. Делайте описательным, например: 'Приветственная серия - День 1' или 'Напоминание о депозите - Неактивные'.",
|
|
69
|
+
|
|
70
|
+
"crm-dashboard.campaign.isActive.label": "Активна",
|
|
71
|
+
"crm-dashboard.campaign.isActive.description": "Переключатель ВКЛ/ВЫКЛ кампании. Только активные кампании отправляют сообщения. Неактивные на паузе, но сохраняют настройки.",
|
|
72
|
+
|
|
73
|
+
"crm-dashboard.campaign.cooldownHours.label": "Кулдаун (часы)",
|
|
74
|
+
"crm-dashboard.campaign.cooldownHours.description": "Минимум часов между сообщениями от ЭТОЙ кампании одному пользователю. Пример: 24 означает максимум одно сообщение в день от этой кампании.",
|
|
75
|
+
|
|
76
|
+
"crm-dashboard.campaign.priority.label": "Приоритет",
|
|
77
|
+
"crm-dashboard.campaign.priority.description": "Важность кампании (0-100, больше = важнее). Когда несколько кампаний конкурируют за отправку — побеждает с высшим приоритетом. По умолчанию: 5.",
|
|
78
|
+
|
|
79
|
+
"crm-dashboard.campaign.dailyCapPerUser.label": "Дневной лимит на пользователя",
|
|
80
|
+
"crm-dashboard.campaign.dailyCapPerUser.description": "Максимум сообщений от ЭТОЙ кампании одному пользователю в день. Пример: 1 означает максимум 1 сообщение в день от этой кампании.",
|
|
81
|
+
|
|
82
|
+
"crm-dashboard.campaign.ignoreQuietHours.label": "Игнорировать тихие часы",
|
|
83
|
+
"crm-dashboard.campaign.ignoreQuietHours.description": "Когда включено — эта кампания может отправлять в тихие часы (ночью). Используйте осторожно, только для срочных/критичных по времени сообщений.",
|
|
84
|
+
|
|
85
|
+
"crm-dashboard.campaign.allowReEntry.label": "Разрешить повторный вход",
|
|
86
|
+
"crm-dashboard.campaign.allowReEntry.description": "Могут ли пользователи входить в кампанию несколько раз? Когда включено — пользователь может начать путь заново после завершения. Когда выключено — проходит кампанию только один раз.",
|
|
87
|
+
|
|
88
|
+
"crm-dashboard.campaign.reEntryDelayDays.label": "Задержка повторного входа (дни)",
|
|
89
|
+
"crm-dashboard.campaign.reEntryDelayDays.description": "Если повторный вход разрешён — сколько дней ждать перед повторным входом? Пример: 30 означает ожидание 30 дней после завершения перед повторным началом.",
|
|
90
|
+
|
|
91
|
+
"crm-dashboard.campaign.startDate.label": "Дата начала",
|
|
92
|
+
"crm-dashboard.campaign.startDate.description": "Кампания станет активной с этой даты. До этой даты кампания не отправляет, даже если включена. Оставьте пустым для немедленного старта.",
|
|
93
|
+
|
|
94
|
+
"crm-dashboard.campaign.endDate.label": "Дата окончания",
|
|
95
|
+
"crm-dashboard.campaign.endDate.description": "Кампания автоматически остановится в эту дату. После неё новые сообщения не отправляются. Оставьте пустым для бессрочной работы.",
|
|
96
|
+
|
|
97
|
+
"crm-dashboard.timezone-settings.timezone.label": "Часовой пояс",
|
|
98
|
+
"crm-dashboard.timezone-settings.timezone.description": "Идентификатор часового пояса IANA. Примеры: Europe/Moscow, America/New_York, Asia/Tokyo. Найти свой пояс: timeanddate.com.",
|
|
99
|
+
|
|
100
|
+
"crm-dashboard.timezone-settings.quietHoursStart.label": "Начало тихих часов",
|
|
101
|
+
"crm-dashboard.timezone-settings.quietHoursStart.description": "Когда прекращать отправку сообщений в этом часовом поясе. Пример: 23:00 для московских пользователей.",
|
|
102
|
+
|
|
103
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.label": "Конец тихих часов",
|
|
104
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.description": "Когда возобновлять отправку сообщений в этом часовом поясе. Пример: 10:00 для московских пользователей.",
|
|
105
|
+
|
|
106
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.label": "Макс. сообщений в день (переопределение)",
|
|
107
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.description": "Переопределить дневной лимит сообщений для пользователей в этом часовом поясе. Оставьте пустым для использования глобального значения.",
|
|
108
|
+
|
|
109
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.label": "Макс. сообщений в час (переопределение)",
|
|
110
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.description": "Переопределить часовой лимит сообщений для пользователей в этом часовом поясе. Оставьте пустым для использования глобального значения.",
|
|
111
|
+
|
|
112
|
+
"crm-dashboard.template.name.label": "Название шаблона",
|
|
113
|
+
"crm-dashboard.template.name.description": "Внутреннее название шаблона. Примеры: 'Приветственное сообщение', 'Напоминание о депозите'.",
|
|
114
|
+
|
|
115
|
+
"crm-dashboard.template.channel.label": "Канал",
|
|
116
|
+
"crm-dashboard.template.channel.description": "Куда отправлять сообщение: Telegram, Email, Push-уведомление или SMS.",
|
|
117
|
+
|
|
118
|
+
"crm-dashboard.template.title.label": "Заголовок",
|
|
119
|
+
"crm-dashboard.template.title.description": "Для email: тема письма. Для Telegram: внутренний заголовок (не виден пользователю). Для push: заголовок уведомления.",
|
|
120
|
+
|
|
121
|
+
"crm-dashboard.template.body.label": "Текст сообщения",
|
|
122
|
+
"crm-dashboard.template.body.description": "Текст сообщения. Поддерживает переменные: {{user.name}}, {{user.balance}}. Для Telegram: поддерживает Markdown-форматирование."
|
|
18
123
|
}
|
package/admin/src/types/crm.ts
CHANGED
|
@@ -42,8 +42,8 @@ export interface CrmTemplate {
|
|
|
42
42
|
id: number;
|
|
43
43
|
documentId: string;
|
|
44
44
|
name: string;
|
|
45
|
-
channel:
|
|
46
|
-
|
|
45
|
+
channel: 'telegram' | 'email' | 'push' | 'sms';
|
|
46
|
+
locale?: string;
|
|
47
47
|
title?: string;
|
|
48
48
|
body: string;
|
|
49
49
|
buttons?: TelegramButton[];
|
|
@@ -91,25 +91,49 @@ export interface CrmSegment {
|
|
|
91
91
|
estimatedSize?: number;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
export interface CampaignStep {
|
|
95
|
+
stepKey: string;
|
|
96
|
+
name: string;
|
|
97
|
+
stepType: 'message' | 'wait' | 'branch' | 'exit';
|
|
98
|
+
order: number;
|
|
99
|
+
channel?: 'telegram' | 'email' | 'push' | 'sms';
|
|
100
|
+
variants?: CrmVariant[];
|
|
101
|
+
duration?: number;
|
|
102
|
+
durationUnit?: 'minutes' | 'hours' | 'days';
|
|
103
|
+
branchSegment?: { id: number; documentId: string; name: string };
|
|
104
|
+
nextStep?: string;
|
|
105
|
+
yesNextStep?: string;
|
|
106
|
+
noNextStep?: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
94
109
|
export interface CrmCampaign {
|
|
95
110
|
id: number;
|
|
96
111
|
documentId: string;
|
|
97
112
|
name: string;
|
|
98
113
|
slug: string;
|
|
99
|
-
description?: string;
|
|
100
114
|
isActive: boolean;
|
|
101
115
|
triggerConfig: TriggerConfig;
|
|
102
|
-
|
|
116
|
+
entrySegment?: CrmSegment;
|
|
117
|
+
steps?: CampaignStep[];
|
|
103
118
|
cancelConditions?: CancelConditionsConfig;
|
|
104
|
-
variants: CrmVariant[];
|
|
105
119
|
priority: number;
|
|
106
120
|
dailyCapPerUser: number;
|
|
107
121
|
cooldownHours: number;
|
|
108
122
|
ignoreQuietHours: boolean;
|
|
123
|
+
allowReEntry: boolean;
|
|
124
|
+
reEntryDelayDays: number;
|
|
109
125
|
startDate?: string;
|
|
110
126
|
endDate?: string;
|
|
111
127
|
}
|
|
112
128
|
|
|
129
|
+
export interface TimezoneSettings {
|
|
130
|
+
timezone: string;
|
|
131
|
+
quietHoursStart: string;
|
|
132
|
+
quietHoursEnd: string;
|
|
133
|
+
maxMessagesPerDay?: number;
|
|
134
|
+
maxMessagesPerHour?: number;
|
|
135
|
+
}
|
|
136
|
+
|
|
113
137
|
export interface CrmGlobalSettings {
|
|
114
138
|
enableSending?: boolean;
|
|
115
139
|
maxMessagesPerDay: number;
|
|
@@ -117,16 +141,11 @@ export interface CrmGlobalSettings {
|
|
|
117
141
|
globalCooldownMinutes?: number;
|
|
118
142
|
defaultCampaignCooldownDays: number;
|
|
119
143
|
quietHoursEnabled: boolean;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| 'queue_others'
|
|
126
|
-
| 'drop_others'
|
|
127
|
-
| 'highest_wins'
|
|
128
|
-
| 'first_wins'
|
|
129
|
-
| 'block_all';
|
|
144
|
+
defaultQuietHoursStart?: string;
|
|
145
|
+
defaultQuietHoursEnd?: string;
|
|
146
|
+
defaultTimezone: string;
|
|
147
|
+
timezoneOverrides?: TimezoneSettings[];
|
|
148
|
+
priorityConflictBehavior: 'send_highest_only' | 'queue_others' | 'drop_others';
|
|
130
149
|
testMode: boolean;
|
|
131
150
|
testUserIds: number[];
|
|
132
151
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"crm-dashboard.plugin.name": "CRM Dashboard",
|
|
3
|
+
"crm-dashboard.rules.label": "Segment Rules",
|
|
4
|
+
"crm-dashboard.rules.description": "Define WHO receives this campaign. Build conditions based on user attributes (balance, registration date, activity, etc.) to target the right audience.",
|
|
5
|
+
"crm-dashboard.trigger-config.label": "Trigger Configuration",
|
|
6
|
+
"crm-dashboard.trigger-config.description": "Define WHEN the campaign sends messages. Choose between: scheduled (cron-based, e.g., every day at 10:00) or event-triggered (e.g., when user registers, makes deposit).",
|
|
7
|
+
"crm-dashboard.cancel-conditions.label": "Cancel Conditions",
|
|
8
|
+
"crm-dashboard.cancel-conditions.description": "Last-minute checks before sending. If any condition is true at send time, the message is skipped. Example: don't send 'make a deposit' if user already deposited today.",
|
|
9
|
+
"crm-dashboard.telegram-buttons.label": "Telegram Buttons",
|
|
10
|
+
"crm-dashboard.telegram-buttons.description": "Add clickable buttons below the message. Each button has text and a URL. Use 'row' to group buttons horizontally (same row number = same line).",
|
|
11
|
+
"crm-dashboard.campaign-steps-flow.label": "Campaign Steps",
|
|
12
|
+
"crm-dashboard.campaign-steps-flow.description": "Build the user journey: add delays between messages, create A/B tests to compare variants, and chain multiple message steps.",
|
|
13
|
+
"crm-dashboard.global-settings.enableSending.label": "Enable Sending",
|
|
14
|
+
"crm-dashboard.global-settings.enableSending.description": "Master ON/OFF switch for all CRM messages. When disabled, no campaigns will send any messages. Use this to pause everything during maintenance or emergencies.",
|
|
15
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.label": "Max Messages Per Day",
|
|
16
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.description": "Maximum messages one user can receive in 24 hours across ALL campaigns. Prevents spam. Example: if set to 3, user won't get 4th message even if 4 campaigns target them.",
|
|
17
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.label": "Max Messages Per Hour",
|
|
18
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.description": "Maximum messages one user can receive within 1 hour. Prevents message flooding. Example: if set to 2, user won't get 3rd message within same hour.",
|
|
19
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.label": "Global Cooldown (minutes)",
|
|
20
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.description": "Minimum waiting time between ANY two messages to the same user. Example: if set to 30, after sending one message, system waits 30 minutes before sending another (from any campaign).",
|
|
21
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.label": "Default Campaign Cooldown (days)",
|
|
22
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.description": "How many days to wait before the SAME campaign can message the same user again. Prevents repetitive messages. Individual campaigns can override this.",
|
|
23
|
+
"crm-dashboard.global-settings.quietHoursEnabled.label": "Quiet Hours Enabled",
|
|
24
|
+
"crm-dashboard.global-settings.quietHoursEnabled.description": "When ON, no messages are sent during quiet hours (night time). Respects user sleep and improves engagement. Turn OFF only if you need 24/7 messaging.",
|
|
25
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.label": "Quiet Hours Start",
|
|
26
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.description": "Time when quiet period begins (no messages sent). Example: 22:00 means no messages from 10 PM. Used for users without timezone data.",
|
|
27
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.label": "Quiet Hours End",
|
|
28
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.description": "Time when quiet period ends (messages resume). Example: 09:00 means messages can be sent from 9 AM. Used for users without timezone data.",
|
|
29
|
+
"crm-dashboard.global-settings.defaultTimezone.label": "Default Timezone",
|
|
30
|
+
"crm-dashboard.global-settings.defaultTimezone.description": "Fallback timezone for users whose timezone is unknown. Used to calculate quiet hours. Example: UTC, Europe/Moscow, America/New_York.",
|
|
31
|
+
"crm-dashboard.global-settings.timezoneOverrides.label": "Timezone Overrides",
|
|
32
|
+
"crm-dashboard.global-settings.timezoneOverrides.description": "Custom quiet hours and rate limits for specific timezones. Example: Russian users might have different quiet hours (23:00-10:00 Moscow time) than US users.",
|
|
33
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.label": "Priority Conflict Behavior",
|
|
34
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.description": "What happens when multiple campaigns want to message the same user at the same time?",
|
|
35
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only": "Send Highest Only",
|
|
36
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only.description": "Only send the message from the campaign with highest priority. Other messages are cancelled. Best for: avoiding spam, ensuring most important message gets through.",
|
|
37
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others": "Queue Others",
|
|
38
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others.description": "Send highest priority first, put others in queue for later. Messages wait until cooldown passes. Best for: ensuring all messages eventually reach user.",
|
|
39
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others": "Drop Others",
|
|
40
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others.description": "Send highest priority, permanently discard others (no retry). Best for: time-sensitive campaigns where delayed messages lose relevance.",
|
|
41
|
+
"crm-dashboard.global-settings.testMode.label": "Test Mode",
|
|
42
|
+
"crm-dashboard.global-settings.testMode.description": "When ON, campaigns only send to test users (listed below). Use this to test campaigns before going live. Real users won't receive anything.",
|
|
43
|
+
"crm-dashboard.global-settings.testUserIds.label": "Test User IDs",
|
|
44
|
+
"crm-dashboard.global-settings.testUserIds.description": "List of user IDs that receive messages in test mode. Format: [123, 456, 789]. Only these users get messages when Test Mode is ON.",
|
|
45
|
+
"crm-dashboard.campaign.name.label": "Campaign Name",
|
|
46
|
+
"crm-dashboard.campaign.name.description": "Internal name for this campaign. Used in admin panel and analytics. Make it descriptive, e.g., 'Welcome Series - Day 1' or 'Deposit Reminder - Inactive Users'.",
|
|
47
|
+
"crm-dashboard.campaign.isActive.label": "Active",
|
|
48
|
+
"crm-dashboard.campaign.isActive.description": "Campaign ON/OFF switch. Only active campaigns send messages. Inactive campaigns are paused but keep their settings.",
|
|
49
|
+
"crm-dashboard.campaign.cooldownHours.label": "Cooldown (hours)",
|
|
50
|
+
"crm-dashboard.campaign.cooldownHours.description": "Minimum hours between messages from THIS campaign to the same user. Example: 24 means user can only get one message per day from this campaign.",
|
|
51
|
+
"crm-dashboard.campaign.priority.label": "Priority",
|
|
52
|
+
"crm-dashboard.campaign.priority.description": "Campaign importance (0-100, higher = more important). When multiple campaigns compete to send at same time, highest priority wins. Default: 5.",
|
|
53
|
+
"crm-dashboard.campaign.dailyCapPerUser.label": "Daily Cap Per User",
|
|
54
|
+
"crm-dashboard.campaign.dailyCapPerUser.description": "Maximum messages THIS campaign can send to one user per day. Example: 1 means user gets at most 1 message daily from this campaign.",
|
|
55
|
+
"crm-dashboard.campaign.ignoreQuietHours.label": "Ignore Quiet Hours",
|
|
56
|
+
"crm-dashboard.campaign.ignoreQuietHours.description": "When ON, this campaign can send during quiet hours (night time). Use sparingly for urgent/time-critical messages only.",
|
|
57
|
+
"crm-dashboard.campaign.allowReEntry.label": "Allow Re-Entry",
|
|
58
|
+
"crm-dashboard.campaign.allowReEntry.description": "Can users enter this campaign multiple times? When ON, user can restart the journey after completing it. When OFF, user goes through campaign only once ever.",
|
|
59
|
+
"crm-dashboard.campaign.reEntryDelayDays.label": "Re-Entry Delay (days)",
|
|
60
|
+
"crm-dashboard.campaign.reEntryDelayDays.description": "If re-entry is allowed, how many days must pass before user can enter again? Example: 30 means user waits 30 days after completing before restarting.",
|
|
61
|
+
"crm-dashboard.campaign.startDate.label": "Start Date",
|
|
62
|
+
"crm-dashboard.campaign.startDate.description": "Campaign becomes active on this date. Before this date, campaign won't send even if Active is ON. Leave empty for immediate start.",
|
|
63
|
+
"crm-dashboard.campaign.endDate.label": "End Date",
|
|
64
|
+
"crm-dashboard.campaign.endDate.description": "Campaign automatically stops on this date. After this date, no new messages are sent. Leave empty for no end date.",
|
|
65
|
+
"crm-dashboard.timezone-settings.timezone.label": "Timezone",
|
|
66
|
+
"crm-dashboard.timezone-settings.timezone.description": "IANA timezone identifier. Examples: Europe/Moscow, America/New_York, Asia/Tokyo. Find your timezone at timeanddate.com.",
|
|
67
|
+
"crm-dashboard.timezone-settings.quietHoursStart.label": "Quiet Hours Start",
|
|
68
|
+
"crm-dashboard.timezone-settings.quietHoursStart.description": "When to stop sending messages in this timezone. Example: 23:00 for Moscow users.",
|
|
69
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.label": "Quiet Hours End",
|
|
70
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.description": "When to resume sending messages in this timezone. Example: 10:00 for Moscow users.",
|
|
71
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.label": "Max Messages Per Day (override)",
|
|
72
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.description": "Override daily message limit for users in this timezone. Leave empty to use global default.",
|
|
73
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.label": "Max Messages Per Hour (override)",
|
|
74
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.description": "Override hourly message limit for users in this timezone. Leave empty to use global default.",
|
|
75
|
+
"crm-dashboard.template.name.label": "Template Name",
|
|
76
|
+
"crm-dashboard.template.name.description": "Internal name for this template. Example: 'Welcome Message', 'Deposit Reminder'.",
|
|
77
|
+
"crm-dashboard.template.channel.label": "Channel",
|
|
78
|
+
"crm-dashboard.template.channel.description": "Where to send this message: Telegram, Email, Push notification, or SMS.",
|
|
79
|
+
"crm-dashboard.template.title.label": "Title",
|
|
80
|
+
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
81
|
+
"crm-dashboard.template.body.label": "Message Body",
|
|
82
|
+
"crm-dashboard.template.body.description": "The actual message text. Supports variables like {{user.name}}, {{user.balance}}. For Telegram: supports Markdown formatting."
|
|
83
|
+
};
|
|
84
|
+
export {
|
|
85
|
+
en as default
|
|
86
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"crm-dashboard.plugin.name": "CRM Dashboard",
|
|
5
|
+
"crm-dashboard.rules.label": "Segment Rules",
|
|
6
|
+
"crm-dashboard.rules.description": "Define WHO receives this campaign. Build conditions based on user attributes (balance, registration date, activity, etc.) to target the right audience.",
|
|
7
|
+
"crm-dashboard.trigger-config.label": "Trigger Configuration",
|
|
8
|
+
"crm-dashboard.trigger-config.description": "Define WHEN the campaign sends messages. Choose between: scheduled (cron-based, e.g., every day at 10:00) or event-triggered (e.g., when user registers, makes deposit).",
|
|
9
|
+
"crm-dashboard.cancel-conditions.label": "Cancel Conditions",
|
|
10
|
+
"crm-dashboard.cancel-conditions.description": "Last-minute checks before sending. If any condition is true at send time, the message is skipped. Example: don't send 'make a deposit' if user already deposited today.",
|
|
11
|
+
"crm-dashboard.telegram-buttons.label": "Telegram Buttons",
|
|
12
|
+
"crm-dashboard.telegram-buttons.description": "Add clickable buttons below the message. Each button has text and a URL. Use 'row' to group buttons horizontally (same row number = same line).",
|
|
13
|
+
"crm-dashboard.campaign-steps-flow.label": "Campaign Steps",
|
|
14
|
+
"crm-dashboard.campaign-steps-flow.description": "Build the user journey: add delays between messages, create A/B tests to compare variants, and chain multiple message steps.",
|
|
15
|
+
"crm-dashboard.global-settings.enableSending.label": "Enable Sending",
|
|
16
|
+
"crm-dashboard.global-settings.enableSending.description": "Master ON/OFF switch for all CRM messages. When disabled, no campaigns will send any messages. Use this to pause everything during maintenance or emergencies.",
|
|
17
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.label": "Max Messages Per Day",
|
|
18
|
+
"crm-dashboard.global-settings.maxMessagesPerDay.description": "Maximum messages one user can receive in 24 hours across ALL campaigns. Prevents spam. Example: if set to 3, user won't get 4th message even if 4 campaigns target them.",
|
|
19
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.label": "Max Messages Per Hour",
|
|
20
|
+
"crm-dashboard.global-settings.maxMessagesPerHour.description": "Maximum messages one user can receive within 1 hour. Prevents message flooding. Example: if set to 2, user won't get 3rd message within same hour.",
|
|
21
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.label": "Global Cooldown (minutes)",
|
|
22
|
+
"crm-dashboard.global-settings.globalCooldownMinutes.description": "Minimum waiting time between ANY two messages to the same user. Example: if set to 30, after sending one message, system waits 30 minutes before sending another (from any campaign).",
|
|
23
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.label": "Default Campaign Cooldown (days)",
|
|
24
|
+
"crm-dashboard.global-settings.defaultCampaignCooldownDays.description": "How many days to wait before the SAME campaign can message the same user again. Prevents repetitive messages. Individual campaigns can override this.",
|
|
25
|
+
"crm-dashboard.global-settings.quietHoursEnabled.label": "Quiet Hours Enabled",
|
|
26
|
+
"crm-dashboard.global-settings.quietHoursEnabled.description": "When ON, no messages are sent during quiet hours (night time). Respects user sleep and improves engagement. Turn OFF only if you need 24/7 messaging.",
|
|
27
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.label": "Quiet Hours Start",
|
|
28
|
+
"crm-dashboard.global-settings.defaultQuietHoursStart.description": "Time when quiet period begins (no messages sent). Example: 22:00 means no messages from 10 PM. Used for users without timezone data.",
|
|
29
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.label": "Quiet Hours End",
|
|
30
|
+
"crm-dashboard.global-settings.defaultQuietHoursEnd.description": "Time when quiet period ends (messages resume). Example: 09:00 means messages can be sent from 9 AM. Used for users without timezone data.",
|
|
31
|
+
"crm-dashboard.global-settings.defaultTimezone.label": "Default Timezone",
|
|
32
|
+
"crm-dashboard.global-settings.defaultTimezone.description": "Fallback timezone for users whose timezone is unknown. Used to calculate quiet hours. Example: UTC, Europe/Moscow, America/New_York.",
|
|
33
|
+
"crm-dashboard.global-settings.timezoneOverrides.label": "Timezone Overrides",
|
|
34
|
+
"crm-dashboard.global-settings.timezoneOverrides.description": "Custom quiet hours and rate limits for specific timezones. Example: Russian users might have different quiet hours (23:00-10:00 Moscow time) than US users.",
|
|
35
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.label": "Priority Conflict Behavior",
|
|
36
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.description": "What happens when multiple campaigns want to message the same user at the same time?",
|
|
37
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only": "Send Highest Only",
|
|
38
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.send_highest_only.description": "Only send the message from the campaign with highest priority. Other messages are cancelled. Best for: avoiding spam, ensuring most important message gets through.",
|
|
39
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others": "Queue Others",
|
|
40
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.queue_others.description": "Send highest priority first, put others in queue for later. Messages wait until cooldown passes. Best for: ensuring all messages eventually reach user.",
|
|
41
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others": "Drop Others",
|
|
42
|
+
"crm-dashboard.global-settings.priorityConflictBehavior.drop_others.description": "Send highest priority, permanently discard others (no retry). Best for: time-sensitive campaigns where delayed messages lose relevance.",
|
|
43
|
+
"crm-dashboard.global-settings.testMode.label": "Test Mode",
|
|
44
|
+
"crm-dashboard.global-settings.testMode.description": "When ON, campaigns only send to test users (listed below). Use this to test campaigns before going live. Real users won't receive anything.",
|
|
45
|
+
"crm-dashboard.global-settings.testUserIds.label": "Test User IDs",
|
|
46
|
+
"crm-dashboard.global-settings.testUserIds.description": "List of user IDs that receive messages in test mode. Format: [123, 456, 789]. Only these users get messages when Test Mode is ON.",
|
|
47
|
+
"crm-dashboard.campaign.name.label": "Campaign Name",
|
|
48
|
+
"crm-dashboard.campaign.name.description": "Internal name for this campaign. Used in admin panel and analytics. Make it descriptive, e.g., 'Welcome Series - Day 1' or 'Deposit Reminder - Inactive Users'.",
|
|
49
|
+
"crm-dashboard.campaign.isActive.label": "Active",
|
|
50
|
+
"crm-dashboard.campaign.isActive.description": "Campaign ON/OFF switch. Only active campaigns send messages. Inactive campaigns are paused but keep their settings.",
|
|
51
|
+
"crm-dashboard.campaign.cooldownHours.label": "Cooldown (hours)",
|
|
52
|
+
"crm-dashboard.campaign.cooldownHours.description": "Minimum hours between messages from THIS campaign to the same user. Example: 24 means user can only get one message per day from this campaign.",
|
|
53
|
+
"crm-dashboard.campaign.priority.label": "Priority",
|
|
54
|
+
"crm-dashboard.campaign.priority.description": "Campaign importance (0-100, higher = more important). When multiple campaigns compete to send at same time, highest priority wins. Default: 5.",
|
|
55
|
+
"crm-dashboard.campaign.dailyCapPerUser.label": "Daily Cap Per User",
|
|
56
|
+
"crm-dashboard.campaign.dailyCapPerUser.description": "Maximum messages THIS campaign can send to one user per day. Example: 1 means user gets at most 1 message daily from this campaign.",
|
|
57
|
+
"crm-dashboard.campaign.ignoreQuietHours.label": "Ignore Quiet Hours",
|
|
58
|
+
"crm-dashboard.campaign.ignoreQuietHours.description": "When ON, this campaign can send during quiet hours (night time). Use sparingly for urgent/time-critical messages only.",
|
|
59
|
+
"crm-dashboard.campaign.allowReEntry.label": "Allow Re-Entry",
|
|
60
|
+
"crm-dashboard.campaign.allowReEntry.description": "Can users enter this campaign multiple times? When ON, user can restart the journey after completing it. When OFF, user goes through campaign only once ever.",
|
|
61
|
+
"crm-dashboard.campaign.reEntryDelayDays.label": "Re-Entry Delay (days)",
|
|
62
|
+
"crm-dashboard.campaign.reEntryDelayDays.description": "If re-entry is allowed, how many days must pass before user can enter again? Example: 30 means user waits 30 days after completing before restarting.",
|
|
63
|
+
"crm-dashboard.campaign.startDate.label": "Start Date",
|
|
64
|
+
"crm-dashboard.campaign.startDate.description": "Campaign becomes active on this date. Before this date, campaign won't send even if Active is ON. Leave empty for immediate start.",
|
|
65
|
+
"crm-dashboard.campaign.endDate.label": "End Date",
|
|
66
|
+
"crm-dashboard.campaign.endDate.description": "Campaign automatically stops on this date. After this date, no new messages are sent. Leave empty for no end date.",
|
|
67
|
+
"crm-dashboard.timezone-settings.timezone.label": "Timezone",
|
|
68
|
+
"crm-dashboard.timezone-settings.timezone.description": "IANA timezone identifier. Examples: Europe/Moscow, America/New_York, Asia/Tokyo. Find your timezone at timeanddate.com.",
|
|
69
|
+
"crm-dashboard.timezone-settings.quietHoursStart.label": "Quiet Hours Start",
|
|
70
|
+
"crm-dashboard.timezone-settings.quietHoursStart.description": "When to stop sending messages in this timezone. Example: 23:00 for Moscow users.",
|
|
71
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.label": "Quiet Hours End",
|
|
72
|
+
"crm-dashboard.timezone-settings.quietHoursEnd.description": "When to resume sending messages in this timezone. Example: 10:00 for Moscow users.",
|
|
73
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.label": "Max Messages Per Day (override)",
|
|
74
|
+
"crm-dashboard.timezone-settings.maxMessagesPerDay.description": "Override daily message limit for users in this timezone. Leave empty to use global default.",
|
|
75
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.label": "Max Messages Per Hour (override)",
|
|
76
|
+
"crm-dashboard.timezone-settings.maxMessagesPerHour.description": "Override hourly message limit for users in this timezone. Leave empty to use global default.",
|
|
77
|
+
"crm-dashboard.template.name.label": "Template Name",
|
|
78
|
+
"crm-dashboard.template.name.description": "Internal name for this template. Example: 'Welcome Message', 'Deposit Reminder'.",
|
|
79
|
+
"crm-dashboard.template.channel.label": "Channel",
|
|
80
|
+
"crm-dashboard.template.channel.description": "Where to send this message: Telegram, Email, Push notification, or SMS.",
|
|
81
|
+
"crm-dashboard.template.title.label": "Title",
|
|
82
|
+
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
83
|
+
"crm-dashboard.template.body.label": "Message Body",
|
|
84
|
+
"crm-dashboard.template.body.description": "The actual message text. Supports variables like {{user.name}}, {{user.balance}}. For Telegram: supports Markdown formatting."
|
|
85
|
+
};
|
|
86
|
+
exports.default = en;
|