feat(5.21): Tasks Plugin — activities with status, priority, due dates, ARQ reminders
- New builtin plugin app/plugins/builtins/tasks/ with full CRUD
- Task model with TenantMixin (title, description, status, priority, due_date, assigned_to, contact_id)
- Routes: GET/POST /tasks, GET/PATCH/DELETE /tasks/{id}, POST /tasks/{id}/assign, POST /tasks/{id}/status
- All routes RBAC-protected (tasks:read, tasks:write, tasks:delete)
- ARQ cron job tasks_due_reminder (daily 8:00) sends notifications for due tasks
- Migration 0001_initial.sql creates tasks table with indexes
- Frontend: Tasks.tsx page with list, filter, create/edit modal, detail modal
- Frontend: api/tasks.ts with React Query hooks
- Route /tasks in routes/index.tsx, sidebar entry via plugin manifest
- i18n keys for nav.tasks and tasks.* in de.json and en.json
- Tests: test_tasks.py (11 tests) + Tasks.test.tsx (3 tests)
- Registered TasksPlugin in conftest.py and worker.py
This commit is contained in:
@@ -18,7 +18,8 @@
|
||||
"settings": "Einstellungen",
|
||||
"aiAssistant": "KI Assistent",
|
||||
"mcpSettings": "MCP Einstellungen",
|
||||
"reports": "Reports"
|
||||
"reports": "Reports",
|
||||
"tasks": "Aufgaben"
|
||||
},
|
||||
"auth": {
|
||||
"login": "Anmelden",
|
||||
@@ -996,5 +997,30 @@
|
||||
"selectTemplateHint": "Wählen Sie eine Vorlage aus der Liste",
|
||||
"downloadHistory": "Download-Verlauf",
|
||||
"noDownloads": "Noch keine Downloads"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Aufgaben",
|
||||
"create": "Neue Aufgabe",
|
||||
"edit": "Aufgabe bearbeiten",
|
||||
"deleteConfirm": "Diese Aufgabe löschen?",
|
||||
"created": "Aufgabe erstellt",
|
||||
"updated": "Aufgabe aktualisiert",
|
||||
"deleted": "Aufgabe gelöscht",
|
||||
"statusUpdated": "Status aktualisiert",
|
||||
"noTasks": "Keine Aufgaben",
|
||||
"noTasksDesc": "Es wurden noch keine Aufgaben erstellt.",
|
||||
"markDone": "Erledigt",
|
||||
"dueDate": "Fälligkeitsdatum",
|
||||
"title_field": "Titel",
|
||||
"description": "Beschreibung",
|
||||
"status_field": "Status",
|
||||
"priority_field": "Priorität",
|
||||
"statusOpen": "Offen",
|
||||
"statusInProgress": "In Bearbeitung",
|
||||
"statusDone": "Erledigt",
|
||||
"priorityLow": "Niedrig",
|
||||
"priorityMedium": "Mittel",
|
||||
"priorityHigh": "Hoch",
|
||||
"priorityUrgent": "Dringend"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
"settings": "Settings",
|
||||
"aiAssistant": "AI Assistant",
|
||||
"mcpSettings": "MCP Settings",
|
||||
"reports": "Reports"
|
||||
"reports": "Reports",
|
||||
"tasks": "Tasks"
|
||||
},
|
||||
"auth": {
|
||||
"login": "Sign In",
|
||||
@@ -996,5 +997,30 @@
|
||||
"selectTemplateHint": "Select a template from the list",
|
||||
"downloadHistory": "Download History",
|
||||
"noDownloads": "No downloads yet"
|
||||
},
|
||||
"tasks": {
|
||||
"title": "Tasks",
|
||||
"create": "New Task",
|
||||
"edit": "Edit Task",
|
||||
"deleteConfirm": "Delete this task?",
|
||||
"created": "Task created",
|
||||
"updated": "Task updated",
|
||||
"deleted": "Task deleted",
|
||||
"statusUpdated": "Status updated",
|
||||
"noTasks": "No tasks",
|
||||
"noTasksDesc": "No tasks have been created yet.",
|
||||
"markDone": "Mark Done",
|
||||
"dueDate": "Due Date",
|
||||
"title_field": "Title",
|
||||
"description": "Description",
|
||||
"status_field": "Status",
|
||||
"priority_field": "Priority",
|
||||
"statusOpen": "Open",
|
||||
"statusInProgress": "In Progress",
|
||||
"statusDone": "Done",
|
||||
"priorityLow": "Low",
|
||||
"priorityMedium": "Medium",
|
||||
"priorityHigh": "High",
|
||||
"priorityUrgent": "Urgent"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user