Skip to content

feat(gui): 提交 GUI 2.0 alpha 版本 - #21

Open
ShiinaKuroko wants to merge 21 commits into
yltx:alphafrom
ShiinaKuroko:ShiinaKuroko
Open

feat(gui): 提交 GUI 2.0 alpha 版本#21
ShiinaKuroko wants to merge 21 commits into
yltx:alphafrom
ShiinaKuroko:ShiinaKuroko

Conversation

@ShiinaKuroko

Copy link
Copy Markdown

目标

将完整 GUI 2.0 提交到 alpha 分支进行开源项目实际验证。本 PR 只面向 alpha,不提交到 main

主要改动

  • 按 MVC + ViewObject 重构 GUI,补齐可视化作战计划、舰队方案、任务组、配置与资源管理。
  • 对齐 AutoWSGR 2.3 HTTP / WebSocket / 舰队 API 契约,并保留 ADB、模拟器和外部后端连接能力。
  • Electron 文件能力改为受管目录和受管计划 IPC,限制任意绝对路径访问。
  • 完成旧设置、任务组、模板和有效 YAML 的 v5 迁移,保留未知字段、冲突副本和失败重试。
  • 战利品计划改用稳定系统文件名持久化;兼容旧数组索引,非法值回退 9-2 并关闭自动刷取。
  • 手动停止任务后等待后端状态或 WebSocket 确认,再将原任务恢复到队列,避免 worker 未退出时重复执行。
  • 补齐系统作战计划、系统舰队方案、舰船资料库及配套资源。

智能编队行为不变量

  • 每个舰位的允许身份集合由主规则、候选规则和舰名别名共同构成。
  • UI 操作前对当前舰队与所有舰位做全局匹配,同一实际舰船不能分配给多个舰位。
  • 先最大化复用当前舰队成员,再决定最终位置;已在舰队但位置错误的舰船优先移动,不重复搜索选择。
  • 只有无法复用现有舰船的舰位才进入选船页。
  • 主规则保持严格校验,候选规则保持宽松校验和原始顺序。
  • 最终识别舰队必须与解析后的目标舰队一致,否则中止。

这些规则不能退化为逐舰位顺序选择,否则会提前占用后续舰位所需舰船,破坏全局最优复用和位置调整。

兼容验证

  • 真实旧版 path-form task_groups.json fixture:加载 -> 保存 -> 执行 -> 再次加载通过。
  • 完整旧目录迁移演练:设置、任务组、模板、有效 YAML、同名冲突副本和失败重试通过。
  • 8 个系统舰队 YAML 通过结构化语义比较与 TeamPlanCodec 解析;35 条主规则和 253 条候选规则均包含 min_level: 100
  • 新增系统作战计划均通过正式 PlanModel.fromYaml() 解析。
  • GUI 已连接 AutoWSGR 2.3 后端、ADB 127.0.0.1:16384、WebSocket 和模拟器运行验证。

测试

  • npm run build
  • npm run test:main-services
  • npm run test:scheduler-domain
  • npm run test:legacy-config-upgrade
  • npm run test:api-contract
  • npm run test:settings
  • npm run test:main-ipc
  • git diff --check

已知限制

  • npm run pack 已完成源码编译和 release/win-unpacked 应用目录组装,随后因当前 Windows 会话无创建符号链接权限,electron-builder 解压 winCodeSign-2.6.0.7z 失败;后续下载重试又遇到 GitHub 超时。未关闭签名或权限校验绕过。
  • 停止请求 30 秒内未获确认时保持 stopping,继续等待 WebSocket,避免后端状态未知时重复启动任务;该超时分支未纳入自动化等待 30 秒的用例。

ShiinaKuroko and others added 21 commits August 3, 2026 05:18
重构作战、计划与设置页面,完善舰队规划、出征规划、计划管理和运行状态展示。

新增本地舰船资料库及增量更新工具,统一 YAML 生命周期、环境管理、主题、窗口持久化和保存反馈,并补充迁移与设置隔离测试。
# Conflicts:
#	README.md
#	package.json
#	src/controller/plan/nodeEditor.ts
#	src/controller/taskGroup/queueLoader.ts
#	src/data/shipData.ts
#	src/model/PlanModel.ts
#	src/model/scheduler/TaskQueue.ts
#	src/types/api.ts
#	src/types/model.ts
- 使用系统计划文件名持久化战利品选择并兼容旧索引
- 保留旧任务组地图语义并补齐兼容计划资源
- 等待后端确认停止后再将任务放回队列
为 8 个系统舰队方案的主选和候选舰规则统一增加 min_level: 100。
- 严格拒绝空值、布尔值和小数索引
- 旧模板存在但无法识别时关闭自动刷取
- 将 GUI 索引纠正失败纳入迁移汇总并支持重试
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant