feat(admin): pages Marketing et Statistiques (sans envoi)
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m32s
CI / Deploy production (on server) (push) Successful in 27s

Ajoute deux entrées au menu d’administration. Les campagnes s’affichent dans un tableau vide honnête. Les statistiques disent clairement qu’aucune mesure n’est encore branchée, sans afficher de zéro trompeur.
This commit is contained in:
Antigravity
2026-09-06 08:55:43 +00:00
parent cae464be4f
commit 6fa12f6e13
22 changed files with 993 additions and 16 deletions

View File

@@ -1527,7 +1527,42 @@
"agents": "Агенты",
"settings": "Настройки",
"billing": "Биллинг и квоты",
"published": "Опубликованные страницы"
"published": "Опубликованные страницы",
"marketing": "Маркетинг",
"stats": "Статистика"
},
"marketing": {
"title": "Маркетинг",
"description": "Готовить рассылки, выбирать получателей и прикреплять предложение. Отправка ещё не включена.",
"emptyTitle": "Пока нет кампаний",
"emptyBody": "Когда кампании появятся, они будут в этой таблице с аудиторией, предложением и статусом. Эта страница не отправляет письма.",
"createCampaign": "Создать кампанию",
"createDisabledHint": "Отправка кампаний в этой версии не включена.",
"columns": {
"name": "Внутреннее имя",
"goal": "Цель",
"audience": "Получатели",
"language": "Язык",
"offer": "Предложение",
"status": "Статус",
"scheduledAt": "Запланированная дата",
"accepted": "Принято службой отправки",
"delivered": "Доставлено",
"paidConversions": "Оплаченные конверсии"
}
},
"stats": {
"title": "Статистика",
"description": "Выручка, подписки, активность в продукте и результаты кампаний. Цифры появляются только из надёжного источника.",
"unavailable": "Пока недоступно",
"unavailableBody": "Этот раздел ещё не связан с измерением. Ноль не показывается: ноль означал бы, что ничего не произошло.",
"lastSyncUnknown": "Последнее обновление: неизвестно",
"sectionRevenue": "Выручка",
"sectionSubscriptions": "Подписки",
"sectionUsage": "Использование",
"sectionCampaigns": "Кампании",
"periodLabel": "Период",
"timezoneNote": "Даты будут в часовом поясе администратора, когда появятся измерения."
},
"metrics": {
"vsLastPeriod": "к предыдущему периоду"