95e55293c6
后端安全: - DEBUG 默认 True → False - 彻底移除 AUTH_BYPASS 认证绕过 - 验证码不再明文打印到日志 - 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验 - python-jose → PyJWT, 更新 requirements.lock/uv.lock - Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607) - 修复 5 处 try_except_pass, 15 处加 nosec 注释 - 启用 Bandit pre-commit 钩子 前端安全: - 配置完整 CSP 策略 - 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**) - 移除硬编码 devToken - 清理前端 TODO(美家卡智影命名统一) 部署修复: - docker-compose.prod 增加 alembic 迁移步骤 - api + scheduler 增加 Redis 心跳健康检查 - Nginx 添加安全响应头 - Nginx client_max_body_size 100M → 500M - .env.example 补充 UPLOAD_MAX_* 配置与安全注释 其他: - /voice/upload 合并到 /upload/audio - Rust 上传增加文件大小检查 - 清理 Rust 19 处 println! + 前端 21 处 console.info - 修复 VideoCompose.tsx toast 未导入(已有bug)
91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
# 美家卡智影 API - 环境变量配置示例
|
||
# ================================
|
||
# 复制此文件为 .env 并填写实际值
|
||
|
||
# === 基础配置 ===
|
||
APP_NAME=美家卡智影 API
|
||
APP_VERSION=0.1.0
|
||
# ⚠️ 生产环境必须设为 false
|
||
DEBUG=true
|
||
ENV=development
|
||
HOST=0.0.0.0
|
||
PORT=8000
|
||
WORKERS=1
|
||
|
||
# === 服务器地址 ===
|
||
# 不配置时自动根据 ENV 推断:production→tapi.meijiaka.cn, staging→dev.tapi.meijiaka.cn
|
||
# APP_BASE_URL=https://dev.tapi.meijiaka.cn
|
||
|
||
# === 数据库配置 ===
|
||
# 本地开发: localhost
|
||
# Docker 部署: 容器名(如 db、meijiaka-db)
|
||
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/meijiaka_zy
|
||
DATABASE_POOL_SIZE=10
|
||
DATABASE_MAX_OVERFLOW=10
|
||
DATABASE_POOL_RECYCLE=1800
|
||
DATABASE_POOL_TIMEOUT=30
|
||
|
||
# === Redis 配置 ===
|
||
# 本地开发: localhost
|
||
# Docker 部署: 容器名(如 redis、meijiaka-redis)
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
REDIS_DB=0
|
||
# REDIS_PASSWORD= # 如无密码请留空或注释
|
||
|
||
# === JWT 安全配置 ===
|
||
# 生产环境必须修改为强随机密钥(至少 32 位)
|
||
SECRET_KEY=dev-secret-key-change-me
|
||
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
||
REFRESH_TOKEN_EXPIRE_DAYS=30
|
||
ALGORITHM=HS256
|
||
|
||
# === CORS 配置 ===
|
||
# 本地开发: 允许 localhost
|
||
# 测试/生产服: 填写实际域名,如 https://app.yourdomain.com
|
||
CORS_ORIGINS=http://localhost:1420,http://127.0.0.1:1420,http://localhost:8080
|
||
|
||
# === AI 平台配置 ===
|
||
|
||
# 火山方舟
|
||
VOLCENGINE_API_KEY=your-volcengine-api-key
|
||
VOLCENGINE_MODEL=doubao-seed-2-0-pro-260215
|
||
|
||
# 火山字幕服务
|
||
VOLCENGINE_CAPTION_APPID=your-caption-appid
|
||
VOLCENGINE_CAPTION_TOKEN=your-caption-token
|
||
|
||
# Vidu(TTS、声音复刻、对口型)
|
||
VIDU_API_KEY=your-vidu-api-key
|
||
|
||
# === 七牛云存储(空镜图片上传)===
|
||
QINIU_ACCESS_KEY=your-qiniu-access-key
|
||
QINIU_SECRET_KEY=your-qiniu-secret-key
|
||
QINIU_VIDEO_BUCKET=media-liche
|
||
QINIU_VIDEO_DOMAIN=media.liche.cn
|
||
QINIU_IMAGE_BUCKET=img-liche
|
||
QINIU_IMAGE_DOMAIN=img.liche.cn
|
||
|
||
# === 微信支付(APIv2)===
|
||
# ⚠️ P0 必填 — 充值功能依赖以下 4 项,未配置则微信支付完全不可用
|
||
WXPAY_MCHID=your-mchid
|
||
WXPAY_APPID=your-wx-appid
|
||
WXPAY_API_KEY=your-api-key
|
||
WXPAY_NOTIFY_URL=https://your-domain.com/api/v1/points/recharge/notify
|
||
|
||
# === 文件上传限制(字节)===
|
||
UPLOAD_MAX_VIDEO_SIZE=524288000 # 500MB
|
||
UPLOAD_MAX_IMAGE_SIZE=20971520 # 20MB
|
||
UPLOAD_MAX_AUDIO_SIZE=104857600 # 100MB
|
||
|
||
# === B2M 短信平台 ===
|
||
# ⚠️ P0 必填 — 未配置时 SMS 降级为仅打印日志(开发可用,测试/生产不可用)
|
||
SMS_APP_ID=your-sms-app-id
|
||
SMS_SECRET_KEY=your-16-24-32-byte-aes-key
|
||
SMS_BASE_URL=https://bjksmtn.b2m.cn/inter/sendSingleSMS
|
||
# SMS_EXTENDED_CODE= # 扩展码(选填)
|
||
|
||
# === 日志配置 ===
|
||
# 生产环境建议 INFO
|
||
LOG_LEVEL=DEBUG
|