mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 01:15:14 +08:00
feat(daemon): 任务历史文件态持久化与 .env 无参启动(issue #1)
任务持久化: - 任务历史落 <state-dir>/bat-tasks.json(版本化、0600 原子写、不跟随 symlink),生命周期转换时 write-through;seq 持久化避免 pid 复用撞 ID - daemon 重启恢复历史,中断时仍 queued/running 的任务标记 failed, 新增错误码 TASK_INTERRUPTED(BAT-ERR-700005) - 损坏文件改名 .corrupt 留证后从空历史开始;无法识别的记录计数跳过 - core 新增 ErrorCode::ALL 公开码表与 from_id 反查(持久化错误码往返) .env 配置: - 首次启动在二进制所在目录释放 .env 模板(0600、create_new 防竞态), 之后每次启动加载为进程环境变量(不覆盖已存在变量) - 优先级:CLI > 进程环境变量 > .env > 内置默认;BAT_* 键映射到 CliOptions 默认值,BAT_WATCH/BAT_DAEMON 仅对无子命令 Run 生效且 CLI 显式模式/dry-run 时让位;Redis 键预留(未接入) - 工具/代理"非默认"判断改按 env 应用后基线,status/stop/logs 在 .env 存在时不误判;BAT_SKIP_ENV_FILE=1 整体禁用 验证:新增 10 个单测(env 解析/优先级/守卫回归/持久化往返/中断标记/ 损坏恢复/未知类型跳过);真机 e2e:.env 释放加载、daemon 纯 .env 启动、 catalog.refresh 任务带类型化错误码落盘并跨 daemon 重启恢复(含日志); fmt / clippy --workspace --all-targets -D warnings / test --workspace 全绿 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -292,7 +292,9 @@ JSON-RPC 2.0 服务,是面向上层服务(Go 层)的**主要跨语言边
|
||||
- 长任务(`resource.sync` / `resource.verify` / `catalog.refresh`)
|
||||
入队即返回 `task_id`,经 `task.status` / `task.list` / `task.logs`
|
||||
轮询,`task.cancel` 协作式取消。任务执行器是单 worker FIFO,与
|
||||
watch 循环经进程内锁互斥。
|
||||
watch 循环经进程内锁互斥。任务历史持久化于 `<state-dir>/bat-tasks.json`
|
||||
(版本化、`0600` 原子写,生命周期转换时落盘),daemon 重启后历史任务
|
||||
仍可经 `task.*` 查询,中断任务标记 `task_interrupted`(700005)。
|
||||
- 方法命名空间与实现状态、请求/响应示例见 `USERGUIDE.md` §6:
|
||||
`daemon.*` / `resource.*` / `catalog.*` / `task.*` 已实现;
|
||||
`patch.*` / `unityfs.*` 待引擎;`task.create` / `resource.repair`
|
||||
|
||||
Reference in New Issue
Block a user