feat: GUI 2.0 可视化计划、配置与资源管理重构 - #17
Open
ShiinaKuroko wants to merge 2 commits into
Open
Conversation
重构作战、计划与设置页面,完善舰队规划、出征规划、计划管理和运行状态展示。 新增本地舰船资料库及增量更新工具,统一 YAML 生命周期、环境管理、主题、窗口持久化和保存反馈,并补充迁移与设置隔离测试。
yltx
requested changes
Aug 3, 2026
yltx
left a comment
Owner
There was a problem hiding this comment.
本次审计结论:Request changes。本地 build、legacy-plan 测试和 settings 测试可以通过,但以下安全、数据完整性和兼容性问题仍阻塞合并;GitHub 当前也没有构建/测试 CI,仅有 GitGuardian。
阻塞项
-
主进程文件 IPC 缺少路径边界
electron/main.ts的路径解析允许绝对路径,并对相对路径缺少 containment/traversal 校验。save-file、read-file、append-file、resolve-app-path、open-folder因而可访问应用受控目录之外的路径。- 这违反
docs/features/gui-2.0.md §12.2的受控文件名/目录要求。请使用明确根目录、拒绝绝对路径和..,并增加路径穿越测试。
-
原子写入失败时可能删除旧文件
- 当前 rename 失败后会删除目标文件再重试;若第二次 rename 仍失败,旧的有效配置/计划已经丢失。
- 这影响舰队方案、出征方案和迁移写入,违反 §12.3“失败时保留原文件”的要求。
- 请改为不会先破坏目标文件的替换方案,并测试 rename/权限/占用失败。
-
外部 Python 环境的依赖安装位置与启动路径不一致
- 外部仓库模式把依赖通过
--target安装到 GUI 管理的python/site-packages。 - 启动外部后端时又不把该目录加入
sys.path。 - 安装可能报告成功,但后端仍无法 import。请安装到用户选择的外部解释器/虚拟环境,或确保启动路径与安装目标一致。
- 外部仓库模式把依赖通过
-
破坏 v1.4.1 活动预设兼容性
- PR 删除四个
活动20260730-*.yaml,同时移除builtin_event_20260730模板,没有等价替代。 - 规范只允许清理四个未使用示例,并要求保留当前工作流。请恢复活动预设/模板或提供迁移后的等价资源和兼容验证。
- PR 删除四个
-
旧 path-form 任务组没有完成迁移
- 规范要求旧路径自动推断为
managedSource + managedFile,当前加载逻辑主要保留旧path。 - 相关旧计划文件又被移动/删除,已有任务组可能无法加载。请实现读取时兼容和保存时迁移,并用真实旧任务组 fixture 测试。
- 规范要求旧路径自动推断为
-
保存设置会丢失未知嵌套 YAML 字段
ConfigModel.toYaml()重建完整emulator和account节,只保留 GUI 已建模字段。- 后端新增或用户自定义的未知嵌套字段会被静默删除。请进行深层保留/合并,并覆盖未知嵌套字段 round-trip 测试。
-
candidate-only 槽位跨仓语义被改变
src/data/shipData.ts使用name: slot.name ?? candidates[0],会把纯候选槽位的第一个候选提升为严格主候选。- 后端 #521 将无顶层
name的候选视为平等替代项。请保留缺省name,并增加 GUI→API/YAML 契约测试。
验收要求
- 修复以上阻塞项并增加自动回归测试;
- 增加 GitHub CI,至少执行 build、
test:legacy-plan、test:settings和资源完整性检查; - 验证旧任务组、旧活动预设、打包资源、managed/external Python、CUDA/OCR 的实际运行;
- 与后端 #521 对 candidate-only、活动入口和节点决策字段达成一致后再按“后端先、前端后”合并。
ShiinaKuroko
force-pushed
the
ShiinaKuroko
branch
from
August 3, 2026 11:47
da5fd8d to
a58b1d1
Compare
ShiinaKuroko
force-pushed
the
ShiinaKuroko
branch
from
August 4, 2026 01:11
a58b1d1 to
88fe075
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改造目标
GUI 2.0 将 AutoWSGR-GUI 从分散的快捷操作与旧式表单,重构为围绕 YAML 生命周期组织的桌面管理器。后端模型、字段和校验规则仍是唯一事实来源;GUI 负责可视化编辑、前置校验、持久化、任务组织与运行状态展示。
完整设计、数据契约、迁移说明、代码结构和验收清单见:
docs/features/gui-2.0.md。该文档共 21 章,覆盖本 PR 的功能、边界和审查重点。页面与信息架构
主导航统一为三个入口:
顶部状态栏固定展示当前任务、执行进度、剩余次数、远征倒计时和后端状态,并针对窄窗口重新布局。
舰队规划
candidates的纯备选位置。team-{名称}.yaml,一份文件只包含一支舰队。关键 YAML 契约:
ships的顺序对应游戏位置。name。candidates。candidates每项必须包含name,不生成字符串候选或null占位。name,但必须具有非空结构化candidates。ship_type、min_level、max_level仅在有值时写入。舰船资料库
tools/ship_library/update_ship_library.py,支持从 Wiki 增量更新数据与资源、原子替换文件并生成机器可读结果。出征规划
fleet_presets[].ships到临时 YAML,后端仍接收完整合法计划。计划管理与任务列表
managedSource + managedFile,同时保留旧路径推断兼容。作战页
fleet_id猜测游戏内实际编队。设置与环境
managed模式由 GUI 管理 Python 与依赖;external模式使用本地 AutoWSGR 仓库源码及虚拟环境,不自动安装或更新远端autowsgr。文件与 IPC 安全
UI 与交互
role="status"与aria-live="polite"。资源与兼容清理
resource/builtin_plans/重组为系统出征计划和系统舰队方案目录。验证结果
npm run build:通过。npm run test:legacy-plan:通过;拆分舰队 2、地图关联 2、运行时舰队 2、冲突项 3。npm run test:settings:通过;验证 46 个 View 字段、45 个可见控件,以及隐藏后端字段和未知 YAML 字段保留。git diff --cached --check:通过。严格未使用检查目前还有 4 条提示,已记录在
docs/reviews/2026-08-03-workspace-review-pending.md:executePlan,等待执行链方案确定。checkForUpdates、pullUpdates,等待 managed/external 更新边界确定。fleetId参数,等待确认是否仍需按舰队区分。上述提示不影响默认构建,且没有其他类型错误。
建议审查顺序
已知边界