Skip to content

feat(server): 新增 /api/expedition/auto_check 挂机专用端点,优化浴室维修为全部修理#451

Open
syokounya wants to merge 2 commits intoOpenWSGR:mainfrom
syokounya:feat/auto-check-endpoint
Open

feat(server): 新增 /api/expedition/auto_check 挂机专用端点,优化浴室维修为全部修理#451
syokounya wants to merge 2 commits intoOpenWSGR:mainfrom
syokounya:feat/auto-check-endpoint

Conversation

@syokounya
Copy link
Copy Markdown
Contributor

@syokounya syokounya commented Apr 18, 2026

背景与问题

当前 GUI 的自动远征定时检查仅能通过 /api/expedition/check 收取远征,无法顺带领取任务奖励和执行浴室维修。用户长时间挂机时仍需手动操作,体验不佳。

此外,现有的 /api/expedition/check/api/reward/collect/api/repair/bath 均受 _require_idle() 限制,只要后端有战斗任务在运行,这些接口就会返回 409 任务执行中,无法操作。这导致挂机期间即使只是"收菜",也会被战斗任务阻塞。

另一个问题是原有的 repair_in_bath 实现是点击"选择修理" overlay 中的第一个舰船逐个修理,效率低且容易在 overlay 关闭检测上超时失败。

解决方案

1. 新增挂机专用端点 /api/expedition/auto_check

server/routes/ops.py 中新增 POST /api/expedition/auto_check

  • 不收 _require_idle() 限制:专供 Scheduler 的定时远征检查调用,确保挂机"收菜"不会被战斗任务拦截。
  • 顺序执行三项操作
    1. collect_expedition(ctx) — 收取已完成远征
    2. collect_rewards(ctx) — 领取任务奖励
    3. 智能浴室维修:检查 ctx.active_fight_tasks,若大于 0 则跳过维修并记录原因;否则执行维修
  • 返回结构化的 results 数据,方便前端展示日志。

2. 浴室维修改为点击"全部修理"

ui/bath_page/signatures.py 中新增:

  • CLICK_REPAIR_ALL (0.8625, 0.1639) — 全部修理按钮坐标
  • REPAIR_ALL_BUTTON_COLOR ((28, 128, 226), 30.0) — 蓝色按钮颜色
  • CLOSE_OVERLAY_BUTTON_COLOR ((197, 199, 194), 30.0) — 关闭按钮灰色颜色

ui/bath_page/page.py 中新增 click_repair_all() 方法:

  • 检测全部修理按钮颜色,若未检测到则安全回退为点击第一个舰船
  • 点击后等待 overlay 自动关闭(最多 5 秒)
  • 若检测到关闭按钮仍在,则主动调用 close_choose_repair_overlay() 关闭浮层

ops/repair.py 中:

  • repair_in_bath 改调 page.click_repair_all()
  • 维修完成后增加 goto_page(ctx, PageName.MAIN),确保流程结束后回到主界面,避免后续导航出错

3. 战斗任务感知

利用已有的 ctx.active_fight_tasks 计数器(由 TaskScheduler._run_task 维护),在自动检查浴室维修前进行判断,避免战斗中占用舰队导致战斗中断或被迫使用快修。

影响范围

  • autowsgr/server/routes/ops.py — 新增 expedition_auto_check 端点
  • autowsgr/ui/bath_page/signatures.py — 新增全部修理相关常量
  • autowsgr/ui/bath_page/page.py — 新增 click_repair_all() 方法
  • autowsgr/ops/repair.py — 改调全部修理并返回主界面

配套前端改动

前端 PR 见:yltx/AutoWSGR-GUI 对应分支 feat/gui-expedition-repair


close #446
close #447

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant