统一 UI workflow 阶段并拒绝未知值

现行阶段原地使用并移除旧阶段 fallback 与迁移兼容
This commit is contained in:
2026-09-05 14:11:00 +08:00
parent d994ccaa78
commit 28af87e3ad
2 changed files with 20 additions and 6 deletions
@@ -684,6 +684,17 @@ fn find_page_ui_resource(
{
return Err(format!("页面 {} 的 UI workflow 资源身份冲突", page.page_id));
}
let generation_kind = asset
.source
.generation_kind
.as_deref()
.ok_or_else(|| format!("页面 {} 的 UI workflow 阶段缺失", page.page_id))?;
if workflow_stage_rank(generation_kind).is_none() {
return Err(format!(
"页面 {} 的 UI workflow 阶段无效:{generation_kind}",
page.page_id
));
}
let mut expected_references = vec![
canonical_resource_id(source),
canonical_resource_id(design_asset),
@@ -755,7 +766,7 @@ fn ensure_page_ui_resource(
prompt: None,
model: None,
generation_route: None,
generation_kind: Some("ui-workflow".to_string()),
generation_kind: Some("ui-workflow.reference-ready".to_string()),
reference_resource_ids: {
let mut references = vec![
canonical_resource_id(source),
@@ -996,13 +1007,16 @@ fn update_page_manifest_stage(root: &Path, asset_id: &str, stage: &str) -> Resul
return Err(format!("UI workflow 资源 {} 类型不匹配", asset_id));
}
let next_kind = format!("ui-workflow.{stage}");
let current_rank = asset
let current_kind = asset
.source
.generation_kind
.as_deref()
.and_then(workflow_stage_rank)
.unwrap_or(0);
let next_rank = workflow_stage_rank(&next_kind).unwrap_or(0);
.ok_or_else(|| format!("UI workflow 资源 {} 阶段缺失", asset_id))?;
let current_rank = workflow_stage_rank(current_kind).ok_or_else(|| {
format!("UI workflow 资源 {} 阶段无效:{current_kind}", asset_id)
})?;
let next_rank = workflow_stage_rank(&next_kind)
.ok_or_else(|| format!("UI workflow 下一阶段无效:{next_kind}"))?;
if current_rank >= next_rank {
return Ok(false);
}