diff --git a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md index dfab9a03e..694ea1dea 100644 --- a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md +++ b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md @@ -359,6 +359,8 @@ Responses 的终态载荷既是工具调用的恢复源,也是正文的恢复 - 2026-08-06 原子提交对上述 source-only / slice 条款的修正:“provider 原图已持久化”只能解释为 OSS 对象已上传并验证,不再表示 project resource / account asset 已先行入库。source-only、透明整图和成功切片必须先完成最终选择,再作为一份 prepared commit 连同 canvas/job/receipt 一次提交;未选中或失败分支不得留下正式 resource / asset 部分记录。 +- 2026-09-21 provider checkpoint 追加:主表末尾追加可选 `provider_kind` / `provider_task_id`,只服务外部 provider 异步任务的 at-most-once submit。`set_external_generation_job_provider_checkpoint_and_return` 复用与 phase 完全相同的 `job_id + worker_id + lease_token` running 租约栅栏,写入成功时追加一条 `provider_checkpoint` 事件;目标行已有 checkpoint 时直接拒绝覆盖,因此崩溃后重新 claim 的 attempt 只能读到既有 provider task id 继续查询与落库,不会二次 submit、二次扣费。checkpoint 不写入 `request_payload_json`,也不进入任何用户可见 read model、BFF 响应或公开契约,provider task id 只作服务端 checkpoint 与对账;`external_generation_job_summary` 不投影这两个字段,轻量摘要按无 checkpoint 返回。 + ### `external_generation_job_summary` - Rust 结构体:`ExternalGenerationJobSummary` @@ -374,6 +376,8 @@ Responses 的终态载荷既是工具调用的恢复源,也是正文的恢复 - 用途:外部生成任务审计事件表,按 `job_id` 和 `owner_user_id` 记录 `enqueued`、`claimed`、`lease_renewed`、`completed`、`failed`、`acknowledged` 等状态转换事实。状态转换只能由 SpacetimeDB procedure 写入,不由前端或 worker 直接改表;该表用于追溯任务生命周期和排障,不替代 `external_generation_job` 当前状态。 - 保留策略:事件只会随已确认通知的终态任务由 `prune_external_generation_job_history_and_return` 原子删除,不支持按事件单独清理,以保持任务、摘要和审计链一致。单次事务最多删除 256 条事件;若事件未删完,任务和摘要暂不删除,维护脚本用同一个 job cursor 重试剩余事件。 +- 2026-09-21 事件类型追加:provider 异步任务在 submit 成功后落 checkpoint 时追加一条 `provider_checkpoint` 事件,记录 provider task id 与写入 worker;该事件只作服务端追溯与对账,不进入用户可见 read model。 + ### `ai_text_chunk` - Rust 结构体:`AiTextChunk`