service_name: gateway-service
node_id: gateway-tencent
environment: prod
log:
  level: info
  format: json
  include_request_body: false
  include_response_body: false
  max_payload_bytes: 2048
http_addr: ":13000"
cors:
  # H5/Web Google 登录会先发 HTTPS preflight；gateway 必须在业务 handler 前返回 CORS 头。
  enabled: true
  allowed_origins:
    - "https://global-interaction.com"
    - "https://www.global-interaction.com"
    - "https://h5.global-interaction.com"
    - "https://api.global-interaction.com"
  allowed_methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]
  allowed_headers:
    - "Authorization"
    - "Content-Type"
    - "X-Request-ID"
    - "X-App-Code"
    - "X-HY-App-Code"
    - "X-App-Package"
    - "X-Package-Name"
    - "X-App-Bundle-ID"
    - "X-Bundle-ID"
    - "X-App-Platform"
    - "X-Platform"
  expose_headers: ["X-Request-ID"]
  allow_credentials: true
  max_age_sec: 600
jwt_secret: "REPLACE_WITH_GATEWAY_JWT_SECRET"
room_service_addr: "room-service.internal:13001"
user_service_addr: "user-service.internal:13005"
wallet_service_addr: "wallet-service.internal:13004"
activity_service_addr: "activity-service.internal:13006"
game_service_addr: "game-service.internal:13008"
statistics:
  base_url: "http://statistics-service.internal:13010"
  timeout: "2s"
grpc_client:
  # 线上通过内网 CLB/DNS 访问内部服务；重试只覆盖瞬时 UNAVAILABLE，避免放大业务副作用。
  default_timeout: "5s"
  connect_timeout: "2s"
  keepalive_time: "30s"
  keepalive_timeout: "10s"
  retry_max_attempts: 2
  retry_initial_backoff: "100ms"
  retry_max_backoff: "500ms"
  retry_backoff_multiplier: 2
  retryable_status_codes: ["UNAVAILABLE"]
app_config:
  # App 运行时配置由后台 APP配置写入 hyapp_admin，gateway 只读下发给 App。
  mysql_dsn: "TENCENT_MYSQL_USER:TENCENT_MYSQL_PASSWORD@tcp(TENCENT_MYSQL_HOST:3306)/hyapp_admin?parseTime=true&charset=utf8mb4&loc=UTC"
  # 房间白名单等低频配置用 Redis 缓存 5 分钟，避免每次列表请求查后台库。
  redis_addr: "TENCENT_REDIS_HOST:6379"
  redis_password: "TENCENT_REDIS_PASSWORD"
  redis_db: 0
  key_prefix: "gateway:app_config:"
  cache_ttl: "5m"
leaderboard:
  # 活动用户榜单只读 activity-service 写入的 Redis 聚合结果；必须和 activity-service 使用同一 key_prefix。
  redis_addr: "TENCENT_REDIS_HOST:6379"
  redis_password: "TENCENT_REDIS_PASSWORD"
  redis_db: 0
  key_prefix: "activity:user_leaderboard"
auth_rate_limit:
  # public auth 固定窗口频控；Redis 不可用时 gateway 启动失败，避免失去入口保护。
  enabled: true
  redis_addr: "TENCENT_REDIS_HOST:6379"
  redis_password: "TENCENT_REDIS_PASSWORD"
  redis_db: 0
  key_prefix: "gateway:auth:rate:"
  window_sec: 60
  ip_limit: 120
  device_id_limit: 30
  provider_ip_limit: 20
  display_user_id_ip_limit: 10
  display_user_id_limit: 50
  session_id_ip_limit: 30
login_risk:
  enabled: true
  redis_addr: "TENCENT_REDIS_HOST:6379"
  redis_password: "TENCENT_REDIS_PASSWORD"
  redis_db: 0
  key_prefix: "login_risk:ip:"
  fast_guard:
    blocked_languages: []
    blocked_language_primary_tags: []
    blocked_timezones: []
    blocked_timezone_prefixes: []

tencent_im:
  # 腾讯云 IM 应用 ID，来自 Chat/IM 控制台的 SDKAppID。
  sdk_app_id: 1400000000
  # 腾讯云 IM SDKSecretKey，只允许保存在服务端密钥系统或线上配置中。
  secret_key: "TENCENT_IM_SECRET_KEY"
  # 腾讯云 IM App 管理员账号；必须和 activity/room 服务端 REST 配置一致。
  admin_identifier: "TENCENT_IM_ADMIN_IDENTIFIER"
  # gateway 补偿导入 IM 账号时使用的 admin UserSig 有效期。
  admin_user_sig_ttl: "24h"
  # 客户端 UserSig 有效期；过短会增加刷新频率，过长会放大泄露窗口。
  user_sig_ttl: "24h"
  # 腾讯云 IM REST 地域入口；海外应用需要使用对应地域域名。
  endpoint: "adminapisgp.im.qcloud.com"
  request_timeout: "5s"
  # 腾讯云 IM 控制台配置的回调地址，用于入群前、发言前等业务守卫。
  callback_url: "https://api.example.com/api/v1/tencent-im/callback"
  # 腾讯云 IM 回调鉴权 Token，必须和控制台配置保持一致。
  callback_auth_token: "TENCENT_IM_CALLBACK_AUTH_TOKEN"

tencent_rtc:
  # 腾讯 RTC 应用 ID，来自 TRTC 控制台；可与 IM 相同，但必须显式配置。
  enabled: true
  sdk_app_id: 1400000000
  # 腾讯 RTC SDKSecretKey，只允许保存在服务端密钥系统或线上配置中。
  secret_key: "TENCENT_RTC_SECRET_KEY"
  # RTC 进房票据有效期；按客户端刷新能力和泄露窗口调整。
  user_sig_ttl: "2h"
  # 当前业务 room_id 是字符串，客户端只能使用 TRTC strRoomId。
  room_id_type: "string"
  # 语音房场景固定使用 VoiceChatRoom，所有客户端必须保持一致。
  app_scene: "voice_chat_room"
  # 腾讯 RTC 控制台配置的事件回调地址，用于房间退出和音频发布状态同步。
  callback_url: "https://api.example.com/api/v1/tencent-rtc/callback?app_code=default"
  # 腾讯 RTC 回调签名 key，必须和控制台配置保持一致；不要复用 UserSig SecretKey。
  callback_sign_key: "TENCENT_RTC_CALLBACK_SIGN_KEY"

tencent-cos:
  # App 文件/头像上传使用腾讯云 COS；SecretID/SecretKey 只允许保存在服务端配置。
  enabled: true
  secret-id: "TENCENT_COS_SECRET_ID"
  secret-key: "TENCENT_COS_SECRET_KEY"
  bucket-name: "TENCENT_COS_BUCKET_NAME"
  region: "TENCENT_COS_REGION"
  access-url: "https://media.example.com"
