- Node 渲染器(three r162 + headless-gl + pngjs):gen-templates 程序化生成简化人体 GLB(6 脸 × 6 体 × 5 肤色),render.js 绕 Y 轴 36 帧 256x512 白底渲染 - agent/render.go:RenderAvatarFrames 帧目录缓存复用 + GLB 缺失自动生成 + 15 分钟超时;render.enabled/node_bin 配置,node_bin 路径缺失回退 PATH - Build 异步化:写库 processing → goroutine 渲染 → done+frames_url / failed+error(客户端降级静态占位);修 BodyMeasurement 无记录时 Build 报错 - avatar_model 容错 ALTER 加 frames_url 列;AvatarGetRes 透传 frames_url - TDD:renderJob 状态机测试(成功 done / 失败 failed 降级) - 客户端 avatar_viewer 帧轮播(120ms × 36 帧,errorBuilder 降级占位),avatar_provider 解析 frames_url - Dockerfile 双阶段:node:20-alpine 编译 gl 原生模块 + 运行时带 nodejs/libglvnd
20 lines
952 B
Go
20 lines
952 B
Go
package entity
|
|
|
|
import "github.com/gogf/gf/v2/os/gtime"
|
|
|
|
type AvatarModel struct {
|
|
Id int64 `orm:"id" json:"id"`
|
|
UserId int64 `orm:"user_id" json:"user_id"`
|
|
FaceTemplateId int `orm:"face_template_id" json:"face_template_id"`
|
|
BodyTemplateId int `orm:"body_template_id" json:"body_template_id"`
|
|
SkinToneIndex int `orm:"skin_tone_index" json:"skin_tone_index"`
|
|
FaceTextureUrl string `orm:"face_texture_url" json:"face_texture_url"`
|
|
GlbUrl string `orm:"glb_url" json:"glb_url"`
|
|
FramesUrl string `orm:"frames_url" json:"frames_url"`
|
|
BuildStatus string `orm:"build_status" json:"build_status"`
|
|
Error string `orm:"error" json:"error"`
|
|
ParamsSnapshot string `orm:"params_snapshot" json:"params_snapshot"`
|
|
CreatedAt *gtime.Time `orm:"created_at" json:"created_at"`
|
|
UpdatedAt *gtime.Time `orm:"updated_at" json:"updated_at"`
|
|
}
|