# CamTalk 后端配置

app:
  env: dev                    # dev / prod，可通过 APP_ENV 环境变量覆盖

server:
  host: "0.0.0.0"
  port: 8080
  read_timeout: 30            # 秒
  write_timeout: 30           # 秒
  shutdown_timeout: 10        # 优雅关闭超时（秒）
  heartbeat_interval: 30      # 心跳检查间隔（秒）
  heartbeat_timeout: 60       # 心跳超时断开（秒）
  allowed_origins: []         # CORS 白名单，空=允许所有

session:
  ttl: 30                     # 会话过期时间（分钟）
  max_history: 20             # 对话历史上限（条）

ai:
  stt:
    provider: mimo            # mimo / deepgram
    model: mimo-v2.5-asr
    endpoint: "https://api.xiaomimimo.com/v1"
    timeout: 5                # STT 请求超时（秒）
    http_client_timeout: 30   # HTTP 客户端超时（秒）
  llm:
    provider: dashscope       # dashscope / openai
    model: qwen3-vl-plus
    endpoint: "https://dashscope.aliyuncs.com/compatible-mode/v1"
    timeout: 30               # LLM 请求超时（秒）
    http_client_timeout: 60   # HTTP 客户端超时（秒）
  tts:
    provider: mimo            # mimo / openai
    model: mimo-v2.5-tts
    voice: mimo_default
    speed: 1.0
    endpoint: "https://token-plan-cn.xiaomimimo.com/v1"
    timeout: 5                # TTS 请求超时（秒）
    http_client_timeout: 30   # HTTP 客户端超时（秒）
    output_format: mp3        # 输出格式：mp3 / wav
    sample_rate: 24000        # 输出采样率

storage:
  # 三级存储架构：L1 内存 → L2 Redis → L3 PostgreSQL
  redis:
    enabled: true             # 是否启用 Redis（L2 热数据层）
  persistence:
    enabled: true             # 是否启用持久化（L3 冷数据层）
    driver: postgres          # postgres
    # dsn 通过环境变量 CAMTALK_STORAGE_DSN 设置

redis:
  addr: "localhost:6379"
  password: ""
  db: 0

auth:
  # jwt_secret 通过环境变量 CAMTALK_AUTH_JWT_SECRET 设置
  access_ttl: 120              # Access Token 过期时间（分钟）
  refresh_ttl: 10080          # Refresh Token 过期时间（分钟），7 天

ratelimit:
  enabled: false              # 是否启用限流
  # WebSocket query 消息限流（核心，控制 AI 成本）
  query:
    capacity: 10              # 突发容量：允许连续发 10 个 query
    rate: 0.2                 # 填充速率：每 5 秒补充 1 个令牌
  # REST API 登录限流（防暴力破解）
  login:
    capacity: 5               # 突发容量：允许连续 5 次登录尝试
    rate: 0.1                 # 填充速率：每 10 秒补充 1 次
  # REST API 注册限流
  register:
    capacity: 3               # 突发容量：允许连续 3 次注册
    rate: 0.05                # 填充速率：每 20 秒补充 1 次

log:
  level: info                 # debug / info / warn / error
  format: console             # console / json
