# +======================================================================
# | 模块: 环境配置文件模板
# | 说明: 提供完整的 .env 配置示例，包含应用、数据库、缓存、JWT、验证码等
# +======================================================================

# ============================================================
# 基础配置
# ============================================================

# 应用名称 - 用于界面显示和系统标识
FASTAPI_NAME=FastAPI+AntdVue旗舰版
# 应用版本 - 当前版本号
FASTAPI_VERSION=v3.0.0
# 应用运行地址 - 服务绑定的IP地址，127.0.0.1表示仅本地访问
FASTAPI_HOST=127.0.0.1
# 应用运行端口 - 服务监听的端口号
FASTAPI_PORT=8031
# 应用启动文件 - 项目入口Python文件
FASTAPI_APP=main.py
# 应用环境变量 - 运行环境：development/production/testing
FASTAPI_ENV=development
# 是否DEBUG模式 - True:开启调试（详细错误日志），False:关闭
FASTAPI_DEBUG=True
# 是否DEMO模式 - True:演示模式（限制写操作），False:正常模式
FASTAPI_DEMO=False
# 应用文件上传路径 - 用户上传文件的物理存储目录
# 默认取项目根目录下的 uploads
# FASTAPI_UPLOAD_DIR=/data/apps/uploads
# 文件访问域名 - 文件资源的CDN/访问域名
FASTAPI_FILE_URL='http://images.fastapi.antdvue.djangoadmin.cn'

# 允许上传的文件扩展名 - 逗号分隔，带点号
# 生产环境务必配置，防止上传.py、.exe、.sh等危险文件
UPLOAD_ALLOWED_EXTS=.jpg,.jpeg,.png,.gif,.bmp,.ico,.txt,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.mp3,.mp4,.zip,.rar,.7z

# 上传文件大小上限（MB）- 超过此大小将被拒绝上传
UPLOAD_MAX_SIZE_MB=10


# ============================================================
# 数据库配置
# ============================================================

# 数据库驱动 - 可选 mysql/postgresql/mssql/oracle/sqlite
# 示例：
#   MySQL:      DB_DRIVER=mysql        DB_HOST=127.0.0.1 DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=***
#   PostgreSQL: DB_DRIVER=postgresql   DB_HOST=127.0.0.1 DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=***
#   SQL Server: DB_DRIVER=mssql        DB_HOST=127.0.0.1 DB_PORT=1433 DB_USERNAME=sa DB_PASSWORD=***
#   Oracle:     DB_DRIVER=oracle       DB_HOST=127.0.0.1 DB_PORT=1521 DB_USERNAME=<schema用户> DB_PASSWORD=***
#                                       （DB_DATABASE 即服务名 service_name，schema 是连接用户）
#   SQLite:     DB_DRIVER=sqlite       DB_DATABASE=dev.db（DB_DATABASE 即数据库文件完整路径）
DB_DRIVER='mysql'
# 数据库地址 - 数据库服务器IP或域名（sqlite 时忽略）
DB_HOST='127.0.0.1'
# 数据库端口 - MySQL:3306 / PostgreSQL:5432 / SQL Server:1433 / Oracle:1521
DB_PORT=3306
# 数据库名称 - 要连接的数据库名；Oracle 时即服务名 service_name；SQLite 时作为数据库文件路径
DB_DATABASE='djangoadmin.fastapi.antdvue'
# 数据库账号 - 连接数据库的用户名（sqlite 时忽略）
DB_USERNAME='root'
# 数据库密码 - 连接数据库的密码（sqlite 时忽略）
DB_PASSWORD='root'
# 数据表前缀 - 所有数据表统一前缀
DB_PREFIX='fastapi_'
# 是否开启调试模式 - True:输出SQL执行日志，False:不输出
DB_DEBUG=True


# ============================================================
# 缓存配置
# ============================================================

