补齐定价版本术语与 Tripo 技术方案的乐观锁说明

- CONTEXT.md 补「定价版本(乐观锁)」术语,并在 3D 生成定价条目写明权威事实源与公开投影
- Tripo 技术方案补后台保存的版本比对与 409 语义
This commit is contained in:
2026-09-23 11:51:34 +08:00
parent 5285832acb
commit 5b488f5a59
2 changed files with 7 additions and 3 deletions
+6 -2
View File
@@ -105,8 +105,12 @@ _Avoid_: 任意远程 URL、data URL、未区分语义的 resourceId/assetId 字
_Avoid_: 独立 3D 生成页、把 3D 生成做成玩法类型或作品、把 3D 生成接进画布 Agent 对话
**3D 生成定价**:
3D 模型生成工具在提交前展示的泥点价格,来自编辑器生成定价查询的 `model3d` 段;该段缺失即入口不可提交,前端不内置兜底数值。
_Avoid_: 前端写死 3D 价格、借用图片模型的兜底定价配置、按 0 元放行
3D 模型生成工具在提交前展示的泥点价格,来自编辑器生成定价查询的 `model3d` 段;该段缺失即入口不可提交,前端不内置兜底数值。该段的权威事实源是 SpacetimeDB 定价表里的两段强类型列,公开读取时投影回迁移前的旧形状。
_Avoid_: 前端写死 3D 价格、借用图片模型的兜底定价配置、按 0 元放行、把内部两段结构直接暴露给画布
**定价版本(乐观锁)**:
后台读取完整模型定价时一并拿到的版本号(SpacetimeDB 行的更新时间微秒值),保存时必须原样回传;与服务端当前版本不一致即整笔拒绝并返回 409,提示重新读取,避免静默覆盖他人的改价。
_Avoid_: 在前端自造或缓存该版本、把版本不匹配当成可重试的普通失败、把「省略字段」当成「沿用当前值」
### 3D 模型资源预览
@@ -135,7 +135,7 @@ price = <端点段>.versionPrices[modelVersion][texture ? "texture" : "noTexture
`model3d` 段缺失仍是合法形态:缺失即 3D 定价未配置,提交被拒绝(fail closed),既不扣费也不调用 provider;段存在时走上面的强校验路径。
2026-09-23 起这两段的事实源是 SpacetimeDB `editor_generation_pricing_config` 的两段强类型列,后台「模型定价」页面直接编辑,保存与 `models` 段在同一事务内生效,改价不再需要改文件或重启进程。读取方向按契约归一化:表内缺键用默认 JSON / 覆盖文件同段值补齐,契约之外的遗留键剔除并告警;写入方向要求两段完整合法。公开读模型 `GET /api/editor/generation-pricing` 的 3D 段形状保持不变,画布 3D 入口的价格真相与前端零兜底口径不变。详见 [ADR 0005](../adr/【ADR】0005-3D生成定价迁入SpacetimeDB与后台编辑-2026-09-23.md) 与 [编辑器模型定价配置管理方案](../【编辑器】模型定价配置管理方案-2026-06-22.md)。
2026-09-23 起这两段的事实源是 SpacetimeDB `editor_generation_pricing_config` 的两段强类型列,后台「模型定价」页面直接编辑,保存与 `models` 段在同一事务内生效,改价不再需要改文件或重启进程。读取方向按契约归一化:表内缺键用默认 JSON / 覆盖文件同段值补齐,契约之外的遗留键剔除并告警;写入方向要求两段完整合法。后台保存携带读取时拿到的定价版本,procedure 在事务内比对,不一致返回 409 并要求重新读取。公开读模型 `GET /api/editor/generation-pricing` 的 3D 段形状保持不变,画布 3D 入口的价格真相与前端零兜底口径不变。详见 [ADR 0005](../adr/【ADR】0005-3D生成定价迁入SpacetimeDB与后台编辑-2026-09-23.md) 与 [编辑器模型定价配置管理方案](../【编辑器】模型定价配置管理方案-2026-06-22.md)。
扣费依据固定为**提交时定价**:用户在提交前就能得到确定价格,失败退款是单次冲正,不需要按实际消耗退差额。provider 返回的实际消耗只写日志用于成本对账,不进入契约、不进 API 响应、不进资源行。