# ============================================================
# EchoChat 开发环境配置
# 环境变量覆盖规则：ECHOCHAT_{节}_{字段} 如 ECHOCHAT_SERVER_PORT=9090
# ============================================================

# HTTP 服务配置
server:
  port: 8085          # 服务监听端口
  mode: debug         # 运行模式：debug（开发）/ release（生产）

# PostgreSQL 数据库配置
database:
  host: localhost      # 数据库地址
  port: 7432           # 数据库端口
  user: echochat       # 数据库用户名
  password: echochat_2026-1s32dswW@#  # 数据库密码
  dbname: echochat     # 数据库名称
  sslmode: disable     # SSL 模式：disable（开发）/ require（生产）
  max_idle_conns: 10   # 连接池最大空闲连接数
  max_open_conns: 100  # 连接池最大打开连接数

# Redis 配置
redis:
  host: localhost      # Redis 地址
  port: 7379           # Redis 端口
  password: echochat_2026-1s32dswW@#        # Redis 密码，开发环境为空
  db: 0                # Redis 数据库编号（0-15）

# JWT 认证配置
jwt:
  secret: 1b6d0271700f2db39b2ac7c44811235c55e4e0e61cc47d963f7212b29a39c98f  # JWT 签名密钥，生产环境必须更换
  access_expire_min: 120    # Access Token 有效期（分钟），即 2 小时
  refresh_expire_day: 7     # Refresh Token 有效期（天），即 7 天
  issuer: echochat          # JWT 签发者标识

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         # 最低输出级别：debug / info / warn / error
  format: text         # 控制台输出格式：text（彩色可读）/ json（结构化）
  output_path: stdout  # 控制台输出目标（保留字段，始终输出到 stdout）
  file:
    enable: true       # 是否启用日志文件输出（true 时同时写入控制台和文件）
    dir: logs          # 日志文件存放目录（相对于 go-service 工作目录）
    max_size: 50       # 单个日志文件最大大小（MB），超过后自动切割产生新文件
    max_backups: 10    # 保留的旧日志归档文件最大数量，超出的自动删除
    max_age: 30        # 旧日志归档文件保留天数，超过天数的自动删除
    compress: false    # 是否对归档的旧日志文件进行 gzip 压缩（生产环境建议 true）

# MinIO 对象存储配置
minio:
  endpoint: "localhost:9200"           # MinIO 服务地址
  access_key: "echochat"               # 访问密钥（与 docker-compose 中的 MINIO_ROOT_USER 一致）
  secret_key: "echochat_2026-1s32dswW@#"         # 密钥（与 docker-compose 中的 MINIO_ROOT_PASSWORD 一致）
  bucket: "echochat"                   # 存储桶名称
  use_ssl: false                       # 开发环境不使用 HTTPS
  public_base_url: "https://yl.z64.cn/echochat"

# Node media-server 接入配置（Phase 2e-2 Task 7 HTTPMediaOrchestrator）
# 对应 media-server/.env 的 MEDIA_INTERNAL_TOKEN + HTTP_PORT（默认 3300）
# 生产环境通过环境变量 ECHOCHAT_MEDIA_SERVER_INTERNAL_TOKEN 覆盖
media_server:
  base_url: "http://localhost:3300"          # media-server 基础 URL（不含末尾斜杠）
  internal_token: "internal-token-22xqs"   # 与 media-server/.env MEDIA_INTERNAL_TOKEN 一致（开发环境）
  timeout_ms: 10000                          # 创建类接口超时（毫秒）；Task 16 Nit：5000 → 10000 兼容 Worker 冷启动
  close_timeout_ms: 2000                     # 关闭类接口超时（毫秒）
  close_retry: 2                             # 关闭类接口失败重试次数（指数退避 200/500ms）
  create_router_retry: 1                     # Task 16 Nit：CreateRouter 在 5xx/网络错误时的额外重试次数（默认 1 次，退避 300ms）

# 外部 LLM/STT 配置中心（Phase B 语音转文字）
# 仅做只读访问 t_llm_provider/t_llm_model/t_llm_key
# enabled=false 时跳过 MySQL 连接，转写接口将返回 503
llm_source:
  enabled: true                    # 默认关闭，本地开发不连外部 MySQL；切换到 true 后必须填齐下方字段
  host: 123.6.102.114
  port: 3306
  user: cloud_law
  password: "Asiainfo_2022"                      # 强烈建议通过 ECHOCHAT_LLM_SOURCE_PASSWORD 环境变量覆盖
  dbname: cloud_law
  charset: utf8mb4
  parse_time: true
  loc: Local
  max_idle_conns: 5
  max_open_conns: 20

# 会议模块生命周期参数（Phase 2e-2 Task 8 会议状态机）
# E2E 测试可通过环境变量 ECHOCHAT_MEETING_HOST_GRACE_SECONDS 等覆盖为更短值以加速触发
meeting:
  host_grace_seconds: 120           # 主持人掉线宽限期（秒），期间保留 host 身份
  empty_room_ttl_seconds: 300       # 空房自动销毁 TTL（秒），期间有人加入可复活
  cleanup_interval_seconds: 60      # 兜底扫描周期（秒），定时任务检查过期 grace/empty_ttl key
  stale_room_hours: 4               # 活跃超过此小时且无活跃成员视为 stale，强制结束
  # media-server 失败回调共享密钥：必须与 media-server 端 INTERNAL_WEBHOOK_SECRET 环境变量一致
  # 留空时 /internal/meeting/recordings/failure 全部 403（默认安全）
  internal_webhook_secret: internal-webhook-12xqs
  cloud_law_internal_token: cloud-law-internal-xx14
  recording_transcode_enabled: true
  recording_transcode_ffmpeg_path: /home/ykf/jenkins/yuyin/ffmpeg/ffmpeg-7.0.2-amd64-static/ffmpeg
  recording_transcode_timeout_seconds: 600
