feat: 完善敲木鱼玩法模板链路

This commit is contained in:
2026-05-24 02:49:13 +08:00
parent 2ba4691bc0
commit 8638397faa
402 changed files with 2329 additions and 1781 deletions

View File

@@ -93,6 +93,9 @@ pub struct WoodenFishActionRequest {
#[serde(skip_deserializing)]
pub background_asset: Option<WoodenFishImageAsset>,
#[serde(default)]
#[serde(skip_deserializing)]
pub back_button_asset: Option<WoodenFishImageAsset>,
#[serde(default)]
pub hit_sound_prompt: Option<String>,
#[serde(default)]
pub hit_sound_asset: Option<WoodenFishAudioAsset>,
@@ -128,6 +131,8 @@ pub struct WoodenFishDraftResponse {
#[serde(default)]
pub background_asset: Option<WoodenFishImageAsset>,
#[serde(default)]
pub back_button_asset: Option<WoodenFishImageAsset>,
#[serde(default)]
pub hit_sound_asset: Option<WoodenFishAudioAsset>,
#[serde(default)]
pub cover_image_src: Option<String>,
@@ -192,6 +197,8 @@ pub struct WoodenFishWorkProfileResponse {
pub hit_object_asset: WoodenFishImageAsset,
#[serde(default)]
pub background_asset: Option<WoodenFishImageAsset>,
#[serde(default)]
pub back_button_asset: Option<WoodenFishImageAsset>,
pub hit_sound_asset: WoodenFishAudioAsset,
pub floating_words: Vec<String>,
}
@@ -384,6 +391,18 @@ mod tests {
width: 1024,
height: 1536,
}),
back_button_asset: Some(WoodenFishImageAsset {
asset_id: "back-button-1".to_string(),
image_src: "/generated-wooden-fish-assets/profile/back-button/image.png"
.to_string(),
image_object_key: "generated-wooden-fish-assets/profile/back-button/image.png"
.to_string(),
asset_object_id: "back-button-object-1".to_string(),
generation_provider: "image2".to_string(),
prompt: "赛博莲花返回按钮".to_string(),
width: 1024,
height: 1024,
}),
hit_sound_prompt: Some("短促木鱼声".to_string()),
hit_sound_asset: Some(WoodenFishAudioAsset {
asset_id: "sound-1".to_string(),
@@ -406,6 +425,7 @@ mod tests {
json!("generated-wooden-fish-assets/profile/hit-object/image.png")
);
assert_eq!(payload["backgroundAsset"]["height"], json!(1536));
assert_eq!(payload["backButtonAsset"]["width"], json!(1024));
assert_eq!(payload["hitSoundAsset"]["source"], json!("upload"));
assert_eq!(payload["hitSoundAsset"]["durationMs"], json!(800));
}
@@ -454,6 +474,16 @@ mod tests {
prompt: Some("清脆木鱼".to_string()),
duration_ms: Some(600),
};
let back_button = WoodenFishImageAsset {
asset_id: "back-button-1".to_string(),
image_src: "/generated/wooden-fish-back-button.png".to_string(),
image_object_key: "generated/wooden-fish-back-button.png".to_string(),
asset_object_id: "back-button-object-1".to_string(),
generation_provider: "image2".to_string(),
prompt: "主题返回按钮".to_string(),
width: 1024,
height: 1024,
};
let profile = WoodenFishWorkProfileResponse {
summary: WoodenFishWorkSummaryResponse {
runtime_kind: "wooden-fish".to_string(),
@@ -485,12 +515,14 @@ mod tests {
floating_words: vec!["功德".to_string()],
hit_object_asset: Some(image.clone()),
background_asset: None,
back_button_asset: Some(back_button.clone()),
hit_sound_asset: Some(audio.clone()),
cover_image_src: Some(image.image_src.clone()),
generation_status: WoodenFishGenerationStatus::Ready,
},
hit_object_asset: image,
background_asset: None,
back_button_asset: Some(back_button),
hit_sound_asset: audio,
floating_words: vec!["功德".to_string()],
};
@@ -503,5 +535,9 @@ mod tests {
json!("image2")
);
assert_eq!(payload["hitSoundAsset"]["source"], json!("generated"));
assert_eq!(
payload["backButtonAsset"]["imageSrc"],
json!("/generated/wooden-fish-back-button.png")
);
}
}