feat: add Planka service provider with full notification and command support

Webhook-based provider for Planka (self-hosted Kanban board) with:
- 15 event types (cards, boards, lists, comments, tasks, attachments, labels)
- Bearer token webhook authentication
- Async API client for boards/cards/lists
- 30 notification templates (en/ru) + 26 command templates (en/ru)
- Bot commands: /status, /boards, /cards, /lists
- Default tracking config, template config, command config seeded on startup
- DB migration for 15 new tracking_config columns
- Frontend: provider config UI with auto-name, Planka-specific hints
- Frontend: tracking config event toggles for all 15 Planka events
This commit is contained in:
2026-03-23 15:54:00 +03:00
parent 39bac828fd
commit 0fde3c6b3d
83 changed files with 1827 additions and 3 deletions
+20
View File
@@ -107,6 +107,7 @@
"checking": "Проверка...",
"typeImmich": "Immich",
"typeGitea": "Gitea",
"typePlanka": "Planka",
"typeScheduler": "Планировщик",
"loadError": "Не удалось загрузить провайдеры.",
"externalDomain": "Внешний домен",
@@ -116,6 +117,9 @@
"webhookSecret": "Секрет вебхука",
"webhookSecretKeep": "Секрет вебхука (оставьте пустым для сохранения текущего)",
"webhookSecretHint": "Общий секрет для проверки HMAC-SHA256 подписи. Укажите тот же секрет в настройках вебхука Gitea.",
"plankaWebhookSecretHint": "Bearer-токен для аутентификации вебхуков. Укажите тот же токен как WEBHOOK_ACCESS_TOKEN в Planka.",
"plankaApiKeyHint": "Необязательно. Нужен для проверки подключения и получения списка досок.",
"plankaWebhookUrlHint": "Укажите этот URL в конфигурации Planka (относительно хоста bridge).",
"webhookSecretRequired": "Секрет вебхука обязателен",
"apiToken": "API токен",
"apiTokenHint": "Необязательно. Нужен для проверки подключения и получения списка репозиториев.",
@@ -378,6 +382,21 @@
"prMerged": "PR влит",
"prCommented": "Комментарий к PR",
"releasePublished": "Релиз опубликован",
"cardCreated": "Карточка создана",
"cardUpdated": "Карточка обновлена",
"cardMoved": "Карточка перемещена",
"cardDeleted": "Карточка удалена",
"cardCommented": "Комментарий к карточке",
"commentUpdated": "Комментарий обновлён",
"boardCreated": "Доска создана",
"boardUpdated": "Доска обновлена",
"boardDeleted": "Доска удалена",
"listCreated": "Список создан",
"listUpdated": "Список обновлён",
"listDeleted": "Список удалён",
"attachmentCreated": "Вложение добавлено",
"cardLabelAdded": "Метка добавлена",
"taskCompleted": "Задача завершена",
"scheduledMessage": "Запланированное сообщение",
"trackImages": "Фото",
"trackVideos": "Видео",
@@ -795,6 +814,7 @@
"previewWebhook": "Предпросмотр как текст",
"providerImmich": "Фотосервер для самостоятельного размещения",
"providerGitea": "Git-сервер для самостоятельного размещения",
"providerPlanka": "Канбан-доска для самостоятельного размещения",
"providerScheduler": "Запланированные сообщения по расписанию"
},
"error": {