新增外部生成任务结果查询
新增仅返回任务结果的 SpacetimeDB procedure 编辑器 Agent 回填改用结果查询接口 补齐客户端绑定与接口文档
This commit is contained in:
@@ -271,6 +271,22 @@ pub struct ExternalGenerationJobProcedureResult {
|
||||
pub error_message: Option<String>,
|
||||
}
|
||||
|
||||
// Private backend read for reconciliation; it intentionally excludes job request and lease data.
|
||||
#[derive(Clone, Debug, PartialEq, Eq, SpacetimeType)]
|
||||
pub struct ExternalGenerationJobResultSnapshot {
|
||||
pub job_id: String,
|
||||
pub status: String,
|
||||
pub last_error_message: Option<String>,
|
||||
pub result_payload_json: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, SpacetimeType)]
|
||||
pub struct ExternalGenerationJobResultProcedureResult {
|
||||
pub ok: bool,
|
||||
pub result: Option<ExternalGenerationJobResultSnapshot>,
|
||||
pub error_message: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, SpacetimeType)]
|
||||
pub struct ExternalGenerationJobSummarySnapshot {
|
||||
pub job_id: String,
|
||||
@@ -464,6 +480,23 @@ pub fn get_external_generation_job_and_return(
|
||||
}
|
||||
}
|
||||
|
||||
#[spacetimedb::procedure]
|
||||
pub fn get_external_generation_job_result_and_return(
|
||||
ctx: &mut ProcedureContext,
|
||||
input: ExternalGenerationJobGetInput,
|
||||
) -> ExternalGenerationJobResultProcedureResult {
|
||||
let caller = ctx.sender();
|
||||
match ctx.try_with_tx(|tx| {
|
||||
crate::editor_project_storage::require_editor_generation_runtime_service_identity(
|
||||
tx, caller,
|
||||
)?;
|
||||
get_external_generation_job_result_tx(tx, input.clone())
|
||||
}) {
|
||||
Ok(result) => single_external_generation_job_result_read_result(result),
|
||||
Err(message) => failed_external_generation_job_result_read_result(message),
|
||||
}
|
||||
}
|
||||
|
||||
#[spacetimedb::procedure]
|
||||
pub fn list_external_generation_jobs_and_return(
|
||||
ctx: &mut ProcedureContext,
|
||||
@@ -869,6 +902,14 @@ fn get_external_generation_job_tx(
|
||||
ctx: &ReducerContext,
|
||||
input: ExternalGenerationJobGetInput,
|
||||
) -> Result<ExternalGenerationJobSnapshot, String> {
|
||||
get_external_generation_job_summary_tx(ctx, input)
|
||||
.map(map_external_generation_job_summary_to_compat_snapshot)
|
||||
}
|
||||
|
||||
fn get_external_generation_job_result_tx(
|
||||
ctx: &ReducerContext,
|
||||
input: ExternalGenerationJobGetInput,
|
||||
) -> Result<ExternalGenerationJobResultSnapshot, String> {
|
||||
validate_required("external_generation_job.job_id", &input.job_id)?;
|
||||
validate_required(
|
||||
"external_generation_job.owner_user_id",
|
||||
@@ -885,7 +926,12 @@ fn get_external_generation_job_tx(
|
||||
if row.owner_user_id.trim() != owner_user_id {
|
||||
return Err("external_generation_job 不存在".to_string());
|
||||
}
|
||||
Ok(map_external_generation_job_row(row))
|
||||
Ok(ExternalGenerationJobResultSnapshot {
|
||||
job_id: row.job_id,
|
||||
status: row.status,
|
||||
last_error_message: row.last_error_message,
|
||||
result_payload_json: row.result_payload_json,
|
||||
})
|
||||
}
|
||||
|
||||
fn list_external_generation_jobs_tx(
|
||||
@@ -2128,6 +2174,26 @@ fn failed_external_generation_job_result(message: String) -> ExternalGenerationJ
|
||||
}
|
||||
}
|
||||
|
||||
fn single_external_generation_job_result_read_result(
|
||||
result: ExternalGenerationJobResultSnapshot,
|
||||
) -> ExternalGenerationJobResultProcedureResult {
|
||||
ExternalGenerationJobResultProcedureResult {
|
||||
ok: true,
|
||||
result: Some(result),
|
||||
error_message: None,
|
||||
}
|
||||
}
|
||||
|
||||
fn failed_external_generation_job_result_read_result(
|
||||
message: String,
|
||||
) -> ExternalGenerationJobResultProcedureResult {
|
||||
ExternalGenerationJobResultProcedureResult {
|
||||
ok: false,
|
||||
result: None,
|
||||
error_message: Some(message),
|
||||
}
|
||||
}
|
||||
|
||||
fn single_external_generation_job_summary_result(
|
||||
job: ExternalGenerationJobSummarySnapshot,
|
||||
) -> ExternalGenerationJobSummaryProcedureResult {
|
||||
|
||||
Reference in New Issue
Block a user