194 lines
4.9 KiB
Markdown
194 lines
4.9 KiB
Markdown
# 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
|
|
|