Skip to content

yaml 内指定舰队组成时,选船搜索框内无法输出 吕贝克萤火虫  #481

@wufeng5702

Description

@wufeng5702

在提交您的问题反馈之前

  • 我已经阅读了 用户文档 并尝试自己解决问题,同时在社群中进行了讨论
  • 我无法找到任何 open issue 反馈了相同的问题

相关环境信息

  • OS: Windows 10
  • AutoWSGR: 12e8d58 (v2.2.0+)
  • 模拟器: 蓝叠国际版 5.22.110.1028 P64
  • python: uv + py3.12

问题描述

当 yaml 文件的选船有"吕贝克" 时,选船会失败

即: fleet: [ "Z17", "T-23", "吕贝克", "萤火虫" ] 时,"Z17", "T-23" 都可以正常选择,选 "吕贝克"萤火虫 时,搜索框只有空(不确定是文本是空白,还是没文本),导致选船失败。

复现方法

计划内容

执行这个 yaml 文件的任务

# MapLevel
chapter: 1 # 章节
map: 1 # 地图
selected_nodes: [ A, B ] # 选择要打的节点,白名单模式,一旦到达不要的节点就SL
repair_mode: 1
fleet_id: 2
fleet: [ "Z17", "T-23", "吕贝克", "萤火虫" ]

node_defaults:
  formation: 2 # 正常情况阵型选择,1-5
  # 夜战选择阶段
  night: False # 是否夜战
  # 前进选择阶段
  proceed: True # 结束后是否继续
  proceed_stop: [ 2, 2, 2, 2, 2, 2 ] # 根据我方血量状态选择是否继续前进,一旦对应破损程度达到或超过该值则返回

node_args:
  B:
    night: True
    formation: 2
    enemy_rules: [ ]

模拟器录屏

gif 文件17MB,可能难以加载渲染,可手动访问:https://img.cdn1.vip/i/6a06adaa5e127_1778822570.webp

Log输出

日志显示,疑似汉字变成乱码了

可能的重点日志:

14:29:47.313 | INFO     | ui/battle/fleet_change/_change.py:195 | [准备页] 成员对齐: 槽位 3 <- '萤火虫' (原: 'None')
14:29:47.313 | DEBUG    | ui/battle/base.py:209 | [UI] 出征准备 → 点击舰船位 3
14:29:47.315 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.458, 0.463) → pixel(879, 500)  res=1920x1080  ui/battle/base.py:210 in click_ship_slot
14:29:47.512 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 编队 -> 编队选船 (超时 5.0s)
14:29:47.513 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:47.513 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:47.513 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 编队 -> 编队选船, 当前=出征准备
14:29:48.015 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:48.016 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 编队 -> 编队选船 (第 2 次截图)
14:29:48.016 | INFO     | ui/choose_ship_page.py:154 | [UI] 选船 → 打开搜索框
14:29:48.017 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.729, 0.056) → pixel(1400, 60)  res=1920x1080  ui/choose_ship_page.py:155 in ensure_search_box        
14:29:48.179 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: ? -> ? (超时 5.0s)
14:29:48.181 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:48.181 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:48.182 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: ? -> ?, 当前=未知
14:29:48.684 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:48.685 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: ? -> ? (第 2 次截图)
14:29:48.685 | DEBUG    | ui/choose_ship_page.py:172 | [UI] 选船 → 输入舰船名 '萤火虫'
14:29:48.687 | DEBUG    | emulator/controller/scrcpy.py:471 | [Emulator] text('萤火虫')  ui/choose_ship_page.py:173 in input_ship_name
14:29:48.860 | DEBUG    | ui/choose_ship_page.py:177 | [UI] 选船 → 关闭键盘
14:29:48.862 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.052, 0.093) → pixel(100, 100)  res=1920x1080  ui/choose_ship_page.py:178 in ensure_dismiss_keyboard
14:29:49.061 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: ? -> ? (超时 5.0s)
 examples  uv run python .\week.py
