93 lines
3.7 KiB
Python
93 lines
3.7 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from django.utils import timezone
|
|
|
|
class ChatSession(models.Model):
|
|
"""Chat-Session für Live-Support"""
|
|
STATUS_CHOICES = [
|
|
('active', 'Aktiv'),
|
|
('waiting', 'Wartend'),
|
|
('closed', 'Geschlossen'),
|
|
]
|
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
|
|
session_id = models.CharField(max_length=100, unique=True)
|
|
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='waiting')
|
|
agent = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='chat_sessions')
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
updated = models.DateTimeField(auto_now=True)
|
|
closed = models.DateTimeField(null=True, blank=True)
|
|
|
|
class Meta:
|
|
ordering = ['-created']
|
|
|
|
def __str__(self):
|
|
return f"Chat {self.session_id} - {self.status}"
|
|
|
|
class ChatMessage(models.Model):
|
|
"""Chat-Nachrichten"""
|
|
MESSAGE_TYPE_CHOICES = [
|
|
('user', 'Benutzer'),
|
|
('agent', 'Agent'),
|
|
('system', 'System'),
|
|
]
|
|
|
|
session = models.ForeignKey(ChatSession, on_delete=models.CASCADE, related_name='messages')
|
|
message_type = models.CharField(max_length=20, choices=MESSAGE_TYPE_CHOICES)
|
|
sender = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
|
content = models.TextField()
|
|
timestamp = models.DateTimeField(auto_now_add=True)
|
|
is_read = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
ordering = ['timestamp']
|
|
|
|
def __str__(self):
|
|
return f"{self.message_type}: {self.content[:50]}"
|
|
|
|
class ChatBot(models.Model):
|
|
"""Chatbot-Konfiguration"""
|
|
name = models.CharField(max_length=100)
|
|
is_active = models.BooleanField(default=True)
|
|
welcome_message = models.TextField()
|
|
auto_responses = models.JSONField(default=dict)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class ChatBotResponse:
|
|
"""Chatbot-Antworten"""
|
|
|
|
@staticmethod
|
|
def get_welcome_message():
|
|
return {
|
|
'message': 'Willkommen beim Fursuit Shop! Wie kann ich Ihnen helfen?',
|
|
'options': [
|
|
'Produktinformationen',
|
|
'Bestellstatus',
|
|
'Custom Order',
|
|
'Zahlung & Versand',
|
|
'Mit Agent verbinden'
|
|
]
|
|
}
|
|
|
|
@staticmethod
|
|
def get_response_for_query(query):
|
|
"""Einfache Keyword-basierte Antworten"""
|
|
query_lower = query.lower()
|
|
|
|
responses = {
|
|
'versand': 'Wir versenden weltweit! Standardversand dauert 3-5 Werktage, Express 1-2 Werktage.',
|
|
'zahlung': 'Wir akzeptieren PayPal, Kreditkarte, SEPA-Lastschrift, Giropay und Sofort.',
|
|
'custom': 'Custom Orders nehmen 4-8 Wochen in Anspruch. Sie können Ihr Design hochladen und wir erstellen ein individuelles Angebot.',
|
|
'preis': 'Unsere Preise beginnen bei 200€ für einfache Teile. Vollständige Fursuits kosten 800-2000€ je nach Komplexität.',
|
|
'größe': 'Wir nehmen individuelle Maße für Custom Orders. Standardgrößen sind S, M, L, XL verfügbar.',
|
|
'material': 'Wir verwenden hochwertige Materialien: Faux Fur, Foam, Mesh für Belüftung und professionelle Elektronik.',
|
|
'pflege': 'Fursuits sollten trocken gelagert werden. Fell kann vorsichtig gebürstet werden. Elektronik vor Wasser schützen.'
|
|
}
|
|
|
|
for keyword, response in responses.items():
|
|
if keyword in query_lower:
|
|
return response
|
|
|
|
return 'Entschuldigung, ich verstehe Ihre Frage nicht. Möchten Sie mit einem Agenten sprechen?' |