总览
图模工坊的配置面积刻意保持小:
| 类型 | 文件 / 来源 |
|---|---|
| 后端运行时 | apps/pf-service/config.json |
| ORM / 迁移 | apps/pf-service/drizzle.config.ts |
| 编辑器 | apps/pf-editor/quasar.config.ts |
| 用户端 H5 | apps/pf-app/quasar.config.ts |
| 管理后台 | apps/pf-manage/.env* + vite.config.ts |
| 人脸服务 | 环境变量(FACE_*) |
| 代码风格 | 根 .oxlintrc.json |
pf-service 主配置
apps/pf-service/config.json:
1 | { |
字段说明
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
server.port |
int | 3000 | HTTP 监听端口 |
server.jobs.composition.enabled |
bool | true | 是否启动合成 Job(API 专用进程组应设 false) |
server.jobs.composition.intervalMs |
int | 10000 | 合成 Job 轮询间隔 |
db.url |
string | — | 优先级最高的 DSN;指定后单字段被忽略 |
redis.password |
string | — | 留空表示无密码 |
s3.endpoint |
string | — | S3 兼容 endpoint,含协议(http/https) |
s3.bucket |
string | — | 默认桶名 |
faceService.baseUrl |
string | — | pf-face-service 的内网地址 |
faceService.timeoutMs |
int | 8000 | 单次调用超时 |
多环境
约定通过部署平台的”配置注入”在启动前替换 config.json;也可以保留默认开发值,生产环境用环境变量覆盖(在 src/config/ 内做合并)。
Drizzle 配置
apps/pf-service/drizzle.config.ts:
schema: "src/db/schema.ts"out: "drizzle/"dialect: "mysql"dbCredentials来自config.json
1 | bun db:generate # 生成迁移 SQL(开发时一般用 push) |
生产请走 db:generate + 人工审过 SQL 的迁移,不要 db:push。
人脸服务环境变量
| 变量 | 默认 | 说明 |
|---|---|---|
FACE_MODEL_PATH |
apps/pf-face-service/models/scrfd_500m_bnkps.onnx |
模型路径 |
FACE_INPUT_SIZE |
640 |
推理输入边长 |
FACE_DETECT_TIMEOUT_MS |
8000 |
拉取图片的超时 |
1 | FACE_MODEL_PATH=/data/models/scrfd.onnx \ |
前端构建配置
pf-app / pf-editor (Quasar)
- 入口:
quasar.config.ts - 开发端口:8000 / 9000
- 后端地址:通过
.env.development/.env.production注入:
1 | VITE_API_BASE=https://pf.example.com/api |
- PWA / Cordova / Electron:当前仅启用 SPA 模式
pf-manage (soybean-admin)
- 入口:
vite.config.ts+uno.config.ts - 开发端口:9527
.env文件:参考 soybean-admin 文档;常见:
1 | VITE_BASE_URL=/ |
- 路由生成:
bun gen-route
代码风格
.oxlintrc.json 在根目录,所有应用通过 oxlint -c ../../.oxlintrc.json . 共用。Formatter 是 oxfmt,配置内嵌默认。
详细规范见 AGENTS.md:
- 文件命名:Vue PascalCase / TS camelCase / 文件夹 kebab-case
- TS strict mode,禁
any - 不允许
console.log留在仓库 - 数据库表 snake_case,TS 字段 camelCase
端口约定
| 服务 | 默认端口 | 用途 |
|---|---|---|
| pf-app | 8000 | 用户端 H5(开发) |
| pf-editor | 9000 | 编辑器(开发) |
| pf-manage | 9527 | 管理后台(开发) |
| pf-service | 3000 | 后端 API |
| pf-face-service | 3010 | 人脸检测 |
| MySQL | 3306 | 数据库 |
| Redis | 6379 | 缓存 |
| MinIO | 1280 (API), 9001 (Console) | 对象存储 |
生产部署一般通过反向代理统一对外,详见 部署。
业务硬约束
由设计文档约束(写入校验逻辑而非配置):
- 单图大小 ≤ 200MB
- 图片格式:JPG / PNG / TIFF
- 图片分辨率 ≥ 300DPI(合成时校验)
- 单次批量合成模板 ≤ 20 个(防止单次请求过大)
- 文件默认保留 90 天,过期清理
要调整这些阈值,改 pf-service 路由层 / Job 内的常量即可。