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)
