APP_ENV=development
APP_ADDR=:8080

# MySQL 容器初始化变量，同时供后端 DSN 使用。
MYSQL_ROOT_PASSWORD=rootsecret
MYSQL_DATABASE=hfb_sys
MYSQL_USER=hfb
MYSQL_PASSWORD=secret
MYSQL_DSN=hfb:secret@tcp(127.0.0.1:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local

REDIS_ADDR=127.0.0.1:6379
REDIS_PASSWORD=
REDIS_DB=0

JWT_SECRET=change-me

# 前端后台页面入口；本地默认 /admin，生产建议改成不公开的单段路径。
VITE_ADMIN_BASE_PATH=/admin

# 首次启动且管理员表为空时，按以下变量创建首个超级管理员。
# 本地开发可自行填写，生产环境请使用随机强密码，创建后建议从 .env 移除。
ADMIN_BOOTSTRAP_USERNAME=
ADMIN_BOOTSTRAP_PASSWORD=
ADMIN_BOOTSTRAP_NICKNAME=超级管理员

# API 限流：默认开启，每个 IP 每分钟 300 次。
RATE_LIMIT_ENABLED=true
RATE_LIMIT_REQUESTS_PER_MINUTE=300

LOG_LEVEL=info
LOG_DIR=logs
LOG_ENABLE_CONSOLE=true
LOG_ENABLE_FILE=true

# MinIO 容器初始化变量，同时供后端对象存储使用。
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
STORAGE_ENDPOINT=http://localhost:9000
STORAGE_BUCKET=hfb-sys
STORAGE_ACCESS_KEY_ID=minioadmin
STORAGE_SECRET_ACCESS_KEY=minioadmin

# 短信服务：本地开发使用 mock。
SMS_PROVIDER=mock
ALIYUN_ACCESS_KEY_ID=
ALIYUN_ACCESS_KEY_SECRET=
ALIYUN_SMS_ENDPOINT=dysmsapi.aliyuncs.com
ALIYUN_SMS_SIGN_NAME=
ALIYUN_SMS_LOGIN_TEMPLATE_CODE=

# 实名认证：本地开发使用 mock；生产可改为 cloudmarket 并填写云市场 AppCode。
REALNAME_PROVIDER=mock
REALNAME_CLOUDMARKET_URL=https://sinocheck2.market.alicloudapi.com/fortest/ttttt
REALNAME_CLOUDMARKET_APPCODE=

# 支付商户、网关和回调等业务配置通过后台支付配置页维护。
# 支付配置加密密钥（必须为 16、24 或 32 字节；生产环境不要留空）
# 用于加密存储支付商户配置中的敏感信息（sign_key、notify_key）
# 生成方式：openssl rand -hex 16
PAYMENT_CONFIG_ENCRYPTION_KEY=

# 业务字段加密密钥（必须为 16、24 或 32 字节；生产环境必填且与下方 legacy 不同）
# 用于加密实名信息（姓名、身份证）和收款账号（银行卡/支付宝号）
# 生成方式：openssl rand -hex 16
FIELD_ENCRYPTION_KEY=
# 业务字段旧密钥（可选；密钥轮换期间用于透明解出旧密文）
# 留空时使用内置默认值，兼容历史硬编码密钥加密的开发/测试数据。
# 生产环境轮换流程：设新 FIELD_ENCRYPTION_KEY，把旧密钥填到这里，
# 待所有存量密文被读出后（或跑重加密脚本），删除此变量。
FIELD_ENCRYPTION_LEGACY_KEY=

# 开放导入接口可选签名密钥；留空或请求未带签名时按旧方式导入。
# 若调用方携带 X-HFB-Timestamp 和 X-HFB-Signature，则会校验 HMAC 签名。
EXTERNAL_UPLOAD_SECRET=
# 可选：逗号分隔的 IP 或 CIDR 白名单，例如 127.0.0.1,10.0.0.0/8。
EXTERNAL_UPLOAD_ALLOWED_IPS=
