集成全景
图模工坊不抢电商系统的”商品 / 订单 / 支付 / 物流”主路,它只插在一个明确位置:
1 | [ 电商主站 / 小程序 / APP ] |
集成的本质是三个边界:账号、订单、回调。下面分别说明。
接口路径均以
/api/*为前缀(/api/manage、/api/app、/api/download…),历史文档里的/pf-manage、/shared前缀已废弃。下方接口中订单同步/回调部分为集成方案建议,当前订单主要由pf-manage侧按商品规格批量创建;确切接口以pf-service的 Swagger(/docs)为准。
边界一:账号与跳转
方案 A — 共享账号(推荐)
电商主站的会员体系作为唯一身份源;pf-service 暴露 POST /api/manage/auth/exchange 接收主站签的临时 token,校验后下发 pf-service 的 access token。
1 | 小程序/H5 |
方案 B — 独立账号 + 嵌入登录
用户在主站登录,pf-app 内嵌登录页(手机号验证码 / 微信授权);适合主站和工坊在不同主体或想沉淀工坊侧独立用户。
方案 C — 完全嵌入 iframe
主站把 pf-app 以 iframe 嵌入;通过 postMessage 互传订单上下文与回调。
边界二:订单与商品
订单层只需要解决一件事:告诉工坊”这单要做什么”。工坊侧订单当前主要由 pf-manage 按商品规格创建;若要主站直接推送,可约定如下同步接口(以实际 Swagger 为准):
1 | POST /api/app/orders |
orderNo— 主站订单号,工坊端只读albumId / albumSizeId / albumPageCountId— 选品阶段已确定totalAmount— 仅记录便于追溯,工坊不重新计价(存最小货币单位「分」)expireAt— 编辑窗口截止时间,过期工坊禁用编辑
订单创建后,工坊会为其生成一次性订单访问令牌(orders.orderAccessTokenHash),终端用户凭 ?orderNo=&token= 进入 pf-app,无需登录账号。
边界三:合成结果回调
合成完成(成功或失败)后,pf-service 向主站推:
1 | POST {你的回调地址} |
主站收到后更新本地订单状态、推送用户、入打印队列。
回调可靠性
- 失败重试:1m / 5m / 30m / 2h / 12h 五次退避
- 签名校验:
X-PF-Signature = HMAC_SHA256(secret, body) - 幂等:用
submissionId做唯一键去重
一个典型集成场景
「在某电商小程序里上架”全家福相册”」的最小集成:
配置阶段(一次性)
- 在
pf-manage配好相册family-album,关联 4 种尺寸 / 3 种 P 数 / 若干内页模板 - 在主站商品后台勾选”图模工坊定制”,绑定
albumId
- 在
用户下单
- 小程序选品 → 选尺寸 → 选 P 数 → 下单 → 支付
- 主站创建订单后调
POST /api/app/orders把订单同步到 pf-service
跳转编辑
- 主站打开 H5:
https://pf.example.com/app/?orderNo=...&token=... - 用户在工坊批量传图、调整顺序、加字、预览
- 点”提交” →
POST /api/app/order-templates/submission
- 主站打开 H5:
合成与回调
- 后台 Job 自动合成
- 合成完成 → 回调主站
- 主站推送用户:”您的相册已制作完成”
审核与生产
- 管理员在
pf-manage抽检 - 通过 → 下载高清 PDF → 进打印队列
- 不通过 → 驳回 → 通知用户重做
- 管理员在
数据所有权
| 类目 | 归属 |
|---|---|
| 用户身份 | 主站(工坊保留映射) |
| 订单元数据 | 主站(工坊只镜像必要字段) |
| 原始素材 | 工坊 MinIO |
| 合成成品 | 工坊 MinIO(可定期归档到主站冷存储) |
| 模板/字体/背景 | 工坊 |
| 审核日志 | 工坊 |
集成清单
接入前确认这 8 项:
- 账号方案(A / B / C)
- 共用 token 或独立 token 的签发流程
-
orderNo主站规则 - 商品 → albumId/templateId 的映射表
- 编辑窗口
expireAt策略 - 合成完成的回调地址 + 签名密钥
- 失败处理(驳回/重新合成/退款)流程
- 高清成品的归档/取回策略
接口速查
| 接口 | 方法 | 说明 |
|---|---|---|
/api/manage/auth/exchange |
POST | 主站 ticket 换工坊 token(集成建议) |
/api/app/order-templates/resources/by-order-no/:orderNo |
GET | 订单可用模板/相册 |
/api/app/order-templates/submission |
POST | 用户提交合成(首次且唯一) |
/api/app/order-templates/submission/by-order-no/:orderNo |
GET | 提交状态查询 |
/api/manage/orders |
GET | 后台订单列表(带筛选) |
/api/manage/order-submissions/.../retry |
POST | 重新合成(composeStatus 回退 pending) |
/api/download/submissions/page |
GET | 下载端提交分页(按合成/下载状态过滤) |
/api/download/submissions/:id/images |
GET | 列出可下载成品 |
/api/download/images/:sid/:iid/:idx/file |
GET | 流式下载成品文件 |
/api/app/oss/upload-url |
GET | 申请上传预签名(purpose 白名单) |
/api/app/face/detect |
POST | 人脸检测代理 |
完整接口字段以
pf-serviceSwagger(http://host:3000/docs)为准;上表的订单同步/回调为集成方案建议,实际以仓库实现为准。
下一步
- 想看库表结构 → 数据模型
- 想看后端入口 → pf-service 后端
- 想拉起来联调 → 快速开始