2026-05-15 14:29:21.520 | INFO     | autowsgr.scheduler.launcher:load_config:77 - [Launcher] 加载配置: usersettings.yaml
2026-05-15 14:29:21.523 | WARNING  | autowsgr.infra.config:_resolve_emulator_defaults:341 - 自动检测模拟器路径失败: 没有找到 蓝叠 的安装路径
2026-05-15 14:29:21.524 | INFO     | autowsgr.infra.config:load:491 - 已加载配置: usersettings.yaml
14:29:21.527 | INFO     | scheduler/launcher.py:89 | [Launcher] 日志初始化完成: level=DEBUG, 通道覆盖={'decisive': 'DEBUG', 'ops.decisive': 'DEBUG', 'ui.decisive': 'DEBUG', 'vision.pixel': 'TRACE', 'emulator': 'DEBUG'}
14:29:21.527 | INFO     | scheduler/launcher.py:119 | [Launcher] 连接设备 (serial=127.0.0.1:5555)
14:29:21.696 | DEBUG    | emulator/controller/scrcpy.py:205 | [Emulator] 推送 scrcpy-server.jar 到设备...
14:29:21.775 | DEBUG    | emulator/controller/scrcpy.py:231 | [Emulator] 启动 scrcpy-server: CLASSPATH=/data/local/tmp/scrcpy-server.jar app_process / com.genymobile.scrcpy.Server 2.7 log_level=info tunnel_forward=true video=true audio=false control=false max_size=0 video_bit_rate=8000000 max_fps=0 video_codec=h264 send_device_meta=false send_frame_meta=false send_codec_meta=false send_dummy_byte=true
14:29:22.303 | DEBUG    | emulator/controller/scrcpy.py:258 | [Emulator] scrcpy 视频通道已连接
14:29:22.408 | INFO     | emulator/controller/scrcpy.py:140 | [Emulator] 已连接设备 (scrcpy): 127.0.0.1:5555 (1920x1080)
14:29:22.408 | INFO     | scheduler/launcher.py:138 | [Launcher] 创建 OCR 引擎 (backend=easyocr)
14:29:22.408 | INFO     | vision/ocr.py:399 | [OCR] 初始化 EasyOCR(gpu=False)
Using CPU. Note: This module is much faster with a GPU.
14:29:24.006 | INFO     | scheduler/launcher.py:164 | [Launcher] GameContext 已构建
14:29:24.006 | INFO     | scheduler/launcher.py:180 | [Launcher] 确保游戏就绪 (app=官服)
14:29:24.006 | INFO     | ops/startup.py:313 | [Startup] 确保游戏就绪 (package=com.huanmeng.zhanjian2)
14:29:24.256 | DEBUG    | emulator/controller/scrcpy.py:499 | [Emulator] is_app_running('com.huanmeng.zhanjian2') → True  ops/startup.py:87 in is_game_running
14:29:24.256 | DEBUG    | ops/startup.py:88 | [Startup] 游戏运行状态: 运行中
14:29:24.256 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.MAIN' OK (4/4 规则匹配, 策略=all)
14:29:24.257 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 主页面
14:29:24.257 | INFO     | ops/startup.py:320 | [Startup] 游戏已在运行
14:29:24.257 | INFO     | ops/startup.py:322 | [Startup] 游戏就绪
14:29:24.257 | INFO     | scheduler/launcher.py:198 | [Launcher] 启动完成,游戏已就绪
14:29:24.260 | INFO     | combat/plan.py:332 | [Combat] 加载作战计划: 周常2 (normal), 章节 2-1, 节点: ['F', 'B', 'D']
14:29:24.260 | INFO     | ops/normal_fight.py:168 | [OPS] 常规战连续执行 3 次
14:29:24.260 | INFO     | ops/normal_fight.py:172 | [OPS] 常规战第 1/3 次
14:29:24.261 | INFO     | ops/normal_fight.py:109 | [OPS] 常规战: 2-1 (周常2)
14:29:24.261 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.MAIN' OK (4/4 规则匹配, 策略=all)
14:29:24.261 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 主页面
14:29:24.261 | DEBUG    | ops/navigate.py:113 | [OPS] 步骤 1 (总限 20): PageName.MAIN → PageName.MAP (主页面 → 地图) 
14:29:24.262 | INFO     | ui/main_page/controller.py:189 | [UI] 主页面 → 出征
14:29:24.266 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.938, 0.898) → pixel(1800, 969)  res=1920x1080  ui/utils/navigation.py:216 in click_and_wait_for_page
14:29:24.420 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: PageName.MAIN -> PageName.MAP (超时 5.0s)
14:29:24.421 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.MAIN' OK (4/4 规则匹配, 策略=all)
14:29:24.422 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 主页面
14:29:24.422 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: PageName.MAIN -> PageName.MAP, 当前=主页面
14:29:24.925 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:24.926 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:24.926 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #2: PageName.MAIN -> PageName.MAP, 当前=未知
14:29:25.430 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: PageName.MAIN -> PageName.MAP (第 3 次截图)
14:29:25.432 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 地图页面
14:29:25.432 | INFO     | ops/navigate.py:96 | [OPS] 已在目标页面: PageName.MAP
14:29:25.432 | INFO     | ui/map/base.py:187 | [UI] 地图页面: 远征 → 出征
14:29:25.435 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.184, 0.051) → pixel(354, 55)  res=1920x1080  ui/utils/navigation.py:216 in click_and_wait_for_page   
14:29:25.631 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 地图-远征 -> 地图-出征 (超时 5.0s)
14:29:25.633 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 地图页面
14:29:25.633 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 地图-远征 -> 地图-出征, 当前=地图页面
14:29:26.136 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 地图-远征 -> 地图-出征 (第 2 次截图)
14:29:26.428 | DEBUG    | vision/ocr.py:183 | [OCR] recognize_single: 无结果
14:29:26.429 | WARNING  | ui/map/panels/sortie.py:115 | [UI] 战利品数量 OCR 无结果
D:\__Playground\Auto-WSGR\.venv\Lib\site-packages\torch\utils\data\dataloader.py:775: UserWarning: 'pin_memory' argument is set as true but no accelerator is found, then device pinned memory won't be used.
  super().__init__(loader)
