Repository navigation
Conversation
总体结论:修改后合并AUTO-MAS-Project/AUTO-MAS #1889 宝宝,回退旧版后重新升级这条路接通啦,重迁记录也能让文件占用后的重试继续往下走。不过还有一处删除顺序需要调一下:JSON 能读出来,不代表它能转换成功;现在转换失败时,对应的旧 YAML 已经被删掉了。先把替代文件准备好再动旧文件,这一步不能省喵。 启动层按数据库版本决定是否迁移,升级模块负责转换和逐文件进度,配置框架负责后续激活与保存。正常新版数据库不会因为 JSON 再出现就重新导入,这个边界保留得对。 [逻辑 · P2] 来源尚未确认可转换,就删除了现有 YAML静态可核对的场景是:数据库仍为 v1.11,上轮迁移记录及七项均已完成,七份 JSON 都存在,但 进入模拟器文件这一项后,代码先删除 这不是要求改变“当前旧版 JSON 优先、不额外备份 YAML”的取舍。问题在于尚无可用替代结果就删了旧文件;原实现会在目标或来源冲突处拒绝并保留 YAML。最小修复请留在升级模块,复用现有转换和临时文件校验,确认成功后再清理旧归档、替换目标,不必另造备份或事务框架。补一条真实 验证说明:dot酱只做了静态源码、调用链和测试审查,没有运行项目代码或测试。已读取当前提交 CI 日志,Windows / Ubuntu 完整 Python Tests 分别为 1720 / 1693 项通过,格式和三平台类型检查通过;Windows 验证包因官方 winCodeSign 下载连续 HTTP 504 失败,与本次迁移代码无关,但整轮 CI 尚不能算通过。上述通过结果也不能证明结构损坏时的保留行为。 —— dot酱敬上 🐾 |
总体结论:可以合并AUTO-MAS-Project/AUTO-MAS #1889 宝宝,这次把替换顺序改对啦:先完成转换和临时文件校验,再替换旧 YAML。合法 JSON 但集合结构错误时,原 YAML 与对应归档都会保留;dot酱上次按住的那处数据保留问题已经解决喵。 复审核对了替换失败、归档后进度提交中断的续跑,以及重迁完成后不再覆盖已修改 YAML 的路径,未发现新的必须修改项。“当前旧版 JSON 优先、不额外备份 YAML”的取舍也保持不变,没有为修这一步扩大迁移范围。 新增回归使用真实 —— dot酱拍拍爪敬上 🐾 |
按完整旧版 JSON 重新迁移配置,校验临时文件后替换旧 YAML,并保留中断重试能力。 (cherry picked from commit c3f6c11)
摘要
关联 CNB #252。
验证
当前提交:
2a63eb86c4ff530e611ab3d5414f8d8bf667f444。Windows / Python 3.12.10,使用uv.lock锁定依赖。instances非列表、目标替换失败时保留 YAML、归档后进度写入失败的重试,以及既有重迁与拒绝路径。评审版本e6cb667493a156bc01914599d12227e5ef8448aa为 2 failed、5 passed;当前版本 7 passed。uv run --no-sync --python .venv/Scripts/python.exe python -m pytest tests/core/test_config_json_remigration.py tests/core/test_config_initialization.py tests/core/test_config_paths.py -q --tb=short:10 passed。Ruff 全仓格式、改动文件 lint、三平台类型、锁文件、更新日志和 diff 检查通过。tests/task/test_baah_program_update.py::test_prepare_can_run_while_installation_is_reserved_then_apply_preserves_configs的临时目录清理断言;该 BAAH 文件在评审基线和当前版本单独运行均为 10 passed,与迁移测试合跑 17 passed。本次未修改 BAAH,尚未确定全量中这次失败的原因。启动结果复用现有
backend_start_finished观察边界,不新增逐文件迁移事件。未执行对方电脑的实际启动或真实游戏任务。