# 缓存服务地址 - Redis服务器IP或域名
REDIS_HOST='127.0.0.1'
# 缓存服务端口 - Redis默认端口6379
REDIS_PORT=6379
# 缓存服务密码 - Redis认证密码（REDIS_AUTH为True时生效）
REDIS_PASSWORD="123456"
# 缓存库索引 - Redis数据库编号（0-15）
REDIS_INDEX=0
# 是否启用用户认证 - True:需要密码验证，False:无需验证
REDIS_AUTH=True
# 是否自动解码响应 - True:返回字符串，False:返回字节数据
REDIS_DECODE_RESPONSES=True


# ============================================================
# JWT令牌配置
# ============================================================

# JWT密钥 - 用于令牌签名和验证，至少32字节，务必使用强随机密钥
# 生成方式：python -c "import secrets; print(secrets.token_urlsafe(48))"
JWT_SALT='VHMlRyV000Tx8xbGtV7k0JG7RhRPE90_oPmUU3c2IzG_3B1ApWIJt1LGLWe83vOG'

# JWT令牌过期时间（分钟）- 默认20分钟
JWT_EXPIRE_MINUTES=20

# 登录失败次数上限 - 同一IP+用户名连续失败超过此次数后锁定
LOGIN_FAIL_MAX=5
# 登录锁定时间（秒）- 锁定期间禁止该IP+用户名登录
LOGIN_LOCK_SECONDS=300


# ============================================================
# 验证码配置
# ============================================================

# 验证码字符长度（4-6位）
CAPTCHA_LENGTH=6
# 验证码过期时间（秒），默认5分钟
CAPTCHA_EXPIRE=300
# 验证码防刷窗口期（秒）
CAPTCHA_RATE_WINDOW=60
# 验证码防刷上限（窗口期内最大获取次数）
CAPTCHA_RATE_LIMIT=10
# 验证码字符集（去除易混淆字符）
CAPTCHA_CHARS=ABCDEFGHJKLMNPQRSTUVWXYZ2346789
# 验证码字体路径
CAPTCHA_FONT_PATH=static/fonts/Vera.ttf
# 验证码图片宽度（像素）
CAPTCHA_IMAGE_WIDTH=160
# 验证码图片高度（像素）
CAPTCHA_IMAGE_HEIGHT=50
# 验证码字体大小
CAPTCHA_FONT_SIZE=28
# 干扰线数量
CAPTCHA_NOISE_LINES=6
# 噪点数量
CAPTCHA_NOISE_DOTS=30


# ============================================================
# CORS 与代理配置
# ============================================================

# CORS允许的源 - 逗号分隔
CORS_ALLOWED_ORIGINS=http://localhost:8001

# 可信代理层数 - 0=不信任X-Forwarded-For，>=1 表示在反向代理后
TRUSTED_PROXY_COUNT=0


# ============================================================
# 邮件配置
# ============================================================

# 邮件传输代理
MAIL_MAILER='smtp'
# 邮件服务地址
MAIL_SERVER='smtp.163.com'
# 邮件服务端口
MAIL_PORT=465
# 是否启用SSL加密
MAIL_USE_SSL=True
# 授权邮箱用户名
MAIL_USERNAME=''
# 授权邮箱授权码
MAIL_PASSWORD=''
# 邮件加密串
MAIL_ENCRYPTION=''
# 邮件发件人名称
MAIL_FROM_NAME=''
# 邮件发件人地址
MAIL_FROM_ADDRESS=''


# ============================================================
# 短信配置
# ============================================================

# 短信服务地址
SMS_URL=''
# 短信服务API密钥
SMS_API_KEY=''
# 短信签名
SMS_SIGN=''
# 短信模板ID
SMS_TEMPLATE_ID=''


# ============================================================
# 请求限流（可选，默认关闭）
# ============================================================

# 是否启用请求级 IP 限流中间件
# RATE_LIMIT_ENABLED=False
# 单窗口内每个 IP 最大请求数
# RATE_LIMIT_LIMIT=100
# 统计窗口时长（秒）
# RATE_LIMIT_WINDOW_SECONDS=60
# Redis 计数 key 前缀
# RATE_LIMIT_KEY_PREFIX=rl: