Files
GNX-WEB/backEnd/support/README.md
Iliyan Angelov 366f28677a update
2025-11-24 03:52:08 +02:00

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