修复 DirectProject 异常历史收尾

异常收尾时尝试写入全部未完成消息

保留首个落盘错误并避免后续部分历史被丢弃
This commit is contained in:
2026-09-05 11:51:36 +08:00
parent 61c33cd3c7
commit 462db8f3bf
@@ -41,8 +41,14 @@ pub(crate) fn persist_direct_project_partial_items_at(
root: &Path,
accumulator: &mut DirectProjectHistoryAccumulator,
) -> Result<(), String> {
for item in accumulator.take_partial_items() {
append_direct_project_history_item_at(root, &item)?;
let items = accumulator.take_partial_items().collect::<Vec<_>>();
let mut first_error = None;
for item in items {
if let Err(error) = append_direct_project_history_item_at(root, &item) {
if first_error.is_none() {
first_error = Some(error);
}
}
}
Ok(())
first_error.map_or(Ok(()), Err)
}