Skip to content

[Feature]: 前端接回 3D 资产创建入口(后端契约已就绪) #518

Description

@johnnyzhang-eng

背景

#486 撤掉了「建 3D 资产」创建入口,理由是当时卡片上混着不可用与未实现的入口(#485)。撤掉在当时是对的:worker 镜像里没有 node 与 playwright,点进去走到出帧那一步必然抛错。

后端这一侧的能力一直在 main 上,五个端点都已部署;运行时依赖在 #517 补齐。所以现在缺的是前端把入口接回来。

后端契约(已在 main,无需改动)

零成本、可随便调:

  • POST /render3d/master-precheck,body {image_url, canvas_width?, canvas_height?} —— 母版是否够格出 3D。不产生任何按次计费调用,适合直接挂在确认闸上
  • GET /render3d/characters/{character_id}/outfits/{outfit_id} —— 状态与成本,无副作用,可轮询

按次计费,只认用户显式点击:

  • POST /render3d/characters/{character_id}/outfits/{outfit_id}/build —— 启动图生 3D
  • POST .../approve —— 人工放行,开始绑骨
  • POST .../discard —— 弃掉重来

GET 返回的字段:

{ asset_key, state, model_3d_url, review_model_url, error,
  cost: { model3d_credits, autorig_credits, total_credits,
          billing: "postpaid", scope: "per_outfit_once" } }

state 三个取值:absent(什么都没有,点「建」会开始花钱)、awaiting_review(已出模型,卡在人工确认闸上)、ready(已绑骨,渲帧可直接用)。

cost 恒在返回里,不只在 absent 时给 —— 前端拿它渲染扣费提示,按次计费的触发点绝不能出现在用户不知情的时候。积分数字从这里读,不要在前端硬编码#486 之前的按钮写死了「30 积分」,而单价与档位都可能变。

需要前端补的

  1. 入口回到身份母版卡片,点击前先调 master-precheck,不过检就不给点、并显示原因
  2. 扣费确认:金额取 cost.total_credits,明示 scope=per_outfit_once(同一造型只收一次)
  3. awaiting_review 状态要有放行/弃掉两个动作,对应 approve / discard;这一步是人工闸,不能自动放行
  4. 轮询 GETstateerror 非空时展示后端给的文案,不要自己拼
  5. 已有 model_3d_url 的造型保持现状 —— fix(workflow-editor): align generation feedback and controls #486 没有删这条判定,不要重复实现

不包含

验收

  • absent / awaiting_review / ready 三个状态各有对应 UI,且状态来自 GET 而不是前端自己推
  • 扣费提示的数字来自 cost,grep 前端代码没有硬编码的积分数
  • master-precheck 不过检时按钮不可点,且给出后端返回的原因
  • 用一个真实造型走完 precheck → build → approve 一遍

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions