# Support Center Module Enterprise Support Center for handling customer support tickets, knowledge base articles, and support settings. ## Features - **Ticket Management** - Create and track support tickets - Multiple ticket types (technical, billing, feature requests, etc.) - Priority and status management - Ticket categories and tags - SLA deadline tracking - Message and activity history - **Knowledge Base** - Categorized articles - Search functionality - Featured articles - Article feedback (helpful/not helpful) - View count tracking - Rich content support - **Public API** - Create tickets without authentication - Check ticket status by ticket number - Browse knowledge base articles - Search articles ## Setup ### 1. Run Migrations ```bash python manage.py migrate ``` ### 2. Populate Initial Data ```bash python manage.py populate_support_data ``` This will create: - 5 ticket statuses (Open, In Progress, Pending Response, Resolved, Closed) - 4 ticket priorities (Low, Medium, High, Critical) - 6 ticket categories - 6 knowledge base categories - 6 sample knowledge base articles ### 3. Admin Access Access the Django admin panel to manage: - Support tickets - Ticket categories, statuses, and priorities - Knowledge base categories and articles - Support settings ## API Endpoints ### Tickets - `GET /api/support/tickets/` - List all tickets - `POST /api/support/tickets/` - Create a new ticket - `GET /api/support/tickets/{id}/` - Get ticket details - `POST /api/support/tickets/check-status/` - Check ticket status by ticket number - `POST /api/support/tickets/{id}/add-message/` - Add a message to a ticket ### Categories - `GET /api/support/categories/` - List all ticket categories - `GET /api/support/statuses/` - List all ticket statuses - `GET /api/support/priorities/` - List all ticket priorities ### Knowledge Base - `GET /api/support/knowledge-base/` - List all published articles - `GET /api/support/knowledge-base/{slug}/` - Get article details - `GET /api/support/knowledge-base/featured/` - Get featured articles - `GET /api/support/knowledge-base/by-category/{category_slug}/` - Get articles by category - `POST /api/support/knowledge-base/{slug}/mark-helpful/` - Mark article as helpful/not helpful - `GET /api/support/knowledge-base-categories/` - List all KB categories ### Settings - `GET /api/support/settings/` - List all active support settings - `GET /api/support/settings/{setting_name}/` - Get specific setting ## Models ### SupportTicket Main model for support tickets with full tracking capabilities. ### TicketStatus Ticket status options (Open, In Progress, Resolved, etc.) ### TicketPriority Priority levels with SLA hours (Low, Medium, High, Critical) ### TicketCategory Categorize tickets for better organization ### TicketMessage Messages and updates on tickets ### TicketActivity Audit trail of all ticket changes ### KnowledgeBaseCategory Categories for knowledge base articles ### KnowledgeBaseArticle Knowledge base articles with rich content ### SupportSettings Configurable support center settings ## Usage Examples ### Create a Ticket ```python import requests data = { "title": "Cannot login to my account", "description": "I've been trying to login but getting error 500", "ticket_type": "technical", "user_name": "John Doe", "user_email": "john@example.com", "user_phone": "+1234567890", "company": "Acme Corp", "category": 1 # Technical Support category ID } response = requests.post('http://localhost:8000/api/support/tickets/', json=data) ticket = response.json() print(f"Ticket created: {ticket['ticket_number']}") ``` ### Check Ticket Status ```python import requests data = { "ticket_number": "TKT-20231015-ABCDE" } response = requests.post('http://localhost:8000/api/support/tickets/check-status/', json=data) ticket = response.json() print(f"Status: {ticket['status_name']}") ``` ### Search Knowledge Base ```python import requests response = requests.get('http://localhost:8000/api/support/knowledge-base/', params={'search': 'login'}) articles = response.json() for article in articles: print(f"- {article['title']}") ``` ## Frontend Integration The support center is integrated with the Next.js frontend at `/support-center` with: - Ticket submission form - Knowledge base browser with search - Ticket status checker - Modern, responsive UI ## Email Notifications To enable email notifications for tickets, configure email settings in `settings.py` and implement email templates in `support/templates/support/`. ## Security - All endpoints are public (AllowAny permission) - Ticket numbers are randomly generated and hard to guess - Internal notes and messages are hidden from public API - Rate limiting recommended for production ## Future Enhancements - [ ] Live chat integration - [ ] File attachments for tickets - [ ] Email notifications - [ ] Ticket assignment and routing - [ ] SLA breach alerts - [ ] Advanced analytics dashboard - [ ] Webhook notifications