Files
Unlucky-Launcher/crates/presenter
AskaEth aa33210bb6 fix(addon): 复审 r1 —— 失败去重、null 载荷、完成态进度、顺序守门、下载失败归并
- P2-1 失败分支不再「直接 continue」:`fail()` 记一条失败(`record_failure` 按
  `requested_as` 去重)并把请求键写进 `alias`,后续同键走现成的 `fold_parents`
  折父边 ⇒ 同一项目只取一次版本、失败只一条、重试名单不重复;
- P2-2 `RawDependency.dependency_type` 改 `Option<String>`:`#[serde(default)]` 兜不住
  `null`,以前一份 `"dependency_type": null` 就让整份 `/version` 报 Malformed、整个项目装不上;
  现在 null/未知一律 `Unknown`(不递归);
- P2-3 完成态用 `finish()` 把 `files_done` 对齐 `files_total`(曾写死 `1`,装 3 个停在 1/3);
  解析前 `files_total` 归 0(未知态),不再假装「已知 1 个文件」;
- P2-4 新增 `tests/order.rs`:跨根的层内顺序 + 多根正序/逆序对照,删 `layer.sort_by` 会红;
  另加 `required_project_ids` 自己的排序去重契约用例(`tests/regressions.rs`);
- P2-5 下载阶段失败记进同一套两档结构(`Unreachable` + 叶子成因)并继续下一个文件:
  已下好的不回滚、失败项进可重试名单、文案保留「已装入 N 个」的上下文;`retry_request`
  自动覆盖它们;
- nit① 在 `plan.rs` 写清「不兼容」为什么落在 DTO 的 `Unsupported`(不是笔误,是缺档);
  nit② 新增 `DependencyPlan::unresolved_required`(只有版本 id 的必备前置不再静默忽略);
  nit③ 补「同 mod 另一个版本在目录里仍要下载」的负向用例。
2026-11-08 20:23:56 +08:00
..