扩展外部生成Worker队列

新增外部生成队列概览和单任务状态契约

将跳一跳、拼消消、敲木鱼图片生成动作接入worker队列

前端生成等待页展示当前任务和队列数量

更新外部生成worker运维文档和团队决策记录
This commit is contained in:
2026-06-12 23:15:55 +08:00
parent 3bccfd1a83
commit 951caac32d
43 changed files with 1913 additions and 67 deletions

View File

@@ -0,0 +1,42 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ExternalGenerationJobStatus {
Queued,
Running,
Completed,
Failed,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalGenerationQueueOverview {
pub pending_count: u32,
pub running_count: u32,
pub updated_at_micros: i64,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalGenerationQueueOverviewResponse {
pub overview: ExternalGenerationQueueOverview,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalGenerationJobStatusRecord {
pub operation_id: String,
pub status: ExternalGenerationJobStatus,
pub phase_label: String,
pub phase_detail: String,
pub progress: u8,
pub error: Option<String>,
pub updated_at_micros: i64,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalGenerationJobStatusResponse {
pub job: ExternalGenerationJobStatusRecord,
}

View File

@@ -1,5 +1,7 @@
use serde::{Deserialize, Serialize};
use crate::external_generation::ExternalGenerationJobStatusRecord;
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum JumpHopDifficulty {
@@ -311,6 +313,8 @@ pub struct JumpHopActionResponse {
pub session: JumpHopSessionSnapshotResponse,
#[serde(default)]
pub work: Option<JumpHopWorkProfileResponse>,
#[serde(default)]
pub queue_state: Option<ExternalGenerationJobStatusRecord>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]

View File

@@ -11,6 +11,7 @@ pub mod creation_agent_document_input;
pub mod creation_audio;
pub mod creation_entry_config;
pub mod creative_agent;
pub mod external_generation;
pub mod hyper3d;
pub mod jump_hop;
pub mod llm;

View File

@@ -1,5 +1,7 @@
use serde::{Deserialize, Serialize};
use crate::external_generation::ExternalGenerationJobStatusRecord;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PuzzleClearGenerationStatus {
@@ -141,6 +143,8 @@ pub struct PuzzleClearActionResponse {
pub action_type: PuzzleClearActionType,
pub session: PuzzleClearSessionSnapshotResponse,
pub work: Option<PuzzleClearWorkProfileResponse>,
#[serde(default)]
pub queue_state: Option<ExternalGenerationJobStatusRecord>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]

View File

@@ -1,5 +1,7 @@
use serde::{Deserialize, Serialize};
use crate::external_generation::ExternalGenerationJobStatusRecord;
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum WoodenFishGenerationStatus {
@@ -164,6 +166,8 @@ pub struct WoodenFishActionResponse {
pub session: WoodenFishSessionSnapshotResponse,
#[serde(default)]
pub work: Option<WoodenFishWorkProfileResponse>,
#[serde(default)]
pub queue_state: Option<ExternalGenerationJobStatusRecord>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]