113 lines
6.3 KiB
YAML
113 lines
6.3 KiB
YAML
# ============================================================
|
||
# 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
|
||
|