Files
backend_v2/configs/config.yml
toom1996 74ba700598 update
2026-09-07 00:01:48 +08:00

113 lines
6.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# Fashion API 配置文件(唯一配置源)
#
# 加载优先级:环境变量 > 本文件 > 代码内置默认值
# - 本地开发:直接改本文件即可,无需任何环境变量
# - 容器部署:保持本文件为默认值,用环境变量覆盖敏感项(见每项 env 注释)
#
# 配置文件路径可通过 -config 启动参数或 CONFIG_PATH 环境变量指定,
# 默认按 ./configs/config.yml → ./config.yml 顺序查找。
# ============================================================
server:
# 监听端口。前端 test 项目的 PUBLIC_API_BASE 指向 http://localhost:8090,
# 且 src/lib/api.ts 在 DEV 模式下硬编码回落到 8090,因此默认必须是 8090。
port: 8090 # env: SERVER_PORT
# gin 运行模式:debug(开发,输出彩色路由日志)| release(生产)| test
mode: debug # env: GIN_MODE
# 优雅关闭的最长等待时间(秒)
shutdown_timeout: 10
database:
host: 127.0.0.1 # env: DB_HOST
port: 3306 # env: DB_PORT
user: root # env: DB_USER
password: root # env: DB_PASSWORD(兼容 DB_PASS)
# 本地开发库名为 db_dev;docker-compose 部署时用环境变量覆盖为 fashionadmin
name: db_dev # env: DB_NAME
charset: utf8mb4
# GORM 日志级别:silent | error | warn | info
log_level: warn
# 连接池
max_idle_conns: 10
max_open_conns: 100
conn_max_lifetime: 3600 # 秒
conn_max_idle_time: 60 # 秒,空闲连接回收时间;须 < MySQL wait_timeout,防止池子持有被回收的死连接导致 invalid connection
jwt:
# 生产环境务必用环境变量覆盖为随机长字符串
secret: dev-secret-change-me-fashion-2026 # env: JWT_SECRET
# token 有效期(小时),168 = 7 天,与原项目一致
expire_hours: 168
upload:
# 图片存储目录。接口返回的封面/图片为相对路径(如 /uploads/xxx.jpg),
# 前端通过 toAbs() 拼接为绝对地址,因此必须对外提供静态文件服务。
dir: ./uploads # env: UPLOAD_DIR
# 静态文件访问前缀,需与数据库中存储的图片路径前缀一致
url_prefix: /uploads
cors:
# 允许的来源,"*" 表示全部(与原项目行为一致)
allow_origins:
- "*"
allow_methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
allow_headers:
- Content-Type
- Authorization
- X-Requested-With
- X-Sign
- X-Sign-Ts
- X-Sign-Nonce
max_age: 86400 # 预检请求缓存秒数
# 公开接口「前端 JS 签名」:给 /runway-looks(列表)与 /brands 两个批量接口加请求签名校验,
# 识别「请求大概率由前端 JS 构造」、抬高 casual 爬虫的批量抓取成本。
# 安全定位:这是「提高成本」而非「加密」——密钥必须出现在前端 bundle,对浏览器可见;
# 有决心的爬虫可反编译 JS 复刻签名。与按 IP 限流配合才有效。
# - enabled: false 时不拦截(默认,灰度安全);true 时要求每个请求带 X-Sign 签名。
# - secret 必须与前端的 CLIENT_SIGN_SECRET 完全一致;生产经环境变量 CLIENT_SIGN_SECRET 注入随机长串。
client_sign:
enabled: false # env: CLIENT_SIGN_ENABLED(容器部署用环境变量开)
secret: "" # env: CLIENT_SIGN_SECRET
ttl_seconds: 30 # 签名时间戳容忍窗口(秒),防重放;env: CLIENT_SIGN_TTL
# 爬虫入库管线:暴露 :8092 /admin/internal/ingest 接收爬虫 HMAC 签名上报。
# 设计:服务端到服务端(非前端 JS),密钥绝不下发前端、只存爬虫配置与 INGEST_SECRET,安全高。
# - enabled: false 时 ingest 路由整体不挂载(请求返回 503,等价于端点不存在)。
# - secret 必须与爬虫端 config.yml 的 ingest.secret 完全一致;env INGEST_SECRET 注入随机长串(生产)。
# - 依赖迁移 db/migrations/002_ingest.sql(建 ingest_jobs / ingest_nonces + brand_runway.idx_source_url)。
# - 启用后 worker 随主进程拉起(cmd/server 内 goroutine),异步下载图、补 season_code、写正式表。
ingest:
enabled: true # env: INGEST_ENABLED(本地开发启用,接收爬虫上报;生产用环境变量注入随机 INGEST_SECRET)
secret: "dev-ingest-secret-2026" # env: INGEST_SECRET(须与爬虫 config.yml 的 ingest.secret 一致)
ttl_seconds: 300 # 签名时间戳容忍窗口(秒,±5min),防重放;env: INGEST_TTL
# 七牛云对象存储(爬虫入库图片上传目标)
# - enabled: true 时,worker 把下载的走秀/街拍图直传七牛 bucket,库里存完整 https URL
# - zone 必须匹配 bucket 创建区域,否则上传失败:z1=华北(你选择的区域)
# - base_url 为 bucket 绑定的公开访问域名,用于拼出图片 URL(此处用七牛测试域名)
# - AK/SK 亦可用环境变量 QINIU_AK / QINIU_SK 覆盖(生产建议用环境变量注入)
qiniu:
enabled: true
ak: "7GLHrN7BqrI9JnWZ9Pki2q5rqPazhIFroo19a-Av"
sk: "gmg6PLgg666Cme-gsyTlsBLhshDv-6_zsEmW4jRY"
bucket: "toom-studio"
zone: "z1" # env: QINIU_ZONE
base_url: "http://toom-studio.23cm.cn" # env: QINIU_BASE_URL(自定义域名;HTTPS 证书在七牛控制台配好后改 https 即可,无需改代码)
style_normal: "free" # env: QINIU_STYLE_NORMAL(免费图七牛命名样式名,须与控制台一致;如 free / free.webp)
style_vip: "vip" # env: QINIU_STYLE_VIP(VIP 高清七牛命名样式名,须与控制台一致;如 vip / vip.webp)
local_base: "" # env: QINIU_LOCAL_BASE(本地兜底前缀,通常空)
# 私有空间下载签名过期时间(秒):
# - sign_ttl_normal:普通/压缩图(含命名样式 -free),长过期便于 SSG 静态页与 CDN 缓存;默认 31536000(1 年)
# - sign_ttl_hd:VIP 高清原图,短过期(1 小时)使泄漏窗口小
# 前置:需将 bucket 在七牛控制台设为「私有」,并把 base_url 改为自定义 HTTPS 域名(当前测试域名打不开)。
sign_ttl_normal: 31536000 # env: QINIU_SIGN_TTL_NORMAL
sign_ttl_hd: 3600 # env: QINIU_SIGN_TTL_HD