跨系统主流程¶
涉及 Admin / Agent / Canvas / Backend。表变更见 data-model.md。
1. 系统关系¶
flowchart TB
Admin[Admin_5175] --> BE[Backend_8001]
Agent[Agent_5173] --> BE
Canvas[Canvas_5176] --> BE
BE --> PG[(Postgres)]
BE --> Redis[(Redis_Stream)]
BE --> Storage[Storage_8002]
Worker[backend-worker] --> Redis
Worker --> PG
Worker --> Storage
2. 管理员配置 → C 端可用¶
- Admin 维护产品树、面料、模板、模型池
- 写
product_*/*_templates/ai_* - Canvas
GET /user/catalog/*与match读到启用数据 - 用户生图走模型池与模板 Prompt
失败:模板未关联子类/面料 → match 空;模型池无可用成员 → 生图失败。
3. 代理获客 → 绑定 → 优惠下单¶
sequenceDiagram
participant Ag as AgentSPA
participant U as User
participant Cv as Canvas
participant API as Backend
Ag->>Ag: 复制推广链 /r/CODE
U->>Cv: 打开落地页
Cv->>API: GET /landing/CODE
Note over API: agent_link_clicks
U->>Cv: 短信登录
Cv->>API: POST /landing/CODE/bind
Note over API: customer_agent_bindings 唯一
U->>Cv: 购买套餐
Cv->>API: POST /billing/orders
Note over API: 应用 customer_discount_rate
API->>API: 支付成功 → commission_records
幂等/约束:一客一代理;重复 bind 失败;支付回调重复不重复加配额(BE-REQ-063)。
4. 生图扣费¶
- Canvas 提交 generate
- Backend 校验配额与并发
- ModelPoolRouter 选模型/账号
- 上游成功 →
taskscompleted +consumption_records+ quota.used + ledger - 失败 → 任务 failed;按实现决定是否扣费(以代码为准,测试需断言)
异步:Stream → Worker 更新任务;前端轮询或 SSE。
5. 提现(跨 Admin / Agent / Backend)¶
- Agent(或将来前端)
POST /billing/agents/me/withdraw预占balance_commission - 写
agent_withdrawalspending - Admin 审批 approve/reject
- approved:withdrawn 增加;rejected:回滚预占
- Agent 门户余额展示刷新
注意:当前 Agent SPA 无提现按钮;可用 API/Admin 测全链路。
6. 结算账户绑定¶
Agent Settlement → scan/merchant → 更新 agents.settlement_* → 便于线下打款(与线上支付回调独立)。
7. 联调环境建议¶
make up 或 recipe full-stack;make seed;hosts 绑定 *.localhost;支付用 mock。