# ============================================================
# EchoChat Docker 容器内配置
# 与 config.dev.yaml 的区别：数据库和 Redis 地址使用 Docker 服务名
# ============================================================

server:
  port: 8085
  mode: debug

database:
  host: postgres
  port: 5432
  user: echochat
  password: echochat_dev_2026
  dbname: echochat
  sslmode: disable
  max_idle_conns: 10
  max_open_conns: 100

redis:
  host: redis
  port: 6379
  password: ""
  db: 0

jwt:
  secret: echochat-dev-jwt-secret-2026-please-change-in-production
  access_expire_min: 120
  refresh_expire_day: 7
  issuer: echochat

oauth:
  frontend_callback_url: "/echoChat-frontend/#/pages/auth/oauth-callback"
  providers:
    wechat:
      enabled: false
      client_id: ""
      client_secret: ""
      redirect_uri: "https://yl.z64.cn/api/v1/auth/oauth/wechat/callback"
    qq:
      enabled: false
      client_id: ""
      client_secret: ""
      redirect_uri: "https://yl.z64.cn/api/v1/auth/oauth/qq/callback"

log:
  level: debug
  format: text
  output_path: stdout
  file:
    enable: true
    dir: logs
    max_size: 50
    max_backups: 10
    max_age: 30
    compress: false

minio:
  endpoint: "minio:9000"
  access_key: "echochat"
  secret_key: "echochat_2026-1s32dswW@#"
  bucket: "echochat"
  use_ssl: false
  public_base_url: "https://yl.z64.cn/echochat"

# Node media-server 接入配置（Phase 2e-2 Task 7）
media_server:
  base_url: "http://media-server:3300"            # Docker 网络内服务名
  internal_token: "dev-internal-token-change-me"  # 生产环境通过 ECHOCHAT_MEDIA_SERVER_INTERNAL_TOKEN 覆盖
  timeout_ms: 10000        # Task 16 Nit：5000 → 10000 兼容 Worker 冷启动
  close_timeout_ms: 2000
  close_retry: 2
  create_router_retry: 1   # Task 16 Nit：CreateRouter 在 5xx/网络错误时的额外重试次数

# 外部 LLM/STT 配置中心（Phase B 语音转文字）
# 仅做只读 t_llm_provider/t_llm_model/t_llm_key
# 通过 ECHOCHAT_LLM_SOURCE_HOST / _USER / _PASSWORD / _DBNAME 在容器中覆盖
llm_source:
  enabled: false
  host: ""
  port: 3306
  user: ""
  password: ""
  dbname: ""
  charset: utf8mb4
  parse_time: true
  loc: Local
  max_idle_conns: 5
  max_open_conns: 20

# 会议模块生命周期参数（Phase 2e-2 Task 8）
meeting:
  host_grace_seconds: 120
  empty_room_ttl_seconds: 300
  cleanup_interval_seconds: 30
  stale_room_hours: 4
  # media-server 失败回调共享密钥：必须与 docker-compose 中 media-server 服务的 INTERNAL_WEBHOOK_SECRET 一致
  # 生产部署请通过环境变量 ECHOCHAT_MEETING_INTERNAL_WEBHOOK_SECRET 覆盖（viper.AutomaticEnv 已开启）
  internal_webhook_secret: internal-webhook-12xqs
  cloud_law_internal_token: cloud-law-internal-xx14
  recording_transcode_enabled: true
  recording_transcode_ffmpeg_path: ffmpeg
  recording_transcode_timeout_seconds: 600