14:29:26.514 | DEBUG    | vision/ocr.py:186 | [OCR] recognize_single: '14/500' (conf=0.86)
14:29:26.514 | INFO     | ui/map/panels/sortie.py:139 | [UI] 舰船数量: 14/500
14:29:26.515 | INFO     | ui/map/panels/sortie.py:365 | [UI] 地图页面 → 进入出征 2-1
14:29:27.166 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '1-1/母港附近海域' (conf=0.66)
14:29:27.167 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第1章 1-1 母港附近海域
14:29:27.408 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '1-1/母港附近海域' (conf=0.66)
14:29:27.409 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第1章 1-1 母港附近海域
14:29:27.645 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '1-1/母港附近海域' (conf=0.66)
14:29:27.645 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第1章 1-1 母港附近海域
14:29:27.645 | INFO     | ui/map/panels/sortie.py:253 | [UI] 章节导航: 当前第 1 章 -> 目标第 2 章
14:29:27.646 | DEBUG    | ui/map/base.py:127 | [UI] 侧边栏选中章节: y_center=0.550 (8个亮点)
14:29:27.646 | INFO     | ui/map/panels/sortie.py:180 | [UI] 地图页面 -> 下一章 (y=0.670)
14:29:27.648 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.100, 0.670) → pixel(192, 723)  res=1920x1080  ui/map/panels/sortie.py:181 in click_next_chapter      
14:29:28.456 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:28.456 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:28.697 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:28.697 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:28.939 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:28.939 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:28.940 | INFO     | ui/map/panels/sortie.py:241 | [UI] 章节导航: 命中目标第 2 章,二次确认 1/2
14:29:29.527 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:29.527 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:29.771 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:29.772 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:30.010 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:30.011 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:30.011 | INFO     | ui/map/panels/sortie.py:241 | [UI] 章节导航: 命中目标第 2 章,二次确认 2/2
14:29:30.011 | INFO     | ui/map/panels/sortie.py:247 | [UI] 章节导航: 已到达第 2 章
14:29:30.092 | DEBUG    | vision/ocr.py:204 | [OCR] recognize_maxlen: '2-11扶桑西部海域' (conf=0.75)
14:29:30.093 | DEBUG    | ui/map/base.py:155 | [UI] 地图识别: 第2章 2-1 扶桑西部海域
14:29:30.096 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.625, 0.556) → pixel(1200, 600)  res=1920x1080  ui/utils/navigation.py:216 in click_and_wait_for_page 
14:29:30.290 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 地图-出征 2-1 -> PageName.BATTLE_PREP (超时 5.0s)
14:29:30.291 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 地图页面
14:29:30.291 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 地图-出征 2-1 -> PageName.BATTLE_PREP, 当前=地图页面
14:29:30.794 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:30.794 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:30.794 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #2: 地图-出征 2-1 -> PageName.BATTLE_PREP, 当前=未知
14:29:31.296 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:31.297 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 地图-出征 2-1 -> PageName.BATTLE_PREP (第 3 次截图)
14:29:32.298 | DEBUG    | ui/battle/base.py:187 | [UI] 出征准备 → 选择 4队
14:29:32.300 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.448, 0.170) → pixel(860, 183)  res=1920x1080  ui/battle/base.py:188 in select_fleet
14:29:32.940 | INFO     | ui/battle/fleet_change/_change.py:136 | [准备页] 目标编成: ['Z28', 'Z17', 'T-23', '萤火虫', None, None]
14:29:33.192 | INFO     | ui/battle/fleet_change/_detect.py:96 | [准备页] 当前舰队: [None, None, None, None, None, None]
14:29:33.193 | INFO     | ui/battle/fleet_change/_change.py:195 | [准备页] 成员对齐: 槽位 0 <- 'Z28' (原: 'None')
14:29:33.193 | DEBUG    | ui/battle/base.py:209 | [UI] 出征准备 → 点击舰船位 0
14:29:33.197 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.115, 0.463) → pixel(220, 500)  res=1920x1080  ui/battle/base.py:210 in click_ship_slot
14:29:33.367 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 编队 -> 编队选船 (超时 5.0s)
14:29:33.368 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:33.369 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:33.369 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 编队 -> 编队选船, 当前=出征准备
14:29:33.871 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:33.871 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:33.872 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #2: 编队 -> 编队选船, 当前=出征准备
14:29:34.373 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:34.374 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 编队 -> 编队选船 (第 3 次截图)
14:29:34.374 | INFO     | ui/choose_ship_page.py:154 | [UI] 选船 → 打开搜索框
14:29:34.377 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.729, 0.056) → pixel(1400, 60)  res=1920x1080  ui/choose_ship_page.py:155 in ensure_search_box        
14:29:34.580 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: ? -> ? (超时 5.0s)
14:29:34.583 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:34.583 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:34.583 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: ? -> ?, 当前=未知
14:29:35.085 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:35.085 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: ? -> ? (第 2 次截图)
14:29:35.085 | DEBUG    | ui/choose_ship_page.py:172 | [UI] 选船 → 输入舰船名 'Z28'
14:29:35.087 | DEBUG    | emulator/controller/scrcpy.py:471 | [Emulator] text('Z28')  ui/choose_ship_page.py:173 in input_ship_name
14:29:35.347 | DEBUG    | ui/choose_ship_page.py:177 | [UI] 选船 → 关闭键盘
14:29:35.349 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.052, 0.093) → pixel(100, 100)  res=1920x1080  ui/choose_ship_page.py:178 in ensure_dismiss_keyboard
14:29:35.549 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: ? -> ? (超时 5.0s)
14:29:35.550 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:35.550 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 ?
14:29:36.053 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:36.053 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:36.054 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: ? -> ? (第 2 次截图, 到达=未知)
14:29:36.062 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 1 行候选项
14:29:36.301 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '228' -> 'Z28' (distance=1)
14:29:36.301 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['Z28'] (共 1 行)
14:29:36.302 | INFO     | ui/choose_ship_page.py:464 | [UI] 选船 DLL+OCR -> 'Z28' (第 1/3 次), 点击 (0.095, 0.504)
14:29:37.305 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.095, 0.504) → pixel(182, 544)  res=1920x1080  ui/choose_ship_page.py:473 in _click_ship_in_list
14:29:37.546 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: 编队选船 -> 编队 (超时 5.0s)
14:29:37.547 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:37.547 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 编队选船
14:29:38.049 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:38.050 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:38.050 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: 编队选船 -> 编队 (第 2 次截图, 到达=出征准备)
14:29:38.351 | INFO     | ui/battle/fleet_change/_change.py:195 | [准备页] 成员对齐: 槽位 1 <- 'Z17' (原: 'None')
14:29:38.352 | DEBUG    | ui/battle/base.py:209 | [UI] 出征准备 → 点击舰船位 1
14:29:38.354 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.229, 0.463) → pixel(440, 500)  res=1920x1080  ui/battle/base.py:210 in click_ship_slot
14:29:38.527 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 编队 -> 编队选船 (超时 5.0s)
14:29:38.528 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:38.528 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:38.529 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 编队 -> 编队选船, 当前=出征准备
14:29:39.031 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:39.032 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 编队 -> 编队选船 (第 2 次截图)
14:29:39.032 | INFO     | ui/choose_ship_page.py:154 | [UI] 选船 → 打开搜索框
14:29:39.033 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.729, 0.056) → pixel(1400, 60)  res=1920x1080  ui/choose_ship_page.py:155 in ensure_search_box        
14:29:39.234 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: ? -> ? (超时 5.0s)
14:29:39.236 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:39.236 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:39.237 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: ? -> ?, 当前=未知
14:29:39.738 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:39.739 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: ? -> ? (第 2 次截图)
14:29:39.739 | DEBUG    | ui/choose_ship_page.py:172 | [UI] 选船 → 输入舰船名 'Z17'
14:29:39.741 | DEBUG    | emulator/controller/scrcpy.py:471 | [Emulator] text('Z17')  ui/choose_ship_page.py:173 in input_ship_name
14:29:39.946 | DEBUG    | ui/choose_ship_page.py:177 | [UI] 选船 → 关闭键盘
14:29:39.948 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.052, 0.093) → pixel(100, 100)  res=1920x1080  ui/choose_ship_page.py:178 in ensure_dismiss_keyboard
14:29:40.089 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: ? -> ? (超时 5.0s)
14:29:40.089 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:40.090 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 ?
14:29:40.592 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:40.593 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:40.593 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: ? -> ? (第 2 次截图, 到达=未知)
14:29:40.602 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 1 行候选项
14:29:40.820 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '217' -> 'Z17' (distance=1)
14:29:40.820 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['Z17'] (共 1 行)
14:29:40.821 | INFO     | ui/choose_ship_page.py:464 | [UI] 选船 DLL+OCR -> 'Z17' (第 1/3 次), 点击 (0.095, 0.505)
14:29:41.823 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.095, 0.505) → pixel(182, 545)  res=1920x1080  ui/choose_ship_page.py:473 in _click_ship_in_list
14:29:42.031 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: 编队选船 -> 编队 (超时 5.0s)
14:29:42.031 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:42.032 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 编队选船
14:29:42.534 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:42.534 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:42.534 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: 编队选船 -> 编队 (第 2 次截图, 到达=出征准备)
14:29:42.836 | INFO     | ui/battle/fleet_change/_change.py:195 | [准备页] 成员对齐: 槽位 2 <- 'T-23' (原: 'None')
14:29:42.836 | DEBUG    | ui/battle/base.py:209 | [UI] 出征准备 → 点击舰船位 2
14:29:42.839 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.344, 0.463) → pixel(660, 500)  res=1920x1080  ui/battle/base.py:210 in click_ship_slot
14:29:43.000 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 编队 -> 编队选船 (超时 5.0s)
14:29:43.001 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:43.001 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:43.001 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 编队 -> 编队选船, 当前=出征准备
14:29:43.502 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:43.503 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 编队 -> 编队选船 (第 2 次截图)
14:29:43.503 | INFO     | ui/choose_ship_page.py:154 | [UI] 选船 → 打开搜索框
14:29:43.505 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.729, 0.056) → pixel(1400, 60)  res=1920x1080  ui/choose_ship_page.py:155 in ensure_search_box        
14:29:43.658 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: ? -> ? (超时 5.0s)
14:29:43.660 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:43.660 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:43.661 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: ? -> ?, 当前=未知
14:29:44.161 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:44.162 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: ? -> ? (第 2 次截图)
14:29:44.162 | DEBUG    | ui/choose_ship_page.py:172 | [UI] 选船 → 输入舰船名 'T-23'
14:29:44.164 | DEBUG    | emulator/controller/scrcpy.py:471 | [Emulator] text('T-23')  ui/choose_ship_page.py:173 in input_ship_name
14:29:44.352 | DEBUG    | ui/choose_ship_page.py:177 | [UI] 选船 → 关闭键盘
14:29:44.354 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.052, 0.093) → pixel(100, 100)  res=1920x1080  ui/choose_ship_page.py:178 in ensure_dismiss_keyboard
14:29:44.559 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: ? -> ? (超时 5.0s)
14:29:44.559 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:44.560 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 ?
14:29:45.062 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:45.063 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:45.063 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: ? -> ? (第 2 次截图, 到达=未知)
14:29:45.074 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 1 行候选项
14:29:45.299 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: 'T23' -> 'T-23' (distance=1)
14:29:45.300 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['T-23'] (共 1 行)
14:29:45.300 | INFO     | ui/choose_ship_page.py:464 | [UI] 选船 DLL+OCR -> 'T-23' (第 1/3 次), 点击 (0.095, 0.504)
14:29:46.303 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.095, 0.504) → pixel(182, 544)  res=1920x1080  ui/choose_ship_page.py:473 in _click_ship_in_list
14:29:46.506 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: 编队选船 -> 编队 (超时 5.0s)
14:29:46.507 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:46.507 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 编队选船
14:29:47.010 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:47.011 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:47.011 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: 编队选船 -> 编队 (第 2 次截图, 到达=出征准备)
14:29:47.313 | INFO     | ui/battle/fleet_change/_change.py:195 | [准备页] 成员对齐: 槽位 3 <- '萤火虫' (原: 'None')
14:29:47.313 | DEBUG    | ui/battle/base.py:209 | [UI] 出征准备 → 点击舰船位 3
14:29:47.315 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.458, 0.463) → pixel(879, 500)  res=1920x1080  ui/battle/base.py:210 in click_ship_slot
14:29:47.512 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: 编队 -> 编队选船 (超时 5.0s)
14:29:47.513 | DEBUG    | vision/matcher.py:206 | [Matcher] 'PageName.BATTLE_PREP' OK (4/4 规则匹配, 策略=all)
14:29:47.513 | DEBUG    | ui/page.py:62 | [UI] 当前页面: 出征准备
14:29:47.513 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: 编队 -> 编队选船, 当前=出征准备
14:29:48.015 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_page' OK (5/5 规则匹配, 策略=all)
14:29:48.016 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: 编队 -> 编队选船 (第 2 次截图)
14:29:48.016 | INFO     | ui/choose_ship_page.py:154 | [UI] 选船 → 打开搜索框
14:29:48.017 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.729, 0.056) → pixel(1400, 60)  res=1920x1080  ui/choose_ship_page.py:155 in ensure_search_box        
14:29:48.179 | DEBUG    | ui/utils/navigation.py:109 | [UI] 等待到达: ? -> ? (超时 5.0s)
14:29:48.181 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:48.181 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:48.182 | DEBUG    | ui/utils/navigation.py:122 | [UI] 等待 #1: ? -> ?, 当前=未知
14:29:48.684 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:48.685 | DEBUG    | ui/utils/navigation.py:116 | [UI] 已到达: ? -> ? (第 2 次截图)
14:29:48.685 | DEBUG    | ui/choose_ship_page.py:172 | [UI] 选船 → 输入舰船名 '萤火虫'
14:29:48.687 | DEBUG    | emulator/controller/scrcpy.py:471 | [Emulator] text('萤火虫')  ui/choose_ship_page.py:173 in input_ship_name
14:29:48.860 | DEBUG    | ui/choose_ship_page.py:177 | [UI] 选船 → 关闭键盘
14:29:48.862 | DEBUG    | emulator/controller/scrcpy.py:419 | [Emulator] click(0.052, 0.093) → pixel(100, 100)  res=1920x1080  ui/choose_ship_page.py:178 in ensure_dismiss_keyboard
14:29:49.061 | DEBUG    | ui/utils/navigation.py:164 | [UI] 等待离开: ? -> ? (超时 5.0s)
14:29:49.061 | DEBUG    | vision/matcher.py:206 | [Matcher] 'choose_ship_input' OK (3/3 规则匹配, 策略=all)
14:29:49.062 | DEBUG    | ui/utils/navigation.py:181 | [UI] 等待离开 #1: 仍在 ?
14:29:49.564 | DEBUG    | vision/matcher.py:257 | [Matcher] composite 'event_map_page' FAIL — 所有子签名 (2) 均未匹配
14:29:49.564 | DEBUG    | ui/page.py:74 | [UI] 当前页面: 无匹配 (共 13 个注册页面)
14:29:49.565 | DEBUG    | ui/utils/navigation.py:172 | [UI] 已离开: ? -> ? (第 2 次截图, 到达=未知)
14:29:49.575 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 2 行候选项
14:29:49.876 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '塞尔' -> '鲍尔' (distance=1)
14:29:49.878 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '帝国' -> '帝国' (distance=0)
14:29:49.882 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '列克星敦' -> '列克星敦' (distance=0)
14:29:49.885 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '贝亚恩' -> '贝亚恩' (distance=0)
14:29:49.888 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '黄蜂' -> '黄蜂' (distance=0)
14:29:49.890 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '苍龙' -> '苍龙' (distance=0)
14:29:49.892 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '飞龙' -> '飞龙' (distance=0)
14:29:50.199 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '翔鹤' -> '翔鹤' (distance=0)
14:29:50.202 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '瑞鹤' -> '瑞鹤' (distance=0)
14:29:50.205 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '企业' -> '企业' (distance=0)
14:29:50.207 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '约克城' -> '约克城' (distance=0)
14:29:50.209 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '大黄蜂' -> '大黄蜂' (distance=0)
14:29:50.212 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '萨拉托加' -> '萨拉托加' (distance=0)
14:29:50.216 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '列克星敦' -> '列克星敦' (distance=0)
14:29:50.216 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['企业', '列克星敦', '大黄蜂', '帝国', '瑞鹤', '约克城', '翔鹤', '苍龙', '萨拉托加', '贝亚恩', '飞龙', '鲍尔', 
'黄蜂'] (共 2 行)
14:29:50.217 | WARNING  | ui/choose_ship_page.py:476 | [UI] 选船列表未匹配到 '萤火虫' (第 1/3 次), 向上滚动
14:29:50.219 | DEBUG    | emulator/controller/scrcpy.py:444 | [Emulator] swipe(0.400,0.550→0.400,0.300) → pixel(768,594→768,324) 400ms  ui/choose_ship_page.py:483 in _click_ship_in_list
14:29:51.327 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 2 行候选项
14:29:51.639 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '翔鹤' -> '翔鹤' (distance=0)
14:29:51.642 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '瑞鹤' -> '瑞鹤' (distance=0)
14:29:51.644 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '企业' -> '企业' (distance=0)
14:29:51.648 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '约克城' -> '约克城' (distance=0)
14:29:51.651 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '大黄蜂' -> '大黄蜂' (distance=0)
14:29:51.655 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '萨拉托加' -> '萨拉托加' (distance=0)
14:29:51.659 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '列克星敦' -> '列克星敦' (distance=0)
14:29:51.963 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '突击者' -> '突击者' (distance=0)
14:29:51.965 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '加贺' -> '加贺' (distance=0)
14:29:51.967 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '赤城' -> '赤城' (distance=0)
14:29:51.972 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '奥里斯坎尼' -> '奥里斯坎尼' (distance=0)
14:29:51.976 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '香格里拉' -> '香格里拉' (distance=0)
14:29:51.978 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '黄蜂' -> '黄蜂' (distance=0)
14:29:51.981 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '勇猛' -> '勇猛' (distance=0)
14:29:51.981 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['企业', '列克星敦', '加贺', '勇猛', '大黄蜂', '奥里斯坎尼', '瑞鹤', '突击者', '约克城', '翔鹤', '萨拉托加', ' 
赤城', '香格里拉', '黄蜂'] (共 2 行)
14:29:51.982 | WARNING  | ui/choose_ship_page.py:476 | [UI] 选船列表未匹配到 '萤火虫' (第 2/3 次), 向上滚动
14:29:51.984 | DEBUG    | emulator/controller/scrcpy.py:444 | [Emulator] swipe(0.400,0.550→0.400,0.300) → pixel(768,594→768,324) 400ms  ui/choose_ship_page.py:483 in _click_ship_in_list
14:29:53.147 | DEBUG    | ui/utils/ship_list.py:117 | [选船列表] DLL 定位到 2 行候选项
14:29:53.456 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '突击者' -> '突击者' (distance=0)
14:29:53.458 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '加贺' -> '加贺' (distance=0)
14:29:53.460 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '赤城' -> '赤城' (distance=0)
14:29:53.465 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '奥里斯坎尼' -> '奥里斯坎尼' (distance=0)
14:29:53.470 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '香格里拉' -> '香格里拉' (distance=0)
14:29:53.471 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '黄蜂' -> '黄蜂' (distance=0)
14:29:53.473 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '勇猛' -> '勇猛' (distance=0)
14:29:53.793 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '复仇' -> '复仇' (distance=0)
14:29:53.795 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: 'G6' -> 'G6' (distance=0)
14:29:53.799 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '72工程' -> '72工程' (distance=0)
14:29:53.801 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '霞飞' -> '霞飞' (distance=0)
14:29:53.804 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '欧罗巴' -> '欧罗巴' (distance=0)
14:29:53.807 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '本宁顿' -> '本宁顿' (distance=0)
14:29:53.810 | DEBUG    | vision/ocr.py:452 | [OCR] fuzzy_match: '提康德罗加' -> '提康德罗加' (distance=0)
14:29:53.811 | DEBUG    | ui/utils/ship_list.py:160 | [选船列表] 识别: ['72工程', 'G6', '加贺', '勇猛', '复仇', '奥里斯坎尼', '提康德罗加', '本宁顿', '欧罗巴', '突击者', '赤城', '霞 
飞', '香格里拉', '黄蜂'] (共 2 行)
14:29:53.812 | WARNING  | ui/choose_ship_page.py:476 | [UI] 选船列表未匹配到 '萤火虫' (第 3/3 次), 向上滚动
14:29:53.812 | ERROR    | ui/choose_ship_page.py:306 | [UI] 未在选船列表中找到可用候选: ['萤火虫']
Traceback (most recent call last):
  File "D:\__Playground\Auto-WSGR\examples\week.py", line 32, in <module>
    results = run_normal_fight_from_yaml(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ops\normal_fight.py", line 475, in run_normal_fight_from_yaml
    return run_normal_fight(
           ^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ops\normal_fight.py", line 454, in run_normal_fight
    return runner.run_for_times(times, gap=gap)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ops\normal_fight.py", line 173, in run_for_times
    result = self.run(**kwargs)
             ^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ops\normal_fight.py", line 122, in run
    ship_stats = self._prepare_for_battle()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ops\normal_fight.py", line 337, in _prepare_for_battle
    page.change_fleet(
  File "D:\__Playground\Auto-WSGR\autowsgr\ui\battle\fleet_change\_change.py", line 201, in change_fleet
    selected = self._change_single_ship(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ui\battle\fleet_change\_change.py", line 640, in _change_single_ship
    return choose_page.change_single_ship(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\__Playground\Auto-WSGR\autowsgr\ui\choose_ship_page.py", line 312, in change_single_ship
    raise RuntimeError(f'未找到满足条件的目标舰船: {candidates}{level_hint}{ship_type_hint}')
RuntimeError: 未找到满足条件的目标舰船: ['萤火虫']

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions