from django.db import models class JbotApiConfig(models.Model): """Singleton model storing JBOT API credentials and runtime defaults. Configured via the Settings UI at /jbot/settings — env vars are fallback only. """ volc_app_id = models.CharField(max_length=200, blank=True, default='') volc_access_token = models.CharField(max_length=500, blank=True, default='') openrouter_api_key = models.CharField(max_length=200, blank=True, default='') llm_model = models.CharField(max_length=200, blank=True, default='deepseek/deepseek-chat') volc_tts_voice = models.CharField(max_length=200, blank=True, default='zh_female_vv_uranus_bigtts') volc_asr_resource = models.CharField(max_length=200, blank=True, default='volc.bigasr.sauc.duration') # Hermes Agent backend hermes_url = models.CharField(max_length=500, blank=True, default='http://192.168.1.10:8642') hermes_api_key = models.CharField(max_length=200, blank=True, default='') backend_mode = models.CharField(max_length=20, blank=True, default='openrouter', choices=[('openrouter', 'OpenRouter'), ('hermes', 'Hermes Agent')]) updated_at = models.DateTimeField(auto_now=True) class Meta: verbose_name = 'JBOT API Config' @classmethod def load(cls): """Return the singleton row, creating it if needed.""" obj, _ = cls.objects.get_or_create(pk=1) return obj def save(self, *args, **kwargs): self.pk = 1 super().save(*args, **kwargs)