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:
@@ -183,6 +183,7 @@ async def _seed_default_templates() -> None:
|
||||
async with AsyncSession(engine) as session:
|
||||
await _seed_provider_template(session, "immich", "Immich")
|
||||
await _seed_provider_template(session, "gitea", "Gitea")
|
||||
await _seed_provider_template(session, "planka", "Planka")
|
||||
await _seed_provider_template(session, "scheduler", "Scheduler")
|
||||
await session.commit()
|
||||
|
||||
@@ -201,6 +202,9 @@ async def _seed_default_command_templates() -> None:
|
||||
await _seed_provider_command_template(
|
||||
session, "gitea", "Default Gitea Commands", "Default Gitea command templates",
|
||||
)
|
||||
await _seed_provider_command_template(
|
||||
session, "planka", "Default Planka Commands", "Default Planka command templates",
|
||||
)
|
||||
await session.commit()
|
||||
|
||||
|
||||
@@ -227,6 +231,25 @@ async def _seed_default_tracking_configs() -> None:
|
||||
"track_pr_commented": False,
|
||||
"track_release_published": True,
|
||||
},
|
||||
{
|
||||
"provider_type": "planka",
|
||||
"name": "Default Planka",
|
||||
"track_card_created": True,
|
||||
"track_card_updated": False,
|
||||
"track_card_moved": True,
|
||||
"track_card_deleted": False,
|
||||
"track_card_commented": True,
|
||||
"track_comment_updated": False,
|
||||
"track_board_created": True,
|
||||
"track_board_updated": False,
|
||||
"track_board_deleted": True,
|
||||
"track_list_created": False,
|
||||
"track_list_updated": False,
|
||||
"track_list_deleted": False,
|
||||
"track_attachment_created": True,
|
||||
"track_card_label_added": False,
|
||||
"track_task_completed": True,
|
||||
},
|
||||
{
|
||||
"provider_type": "scheduler",
|
||||
"name": "Default Scheduler",
|
||||
@@ -280,6 +303,16 @@ async def _seed_default_command_configs() -> None:
|
||||
"default_count": 10,
|
||||
"rate_limits": {"api": 15, "default": 10},
|
||||
},
|
||||
{
|
||||
"provider_type": "planka",
|
||||
"name": "Default Planka",
|
||||
"enabled_commands": [
|
||||
"help", "status", "boards", "cards", "lists",
|
||||
],
|
||||
"response_mode": "text",
|
||||
"default_count": 10,
|
||||
"rate_limits": {"api": 15, "default": 10},
|
||||
},
|
||||
]
|
||||
|
||||
for cfg in defaults:
|
||||
|
||||
Reference in New Issue
Block a user