feat: Enhance ticketing system with categories, templates, SLA tracking, and fix frontend integration

- Add ticket categories (billing, technical, feature_request, etc.) with type-specific options
- Add TicketTemplate and CannedResponse models for quick ticket creation
- Implement SLA tracking with due_at and first_response_at fields
- Add is_platform_admin and is_customer helper functions to fix permission checks
- Register models in Django admin with filters and fieldsets
- Enhance signals with error handling for WebSocket notifications
- Fix frontend API URLs for templates and canned responses
- Update PlatformSupport page to use real ticketing API
- Add comprehensive i18n translations for all ticket fields

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-11-28 05:32:36 -05:00
parent 512d95ca2d
commit 200a6b3dd4
22 changed files with 1782 additions and 425 deletions

View File

@@ -83,18 +83,23 @@
"tickets": {
"title": "Support Tickets",
"description": "Manage your support requests and inquiries.",
"descriptionOwner": "Manage support tickets for your business",
"descriptionStaff": "View and create support tickets",
"newTicket": "New Ticket",
"errorLoading": "Error loading tickets",
"subject": "Subject",
"description": "Description",
"status": "Status",
"priority": "Priority",
"category": "Category",
"ticketType": "Ticket Type",
"assignee": "Assignee",
"assignedTo": "Assigned to",
"createdAt": "Created At",
"unassigned": "Unassigned",
"noTicketsFound": "No tickets found.",
"noTicketsFound": "No tickets found",
"noTicketsInStatus": "No tickets with this status",
"ticketDetails": "Ticket Details",
"categoryPlaceholder": "e.g., Billing, Technical, Feature Request",
"createTicket": "Create Ticket",
"updateTicket": "Update Ticket",
"comments": "Comments",
@@ -103,14 +108,47 @@
"addCommentPlaceholder": "Add a comment...",
"internalComment": "Internal Comment",
"postComment": "Post Comment",
"priority.low": "Low",
"priority.medium": "Medium",
"priority.high": "High",
"priority.urgent": "Urgent",
"status.open": "Open",
"status.in_progress": "In Progress",
"status.resolved": "Resolved",
"status.closed": "Closed"
"tabs": {
"all": "All",
"open": "Open",
"inProgress": "In Progress",
"awaitingResponse": "Awaiting Response",
"resolved": "Resolved",
"closed": "Closed"
},
"priorities": {
"low": "Low",
"medium": "Medium",
"high": "High",
"urgent": "Urgent"
},
"statuses": {
"open": "Open",
"in_progress": "In Progress",
"awaiting_response": "Awaiting Response",
"resolved": "Resolved",
"closed": "Closed"
},
"types": {
"platform": "Platform Support",
"customer": "Customer Inquiry",
"staff_request": "Staff Request",
"internal": "Internal"
},
"categories": {
"billing": "Billing & Payments",
"technical": "Technical Issue",
"feature_request": "Feature Request",
"account": "Account & Settings",
"appointment": "Appointment Issue",
"refund": "Refund Request",
"complaint": "Complaint",
"general_inquiry": "General Inquiry",
"time_off": "Time Off Request",
"schedule_change": "Schedule Change",
"equipment": "Equipment Issue",
"other": "Other"
}
},
"dashboard": {
"title": "Dashboard",