修复 AGC 资源 kind 收敛后的 Rust 默认值与工具栏用例

- agent/runtime_tools/media.rs:asset_kind 只在入参未声明(空白)时落通道默认值,显式认不出的值保持 Unknown 交给下游失败关闭。
- tests/project.rs:规范图 / 图集用例的入参改传 canonical kind(icon-spec / icon-spritesheet),用例名与断言同步。
This commit is contained in:
2026-09-19 03:21:25 +08:00
parent 5d20f5bfeb
commit 603650fbf4
2 changed files with 14 additions and 8 deletions
@@ -618,7 +618,12 @@ pub(in crate::agent) async fn observe_agent_runtime_platform_art_asset_generatio
} else {
requested_options.image_size
},
asset_kind: if requested_options.asset_kind.is_empty() {
// kind 已是枚举,「空串」不再可表达:只有工具入参**没有**声明 assetKind(空白)才落
// 本通道默认值。显式给了认不出的值仍是 `Unknown`,继续在下游按「不受支持」失败关闭,
// 不做兜底猜测。
asset_kind: if requested_options.asset_kind == GameCreationAppAssetKind::Unknown
&& requested_asset_kind.trim().is_empty()
{
defaults.asset_kind
} else {
requested_options.asset_kind
@@ -3409,7 +3409,7 @@ async fn generate_local_project_asset_command_lands_the_requested_target_categor
}
#[tokio::test]
async fn generate_local_project_asset_command_maps_spec_onto_the_verified_icon_spec_channel() {
async fn generate_local_project_asset_command_registers_icon_spec_with_the_spec_generation_kind() {
let root = unique_project_path();
let config_dir = unique_project_path();
let base_url = spawn_mock_external_canvas_generation_api_server(None);
@@ -3436,7 +3436,7 @@ async fn generate_local_project_asset_command_maps_spec_onto_the_verified_icon_s
let asset = generate_local_project_asset(
root.to_string_lossy().into_owned(),
"spec".to_string(),
"icon-spec".to_string(),
"原创收集玩法的统一视觉规范".to_string(),
None,
None,
@@ -3457,7 +3457,7 @@ async fn generate_local_project_asset_command_maps_spec_onto_the_verified_icon_s
.iter()
.find(|entry| entry["id"].as_str() == Some(asset.id.as_str()))
.expect("registered toolbar spec asset");
// spec 必须收口到客户端验证过的 icon-spec,否则规范图无法作为 UI 原型与透明图集的权威参考
// 工具栏直接给 canonical kind;平台请求词汇 `spec` 只出现在 generationKind,不再参与登记
assert_eq!(entry["kind"], "icon-spec");
assert_eq!(entry["source"]["generationKind"], "spec");
assert_eq!(
@@ -3476,7 +3476,8 @@ async fn generate_local_project_asset_command_maps_spec_onto_the_verified_icon_s
}
#[tokio::test]
async fn generate_local_project_asset_command_generates_art_spritesheet_from_the_registered_spec() {
async fn generate_local_project_asset_command_generates_icon_spritesheet_from_the_registered_spec()
{
let root = unique_project_path();
let config_dir = unique_project_path();
let base_url = spawn_mock_external_canvas_generation_api_server(None);
@@ -3504,7 +3505,7 @@ async fn generate_local_project_asset_command_generates_art_spritesheet_from_the
// 透明图集必须有权威规范图:没有已登记的 icon-spec 时必须明确失败,不能静默降级成普通图。
let missing_reference = generate_local_project_asset(
root.to_string_lossy().into_owned(),
"art-spritesheet".to_string(),
"icon-spritesheet".to_string(),
"原创收集玩法素材图集".to_string(),
None,
None,
@@ -3533,7 +3534,7 @@ async fn generate_local_project_asset_command_generates_art_spritesheet_from_the
let asset = generate_local_project_asset(
root.to_string_lossy().into_owned(),
"art-spritesheet".to_string(),
"icon-spritesheet".to_string(),
"原创收集玩法素材图集".to_string(),
Some("1:1".to_string()),
Some("1K".to_string()),
@@ -3555,7 +3556,7 @@ async fn generate_local_project_asset_command_generates_art_spritesheet_from_the
.iter()
.find(|entry| entry["id"].as_str() == Some(asset.id.as_str()))
.expect("registered toolbar spritesheet asset");
// 平台请求词汇 `art-spritesheet` 登记时收口成正式成员 `icon-spritesheet`
// 工具栏直接给 canonical kind平台请求词汇 `icon-spritesheet` 只出现在 generationKind
assert_eq!(entry["kind"], "icon-spritesheet");
assert_eq!(
entry["source"]["generationRoute"],