provider checkpoint 存在性校验补上 provider_kind

- at-most-once submit 的两字段不变量在数据层一起判定
This commit is contained in:
2026-09-22 13:50:24 +08:00
parent 5049c27f3d
commit 7dd7bdd3c7
@@ -1881,11 +1881,10 @@ fn get_worker_owned_external_generation_job(
fn ensure_external_generation_job_provider_checkpoint_absent(
row: &ExternalGenerationJob,
) -> Result<(), String> {
if row.provider_task_id.is_some() {
return Err(
"external_generation_job.provider_task_id 已存在,禁止覆盖 provider checkpoint"
.to_string(),
);
// checkpoint 由 provider_kind + provider_task_id 两个字段共同构成,
// 只判 task_id 会让部分写入的行绕过 at-most-once submit 保护。
if row.provider_kind.is_some() || row.provider_task_id.is_some() {
return Err("external_generation_job.provider checkpoint 已存在,禁止覆盖".to_string());
}
Ok(())
}