furry/products/chat.py

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?'