diff --git a/server-rs/crates/spacetime-module/src/migration.rs b/server-rs/crates/spacetime-module/src/migration.rs index 62b5e11f7..c3e4605a5 100644 --- a/server-rs/crates/spacetime-module/src/migration.rs +++ b/server-rs/crates/spacetime-module/src/migration.rs @@ -1938,6 +1938,19 @@ mod migration_bootstrap_secret_tests { assert_eq!(normalized["warning_message"], serde_json::Value::Null); } + /// 旧迁移包的 external_generation_job 没有 provider checkpoint 两列:导入后必须都是 + /// null(等同 `#[default(None)]`),否则 at-most-once submit 会把旧任务误判成已提交。 + #[test] + fn old_external_generation_job_rows_default_to_unsubmitted_provider() { + let normalized = normalize_migration_row( + "external_generation_job", + &serde_json::json!({ "job_id": "task-1" }), + ); + + assert_eq!(normalized["provider_kind"], serde_json::Value::Null); + assert_eq!(normalized["provider_task_id"], serde_json::Value::Null); + } + #[test] fn old_editor_canvas_rows_default_to_legacy_storage() { let normalized = normalize_migration_row(