标注图集计费与流水线历史债务

确认计费提交早于持久化的边界继承自 master,并补充可对账状态 TODO
确认编码与上传共用并发槽继承自 master,并补充有界流水线 TODO
保留既有 OSS 清理历史 TODO,本提交不改变运行行为
This commit is contained in:
2026-08-06 19:23:47 +08:00
parent 2266d7fe89
commit baa1f32f8e
@@ -850,6 +850,9 @@ pub(crate) async fn persist_editor_spritesheet_slices(
// TODO(legacy-spritesheet-cleanup): 历史并发上传链路在部分 PUT/HEAD 成功后失败时没有
// 记录成功对象并执行可重试补偿;需先定义 staged/committed/cleanup-pending 生命周期,
// 再处理批量持久化失败、补偿失败和任务重放,不能只做一次 best-effort delete。
// TODO(legacy-spritesheet-pipeline): 该并发结构继承自 master;同一个 stream slot 串联编码、
// PUT 与 HEAD,慢上传会阻塞尚未开始的编码并继续消耗 processing_deadline。应拆成带有界
// channel 的独立编码池和上传池,并分别定义 CPU/内存准入、处理期限与网络超时。
let mut uploads = futures_util::stream::iter(0..prepared.plan.len())
.map(|index| {
let prepared = prepared.clone();
@@ -1358,6 +1361,10 @@ pub(crate) async fn generate_editor_icon_spritesheet_for_owner(
.or_else(|| payload.project_id.clone()),
);
let http_client = build_openai_image_http_client(&settings)?;
// TODO(legacy-icon-spritesheet-billing-boundary): 该计费边界继承自 master 的历史实现;
// Provider 成功后 operation 即提交,后续解码、OSS、资源与画布持久化失败时缺少可对账中间态。
// 调整前需先定义 provider_succeeded/persistence_pending 等状态、稳定幂等键和补偿语义,
// 不能只把后续副作用机械包入 billable future。
let (generated, prompt, screen_background_decision) =
execute_billable_asset_operation_with_cost(
state,