diff --git a/README.md b/README.md index 023befd..8fd82fa 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,43 @@ - 小金猪流程:首页识别 → 打开挂机奖励 → 仅在金色领取按钮出现时长按领取 → 确认奖励弹框与灰色按钮 → 关闭弹框并回到首页。 - 脚本与识别模板分离,后续任务通过 `workflows/` 扩展。 - 截图像素与鼠标坐标分别换算,覆盖主屏幕 Retina 缩放的坐标情况。 +- 已有17项任务脚本,涵盖首页领奖、英雄招募签到、领地收矿/体力/券/积分及公会日常;入口、范围和更新时间见 [脚本汇总](docs/261004_1607-首页功能与日常任务梳理.md#已实现脚本汇总)。 +- 页面地图、只读识别、路线查询及任务分组预览。当前仍未接入统一导航执行和一键日常调度。 小金猪流程只领取挂机奖励,不执行消耗体力的快速扫荡。已于 2026-10-04 实机验证:领取后出现“恭喜获得”弹框、按钮变灰、挂机计时重置,并确认返回首页。灰色领取按钮时脚本不会点击领取。 -红点规则:按钮右上角有红点表示其内部有奖励可领取。后续入口任务可以据此进入,但领取成功还需验证内部状态。当前第一条小金猪流程不依赖红点,红点检测尚未实现。 +红点规则:按钮右上角有红点表示其内部有奖励可领取。已有任务在各自配置区域检测红点,领取成功仍需验证内部状态。小金猪流程不依赖红点;通用入口定位和红点检测尚未接入地图导航。 ## 本地启动 +### 页面识别与地图(只读) + +页面关系记录在 `workflows/page_map.json`,完整说明见 [页面地图与导航规则](docs/261005_1702-页面地图与导航规则.md)。识别当前游戏页面或查询候选路径: + +```bash +.venv/bin/python inspect_page.py +.venv/bin/python inspect_page.py --from-page territory --to-page recruit.lamp +``` + +这两个命令不会点击游戏。主要页面已实机核对;未知、歧义、遮挡或未验证入口不能据此自动导航。现有任务脚本仍按其原来的启动页面运行,尚未接入地图与统一调度。 + +外观相同的进度奖励弹框需要已确认的进入来源,不能仅凭图片猜测: + +```bash +.venv/bin/python inspect_page.py --image local/page_audit/territory_rank_progress.png --previous-page territory.rank.board +``` + +### 地图核查与任务分组(只读) + +```bash +.venv/bin/python plan_tasks.py --audit +.venv/bin/python plan_tasks.py +.venv/bin/python plan_tasks.py --page guild +.venv/bin/python plan_tasks.py --include-deferred --include-manual +``` + +命令只读取配置,检查引用并列出按首页、商城、领地、公会分组的任务和开发缺口,不截图、不点鼠标。默认排除延期任务、按需快速扫荡和命令打造;已有脚本标注其原首页启动要求,不能直接送到子页面运行。当前可见页面核实结果及后续实现顺序见 [页面核实与自动化优化计划](docs/261006_0109-页面核实与自动化优化计划.md)。 + ### 已验证的小金猪挂机奖励脚本 ```bash @@ -144,8 +174,8 @@ macOS 实际截图和点击需要为运行程序的宿主启用屏幕录制和 .venv/bin/python -m unittest discover -s tests -v ``` -测试使用模拟桌面,不操作游戏,覆盖坐标换算、遮罩识别、领取流程、预览、超时和停止。真实领取后的弹框变化尚未采集,如未回到首页则会超时停止,不重复领取。 +测试使用模拟桌面和识别夹具,不操作游戏,覆盖坐标换算、领取流程、预览、超时、停止、弹框来源和地图引用。已有脚本的领奖变化曾分别实测;新地图任务本轮只核实布局与导航,尚未验证领取、广告、购买后的结果。 -后续依次补充红点检测、各任务具体步骤与结果识别、资源策略、模型设置与 Key 存储,再准备独立应用打包。目前不调用模型 API,也不保存模型 Key。 +后续先实现公共导航和列表/免费领奖执行器,逐项迁移已有脚本,再接广告、资源购买和任务记录;最后完善模型设置与 Key 存储并进行双平台打包。目前不调用模型 API,也不保存模型 Key。 实现参考:[PyAutoGUI 官方文档](https://pyautogui.readthedocs.io/en/latest/quickstart.html)、[OpenCV 模板匹配文档](https://docs.opencv.org/4.x/d4/dc6/tutorial_py_template_matching.html)。 diff --git a/assets/map_audit_activity_cumulative_recharge.png b/assets/map_audit_activity_cumulative_recharge.png new file mode 100644 index 0000000..fe897a9 Binary files /dev/null and b/assets/map_audit_activity_cumulative_recharge.png differ diff --git a/assets/map_audit_activity_daily_offer.png b/assets/map_audit_activity_daily_offer.png new file mode 100644 index 0000000..33a0186 Binary files /dev/null and b/assets/map_audit_activity_daily_offer.png differ diff --git a/assets/map_audit_activity_daily_recharge.png b/assets/map_audit_activity_daily_recharge.png new file mode 100644 index 0000000..799aeef Binary files /dev/null and b/assets/map_audit_activity_daily_recharge.png differ diff --git a/assets/map_audit_activity_daily_recharge_tier6.png b/assets/map_audit_activity_daily_recharge_tier6.png new file mode 100644 index 0000000..827b1cf Binary files /dev/null and b/assets/map_audit_activity_daily_recharge_tier6.png differ diff --git a/assets/map_audit_activity_pack.png b/assets/map_audit_activity_pack.png new file mode 100644 index 0000000..f13ca8b Binary files /dev/null and b/assets/map_audit_activity_pack.png differ diff --git a/assets/map_audit_activity_pack_daily.png b/assets/map_audit_activity_pack_daily.png new file mode 100644 index 0000000..5faf6e0 Binary files /dev/null and b/assets/map_audit_activity_pack_daily.png differ diff --git a/assets/map_audit_arena_choice.png b/assets/map_audit_arena_choice.png new file mode 100644 index 0000000..b25e9fd Binary files /dev/null and b/assets/map_audit_arena_choice.png differ diff --git a/assets/map_audit_arena_peak.png b/assets/map_audit_arena_peak.png new file mode 100644 index 0000000..4ac430b Binary files /dev/null and b/assets/map_audit_arena_peak.png differ diff --git a/assets/map_audit_arena_peak_store.png b/assets/map_audit_arena_peak_store.png new file mode 100644 index 0000000..bc8ba4a Binary files /dev/null and b/assets/map_audit_arena_peak_store.png differ diff --git a/assets/map_audit_boss_back.png b/assets/map_audit_boss_back.png new file mode 100644 index 0000000..6c4e49c Binary files /dev/null and b/assets/map_audit_boss_back.png differ diff --git a/assets/map_audit_contribution_tab.png b/assets/map_audit_contribution_tab.png new file mode 100644 index 0000000..2ca904a Binary files /dev/null and b/assets/map_audit_contribution_tab.png differ diff --git a/assets/map_audit_coop_choice.png b/assets/map_audit_coop_choice.png new file mode 100644 index 0000000..6f1d933 Binary files /dev/null and b/assets/map_audit_coop_choice.png differ diff --git a/assets/map_audit_coop_friend_store.png b/assets/map_audit_coop_friend_store.png new file mode 100644 index 0000000..ffc604b Binary files /dev/null and b/assets/map_audit_coop_friend_store.png differ diff --git a/assets/map_audit_coop_pet_challenge_achievements.png b/assets/map_audit_coop_pet_challenge_achievements.png new file mode 100644 index 0000000..6b4c0e4 Binary files /dev/null and b/assets/map_audit_coop_pet_challenge_achievements.png differ diff --git a/assets/map_audit_coop_pet_challenge_weekly.png b/assets/map_audit_coop_pet_challenge_weekly.png new file mode 100644 index 0000000..aad49d5 Binary files /dev/null and b/assets/map_audit_coop_pet_challenge_weekly.png differ diff --git a/assets/map_audit_coop_pet_store.png b/assets/map_audit_coop_pet_store.png new file mode 100644 index 0000000..e8b9546 Binary files /dev/null and b/assets/map_audit_coop_pet_store.png differ diff --git a/assets/map_audit_coop_shop_label.png b/assets/map_audit_coop_shop_label.png new file mode 100644 index 0000000..ae08c1c Binary files /dev/null and b/assets/map_audit_coop_shop_label.png differ diff --git a/assets/map_audit_coop_wave_label.png b/assets/map_audit_coop_wave_label.png new file mode 100644 index 0000000..f5833ba Binary files /dev/null and b/assets/map_audit_coop_wave_label.png differ diff --git a/assets/map_audit_dragon_tab.png b/assets/map_audit_dragon_tab.png new file mode 100644 index 0000000..9fc7758 Binary files /dev/null and b/assets/map_audit_dragon_tab.png differ diff --git a/assets/map_audit_duel_tasks_tab.png b/assets/map_audit_duel_tasks_tab.png new file mode 100644 index 0000000..e092f38 Binary files /dev/null and b/assets/map_audit_duel_tasks_tab.png differ diff --git a/assets/map_audit_guild_blessing.png b/assets/map_audit_guild_blessing.png new file mode 100644 index 0000000..ee02df1 Binary files /dev/null and b/assets/map_audit_guild_blessing.png differ diff --git a/assets/map_audit_guild_boss.png b/assets/map_audit_guild_boss.png new file mode 100644 index 0000000..a8c04d0 Binary files /dev/null and b/assets/map_audit_guild_boss.png differ diff --git a/assets/map_audit_guild_boss_treasure.png b/assets/map_audit_guild_boss_treasure.png new file mode 100644 index 0000000..e22ca72 Binary files /dev/null and b/assets/map_audit_guild_boss_treasure.png differ diff --git a/assets/map_audit_guild_duel.png b/assets/map_audit_guild_duel.png new file mode 100644 index 0000000..76bf76d Binary files /dev/null and b/assets/map_audit_guild_duel.png differ diff --git a/assets/map_audit_guild_duel_rewards_tasks.png b/assets/map_audit_guild_duel_rewards_tasks.png new file mode 100644 index 0000000..5f8ad8d Binary files /dev/null and b/assets/map_audit_guild_duel_rewards_tasks.png differ diff --git a/assets/map_audit_guild_expedition.png b/assets/map_audit_guild_expedition.png new file mode 100644 index 0000000..e15ebc2 Binary files /dev/null and b/assets/map_audit_guild_expedition.png differ diff --git a/assets/map_audit_guild_store_title.png b/assets/map_audit_guild_store_title.png new file mode 100644 index 0000000..ce0cf78 Binary files /dev/null and b/assets/map_audit_guild_store_title.png differ diff --git a/assets/map_audit_guild_tasks.png b/assets/map_audit_guild_tasks.png new file mode 100644 index 0000000..0ddc978 Binary files /dev/null and b/assets/map_audit_guild_tasks.png differ diff --git a/assets/map_audit_home_sprint.png b/assets/map_audit_home_sprint.png new file mode 100644 index 0000000..329183a Binary files /dev/null and b/assets/map_audit_home_sprint.png differ diff --git a/assets/map_audit_main_rank_tab.png b/assets/map_audit_main_rank_tab.png new file mode 100644 index 0000000..10c9385 Binary files /dev/null and b/assets/map_audit_main_rank_tab.png differ diff --git a/assets/map_audit_offer_diamond_fund.png b/assets/map_audit_offer_diamond_fund.png new file mode 100644 index 0000000..d6a078e Binary files /dev/null and b/assets/map_audit_offer_diamond_fund.png differ diff --git a/assets/map_audit_offer_diamond_fund_tier2.png b/assets/map_audit_offer_diamond_fund_tier2.png new file mode 100644 index 0000000..74030b7 Binary files /dev/null and b/assets/map_audit_offer_diamond_fund_tier2.png differ diff --git a/assets/map_audit_offer_pet_pass.png b/assets/map_audit_offer_pet_pass.png new file mode 100644 index 0000000..c731e90 Binary files /dev/null and b/assets/map_audit_offer_pet_pass.png differ diff --git a/assets/map_audit_offer_relic_pass.png b/assets/map_audit_offer_relic_pass.png new file mode 100644 index 0000000..28ca6c6 Binary files /dev/null and b/assets/map_audit_offer_relic_pass.png differ diff --git a/assets/map_audit_offer_weekcard.png b/assets/map_audit_offer_weekcard.png new file mode 100644 index 0000000..42dfea3 Binary files /dev/null and b/assets/map_audit_offer_weekcard.png differ diff --git a/assets/map_audit_pet_daily_coin_label.png b/assets/map_audit_pet_daily_coin_label.png new file mode 100644 index 0000000..74fcd7a Binary files /dev/null and b/assets/map_audit_pet_daily_coin_label.png differ diff --git a/assets/map_audit_pet_pass_label.png b/assets/map_audit_pet_pass_label.png new file mode 100644 index 0000000..6aa15c0 Binary files /dev/null and b/assets/map_audit_pet_pass_label.png differ diff --git a/assets/map_audit_recruit_event_art.png b/assets/map_audit_recruit_event_art.png new file mode 100644 index 0000000..7cbee33 Binary files /dev/null and b/assets/map_audit_recruit_event_art.png differ diff --git a/assets/map_audit_recruit_pack_tab.png b/assets/map_audit_recruit_pack_tab.png new file mode 100644 index 0000000..b2fe130 Binary files /dev/null and b/assets/map_audit_recruit_pack_tab.png differ diff --git a/assets/map_audit_relic.png b/assets/map_audit_relic.png new file mode 100644 index 0000000..93742f8 Binary files /dev/null and b/assets/map_audit_relic.png differ diff --git a/assets/map_audit_sprint_recruit_pack.png b/assets/map_audit_sprint_recruit_pack.png new file mode 100644 index 0000000..6d47743 Binary files /dev/null and b/assets/map_audit_sprint_recruit_pack.png differ diff --git a/assets/map_audit_sprint_recruit_targets.png b/assets/map_audit_sprint_recruit_targets.png new file mode 100644 index 0000000..ffafe72 Binary files /dev/null and b/assets/map_audit_sprint_recruit_targets.png differ diff --git a/assets/map_audit_sprint_recruit_tasks.png b/assets/map_audit_sprint_recruit_tasks.png new file mode 100644 index 0000000..9a470db Binary files /dev/null and b/assets/map_audit_sprint_recruit_tasks.png differ diff --git a/assets/map_audit_sprint_star_store.png b/assets/map_audit_sprint_star_store.png new file mode 100644 index 0000000..854d95d Binary files /dev/null and b/assets/map_audit_sprint_star_store.png differ diff --git a/assets/map_audit_tasks_daily_tab_label.png b/assets/map_audit_tasks_daily_tab_label.png new file mode 100644 index 0000000..358e5c6 Binary files /dev/null and b/assets/map_audit_tasks_daily_tab_label.png differ diff --git a/assets/map_audit_tasks_weekly_tab_label.png b/assets/map_audit_tasks_weekly_tab_label.png new file mode 100644 index 0000000..e4bff86 Binary files /dev/null and b/assets/map_audit_tasks_weekly_tab_label.png differ diff --git a/assets/map_audit_territory_atlas_label.png b/assets/map_audit_territory_atlas_label.png new file mode 100644 index 0000000..04b9d68 Binary files /dev/null and b/assets/map_audit_territory_atlas_label.png differ diff --git a/assets/map_audit_territory_hall_label.png b/assets/map_audit_territory_hall_label.png new file mode 100644 index 0000000..e67e7ed Binary files /dev/null and b/assets/map_audit_territory_hall_label.png differ diff --git a/assets/map_audit_territory_rank_board.png b/assets/map_audit_territory_rank_board.png new file mode 100644 index 0000000..d0b4826 Binary files /dev/null and b/assets/map_audit_territory_rank_board.png differ diff --git a/assets/map_audit_territory_wall_craft.png b/assets/map_audit_territory_wall_craft.png new file mode 100644 index 0000000..aa6b72f Binary files /dev/null and b/assets/map_audit_territory_wall_craft.png differ diff --git a/assets/map_audit_territory_wall_overview.png b/assets/map_audit_territory_wall_overview.png new file mode 100644 index 0000000..2af169d Binary files /dev/null and b/assets/map_audit_territory_wall_overview.png differ diff --git a/assets/map_audit_treasure_exchange.png b/assets/map_audit_treasure_exchange.png new file mode 100644 index 0000000..13ea8d2 Binary files /dev/null and b/assets/map_audit_treasure_exchange.png differ diff --git a/assets/map_audit_treasure_pack.png b/assets/map_audit_treasure_pack.png new file mode 100644 index 0000000..1c0738c Binary files /dev/null and b/assets/map_audit_treasure_pack.png differ diff --git a/assets/map_audit_treasure_tasks.png b/assets/map_audit_treasure_tasks.png new file mode 100644 index 0000000..e609d8e Binary files /dev/null and b/assets/map_audit_treasure_tasks.png differ diff --git a/assets/map_audit_wish_main.png b/assets/map_audit_wish_main.png new file mode 100644 index 0000000..5b2810d Binary files /dev/null and b/assets/map_audit_wish_main.png differ diff --git a/assets/map_audit_wish_pack.png b/assets/map_audit_wish_pack.png new file mode 100644 index 0000000..7644fd7 Binary files /dev/null and b/assets/map_audit_wish_pack.png differ diff --git a/assets/map_audit_wish_pet_pool_label.png b/assets/map_audit_wish_pet_pool_label.png new file mode 100644 index 0000000..aecd742 Binary files /dev/null and b/assets/map_audit_wish_pet_pool_label.png differ diff --git a/assets/map_audit_wish_tasks.png b/assets/map_audit_wish_tasks.png new file mode 100644 index 0000000..c1668c8 Binary files /dev/null and b/assets/map_audit_wish_tasks.png differ diff --git a/assets/map_guild_store.png b/assets/map_guild_store.png new file mode 100644 index 0000000..9421cd5 Binary files /dev/null and b/assets/map_guild_store.png differ diff --git a/assets/map_heroes_label.png b/assets/map_heroes_label.png new file mode 100644 index 0000000..458f0b3 Binary files /dev/null and b/assets/map_heroes_label.png differ diff --git a/assets/map_king_dismantle.png b/assets/map_king_dismantle.png new file mode 100644 index 0000000..8b836f7 Binary files /dev/null and b/assets/map_king_dismantle.png differ diff --git a/assets/map_king_equipment.png b/assets/map_king_equipment.png new file mode 100644 index 0000000..450728f Binary files /dev/null and b/assets/map_king_equipment.png differ diff --git a/assets/map_shop_divider.png b/assets/map_shop_divider.png new file mode 100644 index 0000000..41a793d Binary files /dev/null and b/assets/map_shop_divider.png differ diff --git a/automation/pages.py b/automation/pages.py new file mode 100644 index 0000000..d39f612 --- /dev/null +++ b/automation/pages.py @@ -0,0 +1,70 @@ +"""Read-only page recognition and route planning from the game page map.""" +import json +from collections import deque +from pathlib import Path + +from .engine import Matcher + + +class PageMap: + def __init__(self, root): + self.root = Path(root) + self.data = json.loads((self.root / 'workflows/page_map.json').read_text(encoding='utf-8')) + self.pages = {page['id']: page for page in self.data['pages']} + self.matcher = Matcher(self.root / 'assets') + + def identify(self, frame, previous_page=None): + candidates = [] + for page in self.pages.values(): + for variant in page.get('recognition', []): + scores = [self.matcher.score(frame, spec) for spec in variant] + if scores and all(score >= spec.get('threshold', .86) + for score, spec in zip(scores, variant)): + candidates.append({'id': page['id'], 'name': page['name'], + 'kind': page['kind'], 'score': round(min(scores), 4)}) + break + # A specific matching tab supersedes its matching container. Preserve + # ambiguity between unrelated pages, even if their templates overlap. + def ancestors(page_id): + seen = set() + current = self.pages[page_id].get('parent') + while current in self.pages and current not in seen: + seen.add(current) + current = self.pages[current].get('parent') + return seen + + matched_parents = set().union(*(ancestors(item['id']) for item in candidates)) if candidates else set() + specific = [item for item in candidates if item['id'] not in matched_parents] + # Tabs inside an overlay retain the overlay's priority. The parent + # of a generic reward still comes from history, never from its art. + overlays = [item for item in specific if item['kind'] == 'overlay' or any( + self.pages[parent]['kind'] == 'overlay' for parent in ancestors(item['id']))] + active = overlays or specific + # Shared popups may have identical pixels. Only a known navigation + # origin can choose between them; absence of origin stays ambiguous. + groups = {self.pages[item['id']].get('shared_visual_group') for item in active} + if len(active) > 1 and len(groups) == 1 and None not in groups and previous_page in self.pages: + contextual = [item for item in active if previous_page in ancestors(item['id'])] + if len(contextual) == 1: + active = contextual + return {'status': 'identified' if len(active) == 1 else 'ambiguous' if active else 'unknown', + 'page': active[0] if len(active) == 1 else None, 'candidates': candidates} + + def route(self, start, target): + """Plan verified navigation only; this method sends no input events.""" + if start not in self.pages or target not in self.pages: + raise ValueError('未知页面 ID。') + queue = deque([(start, [])]) + seen = {start} + while queue: + current, steps = queue.popleft() + if current == target: + return steps + for edge in self.data['edges']: + if edge['from'] != current or edge['status'] not in ('live_verified', 'workflow_verified'): + continue + if edge['to'] in seen: + continue + seen.add(edge['to']) + queue.append((edge['to'], steps + [edge])) + raise ValueError('没有已验证的导航路径;需要先补充页面与返回关系。') diff --git a/automation/planning.py b/automation/planning.py new file mode 100644 index 0000000..33a6c9a --- /dev/null +++ b/automation/planning.py @@ -0,0 +1,146 @@ +"""Configuration-only task audit and development plan. No desktop input.""" +from collections import Counter +from pathlib import Path + +PAGE_ORDER = ('home', 'shop', 'territory', 'guild', 'any_primary') + + +class TaskPlanner: + def __init__(self, data, root): + self.data = data + self.root = Path(root) + self.pages = {page['id']: page for page in data['pages']} + + def ancestry(self, page_id): + result = [] + while page_id is not None and page_id not in result: + if page_id not in self.pages: + break + result.append(page_id) + page_id = self.pages[page_id]['parent'] + return list(reversed(result)) + + def audit(self): + issues = [] + for key in ('pages', 'edges', 'tasks', 'planned_tasks'): + ids = [item['id'] for item in self.data[key]] + issues.extend(f'{key}: duplicate {ident}' for ident, n in Counter(ids).items() if n > 1) + task_ids = [task['id'] for task in self.data['tasks'] + self.data['planned_tasks']] + issues.extend(f'tasks: duplicate across lists {ident}' + for ident, n in Counter(task_ids).items() if n > 1) + for page in self.data['pages']: + parent = page['parent'] + if parent is not None and parent not in self.pages: + issues.append(f"{page['id']}: missing parent {parent}") + seen, current = set(), page['id'] + while current in self.pages: + if current in seen: + issues.append(f"{page['id']}: cyclic parent") + break + seen.add(current) + current = self.pages[current]['parent'] + for variant in page.get('recognition', []): + for spec in variant: + if not (self.root / 'assets' / spec['template']).is_file(): + issues.append(f"{page['id']}: missing template {spec['template']}") + for edge in self.data['edges']: + if edge['from'] not in self.pages or edge['to'] not in self.pages: + issues.append(f"{edge['id']}: missing endpoint") + for task in self.data['tasks'] + self.data['planned_tasks']: + if task.get('group_page') not in PAGE_ORDER: + issues.append(f"{task['id']}: unknown group page {task.get('group_page')}") + page_id = task.get('task_page') + if page_id is None and task.get('group_page') == 'any_primary': + continue + if page_id not in self.pages: + issues.append(f"{task['id']}: missing task page") + for ident in self.ancestry(page_id): + if self.pages[ident].get('automation', {}).get('enabled') is False: + issues.append(f"{task['id']}: disabled ancestor {ident}") + script = task.get('script') + if script and not (self.root / script).is_file(): + issues.append(f"{task['id']}: missing script {script}") + return { + 'valid': not issues, 'issues': issues, + 'counts': {key: len(self.data[key]) for key in ('pages', 'edges', 'tasks', 'planned_tasks')}, + 'recognized_pages': sum(bool(page.get('recognition')) for page in self.pages.values()), + 'verified_edges': sum(edge['status'] in ('live_verified', 'workflow_verified') + for edge in self.data['edges']), + } + + def hub(self, task): + page = task.get('task_page') + group = task['group_page'] + if group == 'any_primary': + return 'any_primary' + if page and page.startswith('offer.'): + return 'home.offer' + ancestors = self.ancestry(page) + # Siblings share their first entrance below the primary page. + return ancestors[1] if len(ancestors) > 1 and ancestors[0] == group else page + + def family(self, task): + if task.get('reusable_pattern'): + return task['reusable_pattern'] + ident, page = task['id'], task.get('task_page') or '' + if 'purchases' in ident or ident == 'shop_daily_coin_ticket': + return 'priority_purchase' + if ident in ('sweep', 'planet', 'relic_daily_sweep'): + return 'sweep' + if ident == 'wall_command_build': + return 'explicit_command_build' + if 'task' in page or ident in ('tasks', 'lizhu', 'pet_challenge_rewards'): + return 'scrolling_reward_list' + if ident in ('offer_diamond_fund_rewards', 'offer_relic_pass_rewards', 'offer_pet_pass_rewards'): + return 'reward_icon_list' + if 'store' in page or 'free' in ident or ident == 'shop_totem_free_rewards': + return 'free_offer' + return 'page_specific' + + def plan(self, include_deferred=False, include_manual=False, group_page=None): + rows, omitted = [], [] + existing = {task['id'] for task in self.data['tasks']} + for task in self.data['tasks'] + self.data['planned_tasks']: + if group_page and task['group_page'] != group_page: + continue + deferred = 'deferred' in task.get('status', '') + manual = task['id'] in ('sweep', 'wall_command_build') or task.get('frequency') in ('on_demand', 'explicit_user_command') + if deferred and not include_deferred or manual and not include_manual: + omitted.append({'id': task['id'], 'reason': 'deferred' if deferred else 'explicit_command'}) + continue + page_id = task.get('task_page') + is_existing = task['id'] in existing + blockers = [] + if not is_existing: + blockers.append('任务执行器尚未实现') + if not self.pages.get(page_id, {}).get('recognition'): + blockers.append('任务页面尚无识别模板') + if task.get('consumes_resources') is None: + blockers.append('资源消耗需核实') + if 'rules_incomplete' in task.get('status', ''): + blockers.append('业务规则仍待确认') + if deferred: + blockers.append('用户要求延期完善') + rows.append({ + 'id': task['id'], 'name': task['name'], 'group_page': task['group_page'], + 'hub': self.hub(task), 'task_page': page_id, 'family': self.family(task), + 'implementation': 'existing_script' if is_existing else 'planned', + 'script': task.get('script'), 'frequency': task.get('frequency'), + 'consumes_resources': task.get('consumes_resources'), + 'requires_explicit_command': manual, 'blockers': blockers, + 'script_start': task.get('current_script_start'), + 'script_finish': task.get('current_script_finish'), + 'navigation_mode': 'legacy_script_owns_navigation' if is_existing else 'future_page_local_task', + }) + rows.sort(key=lambda row: (PAGE_ORDER.index(row['group_page']), row['hub'] or '', + row['implementation'] != 'existing_script', row['id'])) + visits = [] + for row in rows: + if not visits or (visits[-1]['group_page'], visits[-1]['hub']) != (row['group_page'], row['hub']): + visits.append({'group_page': row['group_page'], 'hub': row['hub'], 'tasks': []}) + visits[-1]['tasks'].append(row['id']) + return { + 'mode': 'read_only_development_plan', 'tasks': rows, 'visit_groups': visits, + 'omitted': omitted, + 'note': '分组供后续调度迁移使用;现有脚本仍从首页启动并自行导航,不能直接送到子页面执行。此命令不会操作游戏。', + } diff --git a/docs/261004_1607-首页功能与日常任务梳理.md b/docs/261004_1607-首页功能与日常任务梳理.md index 4e4a45a..4bd6380 100644 --- a/docs/261004_1607-首页功能与日常任务梳理.md +++ b/docs/261004_1607-首页功能与日常任务梳理.md @@ -1,7 +1,7 @@ --- created_at: 2026-10-04 16:07:56 CST type: 永远的蔚蓝星球首页、商城、领地与公会入口、日常任务与自动化适配记录 -revision: 第23次 +revision: 第63次 revisions: - time: 2026-10-04 16:07:56 CST version: 第1次 @@ -95,11 +95,175 @@ revisions: version: 第23次 author: GPT-6 content: 补充商城英雄招募限时 UP 卡片的神灯任务与免费神灯领取流程、实机验证结果、脚本和汇总表条目。 -summary: 记录首页、商城、领地和公会的日常任务入口、待完善流程及已实现脚本汇总。入口红点表示内部有奖励可以领取;特惠赏金战令、小金猪领取与扫荡、任务奖励、邮件、英雄招募神灯任务和免费神灯、狂鼠之家收矿雇佣与好友喂养、食堂领体力、合作模式合作券、竞技场积分、星球矿场、英雄集结内剑来献礼与骊珠画卷任务,以及公会互助、砍价和每日免费捐献均已实现脚本。 + - time: 2026-10-05 17:05:33 CST + version: 第24次 + author: GPT-6 + content: 补充独立页面地图的链接及导航与任务分离的后续方向;现有任务脚本尚未接入地图调度。 + - time: 2026-10-05 17:19:57 CST + version: 第25次 + author: GPT-6 + content: 补充首页活动四个底部页签与日周月礼包结构,记录月卡会员可见条件和两项每日免费领取规则,领取脚本尚未实现。 + - time: 2026-10-05 17:24:00 CST + version: 第26次 + author: GPT-6 + content: 记录每日特惠第二次免费领取有免广告卡可直接领取、否则需看广告的规则,自动观看策略待确认。 + - time: 2026-10-05 17:27:23 CST + version: 第27次 + author: GPT-6 + content: 用户确认没有免广告卡时由程序自动看完广告再领取,将该策略用于所有已配置且需要广告的领奖任务,共用流程待实现。 + - time: 2026-10-05 17:29:01 CST + version: 第28次 + author: GPT-6 + content: 确认活动超值礼包的周礼包没有免费项目,免费领奖流程跳过,月礼包等奖励规则继续逐项确认。 + - time: 2026-10-05 17:32:28 CST + version: 第29次 + author: GPT-6 + content: 确认月礼包也没有免费项目,补充树形页面地图链接,后续按用户要求合并确认相关问题。 + - time: 2026-10-05 17:40:14 CST + version: 第30次 + author: GPT-6 + content: 确认日礼包第一项直接领、第二项无免广告卡看广告,每日充值两档及充值奖励红点领取低优先级,并记录活动左下返回。 + - time: 2026-10-05 17:47:39 CST + version: 第31次 + author: GPT-6 + content: 确认返利不定期出现且暂不处理,内部奖励、条件和返回问题暂缓;特惠页签尚未列全,优先补齐。 + - time: 2026-10-05 18:00:38 CST + version: 第32次 + author: GPT-6 + content: 补齐特惠六个底部页签,记录月卡与周卡零点刷新、战令进度领奖、基金解锁和关卡条件、遗迹及宠物战令第一列领奖,新增流程尚未实现。 + - time: 2026-10-05 18:09:35 CST + version: 第33次 + author: GPT-6 + content: 确认月卡两项奖励每天各领一次、未购买显示18元和30元,补充基金前三个动态页签与关卡范围,以及遗迹和宠物战令的高亮可领、对号已领标志。 + - time: 2026-10-05 18:19:12 CST + version: 第34次 + author: GPT-6 + content: 确认周卡无需购买即可签到、领完显示已领取,基金已领显示对号且未达关卡覆盖灰色蒙版,特惠六个页签均由左下箭头返回首页。 + - time: 2026-10-05 18:24:13 CST + version: 第35次 + author: GPT-6 + content: 确认月卡两项奖励领完分别显示续费18元和续费30元,两类战令没有一键领取,需要上下滚动并逐项领取第一列奖励;可领取月卡按钮文案仍待采集。 + - time: 2026-10-05 18:30:24 CST + version: 第36次 + author: GPT-6 + content: 记录观影活动不定期出现、一般连续签到5天、单页中间按钮每天领取5次及免广告卡分支,右上关闭返回首页;当前活动未出现,按用户要求延后完善。 + - time: 2026-10-05 18:36:51 CST + version: 第37次 + author: GPT-6 + content: 确认当前试炼入口存在,补充英雄试炼、特训和试炼任务三个页签;任务完成后点击领取,每日登录游戏1次奖励每日可领,底部箭头返回首页,自动化待实现。 + - time: 2026-10-05 18:41:01 CST + version: 第38次 + author: GPT-6 + content: 按用户最新说明暂缓英雄试炼和特训、取消试炼任务自动化,记录列表无需滚动;新增试炼下方冲刺上方的祈愿不定期入口,内部规则待确认。 + - time: 2026-10-05 18:46:22 CST + version: 第39次 + author: GPT-6 + content: 补充祈愿、任务、礼包三个页签,记录任务右侧领取按钮和每日登录奖励、礼包顶部免费补给及左下箭头返回;新增两项待实现任务,祈愿页签操作与补给刷新待确认。 + - time: 2026-10-05 18:52:33 CST + version: 第40次 + author: GPT-6 + content: 确认祈愿免费补给每日一次无需广告,任务列表需滚动、领完显示已完成并移至列表底部;祈愿页签本身不自动处理,保留两项领奖任务待实现。 + - time: 2026-10-05 19:06:16 CST + version: 第41次 + author: GPT-6 + content: 记录三类冲刺每期7天及当前晶矿冲刺,补充晶矿和招募礼包与任务领奖、左下返回、右下星珀商城周一免费金币;招募礼包入口矛盾待确认,图腾冲刺出现后补充。 + - time: 2026-10-05 19:16:55 CST + version: 第42次 + author: GPT-6 + content: 确认招募冲刺同样四个底部页签且切换时导航不变,目标和排名不自动处理;星珀商城由兑换商店打开弹框,周一刷新整周一次,右上X关闭回冲刺面板。 + - time: 2026-10-05 19:20:31 CST + version: 第43次 + author: GPT-6 + content: 确认晶矿和招募首项免费礼包每日一次无需广告,星珀商城金币领后显示已售罄;冲刺任务领取后是否重排保留待确认。 + - time: 2026-10-05 19:30:33 CST + version: 第44次 + author: GPT-6 + content: 更新寻宝为等级开放后连续9至10天换期,记录宝藏兑换、冒险任务、冒险礼包三页签及左下返回;任务领后已完成排到底部,免费礼包每期一次、领后已售罄排到底部,新增两项待实现任务。 + - time: 2026-10-05 19:33:35 CST + version: 第45次 + author: GPT-6 + content: 确认寻宝宝藏兑换不需要自动化,冒险礼包每期免费项目不需要看广告、直接领取,保留两项领奖任务待实现。 + - time: 2026-10-05 19:39:44 CST + version: 第46次 + author: GPT-6 + content: 记录首页好友列表底部每日登录后一键赠送一次、领取赠礼红点进入并一键领取;补齐赠礼弹框外部或右上X关闭、好友列表外部关闭回首页,新增两项待实现任务。 + - time: 2026-10-05 19:47:09 CST + version: 第47次 + author: GPT-6 + content: 确认好友赠送和领取按钮操作后不变且仍可点击,记录空赠礼提示及待实现的每日限次和防重复领取规则。 + - time: 2026-10-05 20:09:15 CST + version: 第48次 + author: GPT-6 + content: 补充金沙游记六个入口与三项任务,确认驿站密使名称、跳过已领取来信,以及翻牌跳过已翻牌、点我翻牌和剩余次数不足状态;三项任务及共用流程待实现。 + - time: 2026-10-05 20:17:23 CST + version: 第49次 + author: GPT-6 + content: 确认流沙赠礼领取后按钮变成已领取;限定法老遗珍免费文案为当前有免广告卡账号的表现,无卡界面留待以后确认。 + - time: 2026-10-05 20:28:58 CST + version: 第50次 + author: GPT-6 + content: 补充英雄集结四个新入口,仅处理签到与寻珍,确认岁岁平安14天、寻珍金币为活动抽奖次数,记录卡片定位、跳过动画、免费与按剩余次数参与,新增两项待实现任务。 + - time: 2026-10-05 21:12:15 CST + version: 第51次 + author: GPT-6 + content: 确认商城图腾两卡每日各一次免费及广告、商店首格免费招募券无广告且刷新不再免费、金币首卡每日两次;记录金币购券与600刷新草案,三项免费任务待实现、购券刷新规则待完善。 + - time: 2026-10-05 21:18:49 CST + version: 第52次 + author: GPT-6 + content: 按最新确认暂缓领地图鉴与排行榜,保留入口记录,不继续确认内部任务,城墙单独保留待补充。 + - time: 2026-10-05 21:27:01 CST + version: 第53次 + author: GPT-6 + content: 补充城墙两页签与左下返回领地,确认每日先免费一次、额外广告次数待确认及免广告直接领取;机关次数达到10选10次打造,仅按单独命令执行,两项任务待实现。 + - time: 2026-10-05 21:57:28 CST + version: 第54次 + author: GPT-6 + content: 补充领地八项任务并启用排行榜新范围,确认宠物券每周一次、商店各自顶部货币够价才买及只买红色3200随机宠物碎片,购买额度周边界与返回待确认。 + - time: 2026-10-05 22:05:01 CST + version: 第55次 + author: GPT-6 + content: 补齐商店挑战与宠物返回路径,按最新说明改宠物券每日0点刷新,免费金币每周一0点刷新,红色3200随机宠物碎片余额够就买完可售数量,执行与模板待完善。 + - time: 2026-10-05 22:14:33 CST + version: 第56次 + author: GPT-6 + content: 补充巅峰商店优先级最大数量购买,确认顶部专用货币、右上X关闭与主页左下返回领地,新增任务待实现,模板待采集。 + - time: 2026-10-05 22:31:15 CST + version: 第57次 + author: GPT-6 + content: 补充公会商城双页签购买优先级、公会任务列表重排和进度宝箱领奖,以及右上关闭回公会;确认顶部专用货币、罗盘每日2/10限额、合作券周一刷新整周最多7个及龙晶龙血按优先级买完。 + - time: 2026-10-05 22:37:57 CST + version: 第58次 + author: GPT-6 + content: 确认贡献商城购买顺序为合作券、黄金罗盘、白银罗盘,保留每周7个及每日2/10个限额。 + - time: 2026-10-05 22:49:51 CST + version: 第59次 + author: GPT-6 + content: 补充远征大厅、公会对决任务领奖、公会祝福材料升级及左下返回、公会Boss财宝和已助威完成状态;迷宫寻宝暂缓。 + - time: 2026-10-05 22:54:16 CST + version: 第60次 + author: GPT-6 + content: 用户确认成员大厅不需要自动化,保留入口,排除内部流程确认与执行。 + - time: 2026-10-06 01:09:48 CST + version: 第61次 + author: GPT-6 + content: 同步本轮页面核实差异与识别修正,增加只读任务预览和后续公共执行器开发顺序,保留未验证状态。 + - time: 2026-10-06 01:13:31 CST + version: 第62次 + author: GPT-6 + content: 补充领地巅峰决斗竞技场领取竞技券任务,具体流程后续确认,暂不实现或纳入默认预览。 + - time: 2026-10-06 01:14:17 CST + version: 第63次 + author: GPT-6 + content: 补充战令一键领取后可能出现幸运星,需额外点击领取,分支标记后续完善,未修改执行脚本。 +summary: 已实现17项脚本,另记录49项待实现或延期任务。本轮核实当前可见关键页面并回首页,修正弹框、返回、冲刺卡片与免费目标,新增只读任务预览;下一步先公共导航和领奖执行器,再广告与购买。 新增领取竞技券,流程待确认。 战令幸运星额外点击领取分支待完善。 --- # 首页、商城、领地与公会功能及日常任务梳理 +页面层级快速总览:[树形页面地图](261005_1732-树形页面地图.md)。 + +页面之间的进入、返回、识别特征及待验证入口另见 [页面地图与导航规则](261005_1702-页面地图与导航规则.md)。对应程序配置为 `workflows/page_map.json`,可运行 `inspect_page.py` 只读识别当前页面或查询候选路线;现有任务脚本尚未接入统一导航与调度。 + ## 记录范围与依据 本记录针对《永远的蔚蓝星球》的首页、商城、领地与公会,依据用户对高级账号的说明、两张首页截图、八张商城截图、一张领地截图及一张公会截图。当前已开始本地自动化原型开发;各活动内部流程继续逐项补充和实机验证。 @@ -114,6 +278,8 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 用户确定的开发顺序:**先在本地实现部分自动化流程,逐项验证后再打包成独立程序**,最终目标仍是 macOS 与 Windows。模型 Key 由用户以后在程序设置中填写。 +用户确认的通用广告领奖规则:已配置任务要求观看广告才能领取时,**有免广告卡则直接领取,没有则由程序自动看完广告后领取**。多个任务复用同一个广告流程,保留来源页面,广告结束后返回原任务并确认奖励结果。地图已记录策略,广告识别与执行模块尚未实现和验证。 + 小金猪、特惠战令、狂鼠之家、食堂均已有实机验证脚本,使用局部截图模板识别并在关键状态变化后确认结果。当前不执行快速扫荡,也尚未加入红点检测或模型 API。Windows 双平台操作仍需实机验证;页面不匹配或超时会停止,不重复领取。启动方法与验证命令见项目 README。 ## 首页 @@ -122,17 +288,138 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 入口 | 出现规律(用户确认) | 功能和日常逻辑(用户确认) | 后续需要核实 | | --- | --- | --- | --- | -| 金沙游记 | 季节性大活动,不定期出现;每次名称可能不同;可有两个大活动同时出现,入口都在左上角 | 进入后包含多个分活动 | 分活动清单、各任务入口、签到与领奖步骤、完成标志 | -| 特惠 | 固定入口 | 内部有每天按固定流程领取的奖励;当前赏金战令一键领取已实机验证 | 其他子页面、跨日重置规律及活动更换后的样式 | -| 活动 | 固定入口 | 内部有每天按固定流程领取的奖励 | 子页面结构、领取顺序、领取后状态、跨日重置规律 | -| 返利 | 当前左侧存在,是否固定尚未说明 | 内部功能尚未说明 | 领取条件、是否与充值相关、是否存在日常免费内容 | -| 观影 | 不定期出现 | 出现后流程固定,按按钮操作即可 | 按钮顺序、是否涉及广告播放、等待时间、领奖和结束状态 | -| 试炼 | 不定期出现 | 每次页面样式略有不同,但领奖页面逻辑相同 | 样式变化范围、任务条件、领奖路径、完成标志 | -| 冲刺 | 不定期出现,三个冲刺活动轮流出现 | 三种活动基本逻辑相同 | 三种活动名称、共用步骤、差异条件、奖励领取状态 | -| 寻宝 | 不定期出现 | 每次签到逻辑相同 | 签到入口、签到条件、是否有补签消耗、签到完成状态 | +| 金沙游记 | 季节性大活动,入口在左上角;其他期活动名称可能不同,可有两个大活动同时出现 | 六个分活动已记录;先处理流沙赠礼签到、法老遗珍翻牌、驿站密使来信领取;活动左下箭头回首页 | 翻牌每日重置方式、识别模板及结果验证;无免广告卡时的界面以后确认 | +| 特惠 | 固定入口 | 六个页签均需自动领奖、统一左下箭头返回首页;当前战令一键领取已实机验证 | 新增页签的识别模板、月卡按钮状态和基金后续进度规则 | +| 活动 | 固定入口 | 超值礼包、每日特惠、每日充值、累充豪礼四个页签;日礼包有两个每日免费项目,每日特惠一个免费项目每日可领两次,第二次有免广告卡直接领取,否则自动看完广告领取 | 页面识别、领取按钮和领完状态、广告运行流程、返回路径 | +| 返利 | 不定期出现 | 用户明确目前不处理 | 内部奖励、领取条件和返回方式暂不确认 | +| 观影 | 不定期出现,一般出现后可连续签到 5 天 | 单页中间按钮每天领取 5 次;有免广告卡直接领,否则看完广告再领;右上关闭返回首页 | 当前未出现,等再次出现后采集按钮、剩余次数及领完状态,完善自动化 | +| 试炼 | 不定期出现;当前存在(用户确认) | 三个页签及领奖、底部箭头返回规则已记录;英雄试炼与特训暂不处理,试炼任务无需滚动且不需要自动化 | 英雄试炼和特训后续补充;试炼任务不继续确认执行细节 | +| 祈愿 | 不定期出现;本次用户确认有该入口 | 三页签,仅处理任务领奖和每日一次无广告免费补给;任务需滚动,领完显示已完成并移到底部;左下箭头返回首页 | 按钮及列表模板、滚动边界、免费补给领完状态和领奖验证 | +| 冲刺 | 三类轮流进行,每期 7 天;当前晶矿冲刺 | 晶矿和招募首项礼包每日一次无广告、领完已售罄;任务领完已完成。右下星珀商城周一刷新、整周领一次金币、领完已售罄,右上X关闭回冲刺;左下回首页 | 任务领后重排待确认、模板与金币广告条件待采集;图腾出现后确认 | +| 寻宝 | 等级开放后每期约9~10天连续换期;当前有入口 | 冲刺下方入口,左下返回;仅领取冒险任务和每期一次无广告免费礼包,领后条目排到底部;宝藏兑换不处理 | 开放等级、任务刷新及识别模板 | 截图中左侧入口为纵向排列,较下方按钮部分受折叠区域影响。后续需要确认列表的展开、收起或滚动方式,不能假定所有入口始终同时可见或保持同一位置。 +### 金沙游记:签到、翻牌与来信(规则已记录,待实现) + +包含 **金顶夺宝、驿站密使、圣迹漫游、法老遗珍、流沙赠礼、驼铃补给** 六个入口。金沙游记左下角箭头返回 **首页**。当前仅处理流沙赠礼、法老遗珍和驿站来信;金顶夺宝、圣迹漫游、驼铃补给仅登记入口,暂不处理。 + +用户后续确认实际名称为 **驿站密使**;之前的“驿站密信”仅保留为别名,不创建两个活动。 + +| 分活动 | 用户确认的流程 | 返回方式 | 待补充 | +| --- | --- | --- | --- | +| 流沙赠礼 | 长周期签到,含15天、23天两个页签;游戏按活动天数自动选中当前页签,例如第20天自动选23天。找到当天节点的“可领取”按钮并点击,每天位置可能变化,领完变为“已领取” | 左下箭头回金沙游记 | 可领取与已领取按钮、动态节点和结果识别模板 | +| 法老遗珍 | 常规每日3张,无免广告卡时1张直接翻、另外2张看广告,有卡3张直接翻;优先第一排,跳过显示奖励内容的已翻牌,继续处理“点我翻牌”的未翻牌;当前有免广告卡账号首翻后牌子上显示“免费”;直到提示“剩余次数不足”停止 | 左下箭头回金沙游记 | 每日重置方式、牌子和结果模板;无卡按钮样式及广告界面以后确认 | +| 驿站密使来信 | 入口有红点时打开来信弹框,来信列表可上下滚动;跳过显示“已领取”的条目,点击其余未领取来信,无需额外红点或未领取文字 | 点击弹框外或右上角X回金沙游记 | 来信与已领取标志、领奖结果和滚动边界模板 | + +签到任务优先使用游戏自动选中的页签,不主动把15天和23天两页都点一遍;识别“可领取”所在节点,不固定每日点击坐标,点击后以该节点变成“已领取”确认完成。翻牌按当天已翻状态继续,不能每次进入都再点三个或重复点已展示奖励的牌;停止依据为不能翻牌或“剩余次数不足”。当前账号有免广告卡,“免费”文案只记录本账号表现,不推断无卡样式;无卡按钮及广告界面等以后出现该情况再确认。第20天仅为签到规则示例,不记为当前实机观测。三项分活动完成后均先返回金沙游记,再从活动左下角返回首页。 + +新增 **金沙游记流沙赠礼签到、金沙游记法老遗珍翻牌、金沙游记驿站来信领取** 三项待实现任务。签到、翻牌、来信送礼分别记录为可复用流程,各季节活动配置自己的页面样式、可领取与已领取标志、广告分支和返回控件;不假定它们共享同一套图片模板。共用执行模块和新脚本尚未实现,未加入已实现脚本汇总。 + +### 特惠页签与领奖规则(用户确认) + +底部从左到右依次为 **超值月卡、战令、特惠周卡、钻石基金、遗迹战令、宠物战令**,全部需要自动领取符合条件的奖励。用户原文“砖石基金”在文档中统一写作“钻石基金”;最后一项在规则描述中称为“宠物战力”,暂按页签清单记为“宠物战令”,界面文字待核对。 + +| 页签 | 领取条件与操作 | 刷新或奖励来源 | 当前状态 | +| --- | --- | --- | --- | +| 超值月卡 | 两项奖励每天各领一次,按钮位置固定;未购买分别显示“18 元”“30 元”;领完分别显示“续费:18 元”“续费:30 元”,这些按钮均跳过 | 每日 00:00 刷新 | 进入与返回已有流程,月卡领奖待实现;可领取时的按钮文案与识别模板待采集 | +| 战令 | 消耗一定体力产生奖励后领取 | 体力消耗进度 | 已实现一键领取,沿用赏金战令脚本 | +| 特惠周卡 | 未购买也可在列表中点击“签到”;签到后显示“已领取”,跳过已领项目 | 每日 00:00 刷新 | 资格和领完状态已确认,识别模板与执行待实现 | +| 钻石基金 | 遍历实际显示的内部页签;解锁且到达关卡后点击最后一列钻石。未解锁有小锁头;已领有对号;未达关卡有灰色蒙版,均跳过 | 解锁资格及关卡进度 | 基金 1、2、3 可见范围和领奖状态已记录,识别模板与执行待实现 | +| 遗迹战令 | 上下滚动列表,逐项点击第一列高亮且没有对号的小正方形奖励图标;有对号跳过 | 参与遗迹夺宝 | 没有一键领取,图标在各列位置固定;识别模板、列表边界及领取弹框待采集 | +| 宠物战令 | 原逐项奖励图标规则保留,实机发现灰色一键领取 | 参与保卫宠物 | 布局已采集;是否优先一键领取待用户确认,结果仍待实测 | + +超值月卡领取后的两个“续费”按钮作为已完成当日领取的状态记录,均不再点击。用户尚未说明可领取时的确切按钮文案,因此不直接假定为“领取”;实现时需采集画面确认。两类战令逐项领取后需重新识别奖励状态,再继续滚动,避免重复点击已领图标。 + +钻石基金内部页签按关卡进度增加,用户目前确认以下范围。名称原文为“砖石基金 1/2/3”,文档统一为“钻石基金 1/2/3”。 + +| 当前关卡范围(按用户原说明) | 显示页签 | +| --- | --- | +| 未到 100 关 | 钻石基金 1 | +| 超过 100 关、未到 200 关 | 钻石基金 1、钻石基金 2 | +| 超过 200 关、未到 260 关 | 钻石基金 1、钻石基金 2、钻石基金 3 | + +恰好达到 100、200 关时的显示边界尚未确认;260 关及后续未玩到,不推测页签数量和阈值。执行方案以实际可见页签为准,不能硬编码为只处理三个页签。基金可领取钻石没有对号;已领取显示对号,未达关卡覆盖灰色蒙版。**没有对号不能单独作为可领取依据**,还需确认解锁且排除灰色蒙版;基金可领图标是否高亮未获确认。 + +月卡、基金的购买和解锁作为现有权益的领取条件记录;周卡签到不要求购买。遗迹夺宝、保卫宠物只记录为奖励来源,尚未据此增加自动参与玩法的任务。用户已确认特惠六个页签均点击**左下角箭头样式的返回按钮**回到首页;新页签返回按钮模板与实际切换仍待采集验证。 + +程序地图保留已实现战令任务,新增月卡、周卡、基金、遗迹战令和宠物战令五项待实现任务。未实现流程不加入底部已实现脚本汇总。 + +### 活动页签与每日免费领取(用户确认,待实现) + +进入首页左侧“活动”,底部按顺序有 **超值礼包、每日特惠、每日充值、累充豪礼** 四个页签;最后一项本轮实机标题为累充豪礼,旧称保留作别名。 + +“超值礼包”内部有 **日礼包、周礼包、月礼包** 三个页签。月礼包只有充值月卡会员才能看到;不可见时跳过,不以购买会员作为自动化前提。 + +| 入口路径 | 用户确认的免费领取规则 | 当前状态 | +| --- | --- | --- | +| 首页 → 活动 → 超值礼包 → 日礼包 | 2个免费项目,本轮上方体力免费带视频标志、下方金币普通免费;广告判定策略待确认 | 规则已确认,脚本待实现 | +| 首页 → 活动 → 每日特惠 | 1 个免费项目,每日可以领取 2 次;第二次有免广告卡直接领取,否则自动看完广告后领取 | 规则已确认,领取脚本与共用广告流程待实现 | + +周礼包和月礼包均已确认没有免费领取项目,免费领奖流程跳过。 + +每日充值、累充豪礼需要自动领取已达成奖励:有红点时进入领取。每日充值内部有 **6 元档、25 元档** 两个页签,两档都可能存在奖励。充值相关流程优先级低,按用户要求以后有充值奖励时再完善;任务只领取已有奖励,不执行充值。 + +用户确认活动各页签均从**左下返回首页**。本次没有新增已实现脚本条目;页面结构与 4 项待实现任务已同步到 `workflows/page_map.json`,按钮模板和领取后状态仍需后续实机采集。 + +### 观影活动:规则已确认,等再次出现后完善 + +观影是不定期活动,一般出现后可以连续签到 **5 天**。进入后只有一个页面,点击**中间按钮**领取奖励,每天共 **5 次**。有免广告卡时直接领取,没有时自动看完广告后再领取,复用通用广告领奖策略。完成后点击**右上角关闭按钮**回到首页。 + +当前观影入口未出现(用户于 2026-10-05 确认)。用户要求等后续观影按钮再次出现后再完善这个自动化任务,地图已将其记录为待后续实现;本次不新增运行脚本,也不加入已实现脚本汇总。按钮模板、剩余次数、领完状态及广告返回流程届时采集。“一般连续签到5天”作为常见活动规律,不推定所有轮次的固定结束日期。 + +### 试炼:页面规则保留,暂不做自动化 + +当前首页左侧有试炼入口(用户于 2026-10-05 确认),内部按顺序有 **英雄试炼、特训、试炼任务** 三个页签。该活动不定期出现,各轮外观可能略有不同,执行时仍需识别当前入口及页面。 + +“试炼任务”内是任务列表,完成的任务会显示 **“领取”** 按钮。其中 **“每日登录游戏 1 次”** 奖励每天可领取一次;其他奖励只有完成对应任务后才可领取。用户最新确认列表**不需要滚动、不需要自动化**,这些规则仅作为页面说明保留。 + +试炼页面点击**底部箭头样式返回按钮**回到首页。三个页签及返回关系保留在地图中;英雄试炼和特训按用户要求暂缓,后续补充。“试炼任务奖励领取”已从待实现任务中移除,转入 `excluded_tasks` 记录当前不处理的决定,不继续追问它的执行细节。 + +### 祈愿:任务领奖与免费补给(规则已记录,待实现) + +用户确认首页左侧**试炼下方、冲刺上方**的“祈愿”是不定期活动。进入后底部左下角为箭头返回按钮,右侧依次为 **祈愿、任务、礼包** 三个页签。点击左下箭头返回首页。 + +| 页签 | 已确认规则 | 待补充 | +| --- | --- | --- | +| 祈愿 | 用户确认本页不需要自动化 | 保留页签结构,暂不处理 | +| 任务 | 需上下滚动,点任务右侧“领取”;每日可领取登录奖励。领完显示“已完成”,该条目自动移到列表底部 | 列表边界、任务与领奖弹框的识别模板 | +| 礼包 | 顶部“免费”补给每天领取 1 次,无需广告,直接领取 | 免费补给领完状态、按钮与奖励弹框模板 | + +地图保留三个页签节点及返回关系,“祈愿任务奖励领取”和“祈愿免费补给领取”两项任务仍待实现,未加入已实现脚本汇总。用户确认祈愿页签本身不需要自动化。 + +任务领取后列表会重排,因此执行设计需要每次领取后重新识别可领条目,再继续滚动,不能沿用原列表序号或原点击位置。以“已完成”及条目移到底部作为领奖后状态线索,具体模板和滚动终点仍需实机采集。 + +### 冲刺:轮换活动与免费领奖(规则已记录,待实现) + +用户确认 **晶矿冲刺、招募冲刺、图腾冲刺** 三种活动轮流进行,**每期持续 7 天**;当前为晶矿冲刺。进入后显示冲刺列表,底部左下角为箭头返回按钮,点击回到首页。不同类型分别记录页签清单,不将尚未确认的页签当作共用入口。 + +| 活动 | 底部页签(从返回按钮右侧开始) | 已确认领奖规则 | +| --- | --- | --- | +| 晶矿冲刺 | 冲刺目标、冲刺排名、冲刺礼包、冲刺任务 | 礼包首项“免费”每日领一次,无需广告,领完“已售罄”;任务列表可上下滚动,可领时有“领取”,领完“已完成” | +| 招募冲刺 | 冲刺目标、冲刺排名、冲刺礼包、冲刺任务;切换页签时底部导航保持不变 | 从底部礼包页签进入,首项免费每日一次、无需广告,领完已售罄;任务列表可滚动领取、领完已完成;左侧返回直接回首页 | +| 图腾冲刺 | 等出现后确认 | 按用户要求后续活动出现时补充,不套用其他冲刺内部流程 | + +冲刺面板**右下角“兑换商店”**按钮打开 **星珀商城弹框**。商城第一项金币**每周一刷新,整周可以免费领取一次**,领完显示 **“已售罄”**。弹框右上角有 **X 关闭按钮**,点击后回到冲刺面板,保留进入前的冲刺类型和页签。按钮图像模板与金币是否涉及广告尚未采集。 + +用户明确冲刺任务领完是否自动移到列表底部**待确认**。执行设计每次领取后重新识别可领条目,暂不依赖固定排序,也不将祈愿任务的重排行为视为冲刺已确认规则。 + +地图保留晶矿/招募每日免费礼包、晶矿/招募任务奖励、星珀商城免费金币共五项待实现任务。礼包仅领取首项免费项目,钻石兑换列表的其余项目未纳入当前任务。用户明确**冲刺目标、冲刺排名不需要自动化**,页签结构保留,图腾冲刺暂缓。新增任务未实现脚本,不加入底部脚本汇总。 + +### 寻宝:冒险任务与每期免费礼包(规则已记录,待实现) + +寻宝入口位于首页左侧**冲刺下方**,用户确认当前存在。达到一定等级后出现,具体等级阈值尚未说明;每期约 **9~10 天**,一期结束后开始下一期。此处按最新说明记录为等级开放后的连续周期活动。 + +底部左下为箭头返回按钮,右侧依次为 **宝藏兑换、冒险任务、冒险礼包** 三个页签;点击左下箭头回到首页。 + +| 页签 | 已确认规则 | 待补充 | +| --- | --- | --- | +| 宝藏兑换 | 用户确认不需要自动化 | 保留页签结构,暂不处理 | +| 冒险任务 | 任务列表可上下滚动,可领奖励显示“领取”;领完显示“已完成”,条目排到列表下面 | 是否有每日刷新任务、列表边界和识别模板 | +| 冒险礼包 | 矿石兑换列表可上下滚动,其中一个“免费”项目**每期领一次,无需广告**;领完显示“已售罄”,并排到列表最底下 | 周期标识、按钮与领奖弹框模板 | + +新增“寻宝冒险任务奖励”和“寻宝冒险免费礼包”两项待实现任务,尚未新增脚本或加入已实现脚本汇总。领取后列表会重排,应重新识别条目和按钮再继续滚动;免费礼包没有确认固定为第一项,不沿用冲刺礼包首项的位置规则。免费礼包按本期处理,周期更换后可再次领取,不记为每日奖励。 + ### 特惠战令一键领取(已实机验证) 2026-10-04 在当前账号实际执行并观察到完整流程:**首页 → 左侧特惠 → 赏金战令 → 一键领取 → 恭喜获得弹框 → 点击空白处关闭 → 一键领取按钮变灰、已领奖励出现绿色勾选 → 左下角返回 → 首页**。 @@ -154,9 +441,9 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 区域 | 入口 | 出现规律与用途 | 当前记录状态 | | --- | --- | --- | --- | | 右侧 | 任务 | 固定入口 | 已验证脚本:根据首页和日常/周常标签红点领取任务奖励并返回首页;滚动后隐藏任务的领取规则待继续确认 | -| 右侧 | 好友 | 固定入口 | 是否包含每日互动或免费奖励待查看 | +| 右侧 | 好友 | 固定入口 | 好友列表底部每日一键赠送一次,领取赠礼有红点时进入一键领取;弹框关闭规则已记录,脚本待实现 | | 右侧 | 邮件 | 固定入口 | 已实现红点触发的一键领取与返回首页脚本;无红点时跳过 | -| 右侧 | 英雄集结 | 不定期出现的大活动,与金沙游记属于类似类型 | 剑来献礼积分奖励、骊珠画卷任务奖励已实现脚本;其他分活动待查看 | +| 右侧 | 英雄集结 | 不定期出现的大活动,与金沙游记属于类似类型 | 六个分活动已记录;剑来献礼、骊珠画卷已有脚本;岁岁平安、骊珠寻珍待实现;槐萌祈缘、剑守长城暂缓 | | 右上方 | 小游戏、问题反馈、游戏圈、客服 | 用户明确暂时不用处理 | 暂不纳入本轮任务梳理 | ### 任务奖励:日常与周常(已实机验证) @@ -171,12 +458,42 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 脚本先检查首页任务红点,没有红点时直接结束。进入后处理当前日常或周常面板中全部可见的“领取”按钮,每领取一次都确认奖励弹框并关闭。当前面板没有领取按钮时,脚本仅检查另一个标签自身右上角的红点;有红点才切换并继续领取,没有则关闭任务回到首页。单个面板的领取次数上限为 20 次,达到上限会停止,避免页面异常时重复点击。 -### 英雄集结:剑来献礼积分奖励与骊珠画卷任务奖励 +### 好友:每日赠送与赠礼领取(规则已记录,待实现) + +首页右侧点击“好友”,打开好友列表弹框,底部有 **一键赠送、领取赠礼** 两个按钮。 + +1. **一键赠送**:每天登录后点击一次;此流程不以“领取赠礼”按钮是否有红点作为进入好友列表的条件。 +2. **领取赠礼**:好友列表底部该按钮有红点时点击,打开“领取赠礼”子弹框,再点击 **一键领取**。 +3. 领取后点击赠礼弹框外面,或点击其右上角 **X**,关闭赠礼弹框,回到好友列表。 +4. 点击好友列表弹框外面,关闭列表,回到首页。 + +地图将好友列表与领取赠礼分别记录为两层 `overlay`,不能把关闭赠礼弹框当作已回到首页。本流程与领地狂鼠之家内的好友列表属于不同入口。 + +两个操作完成后,按钮均不变且仍可继续点击,不能用按钮变灰、改字或消失来判断完成。赠礼已领完时再点击,会提示 **暂无可收取的礼物**,表示当前没有奖励,不代表领取成功。 + +后续执行设计:一键赠送每日最多一次,按账号与游戏日记录执行结果,依据实际反馈确认完成;赠礼每次红点触发进入后点击一次一键领取,确认结果后关闭两层弹框,不因按钮仍可点击而重复领取,也不追加空点击验证成功。出现空奖励提示时停止并退出。执行记录与结果识别均待实现。 + +两项任务仍待实现,尚未新增脚本或加入已实现脚本汇总。结果反馈、弹框识别模板及赠送游戏日刷新时间待补齐。 + +### 英雄集结:已有领奖与新增签到、寻珍 2026-10-04 实机进入英雄集结后,剑来献礼入口存在红点。进入页面后点击“一键领取”,确认“恭喜获得”弹框并领取 2 点活动积分。对应脚本为 `claim_sword_gift_points.py`,配置在 `workflows/sword_gift_claim.json`;脚本仅在剑来献礼入口有红点时进入,已领完或无红点时退出英雄集结并回到首页。 同次实机中骊珠画卷入口存在红点。进入底部“任务”面板后,活动任务有红点并领取 1 项奖励;每日任务标签没有红点,按规则未进入。对应脚本为 `claim_lizhu_task_rewards.py`,配置在 `workflows/lizhu_task_claim.json`。脚本按活动任务、每日任务顺序检查标签红点,在每个有红点的面板中逐个点击可见“领取”按钮、确认奖励弹框后继续;单个面板最多处理 20 次,最后关闭任务、骊珠画卷和英雄集结,返回首页。 +新增入口 **槐萌祈缘、岁岁平安、骊珠寻珍、剑守长城**。槐萌祈缘、剑守长城先不处理;岁岁平安、骊珠寻珍规则来自用户说明,尚未采集模板或实现脚本。骊珠寻珍与骊珠画卷是不同活动,分别建节点。 + +| 分活动 | 用户确认流程 | 返回活动页 | 待确认或采集 | +| --- | --- | --- | --- | +| 岁岁平安 | 14天签到页;已签卡片显示对号,当前可签卡片左上方有“可领取”提示,点击提示左下方对应卡片 | 右上角关闭按钮回英雄集结 | 对号、卡片、提示及领奖结果模板 | +| 骊珠寻珍 | 入口有红点时进入,确认下方“跳过动画”已勾选;存在“免费”按钮时点击。之后左侧参与1次、右侧参与5次;按钮金币为活动专用抽奖次数,剩余≥5点参与5次,剩1~4点参与1次,直到0 | 左下返回箭头回英雄集结 | 活动金币余额、勾选状态、按钮与结果模板 | + +岁岁平安复用签到流程,但可领取提示是定位线索,实际点击目标是对应卡片;已签对号条目跳过。不同活动的签到样式和完成标志分别配置,不把流沙赠礼的“已领取”文字直接套到这里。用户后续确认签到总天数为14天,纠正此前154天表述。 + +骊珠寻珍只在“跳过动画”未勾选时点击复选框,避免将已选状态取消。用户确认金币为活动专用金币,可理解为剩余抽奖次数:参与1次使用1次,参与5次使用5次。免费与每次参与后都需确认结果、重新读取剩余数,再选择下一次操作;不依赖首次读数连续点击,不点击补充资源的购买或兑换入口。当前只记录流程,页面模板与执行尚未实现。 + +新增“英雄集结岁岁平安签到”“英雄集结骊珠寻珍”两项待实现任务,未加入已实现脚本汇总。分活动返回英雄集结后,沿用现有关闭活动回首页的路径;该路径来源于现有工作流,本次未重新验证。 + ### 中间区域:小金猪与挂机奖励 用户确认:点击小金猪会打开奖励弹框,里面可以领取奖励。 @@ -239,21 +556,37 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 顺序 | 区域 | 截图可见内容 | 本阶段范围 | | --- | --- | --- | --- | -| 1 | 英雄招募 | 英雄兑换、快速招募选项、插鼓招募、星愿招募;下方多个限时 UP 神灯许愿卡片,带倒计时与任务入口 | 已实现限时 UP 卡片中的神灯任务奖励和免费神灯领取;不执行任何招募 | -| 2 | 图腾寻宝 | 蓝色与橙色两类宝箱;每类有“寻宝1次”“寻宝10次”、概率入口和保底次数提示 | 保留为后续日常任务适配对象,具体操作与自动化方式待定 | +| 1 | 英雄招募 | 英雄兑换、快速招募选项、插鼓招募、星愿招募;下方多个限时 UP 神灯许愿卡片,带倒计时与任务入口 | 已实现神灯任务奖励和免费神灯领取;用户确认无其他日常领奖需求 | +| 2 | 图腾寻宝 | 蓝色与橙色两类宝箱;每类有“寻宝1次”“寻宝10次”、概率入口和保底次数提示 | 每张卡片每日领取一次免费奖励;无免广告卡需看视频,领完对应免费按钮消失;待实现 | | 3 | 关卡礼包 | 关卡礼包卡片,显示奖励、限购次数与价格;截图示例为第40关礼包 | 用户明确暂不处理 | -| 4 | 每日商店 | 商品网格,显示商品名称、数量、金币或钻石价格、“已售罄”状态;底部有刷新倒计时和付费刷新按钮 | 保留为后续日常任务适配对象,具体购买或领取规则待定 | +| 4 | 每日商店 | 六张商品卡片,显示商品名称、数量、金币或钻石价格、“已售罄”状态;右下600金币刷新按钮 | 首格免费招募券每日一次,无广告,领完已售罄;刷新不再出现免费。金币购买招募券与刷新策略待完善 | | 5 | 钻石 | 多档人民币充值商品,带钻石数量和赠送标记 | 用户明确暂不处理 | -| 6 | 金币 | 一袋金币、一箱金币、一车金币;有已售罄状态及钻石兑换价格 | 保留为后续日常任务适配对象,具体操作与自动化方式待定 | +| 6 | 金币 | 一袋金币、一箱金币、一车金币三张卡片 | 仅领取首张免费奖励,每日两次;第二次无免广告卡需视频、有卡直接领,全部领完已售罄;待实现 | ### 截图支持的状态与待确认事项 -- **英雄招募**:截图有招募资源数量与单次或多次所需数量显示;限时 UP 卡片不止一个。后续需明确日常要执行哪种招募、次数、资源限制,以及卡片中的“任务”是否有独立奖励。 -- **图腾寻宝**:两类宝箱的资源图标和保底提示不同。后续需明确是否执行寻宝、选择哪类宝箱、单次或十次及每日执行条件。 -- **每日商店**:截图可见招募券、游侠碎片、骑士碎片、靴子锻造书、洗炼石、随机职业经验。部分商品已售罄;刷新按钮标注消耗 600 金币。后续需明确每天处理哪些商品,以及是否允许手动刷新。 -- **金币**:截图中的“一袋金币”显示 500 金币且已售罄,不能据此认定它原本免费;“一箱金币”显示 10000 金币、价格 450 钻石,“一车金币”显示 30000 金币、价格 1200 钻石。具体日常目标与消耗规则后续由用户说明。 +- **英雄招募**:限时UP卡片不止一个;已有神灯任务与免费神灯脚本,用户确认无其他日常领奖内容,不新增招募操作。 +- **图腾寻宝**:两类宝箱资源和保底不同;仅处理每卡每日一次的免费按钮。免费领完按钮消失,不把寻宝1次、寻宝10次当作免费领奖入口。 +- **每日商店**:六张商品卡片可出现各类锻造书、英雄碎片、随机职业经验书、宝锤、招募券等,物品随机且可能金币或钻石标价。首格免费券规则已确认;其他商品仅考虑金币售卖的招募券,购买与刷新策略待完善。 +- **金币**:截图中的500金币、10000金币、30000金币以及450钻石、1200钻石均为当时示例。用户后续确认首张每日免费两次,其余两张兑换商品不属于当前免费任务范围。 -以上数值仅为本次截图示例,不作为长期固定配置。“已售罄”可以作为后续状态识别线索,但具体每日重置与完成判定尚未验证。 +截图中的奖励数量和兑换价格只作示例,不作为长期固定配置;右下600金币刷新成本由用户另行确认。免费领奖次数与领完标志已由用户说明,按钮、蒙版、领奖反馈和广告模板仍待采集。 + +### 商城免费领奖与商店刷新(用户确认,待实现) + +| 栏目 | 次数与操作 | 广告规则 | 完成标志 | +| --- | --- | --- | --- | +| 图腾寻宝 | 两张卡片分别领取,每张每日一次 | 有免广告卡直接领,否则看完视频领取,引用共用广告策略 | 对应卡片免费按钮消失;仍需确认领奖反馈,不能只凭未找到按钮判成功 | +| 每日商店首格 | 每日一次免费招募券;刷新后不会再次出现免费券 | 不需要广告 | 已售罄 | +| 金币首张 | 每日免费两次 | 第一次直接领,第二次有免广告卡直接领,否则看完视频领取 | 两次领完已售罄 | + +金币首张任务需结合当前免费/已售罄状态及本日执行结果判断剩余次数,不能每次进入都固定再点击两次。商城栏目处于同一个滚动页面,定位栏目不代表切换到另一个独立页面。 + +每日商店右下 **600刷新** 表示每次消耗 **600金币** 刷新六张卡片,可刷新多次。刷新次数用完时按钮出现 **黑色蒙版**;若点击会提示 **今日刷新次数已用完**。后续执行应识别蒙版后停止,不追加点击来验证次数已用完。刷新后不会再出现首格免费招募券,刷新不属于免费券任务。 + +金币购买招募券仅记录草案:只匹配 **招募券+金币标价**,其他物品和钻石标价跳过。每次购买数量、金币预算、刷新条件与每日刷新或支出限制尚未确定,用户明确规则待完善,购买和刷新均未实现。 + +新增三项免费待实现任务及一项延期完善的金币购券候选任务。共用广告运行模块尚未实现,未新增脚本或加入已实现脚本汇总。 ### 英雄招募:限时 UP 神灯任务与免费神灯(已实机验证) @@ -271,7 +604,7 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 ### 本轮结论 -本轮已实现英雄招募限时 UP 的神灯任务与免费神灯;**关卡礼包、钻石暂不处理;图腾寻宝、每日商店、金币如何自动化,后续再具体确定。** 页面归入日常打卡范围不代表其中所有按钮都需要执行,招募、寻宝、购买、兑换和刷新各自的规则仍待确认。 +英雄招募神灯任务与免费神灯已有脚本,用户确认没有新增日常领奖内容。图腾寻宝、每日商店免费招募券和金币首卡三项免费流程规则已记录,执行与识别待实现;金币购券和刷新草案后续完善。关卡礼包、钻石继续暂不处理。 ## 领地页面 @@ -282,21 +615,36 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 栏目 | 截图中的大致位置 | 自动化流程状态 | | --- | --- | --- | | 狂鼠之家 | 左侧中下部,矿洞建筑 | 一键收矿与优先罗盘一键雇佣已实机验证并有脚本;其他内部功能待补充 | -| 玩法大厅 | 下方偏左,带喇叭的建筑 | 星球矿场的排行榜奖励与扫荡已实机验证并有脚本;其他玩法待补充 | -| 图鉴 | 下方偏右,书本建筑 | 用户确认有固定流程,具体步骤待补充 | +| 玩法大厅 | 下方偏左,带喇叭的建筑 | 星球矿场已有脚本;新增遗迹夺宝每日扫荡规则,待实现 | +| 图鉴 | 下方偏右,书本建筑 | 用户最新确认暂不处理,内部流程与返回方式暂缓 | | 食堂 | 中部,带食物的建筑 | 一键领取体力已实机验证并有脚本;其他内部功能待补充 | -| 排行榜 | 右侧中部,石制台座区域 | 用户确认有固定流程,具体步骤待补充 | -| 巅峰决斗 | 左上部,旗帜建筑 | 竞技场积分领取已实机验证并有脚本;巅峰决斗模式及其他内部功能待补充 | -| 合作模式 | 上方中部,紫色传送门区域 | 合作券领取已实机验证并有脚本;保卫宠物及其他内部功能待补充 | -| 城墙 | 右上部,城门建筑 | 用户确认有固定流程,具体步骤待补充 | +| 排行榜 | 右侧中部,石制台座区域 | 最新要求改为处理;入口红点时领取进度奖励最顶行宝锤,左下返回领地,待实现 | +| 巅峰决斗 | 左上部,旗帜建筑 | 竞技场积分已有脚本;选择巅峰决斗模式后右侧巅峰商店,优先级购买规则已记录,待实现 | +| 合作模式 | 上方中部,紫色传送门区域 | 合作券已有脚本;友情商店、保卫宠物领券与商店及挑战流程已记录,待实现 | +| 城墙 | 右上部,城门建筑 | 默认城墙,另有打造页签;每日免费机关与单独命令打造规则已记录,尚未实现 | 位置仅描述本次截图,不作为固定点击坐标。各栏目排列为地图布局,上表顺序沿用用户的说明,不代表执行顺序。 +最新处理范围中,图鉴仍暂不处理。领地排行榜按本次新说明启用,覆盖此前暂缓要求;它与玩法大厅内星球矿场排行榜是不同入口和父页面,分别记录流程。 + ### 当前可见信息与待完善内容 截图中的巅峰决斗入口带“拥有”数量及决斗倒计时,合作模式入口带两种资源的“拥有”数量。这些是当前页面状态,资源含义、参与条件及重置规律尚未确认。 -后续逐栏目补充日常目标、进入与返回路径、操作顺序、执行次数、奖励领取、资源消耗,以及已完成、条件不足等状态的识别方式。目前尚未确认任一栏目的内部按钮和完成标志,也未据此确定脚本或 AI 的具体实现方式。 +已有脚本的步骤与验证结果见下文;其余栏目继续补充日常目标、进入与返回路径、操作顺序、执行次数、资源消耗,以及已完成、条件不足等状态的识别方式。新增城墙流程目前仅记录规则,尚未实现脚本。 + +### 城墙:免费机关与单独命令打造(用户确认,待实现) + +城墙模块底部左侧返回按钮回到 **领地**,右侧两个页签依次为 **打造、城墙**,进入时默认显示 **城墙**。默认城墙页签内部功能暂未说明。 + +点击打造打开机关打造弹框,右上X关闭回城墙;城墙左下返回领地。顶部钻石和机关次数、打造1次/10次已见;免费按钮本轮未显示,出现后的领取逻辑沿用原规则。 + +| 任务 | 触发与执行规则 | 当前状态 | +| --- | --- | --- | +| 每日免费机关 | 每天先直接免费1次,其余无免广告卡需广告、有卡可直接免费,额外次数待确认;逐次确认奖励并重读状态,直到免费按钮消失,不固定总点击数 | 额外广告次数、免费与次数状态、广告和奖励模板待确认或采集 | +| 使用机关次数打造 | 仅响应单独命令,是否打造和执行次数由命令指定;可用机关次数≥10选打造10次,1~9选打造1次,0停止;每次确认结果、重新读机关次数与已完成量 | 命令次数计量与最后一批处理、机关次数及结果模板待完善 | + +两项任务分别加入待实现任务。免费按钮消失后结束每日领取,不接着点打造1次或打造10次。命令打造标记 `trigger: explicit_user_command`、`scheduled: false`,不纳入每日调度;页面顶部钻石只记录为显示资源,使用机关次数打造不默认改用钻石。机关次数为0时停止,命令执行数量与最后一批的处理待具体实现时完善。 ### 狂鼠之家:一键收矿与一键雇佣(已实机验证) @@ -324,6 +672,18 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 对应脚本为项目根目录的 `claim_planet_mine.py`,配置在 `workflows/planet_mine.json`。排行榜入口有红点时才进入,脚本打开进度奖励并领取带红点的项目;星球矿场剩余次数非零且扫荡按钮可用时,依次打开扫荡弹框并点击“扫荡上一层”,每次确认奖励弹框后继续,最多两次。没有排行榜红点或扫荡按钮不可用时跳过相应部分,最后返回首页。macOS 已实机验证;Windows 仍需校准和验证。 +### 玩法大厅:遗迹夺宝扫荡(用户确认,待实现) + +从玩法大厅进入遗迹夺宝,每天第一次进入会出现提示弹框,关闭后点击下方 **扫荡**。若出现“国王势力过于强大,怪物不战而逃……”提示,点击 **确定**,然后点击左下返回按钮直接回到 **领地**。 + +新增遗迹夺宝扫荡任务,当前按一次扫荡记录,未要求循环扫荡至次数用完;首次提示关闭控件、扫荡次数与结果模板仍待采集。该任务不使用星球矿场的“扫荡上一层”弹框规则。 + +### 领地排行榜:进度奖励(用户确认,待实现) + +领地直接入口的排行榜有红点时进入。页面底部有多个页签,默认停在 **排行榜**;其他页签名称和自动化范围未说明。点击下方 **进度奖励**,列表每行右侧有宝锤按钮,只点击 **最顶行右侧宝锤**,不遍历整列领取。 + +点击列表右上角关闭,回到排行榜;再点击排行榜页 **左下角** 返回领地。此流程是本次新增处理范围,覆盖此前“排行榜先不处理”,与星球矿场排行榜奖励独立。 + ### 食堂:一键领取体力(已实机验证) 2026-10-04 已在当前账号完成:**首页 → 领地 → 食堂 → 一键领取 → 确认奖励弹框 → 关闭弹框 → 关闭食堂 → 返回首页**。本次领取 30 体力,首页体力由 1042/80 变为 1072/80。领取后食堂显示烤肉库存 0/60,并出现下次领取倒计时。 @@ -348,6 +708,23 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 脚本只选择模式选择页左侧的“合作模式”,不会进入右侧“保卫宠物”。左上角显示“可领取”时才点击并等待奖励弹框;若已显示“已领完”,则跳过领取并依次退出到首页。可使用 `--dry-run` 只验证首页和执行计划,不点击游戏内容。macOS 已实机验证;Windows 仍需校准和验证。 +### 合作与保卫宠物:商店、领券和挑战(用户确认,待实现) + +合作模式入口先选择具体玩法,合作模式与保卫宠物分开记录。用户在后文称“保卫动物”,作为保卫宠物的别称保留。 + +| 新任务 | 入口与规则 | 频率或完成状态 | +| --- | --- | --- | +| 友情商店签到 | 选择合作模式,左上进入友情商店,领取第一张免费金币 | 每周一0点刷新,每周首次登录领取一次,领完已售罄 | +| 友情商店购买 | 读取顶部友情商店专用货币余额,足够商品价格时买洗练石1个、体力2个;星愿币买2个 | 洗练石与体力每日;星愿币每周首次进入 | +| 领保卫宠物券 | 选择保卫宠物,可能出现本周buff提示,点知道了关闭;左上可领取时点击 | 最新确认每天0点刷新、每日一次,覆盖之前每周一次说明;领完已领完 | +| 宠物商店签到 | 保卫宠物右侧商城,第一张免费金币 | 每周一0点刷新,每周首次登录领取一次,领完已售罄 | +| 宠物商店购买 | 读取顶部宠物商店专用货币,够3200时买红色随机宠物碎片;跳过黄色2400随机宠物碎片 | 余额够就买完当前可售数量;每次确认结果后重读余额与库存,余额不足或不可售时停止 | +| 保卫宠物挑战奖励 | 右侧上方挑战入口有红点时进入,每周、成就两个页签,哪个有红点就进入并点击领取 | 逐次确认结果、重新识别按钮;右上关闭回保卫宠物,是否需滚动及控件模板待补齐 | + +两个商店的免费金币每周一0点刷新,每周首次登录领一次,免费是否涉及广告及模板尚未说明。两个商店各用自己的专用货币,顶部显示余额,购买条件为余额≥商品价格。友情商店按每日或每周目标记录已购数量,重复进入只补剩余目标;宠物商店红色碎片则按余额与可售数量持续购买,每次重新读取两者,直到余额不足3200或无可售商品。“洗练石”保留“洗炼石”别名;随机宠物碎片必须同时匹配红色和3200价格,黄色2400不购买。保卫宠物券以最新明确的每天0点刷新为准,覆盖之前每周领取的描述。 + +用户确认:友情商店点击右上角关闭回合作模式;宠物商店与挑战(含每周、成就页签)点击右上角关闭回保卫宠物;保卫宠物主页面点击左下角返回回到领地。地图已补齐对应返回关系,控件模板仍待采集。新增六项任务未实现;合作券仍沿用已有脚本。 + ### 巅峰决斗:竞技场积分领取(已实机验证) 2026-10-04 已在当前账号完成:**首页 → 领地 → 巅峰决斗 → 模式选择中的左侧“竞技场” → 左下角带时分秒进度条的积分累积区域 → 确认奖励弹框 → 返回领地 → 返回首页**。首次点击获得 3886 竞技积分;脚本随后完成一次实机回归,确认可自动关闭奖励弹框并返回首页。 @@ -360,6 +737,26 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 竞技积分会持续累积,该区域可领取时显示“恭喜获得”弹框。脚本确认竞技场页面后点击左下积分累积区域,必须识别奖励弹框才能继续关闭和返回;无法识别时安全停止。脚本只选择左侧“竞技场”,不会进入右侧“巅峰决斗”。可使用 `--dry-run` 只验证首页和执行计划,不点击游戏内容。macOS 已实机验证;Windows 仍需校准和验证。 +### 竞技场:领取竞技券(待后续确认) + +入口为领地 → 巅峰决斗 → 左侧竞技场。新增领取竞技券任务,与已有竞技积分脚本分别记录;竞技场内入口、领取条件、频率、次数、完成状态和返回步骤以后确认。当前不新增脚本,不加入已实现脚本汇总。 + +### 巅峰决斗:巅峰商店优先级购买(用户确认,待实现) + +从领地巅峰决斗入口进入模式选择,选择 **巅峰决斗**,再点击页面右侧商店进入 **巅峰商店**。与左侧竞技场积分领取分别记录。 + +| 优先级 | 商品 | 购买规则 | +| --- | --- | --- | +| 1 | 随机藏品碎片 | 余额足以支付时,优先购买最大可售数量 | +| 2 | 洗练石(保留洗炼石别名) | 处理第一项后,用剩余余额购买最大可售数量 | +| 3 | 超凡宝锤 | 处理前两项后,用剩余余额购买最大可售数量 | + +每次购买确认结果后重新读取余额、价格与库存。当前优先级无可售商品或无法支付时,再检查下一优先级;全部目标无库存或余额不足时结束。最大数量按商品可购买份数与余额共同决定,每份包含多少物品从当前卡片读取,不将购买份数当作固定碎片数。 + +巅峰商店使用自己的专用货币,余额显示在页面顶部。完成后点击右上角X关闭回巅峰决斗,主页面再点击左下角返回回到领地。 + +新增“巅峰商店优先级购买”待实现任务,按有可售商品且余额足够触发,不预设每日或每周固定额度。商品价格、库存、余额和购买结果及返回控件模板待采集;尚未新增脚本或加入已实现脚本汇总。 + ## 公会页面 ### 入口与栏目 @@ -368,13 +765,13 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 栏目或入口 | 截图中的大致位置 | 自动化流程状态 | | --- | --- | --- | -| 公会商城 | 左侧中下部,带蓝色钻石标志的建筑 | 用户确认有固定流程,具体步骤待补充 | -| 远征大厅 | 下方偏左,紫色传送门区域 | 用户确认有固定流程,具体步骤待补充 | -| 公会任务 | 左侧中部,卷轴建筑 | 用户确认有固定流程,具体步骤待补充 | -| 公会祝福 | 中部,蓝色球体建筑 | 用户确认有固定流程,具体步骤待补充 | +| 公会商城 | 左侧中下部,带蓝色钻石标志的建筑 | 贡献商城与龙鳞商城两页签,按各自顶部专用货币和购买优先级执行;右上关闭回公会,任务待实现 | +| 远征大厅 | 下方偏左,紫色传送门区域 | 迷宫寻宝暂缓;公会对决奖励红点进入任务领奖,关闭后左下回公会,任务待实现 | +| 公会任务 | 左侧中部,卷轴建筑 | 滚动点击右侧领取,已完成移末尾;领取上方红点进度宝箱,领完对号;右上关闭回公会,任务待实现 | +| 公会祝福 | 中部,蓝色球体建筑 | 升级按钮存在且有红点时点击一次,消耗材料、红点说明材料充足,完成后左下返回公会,任务待实现 | | 每日捐献 | 右侧中部,发光的祭坛区域 | 免费捐献已实机验证并有脚本;付费捐献和次数规则待补充 | -| 成员大厅 | 右上部,高塔建筑 | 用户确认有固定流程,具体步骤待补充 | -| 公会 Boss | 左上部,巨龙区域;截图标签为“公会Boss” | 用户确认有固定流程,参与条件、次数及奖励步骤待补充 | +| 成员大厅 | 右上部,高塔建筑 | 用户最新明确不需要自动化,保留入口,内部规则不再确认 | +| 公会 Boss | 左上部,巨龙区域;截图标签为“公会Boss” | 周一三五日出现;财宝数字时全部领取,每日首次助威红点点击一次,左下回公会,两项任务待实现 | | 右下角红珍珠祭坛 | 右下部,红色角色与紫色台座,附近显示倒计时和对话气泡 | 砍价已实机验证并有脚本;其他内部功能待补充 | 位置仅描述本次截图,不作为固定点击坐标。最后一项指场景内的红色珍珠祭坛入口,不是底部红色“返回”按钮。 @@ -397,6 +794,30 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 对应脚本为项目根目录的 `claim_guild_donation.py`,配置在 `workflows/guild_donation.json`。脚本只点击左侧免费按钮,不会点击右侧消耗钻石的捐献按钮;免费次数已经使用时识别灰色按钮,跳过捐献并返回首页。可使用 `--dry-run` 从首页只验证执行计划,不点击游戏内容。macOS 已实机验证;Windows 仍需校准和验证。 +## 公会商城与公会任务(用户确认,待实现) + +公会商城共用一个入口,包含贡献商城、龙鳞商城两个页签,默认页签待采集。两页签分别使用专用货币,余额在页面顶部显示;点击右上角关闭按钮返回公会。 + +- **贡献商店任务**:按 **合作券 → 黄金罗盘 → 白银罗盘** 的优先级购买。合作券每周一刷新,整周均可按余额补购,本周最多7个,卖光显示“已售罄”;合作券不可售或当前余额无法支付时,再买黄金罗盘每日最多2个,最后白银罗盘每日最多10个,各项按余额和剩余可售数量尽量购买。周一具体刷新时刻尚未确认;每次确认购买结果并重读余额、库存及本日/本周剩余额度。 +- **龙鳞商店任务**:按随机职业龙晶、随机职业龙血的顺序,购买当前余额允许的最大可售数量。先处理高优先级商品,该项不可售或无法支付后再处理下一项,不预设每日或每周固定数量。 +- **公会任务领奖**:任务列表可上下滚动,可领取行右侧为“领取”,未完成为“前往”,领过为“已完成”并移到列表末尾。只点击领取,每次确认结果后重新识别列表,跳过前往和已完成。 +- **公会任务进度宝箱**:任务领奖后,上方进度条达到的小宝箱会出现红点,点击宝箱领奖,领完显示小对号。每次任务领取后及列表处理结束时重新检查红点宝箱,跳过已显示对号的宝箱。右上关闭公会任务回到公会。 + +购买后确认结果并重读余额、可售数量及本日/本周剩余额度,不能每次进入都重新购买完整限额。商品价格、库存、购买确认与结果、任务列表和宝箱状态模板尚未采集;上述三个任务仅加入待实现清单,不修改已有脚本汇总,也未实际购买或领奖。 + +## 远征大厅、公会祝福与公会Boss(用户确认,待实现) + +远征大厅包含迷宫寻宝、公会对决。**迷宫寻宝先搁置**,仅保留入口,不继续补内部步骤。公会对决进入后,点击下方有红点的“奖励”,默认停留“任务奖励”页签:任务列表可上下滚动,可领取任务集中在上方,右侧显示“领取”;未完成显示“前往”,已领显示“已完成”并移到末尾。逐次领取后确认结果并重新识别列表,不点击前往。奖励右上角关闭回公会对决,再点击左下角返回直接回公会。奖励其他页签未说明,不扩大任务范围;远征大厅实际右上X关闭回公会,已观察。 + +**公会祝福升级**:升级消耗材料,红点表示材料充足。进入后只有“升级”按钮存在且按钮上有红点时,才点击升级一次;完成后点击左下角返回公会,不会自动返回。材料和升级结果识别模板待采集。 + +公会Boss每周一、三、五、日出现,任务仅在入口实际可用时处理,不通过日历推断页面一定存在。 + +- **领取公会boss奖励**:右侧“财宝”图标左上角有数字时打开财宝弹框,点击可用的“全部领取”;领取后按钮变成灰色“领取”,确认奖励结果并跳过灰色按钮。弹框右上角关闭回Boss页面,Boss左下角返回公会。数字的具体含义未知,不把数字当作点击次数。 +- **公会助威**:当天首次进入可用的Boss页面,助威按钮有红点时点击一次,每天最多一次;之后可按本日记录跳过,不循环点击。用户确认点击后按钮变成“已助威”,不可重复点击,后续看到已助威直接跳过;完成状态识别和执行记录尚未实现。 + +新增四项待实现任务,迷宫寻宝只标记暂缓。页面标题及当前布局已采集,领取、升级与助威后的结果、灰色按钮等状态仍待验证;本次仅补规则,未实际升级、助威或领取奖励。 + ## 自动化方案的初步判断 以下为设计候选,需内部流程走查后确认。 @@ -404,23 +825,38 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 | 功能类型 | 候选实现方式 | 原因 | | --- | --- | --- | | 特惠、活动中的固定每日领奖 | 脚本组织流程,图像或文字识别确认每步状态 | 入口固定、步骤重复,可复用明确的操作和完成判定 | -| 观影、寻宝 | 先识别活动是否出现,再执行固定流程 | 活动不一定存在,但用户确认出现后的流程稳定 | -| 试炼、三类冲刺 | 共用流程,并为不同页面设置识别规则;必要时由 AI 辅助判断 | 基本逻辑一致,页面外观或活动条件会变化 | -| 金沙游记等左上角大活动、英雄集结 | 先识别活动名称与分活动,再逐项评估 | 活动名称、数量和内部结构可能变化,当前缺少完整流程 | +| 观影 | 活动再次出现后完善单页每日领取及广告流程 | 当前未出现,用户要求等后续出现再完善 | +| 寻宝 | 识别本期活动后滚动领取任务与每期免费礼包,领奖后重新识别列表 | 等级开放后连续换期,免费项目每期一次;两种列表领完都会重排 | +| 试炼 | 暂不做自动化 | 英雄试炼与特训后续补充,试炼任务由用户明确暂不自动化 | +| 祈愿 | 任务逐项领奖后重新识别列表;每日免费补给直接领取 | 次数、无广告及列表重排规则已确认,识别与执行待实现;祈愿页签本身不处理 | +| 冲刺 | 识别当前类型后处理礼包与任务领奖,并打开星珀商城领周奖励 | 四页签、商城弹框和返回规则已确认,模板待采集;目标排名不处理,图腾出现后补充 | +| 金沙游记 | 先处理签到、翻牌、来信三类流程;其余入口暂缓 | 六个入口及返回层级已记录,驿站密使名称和跳过状态已确认;三项任务待实现,模板待采集 | +| 英雄集结 | 已有剑来献礼与骊珠画卷任务,新增14天签到与按活动抽奖次数寻珍;另两入口暂缓 | 六个入口、签到天数和寻珍资源规则已记录,两项新流程待实现,模板待采集 | | 小金猪挂机奖励 | 已验证脚本:金色领取按钮时领取、验证奖励弹框与灰色按钮、返回首页 | 领取频率和 Windows 适配待验证 | | 小金猪快速扫荡 | 已验证脚本:单次或指定次数扫荡,每次确认并关闭奖励,间隔 2 秒,返回首页 | 每次消耗 10 体力;体力不足时的按钮状态和 Windows 适配待验证 | -| 好友、返利 | 暂不确定 | 尚未查看内部内容和日常规则 | -| 商城:英雄招募、图腾寻宝、每日商店、金币 | 后续确定 | 已记录区域结构,日常目标、执行次数、资源消耗与完成判定尚未明确 | +| 好友 | 每日一键赠送与红点触发赠礼领取,分别确认结果后关闭两层弹框 | 按钮操作后不变且可继续点;每日限次与空赠礼提示已记录,结果及弹框模板待采集 | +| 返利 | 暂不处理 | 用户确认入口不定期出现,目前排除;内部规则暂不确认 | +| 商城:英雄招募 | 沿用神灯任务与免费神灯脚本 | 用户确认没有新增日常领奖内容 | +| 商城:图腾寻宝、每日商店免费券、金币首卡 | 三项免费领奖任务待实现,按独立次数和广告分支处理 | 次数及免费消失/已售罄标志已确认,模板与执行待实现 | +| 商城:金币购买招募券与刷新 | 草案后续完善 | 仅考虑金币招募券;每次600金币刷新,次数用完黑色蒙版,预算和刷新策略尚未确定 | | 商城:关卡礼包、钻石 | 暂不处理 | 用户明确排除 | | 领地:狂鼠之家 | 已验证脚本:一键收矿、等待 10 秒、按白银/黄金/彩虹顺序一键雇佣、返回首页 | 当前仅覆盖该日常流程;其他内部功能、重置规律和 Windows 适配待验证 | | 领地:食堂 | 已验证脚本:发现一键领取时领体力、确认奖励和库存清空、返回首页 | 当前仅覆盖体力领取;其他内部功能、重置规律和 Windows 适配待验证 | -| 领地:合作模式 | 已验证脚本:只选择左侧合作模式,发现左上可领取时领取合作券、确认已领完、返回首页 | 保卫宠物及其他内部功能、重置规律和 Windows 适配待验证 | -| 领地:巅峰决斗 | 已验证脚本:只选择左侧竞技场,领取左下积分累积区域的竞技积分、确认奖励后返回首页 | 右侧巅峰决斗及其他内部功能、重置规律和 Windows 适配待验证 | -| 领地:玩法大厅(星球矿场) | 已验证脚本:领取排行榜进度奖励,并将扫荡上一层执行至剩余次数为 0 | 其他玩法大厅项目、排行榜奖励刷新规律和 Windows 适配待验证 | -| 领地:图鉴、排行榜、城墙 | 待完善固定流程后确定 | 用户确认各栏目均有固定自动化流程,具体步骤、执行条件、消耗和完成判定尚未补充 | +| 领地:合作模式 | 合作券沿用已有脚本,新增友情商店签到购买规则 | 免费金币每周一0点刷新,洗练石体力每日、星愿币每周购买,顶部专用货币够价才买;商店右上关闭,任务待实现 | +| 领地:保卫宠物 | 新增每日0点刷新领券、每周一0点免费金币、红色3200碎片及挑战奖励 | 碎片余额够就买完可售数量;商店挑战右上关闭、主页左下回领地,模板与执行待完善 | +| 领地:巅峰决斗 | 竞技场积分沿用已有脚本,新增巅峰商店按藏品碎片、洗练石、超凡宝锤顺序购买 | 顶部专用货币按余额买最大可售数量,商店右上X关闭、主页左下回领地,新任务待实现 | +| 领地:玩法大厅 | 星球矿场已有脚本;遗迹夺宝每日首次提示关闭后扫荡,提示不战而逃点确定,左下回领地 | 遗迹夺宝任务待实现,其余项目后续补充 | +| 领地:排行榜 | 最新要求启用,入口红点时领取进度奖励最顶行宝锤,关闭后左下回领地 | 不同于星球矿场排行榜,模板待采集,任务待实现 | +| 领地:图鉴 | 暂不处理 | 用户确认暂缓,保留入口 | +| 领地:城墙 | 每日先免费一次再按广告分支领至免费消失;机关次数打造只响应独立命令 | 两页签、默认页、返回领地和≥10批量规则已确认;额外广告次数与模板待完善,两项任务待实现 | | 公会:右下红珍珠祭坛 | 已验证脚本:砍价一次、确认奖励弹框、返回首页 | 砍价刷新规律、次数和 Windows 适配待验证 | | 公会:每日捐献 | 已验证脚本:仅执行左侧免费捐献、确认奖励、返回首页 | 付费捐献、次数刷新规律和 Windows 适配待验证 | -| 公会:公会商城、远征大厅、公会任务、公会祝福、成员大厅、公会 Boss | 待完善固定流程后确定 | 用户确认各入口均有固定自动化流程,具体步骤、执行条件、消耗和完成判定尚未补充 | +| 公会:公会商城 | 贡献商城罗盘及合作券、龙鳞商城龙晶龙血按余额和限额购买 | 两个专用货币余额在顶部,统一右上关闭,模板与执行待实现 | +| 公会:公会任务 | 滚动逐项领取及进度宝箱领奖,领取后重新识别 | 已完成移到末尾,红点宝箱领取后对号,右上关闭回公会,任务待实现 | +| 公会:远征大厅 | 公会对决红点任务奖励滚动领取;迷宫寻宝暂缓 | 已完成重排,右上关闭奖励、左下回公会,任务待实现 | +| 公会:公会祝福 | 升级按钮有红点时点击一次 | 材料充足时有红点,左下返回公会,任务待实现 | +| 公会:公会 Boss | 财宝全部领取及每日一次助威 | 周一三五日出现,灰色领取跳过,左下回公会,两任务待实现 | +| 公会:成员大厅 | 不需要自动化 | 用户明确排除,保留页面入口 | 初步方向是让脚本执行已验证的重复步骤,让 AI 辅助识别变化页面或异常。是否每次调用 AI、调用到哪一步,待明确任务完成标志与变化范围后再决定。 @@ -439,6 +875,17 @@ summary: 记录首页、商城、领地和公会的日常任务入口、待完 下一阶段继续熟悉各入口内部流程和其他底部页面,补齐上述字段后再确定第一批自动化任务。 + +## 本轮页面核实与优化(2026-10-05至06) + +当前地图134个节点、239条关系、17个已有脚本任务、49个待实现或延期任务;78个节点有识别模板,52个节点附本轮布局记录。新增只读任务分组预览,仍未接入统一导航执行。这里只核实布局、进入和关闭,未领取、购买、升级、打造或扫荡;已回到首页。 + +详细差异、未验证状态和按优先级的开发计划见 [页面核实与自动化优化计划](261006_0109-页面核实与自动化优化计划.md)。当前可用的原有路线与本轮结构记录分别保留,新关系不直接自动执行。 + +### 特惠战令:幸运星额外领取(后续完善) + +战令一键领取后可能获得幸运星;幸运星需要再点击才能领取。此分支按用户要求后续完善,现有 claim_offer.py 尚未处理。具体出现界面、点击目标、领奖成功标志和关闭/返回流程待采集,不因一键领取按钮变灰就认定幸运星已领取。 + ## 已实现脚本汇总 按入口页面顺序排列。 diff --git a/docs/261005_1702-页面地图与导航规则.md b/docs/261005_1702-页面地图与导航规则.md new file mode 100644 index 0000000..f662f9f --- /dev/null +++ b/docs/261005_1702-页面地图与导航规则.md @@ -0,0 +1,603 @@ +--- +created_at: 2026-10-05 17:02:11 CST +type: 永远的蔚蓝星球页面地图、进入返回路径、识别规则与任务调度边界 +revision: 第40次 +revisions: + - time: 2026-10-05 17:02:11 CST + version: 第1次 + author: GPT-6 + content: 核对六个主要页面,整理现有工作流和未验证入口,建立程序可读地图、只读识别与候选路线规划。 + - time: 2026-10-05 17:19:57 CST + version: 第2次 + author: GPT-6 + content: 根据用户确认补充活动四个底部页签、礼包三个内部页签、月卡会员可见条件,以及两项待实现的每日免费领取任务。 + - time: 2026-10-05 17:24:00 CST + version: 第3次 + author: GPT-6 + content: 确认每日特惠第二次免费领取的免广告卡与观看广告分支;无卡时是否自动观看广告待用户决定。 + - time: 2026-10-05 17:27:23 CST + version: 第4次 + author: GPT-6 + content: 用户确认无免广告卡时自动看完广告领取奖励,并将该分支记录为适用于多个任务的共用规则,运行流程尚未实现。 + - time: 2026-10-05 17:29:01 CST + version: 第5次 + author: GPT-6 + content: 用户确认超值礼包的周礼包没有免费领取项目,免费领奖流程跳过周礼包。 + - time: 2026-10-05 17:32:28 CST + version: 第6次 + author: GPT-6 + content: 确认月礼包没有免费项目,补充独立树形总览文档链接,并改为合并询问同一页面的相关问题。 + - time: 2026-10-05 17:40:14 CST + version: 第7次 + author: GPT-6 + content: 确认日礼包两个免费项目的直接领取与广告分支、充值奖励红点领取及低优先级,补充每日充值6元和25元档及活动左下返回路径。 + - time: 2026-10-05 17:47:39 CST + version: 第8次 + author: GPT-6 + content: 确认返利不定期出现且暂不处理,内部奖励、条件和返回问题暂缓;特惠页签尚未列全,优先补齐。 + - time: 2026-10-05 18:00:38 CST + version: 第9次 + author: GPT-6 + content: 补齐特惠六个底部页签和各自领奖条件,增加四个页签节点及五项待实现任务,记录基金内部页签待确认与新页签返回路径待采集。 + - time: 2026-10-05 18:09:35 CST + version: 第10次 + author: GPT-6 + content: 新增基金1、2、3三个内部页签,记录动态可见范围与未确认边界,确认月卡每天各领一次及价格按钮,两类战令以高亮和对号判断领奖状态。 + - time: 2026-10-05 18:19:12 CST + version: 第11次 + author: GPT-6 + content: 确认周卡签到不要求购买且领完显示已领取,基金以小锁头、对号和灰色蒙版区分跳过状态;特惠六页签统一左下箭头返回,新增返回关系标为用户确认但未实机验证。 + - time: 2026-10-05 18:24:13 CST + version: 第12次 + author: GPT-6 + content: 确认月卡领完的续费18元与续费30元按钮状态,两类战令不支持一键领取、采用上下滚动逐项领取,保留月卡可领文案与列表识别待采集。 + - time: 2026-10-05 18:30:24 CST + version: 第13次 + author: GPT-6 + content: 记录观影单页每日5次、中间按钮领奖及免广告卡分支,新增右上关闭返回关系与延后实现任务;活动当前未出现,等再次出现后完善。 + - time: 2026-10-05 18:36:51 CST + version: 第14次 + author: GPT-6 + content: 新增试炼三个页签及底部箭头返回关系,记录每日登录游戏1次奖励每日可领、其他奖励完成任务后领取,新增试炼任务奖励待实现任务。 + - time: 2026-10-05 18:41:01 CST + version: 第15次 + author: GPT-6 + content: 根据最新范围取消试炼任务自动化并暂缓另两个页签,记录列表无需滚动;新增祈愿入口、相对位置及待确认范围。 + - time: 2026-10-05 18:46:22 CST + version: 第16次 + author: GPT-6 + content: 新增祈愿三个页签和左下箭头返回关系,记录任务右侧领取及每日登录奖励、礼包顶部免费补给,新增两项待实现任务,免费补给刷新与祈愿操作仍待确认。 + - time: 2026-10-05 18:52:33 CST + version: 第17次 + author: GPT-6 + content: 确认祈愿免费补给每日一次不看广告,任务领完已完成并自动移到列表底部、需要滚动;祈愿页签本身排除,记录重排后重新识别的执行要求。 + - time: 2026-10-05 19:06:16 CST + version: 第18次 + author: GPT-6 + content: 新增三类冲刺、晶矿与招募页签及星珀商城节点,记录7天轮换、每日免费礼包和任务状态;增加五项待实现任务,招募礼包入口和星珀商城返回待确认。 + - time: 2026-10-05 19:16:55 CST + version: 第19次 + author: GPT-6 + content: 确认招募冲刺四个底部页签及礼包入口,排除目标和排名自动化;星珀商城改为弹框,周一刷新整周一次,右上X关闭返回冲刺并保留上下文。 + - time: 2026-10-05 19:20:31 CST + version: 第20次 + author: GPT-6 + content: 确认冲刺首项礼包每日一次不看广告、星珀金币领完显示已售罄,记录任务领后重排仍待确认与领取后重新识别要求。 + - time: 2026-10-05 19:30:33 CST + version: 第21次 + author: GPT-6 + content: 新增寻宝三个页签及左下返回,更新等级开放后连续9至10天换期;记录任务领后重排、免费礼包每期一次及已售罄,新增两项待实现任务。 + - time: 2026-10-05 19:33:35 CST + version: 第22次 + author: GPT-6 + content: 标记宝藏兑换不需要自动处理,冒险免费礼包无需广告、每期直接领取一次,清除已确认的范围和广告问题。 + - time: 2026-10-05 19:39:44 CST + version: 第23次 + author: GPT-6 + content: 好友列表改为弹框,新增领取赠礼子弹框及两层关闭关系,记录每日一键赠送和领取赠礼红点条件,增加两项待实现任务。 + - time: 2026-10-05 19:47:09 CST + version: 第24次 + author: GPT-6 + content: 确认好友赠送和领取按钮操作后不变且仍可点击,记录空赠礼提示及待实现的每日限次和防重复领取规则。 + - time: 2026-10-05 20:09:15 CST + version: 第25次 + author: GPT-6 + content: 补齐金沙游记六个分活动、两个签到页签及返回关系,确认驿站密使名称、来信跳过已领取和翻牌显示状态,记录三项待实现任务与共用流程,新增关系未实机验证。 + - time: 2026-10-05 20:17:23 CST + version: 第26次 + author: GPT-6 + content: 补充流沙赠礼已领取完成标志,记录法老遗珍当前账号有免广告卡及无卡界面延期确认,节点与关系数量不变。 + - time: 2026-10-05 20:28:58 CST + version: 第27次 + author: GPT-6 + content: 英雄集结新增四个节点及六条关系,确认岁岁平安14天、寻珍金币为活动抽奖次数,新增两项待实现任务,记录签到卡片定位、跳过动画和剩余次数参与规则。 + - time: 2026-10-05 21:12:15 CST + version: 第28次 + author: GPT-6 + content: 商城新增图腾免费、商店免费券和金币免费三项待实现任务及一项规则未完善的金币购券候选;确认次数、广告、领完标志和刷新状态,栏目节点数量不变。 + - time: 2026-10-05 21:18:49 CST + version: 第29次 + author: GPT-6 + content: 领地图鉴与排行榜标记为用户暂缓且不参与自动化,保留节点和入口关系,已有星球矿场排行榜流程保持原范围。 + - time: 2026-10-05 21:27:01 CST + version: 第30次 + author: GPT-6 + content: 新增城墙两个页签、四条页签关系、三条返回领地关系与两项待实现任务,确认免费广告分支、额外次数待确认及≥10批量打造规则,打造只响应独立命令。 + - time: 2026-10-05 21:57:28 CST + version: 第31次 + author: GPT-6 + content: 新增领地11个节点20条关系8项任务并启用排行榜,确认宠物券每周一次、两商店各自货币够价才买及只买红色3200碎片,额度周边界与返回待确认。 + - time: 2026-10-05 22:05:01 CST + version: 第32次 + author: GPT-6 + content: 新增六条合作及宠物返回关系;按最新说明改宠物券每日0点刷新、商店免费金币每周一0点刷新及红色碎片按余额买完可售数量,模板与执行待完善。 + - time: 2026-10-05 22:14:33 CST + version: 第33次 + author: GPT-6 + content: 巅峰商店新增节点、进入与两条返回关系及购买任务,确认顶部专用货币、右上X关闭和主页左下回领地,按三项优先级最大数量购买。 + - time: 2026-10-05 22:31:15 CST + version: 第34次 + author: GPT-6 + content: 补充公会商城双页签购买优先级、公会任务列表重排和进度宝箱领奖,以及右上关闭回公会;确认顶部专用货币、罗盘每日2/10限额、合作券周一刷新整周最多7个及龙晶龙血按优先级买完。 + - time: 2026-10-05 22:37:57 CST + version: 第35次 + author: GPT-6 + content: 确认贡献商城购买顺序为合作券、黄金罗盘、白银罗盘,保留每周7个及每日2/10个限额。 + - time: 2026-10-05 22:49:51 CST + version: 第36次 + author: GPT-6 + content: 补充远征大厅、公会对决任务领奖、公会祝福材料升级及左下返回、公会Boss财宝和已助威完成状态;迷宫寻宝暂缓。 + - time: 2026-10-05 22:54:16 CST + version: 第37次 + author: GPT-6 + content: 用户确认成员大厅不需要自动化,保留入口,排除内部流程确认与执行。 + - time: 2026-10-06 01:09:48 CST + version: 第38次 + author: GPT-6 + content: 同步本轮页面核实差异与识别修正,增加只读任务预览和后续公共执行器开发顺序,保留未验证状态。 + - time: 2026-10-06 01:13:31 CST + version: 第39次 + author: GPT-6 + content: 补充领地巅峰决斗竞技场领取竞技券任务,具体流程后续确认,暂不实现或纳入默认预览。 + - time: 2026-10-06 01:14:17 CST + version: 第40次 + author: GPT-6 + content: 补充战令一键领取后可能出现幸运星,需额外点击领取,分支标记后续完善,未修改执行脚本。 +summary: 地图134个节点、239条关系、17个已有任务、49个待实现或延期任务;78个节点有识别模板。本轮修正冲刺卡片、弹框返回和共用商店来源,加入只读分组预览;领奖、广告和购买结果尚待实测。 新增领取竞技券,流程待确认。 战令幸运星额外点击领取分支待完善。 +--- + +# 页面地图与导航规则 + +快速查看页面层级:[树形页面地图](261005_1732-树形页面地图.md)。该图覆盖本地图全部节点,并区分已有流程、用户确认结构和待确认入口。 + +这份地图由现有脚本、功能梳理文档、用户给出的入口说明和本次游戏画面整理。**六个主要页面已本次实机核对;其余页面不能据此声称全部重新验证。** 当前地图记录134个节点,其中78个有识别规则,其余56个为滚动栏目、用户确认结构或待核实状态;本轮52个节点附布局记录。进入与返回关系239条,64条保留原有验证状态,另175条为结构记录或待验证路径。本轮导航观察另存 audit_verification,不等于已接入自动导航执行。 + +本次只查看页面和验证导航,没有运行领取、购买、强化、抽取、雇佣或战斗任务。最后已确认回到首页。 + +程序配置为 [page_map.json](../workflows/page_map.json),只读识别和路线查询入口为 [inspect_page.py](../inspect_page.py),原始任务说明见 [首页功能与日常任务梳理](261004_1607-首页功能与日常任务梳理.md)。 + +## 如何使用 + +在项目目录运行下列命令。第一条只截取当前游戏画面并识别,不激活窗口、不点击、不切换页面;游戏需要完整可见,截图权限沿用现有项目权限。截图导入必须只有游戏内容,不含标题栏和桌面。 + +```bash +.venv/bin/python inspect_page.py +.venv/bin/python inspect_page.py --image local/page-map/current.png +.venv/bin/python inspect_page.py --from-page territory --to-page recruit.lamp +``` + +识别结果为 `identified`(唯一页面)、`unknown`(证据不足)或 `ambiguous`(多个候选)。`unknown` 只表示无法识别,不能直接解释为游戏正在加载。遮挡、通知、跨屏、窗口比例改变和新活动外观都可能产生未知结果。 + +路线查询只输出候选动作与条件,**不会执行鼠标动作**。例如领地到神灯召唤为 `territory → home → shop → recruit.lamp`。末步需要运行时滚动定位限时 UP 的任务按钮,并确认红点;没有卡片或没有红点时应报告跳过,而不能强制进入。 + +## 六个主要页面 + +以下进入与返回已本次实机核对。底部各位置使用当前窗口布局,后续执行仍须重新读取窗口、识别页面再操作。 + +| 页面 ID | 页面 | 从首页进入 | 回到首页 | 当前识别标识 | +| --- | --- | --- | --- | --- | +| home | 首页 | 根页面 | 已在首页 | 开始挑战区域的固定模板 | +| shop | 商城 | 底部第 1 个入口 | 底部第 1 个位置“返回” | 店面与列表之间的固定分隔装饰;不使用资源数字或动画 | +| heroes | 英雄 | 底部第 2 个入口 | 底部第 2 个位置“返回” | 英雄总览固定伤害说明文字 | +| king | 国王 | 底部第 3 个入口 | 底部第 3 个位置“返回” | 当前装备页签与分解文字;其他页签待采集 | +| territory | 领地 | 底部第 4 个入口 | 底部第 4 个位置“返回” | 狂鼠之家固定文字 | +| guild | 公会 | 底部第 5 个入口 | 底部第 5 个位置“返回” | 公会商城固定文字,避开顶部通知区域 | + +商城会保留上次滚动位置,英雄页与国王页也存在内部页签或队伍选择。一级页面识别成功不代表它内部已经停在任务所需位置。 + +## 子页面与弹层 + +这些页面的进入与返回从现有流程和此前实机记录整理。本次没有逐项重测。识别优先使用页面身份标识,而不是依赖“当前是否可领取”:同一个页面的可领取与已领取应属于状态差异。 + +| 页面 ID | 页面/弹层 | 所属页面 | 已记录进入方式 | 已记录返回方式 | +| --- | --- | --- | --- | --- | +| offer.monthcard | 特惠/超值月卡 | 首页 | 特惠(可能默认月卡) | 返回 → 首页 | +| offer.battlepass | 特惠/赏金战令 | 首页 | 特惠(可能默认战令);底部战令 | 返回 → 首页 | +| idle | 挂机奖励 | 首页 | 小金猪 | 空白处关闭 → 首页 | +| tasks.daily | 日常任务 | 首页 | 右侧任务(默认页需识别);日常页签 | 关闭任务 → 首页 | +| tasks.weekly | 周常任务 | 首页 | 右侧任务(默认页需识别);周常页签 | 关闭任务 → 首页 | +| mail | 邮件 | 首页 | 右侧邮件 | 关闭邮件 → 首页 | +| rally | 英雄集结 | 首页 | 右侧英雄集结 | 关闭活动 → 首页 | +| rally.sword | 剑来献礼 | 英雄集结 | 剑来献礼 | 返回 → 英雄集结 | +| rally.lizhu | 骊珠画卷 | 英雄集结 | 骊珠画卷 | 返回 → 英雄集结 | +| rally.lizhu.tasks | 骊珠画卷任务 | 骊珠画卷 | 底部任务 | 关闭任务 → 骊珠画卷 | +| recruit.lamp | 神灯召唤 | 商城 | 滚动定位限时 UP 卡片,点击带红点的任务按钮 | 关闭神灯召唤 → 商城 | +| rat | 狂鼠之家 | 领地 | 狂鼠之家 | 返回 → 领地 | +| rat.friends | 狂鼠之家好友列表 | 狂鼠之家 | 底部好友 | 关闭好友列表 → 狂鼠之家 | +| rat.friend | 好友矿场 | 狂鼠之家好友列表 | 定位首位喂矿鼠按钮 | 左下回家 → 狂鼠之家 | +| canteen | 食堂 | 领地 | 食堂 | 关闭食堂 → 领地 | +| coop.selection | 合作模式选择 | 领地 | 合作模式入口 | 返回关系尚未独立采集 | +| coop | 合作模式 | 合作模式选择 | 左侧合作模式 | 左下返回 → 领地(现有工作流) | +| arena.selection | 巅峰决斗模式选择 | 领地 | 巅峰决斗入口 | 返回关系尚未独立采集 | +| arena | 竞技场 | 巅峰决斗模式选择 | 左侧竞技场 | 返回关系尚未独立采集 | +| play_hall | 玩法大厅 | 领地 | 玩法大厅;返回 | 关闭玩法大厅 → 领地 | +| planet | 星球矿场 | 玩法大厅 | 星球矿场;返回 | 返回 → 玩法大厅 | +| planet.rank | 星球矿场排行榜 | 星球矿场 | 右上排行榜;关闭 | 返回 → 星球矿场 | +| planet.progress | 星球矿场进度奖励 | 星球矿场排行榜 | 进度奖励 | 关闭 → 星球矿场排行榜 | +| planet.sweep | 星球矿场扫荡弹框 | 星球矿场 | 打开扫荡弹框 | 返回关系尚未独立采集 | +| guild.altar | 红珍珠祭坛 | 公会 | 右下红珍珠祭坛 | 返回 → 公会 | +| guild.donation | 每日捐献弹框 | 公会 | 每日捐献 | 关闭捐献 → 公会 | +| rat.hire | 一键雇佣弹框 | 狂鼠之家 | 打开一键雇佣 | 关闭雇佣 → 狂鼠之家 | + +以下情形需要保留额外状态: + +- 特惠六个底部页签已由用户确认。已有流程可能默认打开月卡或战令,当前其他默认状态待采集;点击入口后必须重新识别。 +- 日常/周常任务的默认面板可能不同,导航不能假定固定默认页。 +- 神灯召唤是一类共用弹层;不同卡片必须保留活动实例,任务/礼包为页签状态。 +- 星球矿场排行榜与领地排行榜是不同页面,不能共用父页面和返回动作。 +- 共同“恭喜获得”装饰只能识别奖励弹层,不能推断奖励来自哪个任务。返回时需使用当前任务历史。 +- 一键雇佣和扫荡弹框仅可由对应任务按执行条件打开,不用于普通导航或探索。 +- 合作模式选择、巅峰决斗模式选择的独立关闭路径尚未记录;不能把进入另一种玩法作为返回办法。 +- 砍价页面目前用砍价按钮识别,按钮消失后的页面身份识别仍需补充。骊珠每日任务规则也需进一步验证页签模板的独特性。 + +## 商城栏目 + +商城内的英雄招募、图腾寻宝、关卡礼包、每日商店、钻石、金币属于同一滚动列表中的栏目。地图将其标为 `section`,避免把每一次列表滚动当成切换页面。当前神灯卡片入口依赖动态定位任务按钮及红点;商城可能保留上次滚动位置,须先定位栏目;关卡礼包和钻石仍按用户说明暂不处理。 + +| 栏目 ID | 用户确认的日常规则 | 完成与当前状态 | +| --- | --- | --- | +| shop.recruit | 除已有神灯任务和免费神灯外,没有新增日常领奖内容 | 沿用现有脚本 | +| shop.totem | 两张卡片每日各免费领取一次,有免广告卡直接领,否则看视频 | 对应免费按钮消失并确认领奖结果,任务待实现 | +| shop.daily | 六张卡片;首格免费招募券每日一次,无广告,领取后已售罄,600金币刷新后不再出现免费券 | 免费任务待实现;仅金币标价招募券的购买及刷新策略延期完善 | +| shop.coins | 三张卡片,只领取首张每日两次免费奖励,首次直接领,第二次有免广告卡直接领,否则看视频 | 两次领完已售罄;按本日进度处理,任务待实现 | + +每日商店保留“每日商城”别名。`paid_ticket_purchase` 仅记录金币招募券的候选规则,状态为 `user_confirmed_deferred_rules_incomplete`;其他物品与钻石价格跳过。`refresh_control` 记录右下600金币刷新、多次刷新及次数用完黑色蒙版、今日刷新次数已用完提示,不表示已允许按未知预算自动刷新。首格免费券不因刷新重新出现,免费任务不包含付费刷新。 + +三个免费任务加入 `planned_tasks`,另加一个规则未完善的金币购券候选;共用广告执行模块及这些新任务尚未实现;栏目已截图巡视,免费与结果控件定位仍需实现。这些商品和卡片仅作栏目内部控件配置,不新增独立页面或可执行导航边。 + +## 首页特惠:六个页签与领奖条件 + +用户确认底部顺序为超值月卡、战令、特惠周卡、钻石基金、遗迹战令、宠物战令。程序以 `offer_tab_group` 记录入口与顺序;现有月卡和战令节点及路径保持原有 ID。新增页签仍标记为 `documented`;本轮已补部分识别模板,但尚未实现自动导航。 + +| 页面 ID | 页签 | 领取规则 | +| --- | --- | --- | +| offer.monthcard | 超值月卡 | 两项奖励每日各一次,00:00刷新,位置固定;未购买分别显示“18 元”“30 元”,领完分别显示“续费:18 元”“续费:30 元”,均跳过;可领文案待采集 | +| offer.battlepass | 战令 | 消耗一定体力产生奖励,沿用已有赏金战令一键领取流程 | +| offer.weekcard | 特惠周卡 | 无需购买即可签到;每日 00:00 刷新,点击列表“签到”,领完显示“已领取” | +| offer.diamond_fund | 钻石基金 | 内部页签随进度显示;解锁且达到关卡后点最后一列钻石。小锁头表示未解锁,对号表示已领,灰色蒙版表示未达关卡,均跳过 | +| offer.diamond_fund.tier1 | 钻石基金 1 | 未到100关显示;进度增加时保留,与其他已显示基金一起处理 | +| offer.diamond_fund.tier2 | 钻石基金 2 | 超过100关、未到200关时新增;恰好100关的边界待确认 | +| offer.diamond_fund.tier3 | 钻石基金 3 | 超过200关、未到260关时新增;恰好200关及260关以后规则待确认 | +| offer.relic_pass | 遗迹战令 | 遗迹夺宝产生奖励;无一键领取,上下滚动逐项点第一列高亮且无对号图标,有对号已领 | +| offer.pet_pass | 宠物战令 | 本轮观察到灰色一键领取,优先一键策略待用户确认;原逐项高亮图标领奖规则保留 | + +基金前三个内部页签名称及范围已由用户确认;`internal_tabs` 保存动态可见范围、实际页签发现规则与未知边界。100、200关的精确边界和260关以后规则暂未确定。后续以当前实际显示的页签逐个处理,不从已知阈值推算后续基金页签。三个子节点复用基金领奖规则,不增加独立任务。可领取钻石没有对号;已领有对号,未达关卡覆盖灰色蒙版。领取需同时确认解锁、达到关卡,排除锁头、对号和灰色蒙版;不把单独“无对号”或未经确认的高亮作为可领证据。图像模板仍待实机采集。 + +两类战令奖励为小正方形图标,列位置固定,可滚动逐项领取。遗迹战令暂按原无一键规则;宠物战令实机发现一键领取,已记录 has_bulk_claim 为 true,优先使用策略仍待用户确认。第一列高亮且无对号时可领,已领后的对号用于验证和跳过;滚动后重新定位可见奖励项。图像模板、未达成状态、滚动边界和领取弹框仍待采集。钻石基金保留用户原称“砖石基金”;宠物战令保留规则描述中的“宠物战力”称呼供后续核对。 + +月卡两项奖励领完后分别显示“续费:18 元”“续费:30 元”,记录在各奖励的 `claimed_button` 及任务的 `claimed_button_texts`;未购买价格按钮与领完续费按钮均跳过。可领取时的文案用户尚未确认,`claim_button_text` 保持空值,不能直接作为可执行匹配规则。 + +月卡、周卡、基金、遗迹战令和宠物战令共五项待实现任务已加入 `planned_tasks`;战令沿用现有任务。月卡和基金以购买解锁为领取资格,周卡签到不要求购买;玩法参与仅记录为奖励来源。 + +用户确认特惠六个页签均点击左下角箭头样式返回按钮回到首页,记录在 `offer_tab_group.exit_to_home` 及各页签节点。月卡和战令保留已有验证路径,新增四个页签的返回关系从 `pending` 改为 `documented`;按钮模板、坐标及实际返回仍待采集,未加入可执行导航。 + +### 战令一键领取后的幸运星分支 + +战令一键领取后可能获得幸运星;幸运星需要再点击才能领取。此分支按用户要求后续完善,现有 claim_offer.py 尚未处理。具体出现界面、点击目标、领奖成功标志和关闭/返回流程待采集,不因一键领取按钮变灰就认定幸运星已领取。 + +## 首页活动:用户确认的页签与免费领取规则 + +入口为首页左侧“活动”。用户确认底部按顺序有以下四个页签;其中“超值礼包”内另有日、周、月三个页签。页签切换属于同一活动页面内部状态变化,以 `tab` 节点记录。 + +| 页面 ID | 页签 | 所属页面 | 已确认规则 | +| --- | --- | --- | --- | +| activity.pack | 超值礼包 | 活动 | 包含日礼包、周礼包、月礼包 | +| activity.daily_offer | 每日特惠 | 活动 | 有一个免费项目,每日可领取 2 次;第二次有免广告卡可直接领取,否则需观看广告 | +| activity.daily_recharge | 每日充值 | 活动 | 包含 6 元档、25 元档,两档都可能有奖励;入口有红点时进入领取,低优先级后续完善 | +| activity.daily_recharge.tier6 | 6 元档 | 每日充值 | 可能存在已达成的充值奖励;只记录领奖,具体状态待后续采集 | +| activity.daily_recharge.tier25 | 25 元档 | 每日充值 | 可能存在已达成的充值奖励;只记录领奖,具体状态待后续采集 | +| activity.cumulative_recharge | 累充豪礼 | 活动 | 有红点时进入领取已达成奖励;低优先级后续完善;名称暂按用户原称呼记录 | +| activity.pack.daily | 日礼包 | 超值礼包 | 每日领取 2 个免费项目:原说明为第一项直接、第二项广告;本轮上方免费带视频标志、下方普通免费,广告判定待确认 | +| activity.pack.weekly | 周礼包 | 超值礼包 | 用户确认没有免费领取项目;免费领奖流程跳过 | +| activity.pack.monthly | 月礼包 | 超值礼包 | 只有充值月卡会员才可见;用户确认没有免费领取项目,免费领奖流程跳过 | + +地图中的 `planned_tasks` 包含活动四项、特惠五项、观影一项、祈愿两项、冲刺五项、寻宝两项、好友两项、金沙游记三项、英雄集结两项、商城四项、城墙两项、领地新增八项、巅峰商店一项及公会新增七项,另补充竞技场领取竞技券一项,共 49 项待实现或延期完善任务,未加入已实现脚本汇总。领地新增包含遗迹扫荡、排行榜进度奖励、友情商店签到购买、保卫宠物领券与商店签到购买及挑战奖励。城墙两项区分每日免费领取和独立命令打造;商城金币购券与刷新策略待完善。活动充值奖励为低优先级后续完善,不是自动充值指令;试炼任务保留在 `excluded_tasks`。 + +每日特惠第二次领取分支已由用户确认:有免广告卡时直接点击领取,没有时由程序自动看完广告后领取。该任务引用地图中的通用 `reward_ad_policy`,策略记录为 `watch_to_completion_then_claim`。 + +用户确认活动各页签均从左下“返回”回到首页。地图已记录 `home.activity → home` 的返回规则,各页签沿用活动出口;具体按钮模板和坐标仍待采集。 + +本轮已采集活动日礼包、每日特惠、充值6元档、累充页面标题和布局,并观察左下回首页;领取后状态、25元档奖励和广告返回尚未验证。因此这些节点标记为 `documented`,不会因为结构已确认就成为自动导航路径。 + +## 观影:活动再次出现后完善 + +用户确认观影不定期出现,一般连续签到 5 天;进入后只有一个页面,点击中间按钮,每天领取 5 次。有免广告卡直接领取,没有则自动看完广告再领取,引用 `reward_ad_policy`。点击右上角关闭按钮返回首页,返回关系标记为 `documented`,尚未采集识别模板。 + +当前入口未出现,`home.movie.observed_availability` 记录用户说明的可见状态及时间,作为本次记录而非永久不可见判定。`planned_tasks.movie_daily_rewards` 标为 `user_confirmed_deferred`,等观影入口再次出现后采集按钮、剩余次数、领完状态与广告返回流程,再完善自动化。每天5次的规则已确认,“一般连续5天”只记录为常见活动周期。 + +## 试炼:三个页签与任务奖励 + +用户确认当前试炼入口存在,内部按顺序为 **英雄试炼、特训、试炼任务** 三个页签。入口仍属于不定期活动,当前可见状态按用户说明及时间记录,后续执行重新确认。三个页签标记为 `documented`,内部识别模板尚未采集。 + +| 页面 ID | 页签 | 已确认规则 | +| --- | --- | --- | +| trial.heroes | 英雄试炼 | 页签存在,用户要求暂不处理,后续补充 | +| trial.training | 特训 | 页签存在,用户要求暂不处理,后续补充 | +| trial.tasks | 试炼任务 | 已完成任务显示“领取”,每日登录奖励每日可领;列表无需滚动,用户最新确认不需要自动化 | + +用户确认点击底部箭头样式返回按钮回到首页,地图记录活动与各页签的返回关系,尚未加入自动导航。最新范围为英雄试炼和特训暂缓、试炼任务不需要自动化;`trial_task_rewards` 已从 `planned_tasks` 移到 `excluded_tasks`,页面规则保留,不继续确认它的执行细节。列表记录为 `scroll_required: false`,表示不需要滚动,不推断界面是否支持滚动。 + +## 祈愿:三页签、任务奖励与免费补给 + +用户确认祈愿位于首页左侧**试炼下方、冲刺上方**,不定期出现。`home.wish` 以相邻入口记录位置,不假定固定坐标。进入后底部左下箭头返回按钮右侧,依次为祈愿、任务、礼包三个页签;本轮已切换并观察左下返回首页,领奖后重排与结果仍待实测。 + +| 页面 ID | 页签 | 已确认规则 | +| --- | --- | --- | +| wish.main | 祈愿 | 用户确认本页不需要自动化,保留结构 | +| wish.tasks | 任务 | 需上下滚动,右侧点“领取”,每日有登录奖励;领完显示“已完成”并自动移到列表底部 | +| wish.pack | 礼包 | 免费补给每日1次无需广告,已售罄条目可能排在付费补给之后,不固定首行 | + +`planned_tasks` 保留 `wish_task_rewards` 和 `wish_free_supply` 两项。免费补给记录为 `frequency: daily`、`claims_per_day: 1`、`ad_requirement: none`;任务列表记录 `scrollable: true`、`claimed_button_text: 已完成` 和领取后移至列表底部的重排规则。祈愿页签本身由用户明确排除,以 `automation.enabled: false` 标记,不新增对应任务。 + +领取任务后列表会重排,执行设计须重新识别可领条目,不能沿用原序号和坐标。按钮模板、列表边界、领奖弹框与免费补给领完状态仍待实机采集;规则确认不代表脚本已经实现。 + +## 冲刺:活动类型、页签与星珀商城 + +用户确认三类冲刺轮换,每期7天。本轮实际进入限时冲刺列表弹框,晶矿展示期与招募进行期卡片同时显示;先识别实际可见卡片,再定位进入,不把逻辑变体识别当作已经切页。招募页签已补识别,图腾样式仍待出现。 + +| 页面 ID | 类型或页签 | 已确认规则 | +| --- | --- | --- | +| sprint.crystal | 晶矿冲刺 | 本轮卡片展示期,内部四页签未复测 | +| sprint.crystal.targets | 冲刺目标 | 页签已记录,用户确认不需要自动化 | +| sprint.crystal.rank | 冲刺排名 | 页签已记录,用户确认不需要自动化 | +| sprint.crystal.pack | 冲刺礼包 | 首项免费每日一次无需广告,领完已售罄;兑换列表可滚动 | +| sprint.crystal.tasks | 冲刺任务 | 列表可滚动,可领奖励显示领取,领完显示已完成 | +| sprint.recruit | 招募冲刺 | 目标、排名、礼包、任务四页签;切换页签时底部导航不变,左侧返回直接回首页 | +| sprint.recruit.targets | 冲刺目标 | 页签已记录,用户确认不需要自动化 | +| sprint.recruit.rank | 冲刺排名 | 页签已记录,用户确认不需要自动化 | +| sprint.recruit.tasks | 冲刺任务 | 列表可滚动,可领奖励显示领取,领完显示已完成 | +| sprint.recruit.pack | 冲刺礼包 | 底部页签入口已确认,首项免费每日一次无需广告、领完已售罄;导航保持不变 | +| sprint.totem | 图腾冲刺 | 等活动出现后确认内部页签与流程 | +| sprint.star_store | 星珀商城(兑换商店弹框) | 右下兑换商店打开;周一刷新、整周首项免费金币可领一次,领后已售罄;右上X关闭回冲刺 | + +各冲刺活动页左下箭头返回首页,本轮招募已观察;冲刺列表本身右上X关闭,落点待实测。返回关系仍为 `documented`。招募礼包节点修正为 `tab`,入口关系从待确认改为用户已确认结构。目标与排名页签分别标记 `automation.enabled: false`。 + +星珀商城节点改为 `overlay`;点击弹框右上X后返回打开前的冲刺面板,保留当前冲刺类型及页签。`sprint.star_store → home.sprint` 改为用户确认的关闭关系,逻辑父节点为共用冲刺入口,具体类型与页签依赖打开前历史;模板尚未采集,不用于自动导航。 + +五项待实现任务为晶矿和招募各自的免费礼包、任务奖励,以及星珀商城免费金币。两类礼包首项使用 `claims_per_day: 1`、`ad_requirement: none` 和 `claim_method: direct_claim`,领完已售罄。任务列表可滚动、领完已完成,用户确认重排行为待核实,以 `after_claim_reorder: pending` 标记;每次领奖后重新识别条目。 + +商城使用 `refresh_weekday: monday`、`claim_window: whole_week_after_refresh`、`claims_per_week: 1` 和 `claimed_button_text: 已售罄`。商城金币的广告条件与模板仍待采集,不能将礼包无需广告的规则直接套用到金币。图腾冲刺未新增具体任务。 + +## 寻宝:等级开放与连续周期 + +用户确认当前寻宝入口位于首页左侧冲刺下方,达到一定等级后出现;每期约9~10天,一期结束后开始下一期。`home.treasure` 保留动态活动节点,以 `unlock_condition` 记录等级阈值待确认,`activity_cycle` 记录连续换期。当前存在性来自用户说明,并未实机采集。 + +| 页面 ID | 页签 | 已确认规则 | +| --- | --- | --- | +| treasure.exchange | 宝藏兑换 | 用户确认不需要自动化,保留页签结构 | +| treasure.tasks | 冒险任务 | 列表可上下滚动,可领时显示领取;领后已完成,条目排到下面 | +| treasure.pack | 冒险礼包 | 矿石兑换列表可滚动,每期直接领一次免费项目,无需广告;领后已售罄,排到最底下 | + +底部左下箭头返回首页,活动与各页签出口均记为 `documented`,尚未加入自动导航。新增 `treasure_adventure_task_rewards` 和 `treasure_adventure_free_pack` 两项待实现任务。 + +礼包使用 `frequency: per_activity_period`、`claims_per_period: 1`、`reset_on_new_period: true`,并记录 `ad_requirement: none` 和 `claim_method: direct_claim`;位置需滚动定位,不假定为第一项。宝藏兑换以 `automation.enabled: false` 标记,不增加对应任务。任务和礼包领后会重排,执行设计每次领取后重新识别。周期与领奖识别模板待采集;任务页是否有每日登录奖励尚未获说明,不直接套用其他活动任务规则。 + +## 首页好友:两层弹框与两个任务 + +首页右侧好友打开好友列表弹框,底部有一键赠送、领取赠礼。`home.friends` 修正为 `overlay`,新增 `friends.gifts` 作为领取赠礼子弹框。 + +| 节点或任务 | 已确认规则 | +| --- | --- | +| home.friends | 好友列表弹框;点击弹框外关闭回首页 | +| friends.gifts | 好友列表中领取赠礼有红点时打开;一键领取,点击子弹框外或右上X关闭回好友列表 | +| friends_daily_send | 每日登录后点击一次一键赠送,无需先检查领取赠礼红点 | +| friends_gift_rewards | 领取赠礼有红点时打开子弹框领取,关闭子弹框后关闭好友列表回首页 | + +一键赠送与赠礼一键领取操作后,按钮均不变且仍可点击。空赠礼重复领取会提示 **暂无可收取的礼物**,表示无奖励,应停止并退出,不能计为领取成功。 + +两项任务加入 `planned_tasks`,尚未实现。后续赠送按账号与游戏日记录执行结果,每日最多一次;赠礼每次红点触发进入后点击一次、确认结果并退出,不按按钮仍可点击反复领取,不主动追加空点击验证成功。执行记录、结果识别和弹框模板尚未实现或采集,赠送刷新时间待补齐。 + +不能把子弹框关闭当作回到首页,也不能将首页好友与狂鼠之家好友列表的返回动作混用。所有新增关系仍为 `documented`,不参与可执行导航。 + +## 金沙游记:六个入口与三类可复用流程 + +`home.gold_trip` 显示名称统一为金沙游记,首页左上角进入;活动左下箭头返回首页。所有新增节点和关系来自用户说明,未采集识别模板,不参与可执行导航。 + +| 页面 ID | 页面或弹框 | 本期处理范围与返回 | +| --- | --- | --- | +| gold_trip.treasure | 金顶夺宝 | 仅登记入口,暂不处理 | +| gold_trip.letters | 驿站密使来信弹框 | 名称已确认,驿站密信保留为别名;入口有红点时打开,滚动跳过已领取、点击未领取来信;弹框外或右上X关闭回金沙游记 | +| gold_trip.roam | 圣迹漫游 | 仅登记入口,暂不处理 | +| gold_trip.cards | 法老遗珍 | 通常每日3张,无卡直接1张、广告2张,有卡直接3张;优先第一排,跳过显示奖励的已翻牌、点未翻牌的点我翻牌;当前账号有免广告卡,首翻后显示免费,无卡样式后续确认;至剩余次数不足停止;左下回金沙游记 | +| gold_trip.sign_in | 流沙赠礼 | 游戏按活动进度自动选中签到页签,找到当天节点的可领取按钮,领取后变已领取;左下箭头回金沙游记 | +| gold_trip.sign_in.day15 | 15天页签 | 不固定节点坐标,优先使用游戏自动选中的页签 | +| gold_trip.sign_in.day23 | 23天页签 | 第20天自动选此页签仅为规则示例,未记为当前观测 | +| gold_trip.supply | 驼铃补给 | 仅登记入口,暂不处理 | + +流沙赠礼的两个自动显示分支用 `observe_auto_selected_tab` 记录,表示进入后识别游戏选中的页签,不发送点击。页签切换关系仅描述结构,签到任务不默认遍历两页。分活动返回金沙游记,活动再返回首页,不能把一次分活动返回当作已回首页。 + +三项新任务加入 `planned_tasks`;`reusable_reward_patterns` 描述签到、翻牌、来信送礼三个共用流程,均为 `not_implemented`。共用部分分别处理动态可领取节点、翻牌已翻状态与广告次数、滚动未领取来信;各活动配置页面样式、状态标志、结果验证和返回控件。流沙赠礼以当前节点从可领取变为已领取作为完成标志。法老遗珍已翻牌显示奖励内容,未翻牌显示点我翻牌;当天翻过一部分时继续处理仍可翻牌子,到剩余次数不足停止,不能假定每次进入都是三张未翻牌。每日重置方式仍待补充;当前账号有免广告卡,无卡按钮文案和广告界面标为延期确认,等以后出现无卡情况再补齐,不从免费文案推断其无卡样式。广告沿用 `reward_ad_policy`,共用运行模块尚未实现。 + +## 英雄集结:签到与按余额参与 + +剑来献礼和骊珠画卷沿用已有工作流。新增四个入口仅由用户说明记录,未采集页面模板;槐萌祈缘、剑守长城标记 `automation.enabled: false`,暂不处理。 + +| 页面 ID | 分活动 | 规则与返回 | +| --- | --- | --- | +| rally.huai | 槐萌祈缘 | 仅记录入口,暂不处理 | +| rally.sign_in | 岁岁平安 | 14天签到;已签卡片有对号;当前可签的“可领取”提示位于卡片左上方,点击提示左下方对应卡片;右上关闭回英雄集结 | +| rally.search | 骊珠寻珍 | 红点进入;确认跳过动画已勾选,存在免费按钮时领取;活动金币表示剩余抽奖次数,≥5参与5次、剩1~4参与1次,每次重读直到0;左下箭头回英雄集结 | +| rally.wall | 剑守长城 | 仅记录入口,暂不处理 | + +两项新任务加入 `planned_tasks`,岁岁平安引用签到共用流程,其点击目标和对号完成标志独立配置。骊珠寻珍与已有骊珠画卷分开记录;只在跳过动画未勾选时点击,免费或参与后确认结果并重读剩余数,不能按首次读数固定循环。金币类型为活动专用抽奖次数,地图记录 `cost_per_single: 1`、`cost_per_batch: 5`;状态和余额模板待采集,规则不代表已经实现自动参与。 + +新增进入与返回边均为 `documented`,不参与可执行导航。英雄集结关闭回首页沿用 `rally → home` 的现有工作流记录,本次未复测;新分活动的一次返回仅回到英雄集结。 + +## 领地城墙:默认页签与独立命令打造 + +`territory.wall` 记录模块,两个底部页签为打造、城墙,默认 `territory.wall.overview`。`observe_default_tab` 表示进入后观察默认页签,不发送点击;本轮已采集城墙和机关打造识别模板,打造实机为弹框而非普通全屏页签。 + +| 页面 ID | 页签 | 规则 | +| --- | --- | --- | +| territory.wall.craft | 打造(机关打造) | 顶部钻石和机关次数;每日先免费1次,其余无免广告卡看广告、有卡直接领,额外次数待确认;机关次数打造仅按独立命令,≥10选10次、1至9选1次、0停止 | +| territory.wall.overview | 城墙 | 模块默认显示的页签,内部功能尚未说明 | + +`wall_free_mechanisms` 先直接领取每日1次,额外次数无免广告卡看广告、有卡直接领,广告次数待确认;以免费按钮消失结束,不转入使用机关次数的打造。`wall_command_build` 使用 `trigger: explicit_user_command`、`scheduled: false`,不会作为每日任务执行;可用机关次数≥10选10次、1至9选1次、0停止。命令计数单位与最后一批处理待完善。执行设计逐次确认结果与剩余机关次数,不默认改用页面显示的钻石。 + +城墙页左下返回领地。实机机关打造为弹框,需右上X关闭回城墙,再左下回领地;原打造直接回领地关系改为 pending。两个页面已补识别,免费按钮本次未出现,打造执行未实现。 + +## 领地新增扫荡、排行与合作商店任务 + +领地排行榜按最新要求重新启用,覆盖此前暂缓;它与 `planet.rank` 星球矿场排行榜独立。所有本次新增关系均为 `documented`,未采集模板,不参与可执行导航。 + +| 节点 | 用户确认结构与返回 | +| --- | --- | +| relic | 玩法大厅进入遗迹夺宝,每日首次提示关闭后扫荡,遇不战而逃提示点确定,左下直接回领地 | +| relic.notice/relic.sweep_warning | 首次提示及不战而逃两个弹框;首次关闭控件待采集,后者确定关闭回遗迹夺宝 | +| territory.rank.board | 默认排行榜页签,下方进度奖励入口;左下返回领地,其他页签名称未说明 | +| territory.rank.progress | 进度奖励弹框,只点最顶行右侧宝锤,右上关闭回排行榜 | +| coop.friend_store | 合作模式左上友情商店;首张免费金币每周一0点刷新,每周首次登录领一次、领完已售罄;每日洗练石1个、体力2个,每周首次进入星愿币2个,顶部专用货币余额≥价格时购买 | +| coop.pet | 保卫宠物,别称保卫动物;左上领券每天0点刷新、每日一次、领完已领完;右侧商城、右上红点挑战入口 | +| coop.pet.buff | 可选本周buff弹框,点知道了关闭 | +| coop.pet.store | 首张免费金币每周一0点刷新,每周首次登录领一次、已售罄完成;红色随机宠物碎片3200余额够就买完可售数量,跳过黄色2400,每次重读余额和库存 | +| coop.pet.challenge | 挑战入口有红点才进入,每周和成就两个页签,只处理有红点页签的领取按钮 | +| coop.pet.challenge.weekly/coop.pet.challenge.achievements | 每周/成就页签;无默认页签假设,领取反馈和是否滚动待采集 | + +本次八项待实现任务不修改已有合作券或星球矿场脚本。商店免费与购买分任务:友情商店按每日/每周目标记录已购量,仅补剩余目标;宠物商店红色碎片按余额买完当前可售数量,每次确认结果并重读余额与库存。两个商店分别记录自己的专用货币,实际货币名称未知,顶部显示余额,支付门槛为余额≥价格。宠物碎片匹配名称、红色和3200,黄色2400排除。最新明确保卫宠物券每天0点刷新,覆盖先前每周一次描述;两个商店免费金币每周一0点刷新,免费周期不推断为其他商品的库存刷新周期。 + +用户确认友情商店右上角关闭回实际打开来源;本轮合作模式及保卫宠物来源均已观察,宠物商店、挑战及挑战两个页签右上角关闭回保卫宠物,保卫宠物主页面左下角返回领地。六条对应返回边均标为 `documented`,控件模板未采集,不参与可执行导航。遗迹夺宝直接回领地、排行榜左下回领地已确认;首次提示、buff和进度奖励关闭分别保留各自父页面。 + +## 竞技场:领取竞技券(待后续确认) + +已加入 planned_tasks,ID为 arena_ticket_claim,任务执行页为 arena,入口为领地 → 巅峰决斗 → 竞技场。领取入口、条件、频率、次数、资源或广告要求、完成状态及返回步骤均待确认。标为延期且规则未完善,默认分组预览排除;已有竞技积分脚本保持原行为。 + +## 巅峰商店:优先级最大数量购买 + +`arena.peak` 对应模式选择中的巅峰决斗,右侧商店新增 `arena.peak.store`。与左侧竞技场及其积分领取任务分别记录,不修改已有竞技积分脚本。 + +购买目标依次为 **随机藏品碎片 → 洗练石 → 超凡宝锤**,采用 `maximum_affordable_available_per_priority`:先处理最高优先级,按可购买份数、当前价格和余额选择最大数量,每次确认结果并重读余额与库存。当前项不可售或无法支付后才检查下一项;全部目标不可售或余额不足时停止。 + +任务 `peak_store_priority_purchases` 为待实现,频率按有库存及余额时处理,不预设日周固定额度。专用货币以巅峰商店归属记录,余额在顶部;右上X关闭回 `arena.peak`,主页面左下返回 `territory`。商品价格、库存、余额、购买结果与返回控件模板待采集;新增进入和两条返回边均为 `documented`,不参与可执行导航。 + +## 广告领奖共用规则 + +用户确认:多个日常任务在没有免广告卡时,都需要看完广告才能领取奖励;程序应自动完成这一步。该规则适用于已配置的领奖任务,并由统一广告流程复用。 + +1. 保存当前任务、页面及奖励来源。 +2. 有免广告卡可直接领取时,走直接领取分支。 +3. 需要广告时,打开广告并等待播放完成。 +4. 识别完成后的关闭或返回控件,返回来源页面。 +5. 按游戏实际状态领取奖励,确认到账或已领完,再继续原任务。 + +地图以 `reward_ad_policy` 记录这项通用策略。当前尚未采集广告界面、播放完成标志、关闭入口和自动发奖状态,也尚未实现共用广告运行流程;确认策略不代表现有脚本已经具备该能力。 + +## 公会商城与公会任务(用户确认,待实现) + +公会商城共用一个入口,包含贡献商城、龙鳞商城两个页签,默认页签待采集。两页签分别使用专用货币,余额在页面顶部显示;点击右上角关闭按钮返回公会。 + +- **贡献商店任务**:按 **合作券 → 黄金罗盘 → 白银罗盘** 的优先级购买。合作券每周一刷新,整周均可按余额补购,本周最多7个,卖光显示“已售罄”;合作券不可售或当前余额无法支付时,再买黄金罗盘每日最多2个,最后白银罗盘每日最多10个,各项按余额和剩余可售数量尽量购买。周一具体刷新时刻尚未确认;每次确认购买结果并重读余额、库存及本日/本周剩余额度。 +- **龙鳞商店任务**:按随机职业龙晶、随机职业龙血的顺序,购买当前余额允许的最大可售数量。先处理高优先级商品,该项不可售或无法支付后再处理下一项,不预设每日或每周固定数量。 +- **公会任务领奖**:任务列表可上下滚动,可领取行右侧为“领取”,未完成为“前往”,领过为“已完成”并移到列表末尾。只点击领取,每次确认结果后重新识别列表,跳过前往和已完成。 +- **公会任务进度宝箱**:任务领奖后,上方进度条达到的小宝箱会出现红点,点击宝箱领奖,领完显示小对号。每次任务领取后及列表处理结束时重新检查红点宝箱,跳过已显示对号的宝箱。右上关闭公会任务回到公会。 + +购买后确认结果并重读余额、可售数量及本日/本周剩余额度,不能每次进入都重新购买完整限额。商品价格、库存、购买确认与结果、任务列表和宝箱状态模板尚未采集;上述三个任务仅加入待实现清单,不修改已有脚本汇总,也未实际购买或领奖。 + +## 远征大厅、公会祝福与公会Boss(用户确认,待实现) + +远征大厅包含迷宫寻宝、公会对决。**迷宫寻宝先搁置**,仅保留入口,不继续补内部步骤。公会对决进入后,点击下方有红点的“奖励”,默认停留“任务奖励”页签:任务列表可上下滚动,可领取任务集中在上方,右侧显示“领取”;未完成显示“前往”,已领显示“已完成”并移到末尾。逐次领取后确认结果并重新识别列表,不点击前往。奖励右上角关闭回公会对决,再点击左下角返回直接回公会。奖励其他页签未说明,不扩大任务范围;远征大厅实际右上X关闭回公会,本轮已观察。 + +**公会祝福升级**:升级消耗材料,红点表示材料充足。进入后只有“升级”按钮存在且按钮上有红点时,才点击升级一次;完成后点击左下角返回公会,不会自动返回。材料和升级结果识别模板待采集。 + +公会Boss每周一、三、五、日出现,任务仅在入口实际可用时处理,不通过日历推断页面一定存在。 + +- **领取公会boss奖励**:右侧“财宝”图标左上角有数字时打开财宝弹框,点击可用的“全部领取”;领取后按钮变成灰色“领取”,确认奖励结果并跳过灰色按钮。弹框右上角关闭回Boss页面,Boss左下角返回公会。数字的具体含义未知,不把数字当作点击次数。 +- **公会助威**:当天首次进入可用的Boss页面,助威按钮有红点时点击一次,每天最多一次;之后可按本日记录跳过,不循环点击。用户确认点击后按钮变成“已助威”,不可重复点击,后续看到已助威直接跳过;完成状态识别和执行记录尚未实现。 + +新增四项待实现任务,迷宫寻宝只标记暂缓。页面标题和当前布局已采集,财宝数字、灰色按钮、升级与助威操作结果仍待验证;本次仅补规则,未实际升级、助威或领取奖励。 + +## 待验证入口 + +下表已保留页面名称和归属。内部布局、可靠身份标识、返回位置或活动存在性未采集,路线规划不会使用这些入口。 + +| 页面 ID | 入口 | 所属页面 | 已知情况 | +| --- | --- | --- | --- | +| home.gold_trip | 金沙游记 | 首页 | 六个分活动已登记,仅处理签到、翻牌、驿站密使来信;活动左下回首页、分活动回活动层级已确认,页面和状态模板待采集。 | +| home.activity | 活动 | 首页 | 页签结构、免费和充值奖励规则、左下返回已确认;页面及按钮识别待采集。 | +| home.rebate | 返利 | 首页 | 左侧不定期出现;用户明确暂不处理,内部奖励、条件和返回问题暂缓,不参与自动导航。 | +| home.movie | 观影 | 首页 | 不定期出现,一般连续签到5天;单页中间按钮每日5次,按免广告卡分支领奖、右上关闭返回;当前未出现,自动化待再次出现后完善。 | +| home.trial | 试炼 | 首页 | 三页签及底部箭头返回已记录;英雄试炼与特训后续补充,试炼任务不需要自动化。 | +| home.wish | 祈愿 | 首页 | 试炼下方冲刺上方、不定期;祈愿、任务、礼包三页签,任务点右侧领取,礼包点顶部免费;左下箭头返回首页,识别待采集。 | +| home.sprint | 冲刺(轮换三类) | 首页 | 三类每期7天,本轮晶矿展示期与招募进行期同时可见;晶矿和招募四页签,仅处理礼包任务,左下返回;右下兑换商店弹框周一刷新整周领一次金币,右上X关闭;页面布局已核实,执行与结果控件待实现。 | +| home.treasure | 寻宝活动 | 首页 | 冲刺下方,等级开放后连续9~10天换期;三页签、任务和每期免费礼包领后重排、左下箭头返回已记录,模板待采集。 | +| home.friends | 好友列表 | 首页 | 右侧入口打开弹框,底部每日一键赠送、红点领取赠礼;关闭赠礼后点好友列表外回首页,识别模板待采集。 | +| heroes.detail | 英雄详情 | 英雄 | 已知入口:英雄卡片;内部页面与返回方式未采集,不参与自动识别或导航。 | +| heroes.pet | 宠物 | 英雄 | 已知入口:右下宠物;内部页面与返回方式未采集,不参与自动识别或导航。 | +| king.other | 国王其他页签与功能 | 国王 | 已知入口:武器、披风、皮肤、城墙、藏品、图腾、材料等;内部页面与返回方式未采集,不参与自动识别或导航。 | +| territory.atlas | 图鉴 | 领地 | 右下入口保留;用户最新确认暂不处理,内部与返回规则暂缓,automation.enabled为false。 | +| territory.rank | 排行榜 | 领地 | 最新要求启用,入口红点时进入默认排行榜页签,进度奖励只点顶行宝锤,关闭后左下回领地;页面布局已核实,执行与结果控件待实现。 | +| territory.wall | 城墙 | 领地 | 打造、城墙两个页签,默认城墙,左下回领地;每日免费与独立命令打造分开,广告额外次数与模板待完善。 | +| coop.pet | 保卫宠物 | 合作模式选择 | buff点知道了关闭,左上领券每日0点刷新,商店免费金币每周一0点刷新;主页左下回领地、商店挑战右上关闭,模板未采集。 | +| arena.peak | 巅峰决斗 | 巅峰决斗模式选择 | 右侧巅峰商店三项优先级购买,顶部专用货币余额,商店右上X关闭、主页左下回领地;页面布局已核实,执行与结果控件待实现。 | +| guild.store | 公会商城 | 公会 | 贡献商城、龙鳞商城两个页签,顶部专用货币余额,购买规则已记录;右上关闭回公会,页面布局已核实,执行与结果控件待实现。 | +| guild.expedition | 远征大厅 | 公会 | 迷宫寻宝暂缓,公会对决奖励红点进入默认任务奖励,关闭后左下直接回公会;本页返回待确认。 | +| guild.tasks | 公会任务 | 公会 | 滚动逐项领取,已完成移末尾;上方红点进度宝箱领取后显示对号,右上关闭回公会,页面布局已核实,执行与结果控件待实现。 | +| guild.blessing | 公会祝福 | 公会 | 升级按钮有红点时点击一次,消耗材料,红点表示材料充足;升级后左下返回公会,页面布局已核实,执行与结果控件待实现。 | +| guild.members | 成员大厅 | 公会 | 右上塔楼入口保留;用户明确不需要自动化,automation.enabled为false,内部流程和返回规则不再确认。 | +| guild.boss | 公会 Boss | 公会 | 周一三五日出现,财宝左上数字时全部领取;助威红点每天一次;左下回公会,助威后已助威不可重复,页面布局已核实,执行与结果控件待实现。 | + +## 已有任务与页面归属 + +“任务执行页”描述任务真正操作奖励的地方;“现有脚本启动页”说明目前代码的实际要求。现有大多数脚本仍要求首页并自带进入、返回逻辑,**此次建立地图没有重构这些脚本或接入统一调度**。 + +| 任务 | 分组页面 | 任务执行页 | 现有脚本 | 现有启动要求 | +| --- | --- | --- | --- | --- | +| 战令领取 | 首页 | 特惠/赏金战令 | `claim_offer.py` | 首页 | +| 挂机奖励 | 首页 | 挂机奖励 | `claim_idle.py` | 首页 | +| 快速扫荡 | 首页 | 挂机奖励 | `claim_sweep.py` | 首页 | +| 任务奖励 | 首页 | 日常任务 | `claim_tasks.py` | 首页 | +| 收取邮件 | 首页 | 邮件 | `claim_mail.py` | 首页 | +| 剑来积分奖励 | 首页 | 剑来献礼 | `claim_sword_gift_points.py` | 首页 | +| 骊珠任务奖励 | 首页 | 骊珠画卷任务 | `claim_lizhu_task_rewards.py` | 首页 | +| 英雄招募签到 | 商城 | 神灯召唤 | `claim_recruit_signin.py` | 首页 | +| 收矿与雇佣 | 领地 | 狂鼠之家 | `claim_mining.py` | 首页 | +| 喂养狂鼠 | 领地 | 好友矿场 | `claim_feed_mice.py` | 首页 | +| 领取体力 | 领地 | 食堂 | `claim_stamina.py` | 首页 | +| 合作券 | 领地 | 合作模式 | `claim_cooperation_ticket.py` | 首页 | +| 竞技积分 | 领地 | 竞技场 | `claim_arena_points.py` | 首页 | +| 星球矿场金币 | 领地 | 星球矿场 | `claim_planet_mine.py` | 首页 | +| 公会互助 | 任意一级页面 | 底部公会按钮上方握手入口 | `claim_guild_help.py` | 任意一级页面 | +| 公会砍价 | 公会 | 红珍珠祭坛 | `claim_guild_bargain.py` | 首页 | +| 每日免费捐献 | 公会 | 每日捐献弹框 | `claim_guild_donation.py` | 首页 | + +## 调度与导航的接口约定 + +后续按“识别当前页 → 导航到任务执行页 → 执行任务 → 识别实际落点 → 规划下一任务”的顺序工作。固定任务只操作本页;导航负责进入和返回;调度负责选任务、按页面排序、记录结果及资源策略。 + +任务结果应至少包含:任务 ID、已完成/已领完/条件不满足/失败、完成后的页面 ID 和必要的活动实例。单项失败后,只有确认可以恢复到已知页面时才继续下一项;若仍在未知或有歧义的画面,应停止相关导航并保存现场。 + +正常情况下按首页、商城、领地、公会分组,可减少往返。现有脚本迁移前先沿用其首页启动要求,避免调度把任务送到子页面后旧脚本反而失败。之后逐项抽出本页任务,再让地图负责导航;不应一次改变所有已验证流程。 + +活动名称变化可触发人工检查或之后的模型识别补充。当前地图与识别器仍使用本地模板,没有接入模型 API。Windows 的窗口定位、输入和缩放需要另外实机验证。 + +## 本次验证记录 + +- 主要页面:本次验证领地返回首页、首页进入商城与返回、首页进入英雄与返回、首页进入国王与返回、首页进入公会与返回;最后停留首页。 +- 识别:8 张本次截图全部识别正确,其中包括通知遮挡商城顶部的截图。神灯任务、礼包和奖励展示的 4 张既有截图用于补充检查,识别结果符合预期。 +- 自动化测试:6 项页面识别与路线测试通过,覆盖主要页区分、未知与暗背景、弹层优先、歧义、候选路线与排除未验证路径。 +- 限制:本次未穷尽每个入口内部页面,未验证新活动、不同国王页签、跨日变化或 Windows,也未接入自动导航和调度。 + +## 本轮页面核实与优化(2026-10-05至06) + +当前地图134个节点、239条关系、17个已有脚本任务、49个待实现或延期任务;78个节点有识别模板,52个节点附本轮布局记录。新增只读任务分组预览,仍未接入统一导航执行。这里只核实布局、进入和关闭,未领取、购买、升级、打造或扫荡;已回到首页。 + +详细差异、未验证状态和按优先级的开发计划见 [页面核实与自动化优化计划](261006_0109-页面核实与自动化优化计划.md)。当前可用的原有路线与本轮结构记录分别保留,新关系不直接自动执行。 diff --git a/docs/261005_1732-树形页面地图.md b/docs/261005_1732-树形页面地图.md new file mode 100644 index 0000000..a03832e --- /dev/null +++ b/docs/261005_1732-树形页面地图.md @@ -0,0 +1,330 @@ +--- +created_at: 2026-10-05 17:32:28 CST +type: 永远的蔚蓝星球页面入口、页签与领奖任务的树形总览 +revision: 第38次 +revisions: + - time: 2026-10-05 17:32:28 CST + version: 第1次 + author: GPT-6 + content: 依据程序页面地图生成覆盖 69 个节点的树形总览,并同步月礼包没有免费项目的用户确认。 + - time: 2026-10-05 17:40:14 CST + version: 第2次 + author: GPT-6 + content: 补充每日充值6元和25元档,更新日礼包广告分支、充值奖励红点领取低优先级及活动左下返回规则。 + - time: 2026-10-05 17:47:39 CST + version: 第3次 + author: GPT-6 + content: 确认返利不定期出现且暂不处理,内部奖励、条件和返回问题暂缓;特惠页签尚未列全,优先补齐。 + - time: 2026-10-05 18:00:38 CST + version: 第4次 + author: GPT-6 + content: 补齐特惠六个底部页签及领奖规则,显示月卡周卡零点刷新、基金解锁关卡条件和两类战令第一列领奖,全部新增任务标为待实现。 + - time: 2026-10-05 18:09:35 CST + version: 第5次 + author: GPT-6 + content: 显示基金1、2、3动态页签与已知关卡范围,补充月卡每天各一次和18元30元价格按钮,以及两类战令高亮可领对号已领规则。 + - time: 2026-10-05 18:19:12 CST + version: 第6次 + author: GPT-6 + content: 补充周卡未购买也能签到与已领取标志,基金小锁头、已领对号及未达关卡灰色蒙版,并记录特惠全部页签左下箭头返回首页。 + - time: 2026-10-05 18:24:13 CST + version: 第7次 + author: GPT-6 + content: 补充月卡领完显示续费18元或续费30元、两类战令没有一键领取且支持上下滚动逐项领取的规则。 + - time: 2026-10-05 18:30:24 CST + version: 第8次 + author: GPT-6 + content: 补充观影一般连续签到5天、单页中间按钮每日5次及免广告卡分支、右上关闭规则,标记当前未出现且再次出现后完善。 + - time: 2026-10-05 18:36:51 CST + version: 第9次 + author: GPT-6 + content: 补充试炼三个页签、每日登录任务奖励和其他任务完成后领取规则,记录底部箭头返回首页,英雄试炼与特训内部规则待补充。 + - time: 2026-10-05 18:41:01 CST + version: 第10次 + author: GPT-6 + content: 暂缓英雄试炼和特训,标记试炼任务无需滚动且不需要自动化;新增祈愿不定期入口,位于试炼下方冲刺上方,内部规则待确认。 + - time: 2026-10-05 18:46:22 CST + version: 第11次 + author: GPT-6 + content: 展示祈愿、任务、礼包三页签,补充任务右侧领取及每日登录奖励、礼包顶部免费补给和左下箭头返回,新增任务待实现。 + - time: 2026-10-05 18:52:33 CST + version: 第12次 + author: GPT-6 + content: 补充祈愿任务需滚动、已完成条目移到底部、免费补给每日一次无需广告,并标记祈愿页签本身不需要自动化。 + - time: 2026-10-05 19:06:16 CST + version: 第13次 + author: GPT-6 + content: 展示三类7天冲刺、晶矿与招募内部页签及星珀商城,记录每日免费礼包与任务领奖状态;招募礼包入口待确认,图腾冲刺后续补充。 + - time: 2026-10-05 19:16:55 CST + version: 第14次 + author: GPT-6 + content: 确认招募冲刺四个底部页签及固定导航,目标排名不处理;星珀商城为弹框,周一刷新整周一次,右上X关闭回冲刺面板。 + - time: 2026-10-05 19:20:31 CST + version: 第15次 + author: GPT-6 + content: 确认两类冲刺礼包每日一次无需广告、星珀金币领完已售罄,标记冲刺任务领后重排仍待确认。 + - time: 2026-10-05 19:30:33 CST + version: 第16次 + author: GPT-6 + content: 补充寻宝等级开放后的9至10天连续周期、三个页签与左下返回,记录任务重排及免费礼包每期一次、领后已售罄排到底部。 + - time: 2026-10-05 19:33:35 CST + version: 第17次 + author: GPT-6 + content: 标记宝藏兑换不自动化、冒险礼包每期免费领取一次无需广告,保留任务与礼包两项领奖流程待实现。 + - time: 2026-10-05 19:39:44 CST + version: 第18次 + author: GPT-6 + content: 补充好友列表每日一键赠送、红点进入领取赠礼子弹框一键领取及两层关闭路径,两项任务待实现。 + - time: 2026-10-05 19:47:09 CST + version: 第19次 + author: GPT-6 + content: 确认好友赠送和领取按钮操作后不变且仍可点击,记录空赠礼提示及待实现的每日限次和防重复领取规则。 + - time: 2026-10-05 19:52:33 CST + version: 第20次 + author: GPT-6 + content: 将金沙游记等季节活动和英雄集结移到首页分支最末,位于挂机奖励之后,保留英雄集结的全部子页面。 + - time: 2026-10-05 19:54:24 CST + version: 第21次 + author: GPT-6 + content: 将首页分支中的寻宝活动显示名称改为寻宝。 + - time: 2026-10-05 19:55:02 CST + version: 第22次 + author: GPT-6 + content: 将首页分支中的金沙游记等季节活动显示名称改为金沙游记。 + - time: 2026-10-05 20:09:15 CST + version: 第23次 + author: GPT-6 + content: 补齐金沙游记六个分活动及流沙赠礼两个页签,确认驿站密使名称及跳过已领取来信、法老遗珍跳过已翻牌并翻至剩余次数不足,三项任务待实现。 + - time: 2026-10-05 20:17:23 CST + version: 第24次 + author: GPT-6 + content: 确认流沙赠礼领取后显示已领取;当前账号有免广告卡,法老遗珍无卡时的按钮样式和广告界面留待后续确认。 + - time: 2026-10-05 20:28:58 CST + version: 第25次 + author: GPT-6 + content: 补齐英雄集结四个新入口,仅处理岁岁平安14天签到和骊珠寻珍;确认寻珍金币为活动抽奖次数,记录卡片定位、跳过动画、免费及按剩余次数参与,两项任务待实现。 + - time: 2026-10-05 21:12:15 CST + version: 第26次 + author: GPT-6 + content: 确认英雄招募无新增日常内容,记录图腾两卡每日各一次免费、每日商店首格免费券无广告且刷新不再免费、金币首卡每日两次;金币购券与600刷新规则待完善。 + - time: 2026-10-05 21:18:49 CST + version: 第27次 + author: GPT-6 + content: 将领地的图鉴与排行榜标记为暂不处理,保留入口节点,内部流程及返回方式暂缓确认。 + - time: 2026-10-05 21:27:01 CST + version: 第28次 + author: GPT-6 + content: 城墙新增打造和城墙两个页签,默认城墙、左下返回领地;确认每日先免费一次再广告或免广告领取、额外次数待确认,达到10次可打造10次,仅按独立命令执行。 + - time: 2026-10-05 21:57:28 CST + version: 第29次 + author: GPT-6 + content: 新增遗迹夺宝、领地排行榜、友情商店及保卫宠物商店挑战结构,补充八项任务;确认券每周一次、商店各自货币够价才买、仅买红色3200随机宠物碎片,额度与返回待确认。 + - time: 2026-10-05 22:05:01 CST + version: 第30次 + author: GPT-6 + content: 补齐商店挑战右上关闭与宠物左下回领地,按最新说明将宠物券改为每天0点刷新;商店免费金币每周一0点刷新,红色3200碎片余额够就买完可售数量。 + - time: 2026-10-05 22:14:33 CST + version: 第31次 + author: GPT-6 + content: 新增巅峰商店优先级购买任务,确认顶部专用货币余额、右上X关闭及主页左下回领地,按藏品碎片、洗练石、超凡宝锤顺序最大数量购买,任务未实现。 + - time: 2026-10-05 22:31:15 CST + version: 第32次 + author: GPT-6 + content: 补充公会商城双页签购买优先级、公会任务列表重排和进度宝箱领奖,以及右上关闭回公会;确认顶部专用货币、罗盘每日2/10限额、合作券周一刷新整周最多7个及龙晶龙血按优先级买完。 + - time: 2026-10-05 22:37:57 CST + version: 第33次 + author: GPT-6 + content: 确认贡献商城购买顺序为合作券、黄金罗盘、白银罗盘,保留每周7个及每日2/10个限额。 + - time: 2026-10-05 22:49:51 CST + version: 第34次 + author: GPT-6 + content: 补充远征大厅、公会对决任务领奖、公会祝福材料升级及左下返回、公会Boss财宝和已助威完成状态;迷宫寻宝暂缓。 + - time: 2026-10-05 22:54:16 CST + version: 第35次 + author: GPT-6 + content: 用户确认成员大厅不需要自动化,保留入口,排除内部流程确认与执行。 + - time: 2026-10-06 01:09:48 CST + version: 第36次 + author: GPT-6 + content: 同步本轮页面核实差异与识别修正,增加只读任务预览和后续公共执行器开发顺序,保留未验证状态。 + - time: 2026-10-06 01:13:31 CST + version: 第37次 + author: GPT-6 + content: 补充领地巅峰决斗竞技场领取竞技券任务,具体流程后续确认,暂不实现或纳入默认预览。 + - time: 2026-10-06 01:14:17 CST + version: 第38次 + author: GPT-6 + content: 补充战令一键领取后可能出现幸运星,需额外点击领取,分支标记后续完善,未修改执行脚本。 +summary: 树形展示134个节点,本轮记录实际冲刺卡片、特惠页签、机关打造弹框和共用商店来源,修正领地排行榜左下返回。统一执行尚未实现,已补只读任务分组预览。 新增领取竞技券,流程待确认。 战令幸运星额外点击领取分支待完善。 +--- + +# 树形页面地图 + +这份文档用于快速查看页面层级;详细进入、返回、识别与执行边界见 [页面地图与导航规则](261005_1702-页面地图与导航规则.md),程序数据见 [page_map.json](../workflows/page_map.json)。 + +“主要页面已核对”表示已有主要页面实机识别和切换记录;“已有流程”表示从现有工作流整理,不代表本次逐页复测;“结构已记录”来自用户说明;“待确认”需要继续补充内部规则。 + +树中“特惠”和“任务”为方便查看添加的入口分组;神灯召唤归入英雄招募栏目。它们不改变程序地图中的导航路径。下列树覆盖程序地图全部 134 个节点,展示分组不额外计数。冲刺三类子节点表示活动类型;本轮列表同时显示晶矿展示期与招募进行期卡片,可从实际可见卡片进入。钻石基金按实际显示的动态页签遍历;100、200关的精确边界和260关以后的页签规则尚未确认。 + +```text +永远的蔚蓝星球 +├── 首页【主要页面已核对】 +│ ├── 特惠(入口分组;六个页签均需自动领奖;统一左下箭头返回首页) +│ │ ├── 超值月卡【进入返回已有流程;两项奖励每日各一次,00:00刷新;未购买18元/30元,领完“续费:18元/30元”,均跳过;领奖待实现】 +│ │ ├── 战令(已有页面名:赏金战令)【已有流程;消耗体力产生奖励;脚本:战令领取;一键领取后可能获得幸运星,需再点击领取,此分支后续完善】 +│ │ ├── 特权周卡(原称特惠周卡)【布局已核实;未购买也能签到;每日00:00刷新;签到后“已领取”;任务待实现】 +│ │ ├── 钻石基金【结构已记录;遍历实际可见页签;解锁且达关卡时领最后一列钻石;锁头/已领对号/未达灰色蒙版跳过;任务待实现】 +│ │ │ ├── 钻石基金 1【结构已记录;未到100关显示,后续已知范围保留】 +│ │ │ ├── 钻石基金 2【结构已记录;超过100关、未到200关时新增】 +│ │ │ └── 钻石基金 3【结构已记录;超过200关、未到260关时新增;后续未知】 +│ │ ├── 遗迹战令【结构已记录;遗迹夺宝产生奖励;无一键领取,上下滚动逐项领第一列高亮且无对号图标;任务待实现】 +│ │ └── 宠物战令【已核实布局,出现灰色一键领取;优先一键策略待确认,逐项领奖原规则保留;任务待实现】 +│ ├── 活动【结构已记录;各页签左下返回首页】 +│ │ ├── 超值礼包【结构已记录】 +│ │ │ ├── 日礼包【布局已核实;上方体力免费带视频标志,下方金币普通免费;广告判定策略待确认;任务待实现】 +│ │ │ ├── 周礼包【结构已记录;无免费项目,免费领奖时跳过】 +│ │ │ └── 月礼包【结构已记录;月卡会员才可见;无免费项目,免费领奖时跳过】 +│ │ ├── 每日特惠【结构已记录;1 个免费项目,每日领 2 次;第二次无免广告卡看广告;任务待实现】 +│ │ ├── 每日充值【结构已记录;红点进入领取已达成奖励;低优先级,后续完善】 +│ │ │ ├── 6 元档【结构已记录;可能有奖励】 +│ │ │ └── 25 元档【结构已记录;可能有奖励】 +│ │ └── 累充豪礼【标题已核实;红点进入领取;低优先级】 +│ ├── 返利【不定期出现;暂不处理】 +│ ├── 观影【不定期;一般连续签到5天;单页中间按钮每日5次,有免广告卡直接领否则看广告;右上关闭;当前未出现,再次出现后完善】 +│ ├── 试炼【不定期;当前存在(用户确认);底部箭头返回首页;暂不做自动化】 +│ │ ├── 英雄试炼【结构已记录;暂不处理,后续补充】 +│ │ ├── 特训【结构已记录;暂不处理,后续补充】 +│ │ └── 试炼任务【规则已记录;列表无需滚动;不需要自动化】 +│ ├── 祈愿活动【不定期;试炼下方、冲刺上方;底部左下箭头返回首页】 +│ │ ├── 祈愿【结构已记录;本页不需要自动化】 +│ │ ├── 任务【结构已记录;需滚动,点右侧“领取”;领后“已完成”并移到底部;每日可领登录奖励;任务待实现】 +│ │ └── 礼包【免费补给每日1次,无需广告;已售罄条目可能排到付费项目后,按状态寻找;任务待实现】 +│ ├── 冲刺【限时冲刺列表弹框,晶矿展示期与招募进行期卡片同时可见;列表右上X关闭,各活动页左下返回首页】 +│ │ ├── 晶矿冲刺【本轮卡片为展示期,内部页签未复测】 +│ │ │ ├── 冲刺目标【结构已记录;不需要自动化】 +│ │ │ ├── 冲刺排名【结构已记录;不需要自动化】 +│ │ │ ├── 冲刺礼包【结构已记录;首项免费每日1次,无需广告;领完已售罄;任务待实现】 +│ │ │ └── 冲刺任务【结构已记录;可滚动,领后已完成;是否重排待确认;任务待实现】 +│ │ ├── 招募冲刺【结构已记录;四个底部页签,切换时导航不变;左侧返回首页】 +│ │ │ ├── 冲刺目标【结构已记录;不需要自动化】 +│ │ │ ├── 冲刺排名【结构已记录;不需要自动化】 +│ │ │ ├── 冲刺礼包【底部页签已确认;首项免费每日1次,无需广告;领完已售罄;任务待实现】 +│ │ │ └── 冲刺任务【结构已记录;可滚动,领后已完成;是否重排待确认;任务待实现】 +│ │ ├── 图腾冲刺【轮换类型已记录;等出现后确认内部流程】 +│ │ └── 星珀商城(兑换商店弹框)【结构已记录;周一刷新,整周首项免费金币1次;领后已售罄;右上X关闭回冲刺;任务待实现】 +│ ├── 寻宝【冲刺下方;等级开放后每期约9~10天连续换期;当前有入口;左下箭头返回首页】 +│ │ ├── 宝藏兑换【结构已记录;不需要自动化】 +│ │ ├── 冒险任务【结构已记录;可滚动,领取后已完成并排到下面;任务待实现】 +│ │ └── 冒险礼包【结构已记录;可滚动,每期直接领1次免费项目,无需广告;领后已售罄并排到最底下;任务待实现】 +│ ├── 任务(入口分组) +│ │ ├── 日常任务【已有流程;脚本:任务奖励】 +│ │ └── 周常任务【已有流程】 +│ ├── 好友列表【弹框;底部每日一键赠送1次,按钮操作后不变且可继续点;赠送任务待实现;点弹框外关闭回首页】 +│ │ └── 领取赠礼【子弹框;有红点时进入并一键领取,领取后按钮不变且可继续点,不重复点击;空提示:暂无可收取的礼物;点子弹框外或右上X关闭回好友列表;任务待实现】 +│ ├── 邮件【已有流程;脚本:收取邮件】 +│ ├── 挂机奖励【已有流程;脚本:挂机奖励、快速扫荡】 +│ ├── 金沙游记【季节活动;六个分活动已记录;左下箭头返回首页】 +│ │ ├── 金顶夺宝【入口已记录;暂不处理】 +│ │ ├── 驿站密使【来信弹框;入口红点时进入,可滚动;点未领取来信,跳过已领取;点弹框外或右上X回金沙游记;任务待实现】 +│ │ ├── 圣迹漫游【入口已记录;暂不处理】 +│ │ ├── 法老遗珍【通常每日3张,无卡直接1张、广告2张,有卡直接3张;优先第一排,跳过显示奖励的已翻牌,点“点我翻牌”;当前有免广告卡,首翻后显示“免费”,无卡界面后续确认;至“剩余次数不足”停止;左下回金沙游记;任务待实现】 +│ │ ├── 流沙赠礼【每日签到;游戏按进度自动选页签;识别当天节点“可领取”,位置随天数变化,领完变“已领取”;左下箭头回金沙游记;任务待实现】 +│ │ │ ├── 15天【结构已记录;按当前节点领取】 +│ │ │ └── 23天【结构已记录;例如第20天游戏自动选此页签】 +│ │ └── 驼铃补给【入口已记录;暂不处理】 +│ └── 英雄集结【已有流程】 +│ ├── 剑来献礼【已有流程;脚本:剑来积分奖励】 +│ ├── 骊珠画卷【已有流程】 +│ │ └── 骊珠画卷任务【已有流程;脚本:骊珠任务奖励】 +│ ├── 槐萌祈缘【入口已记录;暂不处理】 +│ ├── 岁岁平安【14天签到;已签卡片有对号;可领取提示在卡片左上方,点提示左下方对应卡片;右上关闭回英雄集结;任务待实现】 +│ ├── 骊珠寻珍【红点进入;确认跳过动画已勾选,见免费则领取;活动金币代表抽奖次数,剩余≥5参与5次,1~4参与1次,逐次重读至0;左下箭头回英雄集结;任务待实现】 +│ └── 剑守长城【入口已记录;暂不处理】 +├── 商城【主要页面已核对】 +│ ├── 英雄招募【结构已记录;除已有神灯流程外,无其他日常领奖需求】 +│ │ └── 神灯召唤【已有流程;脚本:英雄招募签到;英雄招募内限时 UP 卡片的任务入口】 +│ ├── 图腾寻宝【两张卡片每日各免费1次;有免广告卡直接领,否则看视频;领完对应免费按钮消失;任务待实现】 +│ ├── 关卡礼包【结构已记录;暂不处理】 +│ ├── 每日商店【6张卡片;首格免费招募券每日1次,无广告,领完已售罄,刷新不再免费;只考虑金币招募券,购买和600金币刷新策略待完善;刷新用完有黑色蒙版;任务待实现】 +│ ├── 钻石【结构已记录;暂不处理】 +│ └── 金币【3张卡片;首张每日免费2次,第一次直接领,第二次无免广告卡看视频、有卡直接领;全部领完已售罄;任务待实现】 +├── 英雄【主要页面已核对】 +│ ├── 英雄详情【待确认】 +│ └── 宠物【待确认】 +├── 国王【主要页面已核对】 +│ └── 国王其他页签与功能【待确认;武器、披风、皮肤、城墙、藏品、图腾、材料等】 +├── 领地【主要页面已核对】 +│ ├── 狂鼠之家【已有流程;脚本:收矿与雇佣】 +│ │ ├── 狂鼠之家好友列表【已有流程】 +│ │ │ └── 好友矿场【已有流程;脚本:喂养狂鼠】 +│ │ └── 一键雇佣弹框【已有流程】 +│ ├── 玩法大厅【已有流程】 +│ │ ├── 星球矿场【已有流程;脚本:星球矿场金币】 +│ │ │ ├── 星球矿场排行榜【已有流程】 +│ │ │ │ └── 星球矿场进度奖励【已有流程】 +│ │ │ └── 星球矿场扫荡弹框【已有流程】 +│ │ └── 遗迹夺宝【每日首次提示关闭后点扫荡;出现不战而逃提示点确定;左下直接返回领地;任务待实现】 +│ │ ├── 遗迹夺宝首次提示【弹框;关闭后继续,关闭控件待采集】 +│ │ └── 怪物不战而逃提示【弹框;点击确定回遗迹夺宝】 +│ ├── 图鉴【入口保留;暂不处理】 +│ ├── 食堂【已有流程;脚本:领取体力】 +│ ├── 排行榜【最新范围改为处理;领地入口红点时进入,默认排行榜页签;左下返回领地;任务待实现】 +│ │ └── 排行榜页签【默认页签;下方进度奖励入口】 +│ │ └── 领地排行榜进度奖励【弹框;只点最顶行右侧宝锤;右上关闭回排行榜】 +│ ├── 巅峰决斗模式选择【已有流程】 +│ │ ├── 竞技场【已有流程;脚本:竞技积分;新增领取竞技券任务,流程后续确认,暂不实现】 +│ │ └── 巅峰决斗【选择该模式;右侧巅峰商店;左下返回领地】 +│ │ └── 巅峰商店【随机藏品碎片→洗练石→超凡宝锤;顶部专用货币够价时买每项最大可售数量,逐次重读余额和库存;右上X关闭回巅峰决斗;任务待实现】 +│ ├── 合作模式选择【已有流程】 +│ │ ├── 合作模式【已有流程;脚本:合作券】 +│ │ │ └── 友情商店【左上入口;首格免费金币每周一0点刷新,每周首次登录领1次,领完已售罄;每日买洗练石1个、体力2个,每周首次进入买星愿币2个,顶部专用货币够价才买;右上关闭回打开来源;也能从保卫宠物商城页签切入,需保留来源;签到购买任务待实现】 +│ │ └── 保卫宠物【别称保卫动物;左上领券每天0点刷新,每日1次,领完已领完;左下返回领地;任务待实现】 +│ │ ├── 本周buff提示【存在时点知道了关闭】 +│ │ ├── 宠物商店【右侧商城入口;首格免费金币每周一0点刷新,每周首次登录领1次,领完已售罄;红色随机宠物碎片3200余额够就买完可售数量,跳过黄色2400;右上关闭回保卫宠物;签到购买任务待实现】 +│ │ └── 挑战【右上红点时进入;只处理有红点页签的领取按钮;右上关闭回保卫宠物;任务待实现】 +│ │ ├── 每周【页签有红点时进入领取】 +│ │ └── 成就【页签有红点时进入领取】 +│ └── 城墙【默认城墙页签;底部左侧返回领地;右侧打造、城墙两页签】 +│ ├── 打造(机关打造)【实机为弹框,右上X关闭回城墙;每日先免费1次,其余无免广告卡看广告、有卡直接免费,额外次数待确认,领至免费消失;使用机关次数打造仅按单独命令,≥10选10次、1~9选1次、0停止;任务待实现】 +│ └── 城墙【默认页签;内部功能后续补充】 +├── 公会【主要页面已核对】 +│ ├── 公会商城【共用入口;贡献商城、龙鳞商城两个页签;顶部各自专用货币余额;右上关闭回公会】 +│ │ ├── 贡献商城【合作券→黄金罗盘→白银罗盘;合作券周一刷新整周最多7个,黄金每日最多2个、白银每日最多10个,按余额和剩余库存尽量买,卖光已售罄;贡献商店任务待实现】 +│ │ └── 龙鳞商城【随机职业龙晶→随机职业龙血,按余额买最大可售数量;龙鳞商店任务待实现】 +│ ├── 远征大厅【实机为弹框,右上X关闭回公会;迷宫寻宝、公会对决两个入口】 +│ │ ├── 迷宫寻宝【先搁置】 +│ │ └── 公会对决【下方奖励有红点时进入;左下直接回公会】 +│ │ └── 公会对决奖励【默认任务奖励;右上关闭回公会对决】 +│ │ └── 任务奖励【可滚动;领取集中上方,跳过前往;已完成移末尾,逐次重读;任务待实现】 +│ ├── 公会任务【列表可滚动;点右侧领取,跳过前往和已完成;领取后已完成移到末尾;上方进度宝箱有红点时点击,领完显示对号;右上关闭回公会;任务待实现】 +│ ├── 公会祝福【升级消耗材料,红点表示材料充足;升级按钮有红点时点一次;左下返回公会;任务待实现】 +│ ├── 每日捐献弹框【已有流程;脚本:每日免费捐献】 +│ ├── 成员大厅【不需要自动化;保留入口】 +│ ├── 公会 Boss【周一三五日出现;当日首次进入助威红点点一次,领完已助威且不可重复;右侧财宝左上有数字时进入;左下回公会;两项任务待实现】 +│ │ └── 公会Boss财宝【全部领取后灰色领取,灰色跳过;右上关闭回Boss】 +│ └── 红珍珠祭坛【已有流程;脚本:公会砍价】 +└── 通用恭喜获得展示【已有流程;父页面由任务历史确定】 +``` + +## 通用领奖规则 + +- 按钮右上角红点表示内部有奖励可以领取,进入后仍需确认具体按钮和结果。 +- 已配置任务有免广告卡时直接领取;没有时自动看完广告后领取。共用广告模块尚未实现。 +- 活动日礼包:每日领取两个免费项目,原行序与本轮视频标志排列不同,广告判定待确认;每日特惠:同一个免费项目每日领两次,第二次走同样的广告分支。 +- 每日充值含6元和25元档,和累充奖励一样按红点进入领取;这些任务低优先级,未来有充值奖励时再完善。活动各页签均左下返回首页。 +- 活动周礼包、月礼包:没有免费项目,免费领奖流程跳过。月礼包另需月卡会员才可见。 +- 商城关卡礼包和钻石栏目按用户要求暂不处理。 +- 公会互助为跨页面任务:任意一级页面底部公会按钮上方出现握手入口时执行,树中不另建同名页面。 +- 季节活动的签到、翻牌和来信领取可分别复用流程;各活动配置自己的页面样式、状态标志和返回控件。当前只记录设计,尚未实现共用执行模块。 + +## 后续确认方式 + +按首页、商城、领地、公会的顺序补充。同一页面内的相关问题合并询问,已确认规则不重复提问。每次答复同步到程序地图和详细文档;涉及树中结构或规则标记时也更新本树。 + +当前尚未接入自动导航和统一调度;现有任务脚本仍沿用原启动页面要求。 + +## 本轮页面核实与优化(2026-10-05至06) + +当前地图134个节点、239条关系、17个已有脚本任务、49个待实现或延期任务;78个节点有识别模板,52个节点附本轮布局记录。新增只读任务分组预览,仍未接入统一导航执行。这里只核实布局、进入和关闭,未领取、购买、升级、打造或扫荡;已回到首页。 + +详细差异、未验证状态和按优先级的开发计划见 [页面核实与自动化优化计划](261006_0109-页面核实与自动化优化计划.md)。当前可用的原有路线与本轮结构记录分别保留,新关系不直接自动执行。 diff --git a/docs/261006_0109-页面核实与自动化优化计划.md b/docs/261006_0109-页面核实与自动化优化计划.md new file mode 100644 index 0000000..0afbc35 --- /dev/null +++ b/docs/261006_0109-页面核实与自动化优化计划.md @@ -0,0 +1,119 @@ +--- +created_at: 2026-10-06 01:09:48 CST +type: 永远的蔚蓝星球页面实机核实、识别修正与自动化开发顺序 +revision: 第3次 +revisions: + - time: 2026-10-06 01:09:48 CST + version: 第1次 + author: GPT-6 + content: 汇总只读巡视差异,记录识别与任务预览优化,安排公共导航、领奖、广告、购买和双平台验证顺序。 + - time: 2026-10-06 01:13:31 CST + version: 第2次 + author: GPT-6 + content: 补充领地巅峰决斗竞技场领取竞技券任务,具体流程后续确认,暂不实现或纳入默认预览。 + - time: 2026-10-06 01:14:17 CST + version: 第3次 + author: GPT-6 + content: 补充战令一键领取后可能出现幸运星,需额外点击领取,分支标记后续完善,未修改执行脚本。 +summary: 当前可见关键页面已导航和截图核实并返回首页,修正弹框、返回位置、冲刺卡片和任务页误识别;新增只读分组预览,尚未接入统一执行调度,奖励和购买结果待实测。 新增领取竞技券,流程待确认。 战令幸运星额外点击领取分支待完善。 +--- + +# 页面核实与自动化优化计划 + +本轮根据补充说明巡视了当前可见的首页活动、商城栏目、领地玩法和公会页面。只执行进入、切换页签、滚动和关闭,未领取奖励、购买、升级、打造或扫荡;最后确认回到首页。旧脚本过去的实测记录保留,本轮没有重新执行全部17个任务。 + +地图现有134个节点、239条关系、17个已实现任务、49个待实现或延期任务。78个节点有识别模板;52个节点附有本轮布局记录。节点包含页签和滚动栏目,这些数量不表示已经实现78项自动化。64条原有验证关系仍可用于只读路线规划;本轮新增关系暂为结构记录,不直接交给鼠标执行。 + +## 核实结果与修正 + +| 页面 | 本轮实际观察 | 已调整的设计 | +| --- | --- | --- | +| 首页左侧入口 | 图标列表可滚动,显示位置随当前活动数量变化;下方金猪还可能覆盖附近点击区域 | 每次定位入口文字/图标和可见区域,不沿用首页固定坐标 | +| 特惠 | 当前周卡实际名称为特权周卡;横向导航可滚动,入口保留上次页签;月卡当前显示18元、30元 | 保留旧名称别名;实际识别选中页签。价格按钮跳过,不能当作可领奖 | +| 宠物战令 | 实际存在一键领取,本次灰色 | 已记录该按钮存在;是否优先一键领取等待用户确认,尚未点击 | +| 活动日礼包 | 上方体力免费按钮带视频标志,下方金币免费按钮没有视频标志,与此前按第一、第二项描述不同 | 已记录实际排列;广告判定策略等待用户确认,不把行号当作永久规则 | +| 活动、祈愿、寻宝 | 活动实际名称为累充豪礼;祈愿补给已售罄项目排在付费项目后;寻宝冒险福利礼按钮写领取,未显示价格 | 按物品、免费资格、状态和价格联合定位,不仅搜索免费文字,不固定首行 | +| 冲刺 | 限时冲刺先打开列表弹框,晶矿展示期和招募进行期卡片同时出现;本轮进入招募,四个底部页签均存在 | 先定位活动实例与状态,再进入卡片。目标和排名继续排除;招募页左下直接回首页 | +| 星珀商城 | 实际标题星珀兑换,从冲刺列表右下进入,右上关闭回列表 | 保留旧称,记录打开来源,不凭逻辑父级猜返回页 | +| 城墙 | 默认城墙页;点击打造打开机关打造弹框,本次没有免费按钮 | 打造弹框右上关闭回城墙,再左下返回领地;无免费时跳过,不自动使用机关次数 | +| 领地排行榜 | 默认主线榜,另有竞技榜、合作榜、金币榜;返回按钮在左下 | 修正原右下返回说明;进度奖励弹框与星球矿场同外观,靠已确认的进入来源区分 | +| 合作模式/巅峰决斗选择 | 两个弹框都写模式选择,仅标题不够区分 | 加入合作模式/竞技场卡片文字作为不同的识别证据 | +| 保卫宠物挑战 | 每周挑战标题曾误匹配为首页周常任务;成就页还显示顶部进度宝箱 | 首页任务增加选中的日常/周常导航标志。顶部宝箱是否纳入领取范围仍待确认 | +| 友情商店 | 可以从合作模式打开,也能从保卫宠物商城的友情商店页签进入;关闭回原玩法 | 复用同一商店节点,保留主页面来源,避免固定返回合作模式 | +| 公会商城 | 实际页签贡献商店、龙鳞商店,使用各自顶部余额;商品每份产出与可购买份数不同 | 先读价格、剩余份数和每份产出,再按优先级购买。截图中的数量只作为样例 | +| 远征、公会对决、Boss | 远征大厅为弹框,右上关闭回公会;对决奖励另有胜负奖励页签;Boss财宝弹框叫击杀宝箱 | 补齐返回关系;只处理已要求的任务奖励和全部领取,不扩展其他页签、升级上限 | +| 公会祝福 | 底部有升级操作按钮,底部导航也有升级页签 | 区分操作按钮与页签,材料和操作结果另行验证 | + +商城仍是一张长滚动页面,进入后可能停在之前滚动的位置。英雄招募、图腾寻宝、每日商店和金币应由栏目定位器负责;不能把同屏两栏都显示理解为两个独立页面。图腾两卡的免费按钮带视频图标,每日商店首格免费招募券、600金币刷新及金币首张免费入口均已看到,本轮没有领取或刷新。 + +## 本次已经完成的程序优化 + +- 页面识别支持更具体页签覆盖其容器、弹框内页签优先于后方主页面;对无关页面的多个匹配仍返回歧义。 +- 外观相同的进度奖励弹框只有在确认进入来源后才区分。仅有上一页猜测,或未知来源,不能消除无关页面的歧义。 +- 补充当前活动标题、选中页签和稳定标签模板;避免使用动画、临时通知作为唯一识别证据。 +- 新增只读地图核查和按入口分组的任务预览。检查重复ID、缺失父节点/模板/脚本、循环层级、任务落入禁用分支;展示尚未实现的执行器、缺失识别和资源规则。 +- 保留17个既有脚本。预览明确标注它们自行从首页导航;迁移完成前,不能先把它们送到子页再调用。 + +配置和入口:`workflows/page_map.json`、`automation/pages.py`、`automation/planning.py`、`inspect_page.py`、`plan_tasks.py`。 + +```bash +# 只核查配置,不截图、不点鼠标 +.venv/bin/python plan_tasks.py --audit +# 按首页、商城、领地、公会分组列出任务及缺口 +.venv/bin/python plan_tasks.py +.venv/bin/python plan_tasks.py --page guild +# 仅查看延期或按命令执行的任务,不执行这些任务 +.venv/bin/python plan_tasks.py --include-deferred --include-manual +# 已保存截图的页面识别;相同弹框需要已经确认的进入来源 +.venv/bin/python inspect_page.py --image local/page_audit/territory_rank_progress.png --previous-page territory.rank.board +``` + +默认预览中的任务是开发清单,不是每日一键执行清单。列表中待实现任务即使已有页面模板,也不能实际领奖。 + +## 后续开发顺序与验收 + +| 优先级 | 工作 | 验收标准 | +| --- | --- | --- | +| P0 | 公共导航:页面确认、入口/返回定位、来源历史、动态活动实例、弹框关闭 | 从已知页正确进入和返回;未知、遮挡或窗口移动时停止;相同弹框与商店不返回错误主页面 | +| P1 | 公共任务执行器:滚动领取列表、免费商品、签到、图标奖励列表 | 每次操作后重新识别,适应已领项重排;只点可领目标;确认奖励或完成状态;列表边界和无进展时结束 | +| P1首批 | 祈愿任务与免费补给、招募冲刺礼包和任务、寻宝任务和免费礼包、公会任务与对决任务奖励 | 同一入口集中处理,逐项测试可领取、已领完、无红点分支;不处理前往、付费兑换及排除的页签 | +| P2 | 共用广告流程和日/周/活动期记录 | 有免广告卡直接领;无卡等待视频真实结束并正确返回;失败不能记为成功,重启不重复赠送或领奖 | +| P3 | 专用货币购买执行器,再接祝福升级 | 区分余额、价格、购买份数和每份产出;确认购买结果并重读库存和余额;不足不买,按已确认优先级执行 | +| P4 | 季节活动适配与补齐未出现状态,然后独立程序设置和打包 | 活动实例更换后次数记录正确;Mac与Windows分别完成窗口、缩放、输入实测;模型Key在设置中填写 | + +P0完成后,先把一个已验证脚本拆成本页任务并接入导航,确认行为相同,再迁移其余脚本。列表、免费和签到做成共用执行器,各任务配置入口、状态、次数和返回方式,避免为49个新任务分别复制一套点击逻辑。 + +调度按首页→商城→领地→公会分组。同一入口的页签连做,例如特惠六页、公会商城两页;同一商店免费和购买分成两个任务,但共用一次进入。奖励、购买、扫荡和独立打造分别记录;手动扫荡和机关打造只响应命令。 + +购买规则继续按已确认内容执行:贡献商店合作券→黄金罗盘→白银罗盘,最多7份/周、2份/日、10份/日;龙鳞商店龙晶→龙血;巅峰商店藏品碎片→洗炼石→超凡宝锤;宠物商店只买红色3200随机宠物碎片。友情商店每日洗炼石1份、体力2份,每周星愿币2份。所有限额从剩余库存和记录补差,不能每次进来从头购买。 + +现有收矿后10秒、快速扫荡之间2秒属于用户指定规则,保留。其他页面等待改为轮询确认状态并设置超时,减少不必要固定等待;一次截图用于本次页面的多个检测,点击改变状态后重新截图。 + +当前采用本地截图和OpenCV模板识别,没有调用AI图片解析或模型API。后续可加入本地文字识别读取商品价格、余额和剩余次数;AI仅用于未知活动或样式变化的辅助分析,常规固定流程仍由已验证规则执行。 + +## 验证记录 + +- 46项自动化测试通过;补充任务分组错误检测后,5项规划测试再次通过。测试不操作游戏。 +- 51张本轮保存截图回放全部匹配预期页面,包括弹框、页签和商城滚动状态。外观相同的进度奖励另由来源历史测试验证,缺失来源时保留歧义。 +- 地图结构核查通过,无重复ID、缺失模板/脚本、循环层级或禁用分支任务;默认只读预览包含59项任务、30个入口分组,另7项延期或命令任务排除。 +- 差异格式检查通过。完整截图回放结果保存在忽略版本管理的 local/page_audit/replay_result.json。 +- 这些结果证明当前样式下的识别和配置一致性;本轮新任务的领奖、购买、广告实际执行仍未验证。 + +## 竞技场补充任务 + +新增领取竞技券,位于领地 → 巅峰决斗 → 竞技场,与已有竞技积分任务独立。用户要求实现流程后面确认;入口控件、资格、次数、周期、广告或资源要求、领取结果及返回步骤均暂留空,不纳入当前实现顺序或默认任务预览。 + +## 战令幸运星分支(后续完善) + +战令一键领取后可能获得幸运星;幸运星需要再点击才能领取。此分支按用户要求后续完善,现有 claim_offer.py 尚未处理。具体出现界面、点击目标、领奖成功标志和关闭/返回流程待采集,不因一键领取按钮变灰就认定幸运星已领取。 + +## 仍需核实的状态 + +1. 宠物战令是否优先一键领取;活动日礼包是否按视频标志区分广告分支。已经询问,确认前不运行这两个新增流程。 +2. 新任务领取后的弹框、按钮变化和列表重排;本轮只看到当前状态,没有点击验证。 +3. 无免广告卡的广告进入、结束、返回和领奖;机关额外广告次数。 +4. 未出现或本轮未巡视的观影、图腾冲刺、金沙游记、英雄集结新分活动,以及基金后续页签与月卡已购可领状态。 +5. 商品购买确认、每份数量、扣款、库存与限额变化;祝福升级结果;保卫宠物挑战顶部宝箱是否要领取。 +6. Windows端窗口与输入实测。不能从Mac成功推断跨平台已经完成。 + +本轮完整截图保存在忽略版本管理的 `local/page_audit/`,识别用裁剪模板在 `assets/map_audit_*.png`;测试保留最小的真实挑战页识别夹具,不依赖本地完整截图。静态截图回放和模拟测试无法替代领奖、视频或购买的实机结果验证。 diff --git a/inspect_page.py b/inspect_page.py new file mode 100644 index 0000000..b4bb908 --- /dev/null +++ b/inspect_page.py @@ -0,0 +1,45 @@ +"""Identify an open game page or plan a route, without clicking anything.""" +import argparse +import json +from pathlib import Path + +import numpy as np +from PIL import Image + +from automation.offers import MacGameDesktop +from automation.pages import PageMap + +ROOT = Path(__file__).resolve().parent + + +def main(): + parser = argparse.ArgumentParser(description='只读识别当前游戏页面或规划导航路径') + parser.add_argument('--image', type=Path, help='已裁剪的游戏内容截图;不能包含标题栏或桌面') + parser.add_argument('--from-page', dest='start', help='导航起点页面 ID') + parser.add_argument('--to-page', dest='target', help='导航终点页面 ID') + parser.add_argument('--previous-page', help='已确认的进入前页面;用于区分外观相同的弹框') + args = parser.parse_args() + page_map = PageMap(ROOT) + if args.start or args.target: + if not (args.start and args.target): + parser.error('--from-page 与 --to-page 必须同时提供') + print(json.dumps(page_map.route(args.start, args.target), ensure_ascii=False, indent=2)) + return 0 + if args.image: + with Image.open(args.image) as image: + if abs(image.width / image.height - 562 / 1002) > .035: + parser.error('图片必须仅包含竖屏游戏内容。') + frame = np.asarray(image.convert('RGB').resize((562, 1002), Image.Resampling.LANCZOS)) + else: + desktop = MacGameDesktop() + shot = desktop.screenshot() + frame = page_map.matcher.frame(shot, desktop.region_for(shot)) + if args.previous_page and args.previous_page not in page_map.pages: + parser.error('未知的进入前页面 ID。') + result = page_map.identify(frame, previous_page=args.previous_page) + print(json.dumps(result, ensure_ascii=False, indent=2)) + return 0 if result['status'] == 'identified' else 1 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/plan_tasks.py b/plan_tasks.py new file mode 100644 index 0000000..5460bfc --- /dev/null +++ b/plan_tasks.py @@ -0,0 +1,28 @@ +"""Audit the map and preview grouped tasks without screenshots or clicks.""" +import argparse +import json +from pathlib import Path + +from automation.planning import PAGE_ORDER, TaskPlanner + +ROOT = Path(__file__).resolve().parent + + +def main(): + parser = argparse.ArgumentParser(description='核查页面地图与任务清单,预览按页面分组的开发计划;不操作游戏') + parser.add_argument('--audit', action='store_true', help='只输出结构核查结果') + parser.add_argument('--page', choices=PAGE_ORDER, help='只显示指定入口页面任务') + parser.add_argument('--include-deferred', action='store_true', help='显示延期完善任务') + parser.add_argument('--include-manual', action='store_true', help='显示仅按明确命令执行的任务') + args = parser.parse_args() + data = json.loads((ROOT / 'workflows/page_map.json').read_text(encoding='utf-8')) + planner = TaskPlanner(data, ROOT) + audit = planner.audit() + result = audit if args.audit or not audit['valid'] else { + 'audit': audit, **planner.plan(args.include_deferred, args.include_manual, args.page)} + print(json.dumps(result, ensure_ascii=False, indent=2)) + return 0 if audit['valid'] else 1 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/tests/fixtures/pet_challenge_identity.png b/tests/fixtures/pet_challenge_identity.png new file mode 100644 index 0000000..24eac54 Binary files /dev/null and b/tests/fixtures/pet_challenge_identity.png differ diff --git a/tests/test_pages.py b/tests/test_pages.py new file mode 100644 index 0000000..928b12a --- /dev/null +++ b/tests/test_pages.py @@ -0,0 +1,107 @@ +import copy +import unittest +from pathlib import Path + +import numpy as np +from PIL import Image + +from automation.pages import PageMap + +ROOT = Path(__file__).resolve().parent.parent + + +class PageTests(unittest.TestCase): + def setUp(self): + self.page_map = PageMap(ROOT) + + def frame(self, *page_ids): + image = Image.new('RGB', (562, 1002), (35, 50, 70)) + for page_id in page_ids: + for spec in self.page_map.pages[page_id]['recognition'][0]: + with Image.open(ROOT / 'assets' / spec['template']) as template: + x, y = spec['search'][:2] + image.paste(template.convert('RGB'), (x + 4, y + 4)) + return np.asarray(image) + + def test_primary_pages_are_distinct(self): + for page_id in ('home', 'shop', 'heroes', 'king', 'territory', 'guild'): + with self.subTest(page=page_id): + result = self.page_map.identify(self.frame(page_id)) + self.assertEqual(result['status'], 'identified') + self.assertEqual(result['page']['id'], page_id) + + def test_white_or_darkened_frame_is_not_treated_as_home(self): + self.assertEqual(self.page_map.identify(np.full((1002, 562, 3), 255, dtype=np.uint8))['status'], 'unknown') + dark = (self.frame('home').astype(float) * .35).astype(np.uint8) + self.assertEqual(self.page_map.identify(dark)['status'], 'unknown') + + def test_overlay_has_priority_and_does_not_guess_its_parent(self): + result = self.page_map.identify(self.frame('shop', 'reward')) + self.assertEqual(result['page']['id'], 'reward') + self.assertIsNone(self.page_map.pages['reward']['parent']) + + def test_duplicate_identity_reports_ambiguity(self): + duplicate = copy.deepcopy(self.page_map.pages['territory']) + duplicate['id'] = 'another_territory' + self.page_map.pages[duplicate['id']] = duplicate + result = self.page_map.identify(self.frame('territory')) + self.assertEqual(result['status'], 'ambiguous') + self.assertIsNone(result['page']) + + def test_specific_tab_supersedes_matching_overlay_and_background(self): + container = copy.deepcopy(self.page_map.pages['reward']) + container['id'] = 'test.container' + self.page_map.pages[container['id']] = container + # Keep the generic reward out of this fixture: it has no known parent. + self.page_map.pages['reward']['recognition'] = [] + tab = copy.deepcopy(container) + tab.update(id='test.tab', parent='test.container', kind='tab') + self.page_map.pages[tab['id']] = tab + result = self.page_map.identify(self.frame('shop', 'test.tab')) + self.assertEqual(result['page']['id'], 'test.tab') + self.assertEqual(result['status'], 'identified') + + def test_territory_to_recruit_route_includes_home_and_shop(self): + route = self.page_map.route('territory', 'recruit.lamp') + self.assertEqual([edge['to'] for edge in route], ['home', 'shop', 'recruit.lamp']) + self.assertIn('condition', route[-1]) + + def test_unverified_paths_are_excluded(self): + with self.assertRaises(ValueError): + self.page_map.route('home', 'guild.boss') + with self.assertRaises(ValueError): + self.page_map.route('reward', 'home') + + def test_shared_progress_popup_requires_known_origin(self): + frame = self.frame('planet.progress') + self.assertEqual(self.page_map.identify(frame)['status'], 'ambiguous') + self.assertEqual(self.page_map.identify(frame, previous_page='territory.rank.board')['page']['id'], + 'territory.rank.progress') + self.assertEqual(self.page_map.identify(frame, previous_page='planet.rank')['page']['id'], + 'planet.progress') + self.assertEqual(self.page_map.identify(frame, previous_page='home')['status'], 'ambiguous') + + def test_mode_selection_uses_its_distinct_card_label(self): + for page_id in ('coop.selection', 'arena.selection'): + with self.subTest(page=page_id): + result = self.page_map.identify(self.frame(page_id)) + self.assertEqual(result['page']['id'], page_id) + + def test_pet_weekly_challenge_is_not_home_weekly_tasks(self): + # Actual audit pixels retain the similar task title that previously + # matched home weekly tasks; the selected navigation label differs. + frame = np.asarray(Image.open(ROOT / 'tests/fixtures/pet_challenge_identity.png').convert('RGB')) + result = self.page_map.identify(frame) + self.assertEqual(result['page']['id'], 'coop.pet.challenge.weekly') + self.assertNotIn('tasks.weekly', [p['id'] for p in result['candidates']]) + + def test_history_does_not_resolve_unrelated_matches(self): + duplicate = copy.deepcopy(self.page_map.pages['territory']) + duplicate.update(id='test.unknown_territory', parent='home') + self.page_map.pages[duplicate['id']] = duplicate + result = self.page_map.identify(self.frame('territory'), previous_page='home') + self.assertEqual(result['status'], 'ambiguous') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_planning.py b/tests/test_planning.py new file mode 100644 index 0000000..f85a83e --- /dev/null +++ b/tests/test_planning.py @@ -0,0 +1,59 @@ +import copy +import json +import unittest +from pathlib import Path + +from automation.planning import PAGE_ORDER, TaskPlanner + +ROOT = Path(__file__).resolve().parents[1] + + +class PlanningTests(unittest.TestCase): + def setUp(self): + self.data = json.loads((ROOT / 'workflows/page_map.json').read_text()) + self.planner = TaskPlanner(self.data, ROOT) + + def test_map_and_task_references_are_valid(self): + self.assertTrue(self.planner.audit()['valid'], self.planner.audit()['issues']) + + def test_disabled_ancestor_and_cycles_are_rejected(self): + data = copy.deepcopy(self.data) + page = next(p for p in data['pages'] if p['id'] == 'guild.store') + page['automation'] = {'enabled': False} + issues = TaskPlanner(data, ROOT).audit()['issues'] + self.assertTrue(any('disabled ancestor guild.store' in issue for issue in issues)) + page['parent'] = 'guild.store.contribution' + self.assertTrue(any('cyclic parent' in issue for issue in TaskPlanner(data, ROOT).audit()['issues'])) + data['planned_tasks'][0]['group_page'] = 'missing_group' + self.assertTrue(any('unknown group page missing_group' in issue + for issue in TaskPlanner(data, ROOT).audit()['issues'])) + + def test_manual_and_deferred_tasks_are_not_in_default_plan(self): + plan = self.planner.plan() + ids = {row['id'] for row in plan['tasks']} + self.assertNotIn('sweep', ids) + self.assertNotIn('wall_command_build', ids) + self.assertNotIn('movie_daily_rewards', ids) + expanded = self.planner.plan(True, True) + self.assertTrue({'sweep', 'wall_command_build', 'movie_daily_rewards'} <= {r['id'] for r in expanded['tasks']}) + + def test_shared_store_keeps_two_tasks_and_legacy_home_contract(self): + plan = self.planner.plan() + hub = next(group for group in plan['visit_groups'] if group['hub'] == 'guild.store') + self.assertEqual(set(hub['tasks']), {'guild_contribution_store_purchases', 'guild_dragon_scale_store_purchases'}) + legacy = next(row for row in plan['tasks'] if row['id'] == 'recruit') + self.assertEqual(legacy['script_start'], 'home') + self.assertEqual(legacy['navigation_mode'], 'legacy_script_owns_navigation') + + def test_page_order_blockers_and_config_are_preserved(self): + before = copy.deepcopy(self.data) + rows = self.planner.plan()['tasks'] + groups = [PAGE_ORDER.index(row['group_page']) for row in rows] + self.assertEqual(groups, sorted(groups)) + self.assertTrue(all('任务执行器尚未实现' in row['blockers'] for row in rows if row['implementation'] == 'planned')) + self.assertEqual(self.data, before) + self.assertTrue(all(r['group_page'] == 'guild' for r in self.planner.plan(group_page='guild')['tasks'])) + + +if __name__ == '__main__': + unittest.main() diff --git a/workflows/page_map.json b/workflows/page_map.json new file mode 100644 index 0000000..693549a --- /dev/null +++ b/workflows/page_map.json @@ -0,0 +1,10404 @@ +{ + "schema_version": 1, + "game": "永远的蔚蓝星球", + "updated_at": "2026-10-06 01:14:17 CST", + "platform_verified": "macOS", + "coordinate_system": { + "normalized_size": [ + 562, + 1002 + ], + "click_points": "游戏内容区域内 0..1 坐标;每次操作前重新定位窗口;标题栏不属于内容区域。" + }, + "status_legend": { + "live_verified": "本次查看且验证主要页面进入与返回", + "workflow_verified": "从现有脚本与此前实机记录提取,本次未逐项复测", + "documented": "用户说明或截图已记录", + "dynamic": "临时活动入口,当前样式与存在性待验证", + "pending": "内部页面、识别模板或返回关系待验证" + }, + "execution_policy": [ + "地图与 inspect_page.py 只识别和规划,不发送鼠标动作。", + "路线是候选步骤,点击后必须重新识别,不能假设每个动作一定抵达预期节点。", + "未知、多个页面同样匹配、遮挡或窗口比例变化时停止导航。", + "奖励弹层和雇佣等弹框需保留来源页面历史;不能从共同装饰猜父页面。", + "不同临时活动及不同神灯卡片应记录实例 ID;固定节点仅描述共用结构。", + "暂不自动走 pending 或 documented 路径;排除购买、强化、招募和开始战斗动作。", + "用户已确认:已配置领奖任务需要广告时,有免广告卡直接领取,否则自动看完广告再领取;广告共用流程尚未实现与实机验证。" + ], + "pages": [ + { + "id": "home", + "name": "首页", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "home.png", + "search": [ + 150, + 730, + 410, + 865 + ] + } + ] + ], + "note": "", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "shop", + "name": "商城", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "map_shop_divider.png", + "search": [ + 120, + 195, + 440, + 250 + ] + } + ] + ], + "note": "保留滚动位置;内部栏目不是独立一级页面。", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "heroes", + "name": "英雄", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "map_heroes_label.png", + "search": [ + 110, + 360, + 320, + 440 + ] + } + ] + ], + "note": "仅采集英雄总览;详情页、宠物页待验证。", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "king", + "name": "国王", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "map_king_equipment.png", + "search": [ + 190, + 510, + 380, + 595 + ] + }, + { + "template": "map_king_dismantle.png", + "search": [ + 390, + 810, + 525, + 900 + ] + } + ] + ], + "note": "当前识别仅覆盖装备页签布局;其他页签待采集。", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "territory", + "name": "领地", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "territory_rat_house.png", + "search": [ + 15, + 440, + 220, + 570 + ] + } + ], + [ + { + "template": "map_audit_territory_hall_label.png", + "search": [ + 169, + 650, + 283, + 710 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_territory_atlas_label.png", + "search": [ + 382, + 590, + 465, + 650 + ], + "threshold": 0.9 + } + ] + ], + "note": "", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "guild", + "name": "公会", + "parent": null, + "kind": "page", + "status": "live_verified", + "recognition": [ + [ + { + "template": "map_guild_store.png", + "search": [ + 35, + 480, + 190, + 580 + ] + } + ] + ], + "note": "", + "evidence": [ + "2026-10-05 本次逐页查看;仅打开与返回,没有执行领奖或资源消耗。" + ] + }, + { + "id": "offer.monthcard", + "name": "特惠/超值月卡", + "parent": "home", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "offer_monthcard.png", + "search": [ + 150, + 0, + 430, + 110 + ] + }, + { + "template": "offer_back.png", + "search": [ + 15, + 905, + 125, + 985 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/offer_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md", + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:09:35 CST 用户补充购买价格、基金页签进度或奖励图标状态", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页", + "2026-10-05 18:24:13 CST 用户确认月卡领取后续费按钮及两类战令无一键领取、可滚动逐项领取" + ], + "tab_group": "offer_tab_group", + "tab_order": 1, + "tab_label": "超值月卡", + "automation_scope": "用户要求自动领取已符合条件的奖励;购买和解锁仅作为资格条件,不包含自动购买。", + "reward_rules": { + "reset": { + "frequency": "daily", + "local_time": "00:00", + "source": "user_confirmed" + }, + "rewards": [ + { + "name": "免广告卡对应奖励", + "eligible_when": "已购买免广告卡", + "position": "按钮位置固定;具体模板与坐标待采集", + "claims_per_day": 1, + "unowned_button": { + "text": "18 元", + "price_cny": 18, + "action": "skip_purchase_button" + }, + "claimed_button": { + "text": "续费:18 元", + "action": "skip_renewal_button", + "state": "daily_reward_claimed" + }, + "claim_button_text": null + }, + { + "name": "福利月卡奖励", + "eligible_when": "已购买福利月卡", + "position": "按钮位置固定;具体模板与坐标待采集", + "claims_per_day": 1, + "unowned_button": { + "text": "30 元", + "price_cny": 30, + "action": "skip_purchase_button" + }, + "claimed_button": { + "text": "续费:30 元", + "action": "skip_renewal_button", + "state": "daily_reward_claimed" + }, + "claim_button_text": null + } + ], + "pending_confirmation": [ + "可领取时的按钮文案与识别模板待采集" + ] + }, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_actual_monthcard.png", + "captured_at": "2026-10-06 00:16:55 CST", + "reward_actions_tested": false + } + }, + { + "id": "offer.battlepass", + "name": "特惠/赏金战令", + "parent": "home", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "offer_page.png", + "search": [ + 20, + 20, + 320, + 125 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/offer_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md", + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页" + ], + "tab_group": "offer_tab_group", + "tab_order": 2, + "tab_label": "战令", + "automation_scope": "用户要求自动领取已符合条件的奖励;购买和解锁仅作为资格条件,不包含自动购买。", + "reward_rules": { + "reward_progress": "消耗一定体力后产生可领取奖励", + "claim": "沿用已实现的一键领取流程", + "source": "user_confirmed", + "post_claim_branches": [ + { + "id": "lucky_star", + "name": "幸运星额外领取", + "trigger": "一键领取后可能获得幸运星", + "required_action": "出现幸运星时需要再点击才能领取", + "status": "user_confirmed_deferred_not_implemented", + "implemented": false, + "confirmed_at": "2026-10-06 01:14:17 CST", + "source": "user_description", + "pending_confirmation": [ + "幸运星出现时的界面、位置及点击目标", + "点击后的奖励反馈、完成状态及关闭或返回流程" + ] + } + ] + }, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_monthcard.png", + "captured_at": "2026-10-06 00:16:28 CST", + "reward_actions_tested": false + } + }, + { + "id": "offer.weekcard", + "name": "特惠/特权周卡", + "parent": "home", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_offer_weekcard.png", + "search": [ + 31, + 92, + 295, + 181 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页", + "2026-10-05 18:19:12 CST 用户确认周卡签到资格或基金奖励状态" + ], + "tab_group": "offer_tab_group", + "tab_order": 3, + "tab_label": "特惠周卡", + "automation_scope": "用户要求每日签到;未购买周卡也可签到。", + "reward_rules": { + "reset": { + "frequency": "daily", + "local_time": "00:00", + "source": "user_confirmed" + }, + "claim": "在列表中点击签到", + "pending_confirmation": [ + "签到按钮与已领取状态的识别模板待实机采集" + ], + "purchase_required": false, + "claim_button_text": "签到", + "claimed_button_text": "已领取", + "claim_when": "发现可用的签到按钮", + "skip_when": "显示已领取" + }, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_weekcard.png", + "captured_at": "2026-10-06 00:16:59 CST", + "reward_actions_tested": false + }, + "aliases": [ + "特惠周卡" + ], + "observed_tab_label": "特权周卡" + }, + { + "id": "offer.diamond_fund", + "name": "特惠/钻石基金", + "parent": "home", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_offer_diamond_fund.png", + "search": [ + 31, + 26, + 294, + 118 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:09:35 CST 用户补充购买价格、基金页签进度或奖励图标状态", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页", + "2026-10-05 18:19:12 CST 用户确认周卡签到资格或基金奖励状态" + ], + "tab_group": "offer_tab_group", + "tab_order": 4, + "tab_label": "钻石基金", + "automation_scope": "用户要求自动领取已符合条件的奖励;购买和解锁仅作为资格条件,不包含自动购买。", + "reward_rules": { + "internal_tabs": { + "cardinality": "dynamic", + "names": [ + "钻石基金 1", + "钻石基金 2", + "钻石基金 3" + ], + "user_names": [ + "砖石基金 1", + "砖石基金 2", + "砖石基金 3" + ], + "inventory_status": "first_three_user_confirmed_later_unknown", + "discovery_rule": "按当前页面实际显示的页签逐个处理,关卡范围仅记录用户说明,不用于推算未确认的后续页签。", + "visibility_ranges": [ + { + "stage_lt": 100, + "tabs": [ + "offer.diamond_fund.tier1" + ] + }, + { + "stage_gt": 100, + "stage_lt": 200, + "tabs": [ + "offer.diamond_fund.tier1", + "offer.diamond_fund.tier2" + ] + }, + { + "stage_gt": 200, + "stage_lt": 260, + "tabs": [ + "offer.diamond_fund.tier1", + "offer.diamond_fund.tier2", + "offer.diamond_fund.tier3" + ] + } + ], + "pending_confirmation": [ + "恰好100关、200关时新增页签的显示边界", + "260关及之后的页签范围" + ] + }, + "reward_progress": "每个内部页签是关卡与对应奖励列表,已购买解锁且到达指定关卡后可领", + "claim_target": "列表最后一列的钻石", + "locked_marker": "未购买解锁时钻石右上角有小锁头", + "skip_when": "奖励未解锁、已领取或未达到关卡", + "pending_confirmation": [ + "奖励图标状态的识别模板待实机采集", + "未覆盖进度的页签规则;按实际可见页签发现处理" + ], + "claimed_marker": "钻石奖励图标上显示对号", + "unreached_marker": "未达到关卡的奖励覆盖灰色蒙版", + "claim_when": "已购买解锁且达到指定关卡,钻石奖励无小锁头、无已领取对号、无未达成灰色蒙版", + "skip_when_any": [ + "未解锁小锁头", + "已领取对号", + "未达关卡灰色蒙版" + ], + "state_note": "没有对号只说明未领取;仍需排除锁头与未达成灰色蒙版,不假设可领取钻石具有高亮。" + }, + "user_label": "砖石基金", + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_tabs_scrolled.png", + "captured_at": "2026-10-06 00:17:41 CST", + "reward_actions_tested": false + } + }, + { + "id": "offer.diamond_fund.tier1", + "name": "钻石基金 1", + "user_label": "砖石基金 1", + "parent": "offer.diamond_fund", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认基金内部页签;可见性随关卡进度变化,具体识别与切换控件尚未采集。", + "reward_rules_ref": "offer.diamond_fund", + "evidence": [ + "2026-10-05 18:09:35 CST 用户确认前三个基金页签名称与关卡范围" + ] + }, + { + "id": "offer.diamond_fund.tier2", + "name": "钻石基金 2", + "user_label": "砖石基金 2", + "parent": "offer.diamond_fund", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_offer_diamond_fund.png", + "search": [ + 31, + 26, + 294, + 118 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_offer_diamond_fund_tier2.png", + "search": [ + 302, + 803, + 451, + 873 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "reward_rules_ref": "offer.diamond_fund", + "evidence": [ + "2026-10-05 18:09:35 CST 用户确认前三个基金页签名称与关卡范围" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_tabs_scrolled.png", + "captured_at": "2026-10-06 00:17:41 CST", + "reward_actions_tested": false + } + }, + { + "id": "offer.diamond_fund.tier3", + "name": "钻石基金 3", + "user_label": "砖石基金 3", + "parent": "offer.diamond_fund", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认基金内部页签;可见性随关卡进度变化,具体识别与切换控件尚未采集。", + "reward_rules_ref": "offer.diamond_fund", + "evidence": [ + "2026-10-05 18:09:35 CST 用户确认前三个基金页签名称与关卡范围" + ] + }, + { + "id": "offer.relic_pass", + "name": "特惠/遗迹战令", + "parent": "home", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_offer_relic_pass.png", + "search": [ + 33, + 65, + 296, + 159 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:09:35 CST 用户补充购买价格、基金页签进度或奖励图标状态", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页", + "2026-10-05 18:24:13 CST 用户确认月卡领取后续费按钮及两类战令无一键领取、可滚动逐项领取" + ], + "tab_group": "offer_tab_group", + "tab_order": 5, + "tab_label": "遗迹战令", + "automation_scope": "用户要求自动领取已符合条件的奖励;购买和解锁仅作为资格条件,不包含自动购买。", + "reward_rules": { + "reward_progress": "参与遗迹夺宝后获得奖励", + "claim_target": "列表第一列的奖励图标", + "pending_confirmation": [ + "未达成图标状态和识别模板", + "列表边界、滚动步长及领取后弹框待采集", + "其他奖励列的处理范围" + ], + "reward_icon": { + "shape": "small_square", + "content": "不同奖励图标,无文字按钮", + "layout": "列表各列内图标位置固定;滚动后的可见位置需重新定位", + "eligible_marker": "可领取的奖励项高亮", + "claimed_marker": "小图标上显示对号" + }, + "claim_when": "第一列奖励项高亮且没有已领取对号", + "has_bulk_claim": false, + "claim_mode": "individual_reward_icons", + "scrollable": true, + "scroll_direction": "vertical", + "traversal": "上下滚动奖励列表,逐项领取第一列高亮且无对号的奖励" + }, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_relic_pass.png", + "captured_at": "2026-10-06 00:19:07 CST", + "reward_actions_tested": false + } + }, + { + "id": "offer.pet_pass", + "name": "特惠/宠物战令", + "parent": "home", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_offer_pet_pass.png", + "search": [ + 32, + 45, + 289, + 137 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:00:38 CST 用户确认特惠六个页签及各自领奖规则", + "2026-10-05 18:09:35 CST 用户补充购买价格、基金页签进度或奖励图标状态", + "2026-10-05 18:19:12 CST 用户确认特惠统一左下箭头返回首页", + "2026-10-05 18:24:13 CST 用户确认月卡领取后续费按钮及两类战令无一键领取、可滚动逐项领取" + ], + "tab_group": "offer_tab_group", + "tab_order": 6, + "tab_label": "宠物战令", + "automation_scope": "用户要求自动领取已符合条件的奖励;购买和解锁仅作为资格条件,不包含自动购买。", + "reward_rules": { + "reward_progress": "参与保卫宠物后获得奖励", + "claim_target": "列表第一列的奖励图标", + "pending_confirmation": [ + "未达成图标状态和识别模板", + "列表边界、滚动步长及领取后弹框待采集", + "其他奖励列的处理范围" + ], + "reward_icon": { + "shape": "small_square", + "content": "不同奖励图标,无文字按钮", + "layout": "列表各列内图标位置固定;滚动后的可见位置需重新定位", + "eligible_marker": "可领取的奖励项高亮", + "claimed_marker": "小图标上显示对号" + }, + "claim_when": "第一列奖励项高亮且没有已领取对号", + "has_bulk_claim": true, + "claim_mode": "individual_reward_icons_until_bulk_policy_confirmed", + "scrollable": true, + "scroll_direction": "vertical", + "traversal": "上下滚动奖励列表,逐项领取第一列高亮且无对号的奖励", + "observed_bulk_button_text": "一键领取", + "observed_bulk_button_state": "灰色", + "bulk_claim_policy": "pending_user_confirmation" + }, + "user_rule_label": "宠物战力(规则描述中的称呼;按页签清单记为宠物战令,界面文字待核对)", + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/offer_pet_pass.png", + "captured_at": "2026-10-06 00:19:11 CST", + "reward_actions_tested": false + } + }, + { + "id": "idle", + "name": "挂机奖励", + "parent": "home", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "idle_dialog_title.png", + "search": [ + 170, + 260, + 400, + 380 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/idle_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "tasks.daily", + "name": "日常任务", + "parent": "home", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "tasks_daily_title.png", + "search": [ + 130, + 75, + 430, + 190 + ] + }, + { + "template": "map_audit_tasks_daily_tab_label.png", + "search": [ + 311, + 867, + 392, + 921 + ], + "threshold": 0.9 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/task_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "tasks.weekly", + "name": "周常任务", + "parent": "home", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "tasks_weekly_title.png", + "search": [ + 130, + 75, + 430, + 190 + ] + }, + { + "template": "map_audit_tasks_weekly_tab_label.png", + "search": [ + 423, + 870, + 502, + 918 + ], + "threshold": 0.9 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/task_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "mail", + "name": "邮件", + "parent": "home", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "mail_title.png", + "search": [ + 130, + 80, + 440, + 200 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/mail_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rally", + "name": "英雄集结", + "parent": "home", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "hero_rally_title.png", + "search": [ + 120, + 0, + 450, + 130 + ] + } + ] + ], + "note": "两项现有领奖流程已有配置和实机记录;另登记槐萌祈缘、岁岁平安、骊珠寻珍、剑守长城。先处理岁岁平安签到和骊珠寻珍参与,新增节点未实机采集。", + "evidence": [ + "workflows/sword_gift_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md", + "2026-10-05 20:28:58 CST 用户确认另外四个分活动及两项处理范围" + ] + }, + { + "id": "rally.huai", + "name": "槐萌祈缘", + "parent": "rally", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "仅记录入口,用户明确暂不处理。", + "evidence": [ + "2026-10-05 20:28:58 CST 用户确认英雄集结分活动及处理范围" + ], + "automation": { + "enabled": false, + "status": "user_deferred" + } + }, + { + "id": "rally.sign_in", + "name": "岁岁平安", + "parent": "rally", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "用户确认入口和流程;页面与按钮模板尚未采集。", + "evidence": [ + "2026-10-05 20:28:58 CST 用户确认英雄集结分活动及处理范围", + "用户后续确认岁岁平安签到总天数为14天,纠正之前154天表述" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented" + }, + "reusable_pattern": "seasonal_daily_sign_in", + "reward_rules": { + "frequency": "daily", + "total_days_confirmation": "user_confirmed", + "claimed_marker": "对号", + "available_marker_text": "可领取", + "available_marker_location": "对应卡片左上方", + "claim_target": "可领取提示左下方对应卡片,不将提示文字本身视为点击目标", + "claimed_marker_action": "跳过已显示对号的卡片", + "pending_confirmation": [ + "对号、卡片和可领取提示及领奖结果识别模板" + ], + "total_days": 14 + }, + "exit_to_parent": { + "target": "rally", + "description": "点击右上角关闭按钮", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "rally.search", + "name": "骊珠寻珍", + "parent": "rally", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "用户确认入口和流程;页面与按钮模板尚未采集。", + "evidence": [ + "2026-10-05 20:28:58 CST 用户确认英雄集结分活动及处理范围", + "用户后续确认骊珠寻珍金币为活动专用金币,可理解为剩余抽奖次数" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented" + }, + "reward_rules": { + "entry_red_dot_required": true, + "skip_animation": { + "text": "跳过动画", + "location": "页面下方小字", + "required_checked": true, + "action": "先识别勾选状态,未勾选时才点击,不重复切换已勾选项" + }, + "free_button_text": "免费", + "free_action": "存在免费按钮时点击一次并确认结果,再识别参与按钮及余额", + "participation_buttons": { + "single": { + "text": "参与1次", + "location": "左侧", + "times": 1 + }, + "batch": { + "text": "参与5次", + "location": "右侧", + "times": 5 + } + }, + "balance_location": "参与按钮上显示的剩余金币数", + "balance_resource_type": "event_specific_draw_coin", + "cost_per_single": 1, + "cost_per_batch": 5, + "selection_rule": "剩余抽奖次数大于等于5时参与5次;大于0且小于5时参与1次;为0时停止", + "after_each_action": "确认结果并重新读取剩余数和参与按钮,不能按初次余额固定循环", + "stop_when": "剩余次数或数量为0", + "pending_confirmation": [ + "活动金币余额、跳过动画勾选状态、参与结果及按钮识别模板" + ], + "balance_quantity_meaning": "活动专用金币,可理解为剩余抽奖次数" + }, + "exit_to_parent": { + "target": "rally", + "description": "点击左下角返回箭头", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "rally.wall", + "name": "剑守长城", + "parent": "rally", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "仅记录入口,用户明确暂不处理。", + "evidence": [ + "2026-10-05 20:28:58 CST 用户确认英雄集结分活动及处理范围" + ], + "automation": { + "enabled": false, + "status": "user_deferred" + } + }, + { + "id": "rally.sword", + "name": "剑来献礼", + "parent": "rally", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "sword_gift_title.png", + "search": [ + 0, + 35, + 330, + 190 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/sword_gift_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rally.lizhu", + "name": "骊珠画卷", + "parent": "rally", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "lizhu_title.png", + "search": [ + 100, + 35, + 460, + 170 + ] + }, + { + "template": "lizhu_tasks_button.png", + "search": [ + 320, + 880, + 480, + 1002 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/lizhu_task_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rally.lizhu.tasks", + "name": "骊珠画卷任务", + "parent": "rally.lizhu", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "lizhu_activity_title.png", + "search": [ + 70, + 75, + 390, + 180 + ] + } + ], + [ + { + "template": "lizhu_daily_tab.png", + "search": [ + 270, + 790, + 480, + 900 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。 每日任务模板来自页签,自动识别范围仍需继续验证。", + "evidence": [ + "workflows/lizhu_task_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "recruit.lamp", + "name": "神灯召唤", + "parent": "shop", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "recruit_lamp_title.png", + "search": [ + 130, + 100, + 430, + 240 + ], + "threshold": 0.88 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。 内含神灯任务/神灯礼包页签;卡片位置、数量、红点动态变化。", + "evidence": [ + "workflows/recruit_signin.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rat", + "name": "狂鼠之家", + "parent": "territory", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "rat_house_page.png", + "search": [ + 315, + 80, + 550, + 235 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/mining_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rat.friends", + "name": "狂鼠之家好友列表", + "parent": "rat", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "feed_friends_title.png", + "search": [ + 210, + 85, + 350, + 180 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/feed_mice.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rat.friend", + "name": "好友矿场", + "parent": "rat.friends", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "feed_friend_home.png", + "search": [ + 0, + 875, + 140, + 1002 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/feed_mice.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "canteen", + "name": "食堂", + "parent": "territory", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "canteen_title.png", + "search": [ + 80, + 35, + 480, + 225 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/stamina_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "coop.selection", + "name": "合作模式选择", + "parent": "territory", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "cooperation_select_title.png", + "search": [ + 120, + 80, + 450, + 220 + ] + }, + { + "template": "map_audit_coop_choice.png", + "search": [ + 70, + 636, + 241, + 697 + ], + "threshold": 0.88 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/cooperation_ticket.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/coop_selection.png", + "captured_at": "2026-10-05 23:37:09 CST", + "reward_actions_tested": false + } + }, + { + "id": "coop", + "name": "合作模式", + "parent": "coop.selection", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "cooperation_page_title.png", + "search": [ + 150, + 45, + 430, + 165 + ] + } + ], + [ + { + "template": "map_audit_coop_shop_label.png", + "search": [ + 5, + 130, + 100, + 174 + ], + "threshold": 0.88 + }, + { + "template": "map_audit_coop_wave_label.png", + "search": [ + 223, + 290, + 341, + 332 + ], + "threshold": 0.88 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/cooperation_ticket.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/coop_audit.png", + "captured_at": "2026-10-05 23:37:36 CST", + "reward_actions_tested": false + } + }, + { + "id": "arena.selection", + "name": "巅峰决斗模式选择", + "parent": "territory", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "arena_select_title.png", + "search": [ + 145, + 85, + 415, + 205 + ] + }, + { + "template": "map_audit_arena_choice.png", + "search": [ + 84, + 637, + 227, + 697 + ], + "threshold": 0.88 + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/arena_points.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/peak_selection.png", + "captured_at": "2026-10-05 23:59:38 CST", + "reward_actions_tested": false + } + }, + { + "id": "arena", + "name": "竞技场", + "parent": "arena.selection", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "arena_page_title.png", + "search": [ + 175, + 0, + 390, + 100 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/arena_points.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ], + "pending_tasks": [ + "arena_ticket_claim" + ] + }, + { + "id": "play_hall", + "name": "玩法大厅", + "parent": "territory", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "play_hall_title.png", + "search": [ + 140, + 140, + 420, + 260 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/planet_mine.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "planet", + "name": "星球矿场", + "parent": "play_hall", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "planet_title.png", + "search": [ + 150, + 35, + 420, + 140 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/planet_mine.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "planet.rank", + "name": "星球矿场排行榜", + "parent": "planet", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "planet_rank_title.png", + "search": [ + 150, + 20, + 420, + 130 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/planet_mine.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "planet.progress", + "name": "星球矿场进度奖励", + "parent": "planet.rank", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "planet_progress_title.png", + "search": [ + 140, + 70, + 420, + 190 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/planet_mine.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ], + "shared_visual_group": "server_progress_rewards", + "recognition_note": "与另一排行榜的本服进度奖励外观相同,缺少已确认进入来源时保持歧义" + }, + { + "id": "planet.sweep", + "name": "星球矿场扫荡弹框", + "parent": "planet", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "planet_sweep_dialog.png", + "search": [ + 150, + 250, + 410, + 390 + ] + }, + { + "template": "planet_sweep_up.png", + "search": [ + 270, + 560, + 520, + 710 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/planet_mine.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "guild.altar", + "name": "红珍珠祭坛", + "parent": "guild", + "kind": "page", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "bargain_button.png", + "search": [ + 160, + 480, + 410, + 640 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。 当前识别依赖砍价按钮;按钮消失时需补充稳定标题模板。", + "evidence": [ + "workflows/guild_bargain.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "guild.donation", + "name": "每日捐献弹框", + "parent": "guild", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "donation_title.png", + "search": [ + 150, + 230, + 410, + 350 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/guild_donation.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "rat.hire", + "name": "一键雇佣弹框", + "parent": "rat", + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "rat_hire_dialog.png", + "search": [ + 135, + 220, + 430, + 360 + ] + } + ] + ], + "note": "从已有流程配置和此前实机记录整理;本次没有逐页重新打开。", + "evidence": [ + "workflows/mining_claim.json", + "docs/261004_1607-首页功能与日常任务梳理.md" + ] + }, + { + "id": "reward", + "name": "通用恭喜获得展示", + "parent": null, + "kind": "overlay", + "status": "workflow_verified", + "recognition": [ + [ + { + "template": "idle_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "idle_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "tasks_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "tasks_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "sweep_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "sweep_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "offer_reward.png", + "search": [ + 130, + 235, + 440, + 355 + ], + "threshold": 0.8 + }, + { + "template": "offer_dismiss.png", + "search": [ + 160, + 625, + 410, + 705 + ] + } + ], + [ + { + "template": "rat_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "rat_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "feed_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "feed_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "canteen_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "canteen_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "cooperation_reward.png", + "search": [ + 120, + 220, + 440, + 370 + ], + "threshold": 0.8 + }, + { + "template": "cooperation_dismiss.png", + "search": [ + 145, + 610, + 420, + 730 + ] + } + ], + [ + { + "template": "arena_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "arena_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "planet_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "planet_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "sword_gift_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "sword_gift_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "lizhu_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "lizhu_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "bargain_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "bargain_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "donation_reward.png", + "search": [ + 120, + 180, + 440, + 390 + ], + "threshold": 0.8 + }, + { + "template": "donation_dismiss.png", + "search": [ + 145, + 600, + 420, + 730 + ] + } + ], + [ + { + "template": "recruit_reward.png", + "search": [ + 100, + 180, + 460, + 400 + ], + "threshold": 0.78, + "max_color_difference": 40 + } + ] + ], + "note": "共同奖励外观不证明父页面。使用执行历史选择对应 dismiss 动作;无历史时先确认空白关闭提示,不能猜返回位置。", + "evidence": [] + }, + { + "id": "home.gold_trip", + "name": "金沙游记", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "首页左上季节活动;六个分活动入口已记录,先处理流沙赠礼、法老遗珍和驿站来信。左下箭头返回首页;识别和自动化尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 20:09:15 CST 用户确认六个分活动、三项处理范围和返回层级" + ], + "exit_to_home": { + "description": "点击左下角箭头返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "pending_confirmation": [ + "页面与入口识别模板" + ] + }, + { + "id": "gold_trip.treasure", + "name": "金顶夺宝", + "parent": "home.gold_trip", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "用户已确认入口;内部流程待后续完善。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围" + ], + "automation": { + "enabled": false, + "status": "user_deferred" + } + }, + { + "id": "gold_trip.letters", + "name": "驿站密使", + "parent": "home.gold_trip", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "流程来自用户说明,页面识别与执行尚未实现。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围", + "用户后续确认:名称为驿站密使;来信跳过已领取;翻牌按点我翻牌、奖励内容及剩余次数不足判断继续与停止" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented" + }, + "exit_to_parent": { + "target": "home.gold_trip", + "description": "点击弹框外或右上角X关闭", + "status": "documented", + "source": "user_confirmed" + }, + "aliases": [ + "驿站密信" + ], + "display_name_confirmation": "user_confirmed", + "reward_rules": { + "entry_red_dot_required": true, + "list_description": "来信列表(用户原文蓝信列表)", + "scrollable": true, + "claim_action": "点击未领取的来信条目", + "claimed_text": "已领取", + "unclaimed_marker": null, + "pending_confirmation": [ + "来信、已领取标志、领奖反馈及滚动和弹框模板" + ], + "unclaimed_rule": "跳过显示已领取的来信,点击其余未领取来信" + }, + "reusable_pattern": "seasonal_letter_gifts" + }, + { + "id": "gold_trip.roam", + "name": "圣迹漫游", + "parent": "home.gold_trip", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "用户已确认入口;内部流程待后续完善。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围" + ], + "automation": { + "enabled": false, + "status": "user_deferred" + } + }, + { + "id": "gold_trip.cards", + "name": "法老遗珍", + "parent": "home.gold_trip", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "流程来自用户说明,页面识别与执行尚未实现。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围", + "用户后续确认:名称为驿站密使;来信跳过已领取;翻牌按点我翻牌、奖励内容及剩余次数不足判断继续与停止", + "2026-10-05 20:17:23 CST 用户确认当前账号有免广告卡,无卡时的按钮和广告表现以后确认" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented" + }, + "exit_to_parent": { + "target": "home.gold_trip", + "description": "点击左下角箭头返回", + "status": "documented", + "source": "user_confirmed" + }, + "reusable_pattern": "seasonal_daily_flip_cards", + "reward_rules": { + "frequency": "daily", + "flips_per_day": 3, + "selection_order": "优先第一排从左到右,跳过已翻牌,继续处理仍可翻牌子", + "without_ad_free_card": { + "direct_flips": 1, + "ad_flips": 2, + "ad_policy_ref": "reward_ad_policy", + "visual_confirmation": { + "status": "deferred", + "reason": "当前账号有免广告卡,无卡时按钮及广告界面待以后出现该情况时确认" + } + }, + "with_ad_free_card": { + "direct_flips": 3 + }, + "pending_confirmation": [ + "每日重置方式、牌子及领奖结果识别模板", + "无免广告卡时的按钮文案和广告界面后续确认" + ], + "unflipped_text": "点我翻牌", + "flipped_state": "显示奖励内容", + "after_first_flip_text": "免费", + "stop_feedback_text": "剩余次数不足", + "completion_strategy": "根据当天已翻状态继续翻可翻牌子,直到不能翻牌;不强制再翻三个或重复点击已翻开的牌", + "after_first_flip_text_scope": "仅记录当前有免广告卡账号的表现,不据此推断无卡样式", + "account_context": { + "ad_free_card": true, + "source": "user_confirmed", + "confirmed_at": "2026-10-05 20:17:23 CST" + } + } + }, + { + "id": "gold_trip.sign_in", + "name": "流沙赠礼", + "parent": "home.gold_trip", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "流程来自用户说明,页面识别与执行尚未实现。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围", + "2026-10-05 20:17:23 CST 用户确认流沙赠礼可领取按钮领取后变成已领取" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented" + }, + "exit_to_parent": { + "target": "home.gold_trip", + "description": "点击左下角箭头返回", + "status": "documented", + "source": "user_confirmed" + }, + "reusable_pattern": "seasonal_daily_sign_in", + "tabs": [ + "gold_trip.sign_in.day15", + "gold_trip.sign_in.day23" + ], + "reward_rules": { + "frequency": "daily", + "claim_button_text": "可领取", + "default_tab": "由游戏按当前活动天数自动选择", + "tab_selection_strategy": "优先处理游戏自动选中的当前页签,不主动遍历两页", + "button_position": "当前天数的节点,每天可能变化;识别文字定位,不能固定点击坐标", + "auto_selected_example": { + "activity_day": 20, + "tab_text": "23天", + "is_observation": false + }, + "pending_confirmation": [ + "可领取与已领取按钮、动态节点、页签和领奖结果模板" + ], + "claimed_button_text": "已领取" + } + }, + { + "id": "gold_trip.supply", + "name": "驼铃补给", + "parent": "home.gold_trip", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "用户已确认入口;内部流程待后续完善。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认金沙游记分活动入口及处理范围" + ], + "automation": { + "enabled": false, + "status": "user_deferred" + } + }, + { + "id": "gold_trip.sign_in.day15", + "name": "15天", + "parent": "gold_trip.sign_in", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "流沙赠礼签到页签;由游戏按活动进度选择当前页签,当前天数节点显示可领取。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认流沙赠礼15天和23天两个页签", + "2026-10-05 20:17:23 CST 用户确认流沙赠礼可领取按钮领取后变成已领取" + ], + "reward_rules": { + "claim_button_text": "可领取", + "button_position": "当前天数节点,位置动态", + "claimed_button_text": "已领取" + }, + "exit_to_parent": { + "target": "home.gold_trip", + "description": "点击左下角箭头返回金沙游记", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "gold_trip.sign_in.day23", + "name": "23天", + "parent": "gold_trip.sign_in", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "流沙赠礼签到页签;由游戏按活动进度选择当前页签,当前天数节点显示可领取。", + "evidence": [ + "2026-10-05 20:09:15 CST 用户确认流沙赠礼15天和23天两个页签", + "2026-10-05 20:17:23 CST 用户确认流沙赠礼可领取按钮领取后变成已领取" + ], + "reward_rules": { + "claim_button_text": "可领取", + "button_position": "当前天数节点,位置动态", + "claimed_button_text": "已领取" + }, + "exit_to_parent": { + "target": "home.gold_trip", + "description": "点击左下角箭头返回金沙游记", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "home.activity", + "name": "活动", + "parent": "home", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "用户已确认四个底部页签、礼包三个页签和每日充值两个档位;活动从左下返回首页。识别模板、默认页签及按钮位置待实机验证。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 17:19:57 CST 用户确认页签结构及免费领取规则", + "2026-10-05 17:40:14 CST 用户确认活动统一左下返回" + ], + "exit_to_home": { + "description": "左下返回", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "home.rebate", + "name": "返利", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "左侧不定期出现;目前暂不处理,内部奖励、领取条件和返回方式暂不确认。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 17:47:39 CST 用户确认返利不定期出现且暂不处理" + ], + "appearance": "irregular", + "automation": { + "enabled": false, + "reason": "用户确认目前不需要处理返利。" + } + }, + { + "id": "home.movie", + "name": "观影", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "用户确认单页活动,点击中间按钮每日领取5次;有免广告卡直接领,否则看完广告再领,右上关闭返回首页。当前活动未出现,等再次出现后完善自动化。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 18:30:24 CST 用户确认观影规则、当前未出现及再次出现后完善" + ], + "appearance": "irregular", + "observed_availability": { + "present": false, + "source": "user_confirmed", + "as_of": "2026-10-05 18:30:24 CST" + }, + "reward_rules": { + "page_count": 1, + "claim_target": "页面中间按钮", + "frequency": "daily_when_activity_present", + "claims_per_day": 5, + "usual_consecutive_sign_in_days": 5, + "duration_qualifier": "一般出现后可连续签到5天,不作为所有轮次的固定期限", + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy" + }, + "exit_to_home": { + "description": "右上角关闭按钮", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "home.trial", + "name": "试炼", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "当前试炼入口及三个页签规则已记录,底部箭头返回首页;按用户最新说明暂不做自动化,英雄试炼及特训后续补充。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 18:36:51 CST 用户确认试炼三个页签、任务领奖和返回规则", + "2026-10-05 18:41:01 CST 用户更新试炼自动化范围" + ], + "appearance": "irregular", + "observed_availability": { + "present": true, + "source": "user_confirmed", + "as_of": "2026-10-05 18:36:51 CST" + }, + "tab_order": [ + "trial.heroes", + "trial.training", + "trial.tasks" + ], + "exit_to_home": { + "description": "底部箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "automation": { + "enabled": false, + "reason": "英雄试炼与特训暂缓;试炼任务不需要自动化" + } + }, + { + "id": "trial.heroes", + "name": "英雄试炼", + "parent": "home.trial", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 1, + "note": "页签结构和统一返回规则由用户确认;内部奖励规则待补充。", + "exit_to_home": { + "description": "底部箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "evidence": [ + "2026-10-05 18:36:51 CST 用户确认试炼页签结构", + "2026-10-05 18:41:01 CST 用户确认暂时不处理,后续补充" + ], + "automation": { + "enabled": false, + "status": "user_deferred", + "reason": "用户确认暂时不需要,后面补充" + } + }, + { + "id": "trial.training", + "name": "特训", + "parent": "home.trial", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 2, + "note": "页签结构和统一返回规则由用户确认;内部奖励规则待补充。", + "exit_to_home": { + "description": "底部箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "evidence": [ + "2026-10-05 18:36:51 CST 用户确认试炼页签结构", + "2026-10-05 18:41:01 CST 用户确认暂时不处理,后续补充" + ], + "automation": { + "enabled": false, + "status": "user_deferred", + "reason": "用户确认暂时不需要,后面补充" + } + }, + { + "id": "trial.tasks", + "name": "试炼任务", + "parent": "home.trial", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 3, + "note": "任务领取规则保留;用户最新确认列表无需滚动、目前不需要自动化。", + "exit_to_home": { + "description": "底部箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "evidence": [ + "2026-10-05 18:36:51 CST 用户确认试炼页签结构", + "2026-10-05 18:41:01 CST 用户确认列表不需要滚动、不需要自动化" + ], + "reward_rules": { + "claim_target": "已完成任务对应的领取按钮", + "claim_button_text": "领取", + "eligible_when": "对应任务已完成且领取按钮可用", + "daily_login_reward": { + "task_name": "每日登录游戏 1 次", + "frequency": "daily", + "claims_per_day": 1 + }, + "other_rewards": "完成对应任务后才领取", + "automation_scope": "用户最新确认目前不需要自动化", + "pending_confirmation": [], + "scroll_required": false + }, + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认不需要自动化" + } + }, + { + "id": "home.wish", + "name": "祈愿", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "appearance": "irregular", + "observed_availability": { + "present": true, + "source": "user_confirmed", + "as_of": "2026-10-05 18:41:01 CST" + }, + "entry_location": { + "description": "首页左侧,试炼下方、冲刺上方", + "below": "home.trial", + "above": "home.sprint" + }, + "note": "不定期祈愿活动含祈愿、任务、礼包三个页签;仅自动处理任务领奖和每日一次无广告免费补给。任务领完显示已完成并移到列表底部;左下箭头返回首页。", + "automation": { + "status": "user_confirmed_not_implemented", + "reason": "仅处理任务领奖与每日免费补给;祈愿页签本身由用户明确排除。" + }, + "pending_confirmation": [ + "识别模板、列表边界、领奖弹框和免费补给领完状态待采集" + ], + "evidence": [ + "2026-10-05 18:41:01 CST 用户确认祈愿入口位置、不定期出现及需要完善", + "2026-10-05 18:46:22 CST 用户确认祈愿三页签、任务领奖、免费补给和左下返回", + "2026-10-05 18:52:33 CST 用户确认免费补给每日一次无广告,任务滚动及领取后重排,祈愿页签不处理" + ], + "tab_order": [ + "wish.main", + "wish.tasks", + "wish.pack" + ], + "tab_location": "底部左下返回按钮右侧", + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "wish.main", + "name": "祈愿", + "parent": "home.wish", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_wish_main.png", + "search": [ + 183, + 938, + 291, + 995 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_wish_pet_pool_label.png", + "search": [ + 0, + 94, + 86, + 154 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 1, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:46:22 CST 用户确认祈愿页签及领奖规则", + "2026-10-05 18:52:33 CST 用户确认免费补给每日一次无广告,任务滚动及领取后重排,祈愿页签不处理" + ], + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认本页不需要自动处理" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/wish.png", + "captured_at": "2026-10-06 00:26:38 CST", + "reward_actions_tested": false + } + }, + { + "id": "wish.tasks", + "name": "任务", + "parent": "home.wish", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_wish_tasks.png", + "search": [ + 37, + 77, + 295, + 164 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 2, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:46:22 CST 用户确认祈愿页签及领奖规则", + "2026-10-05 18:52:33 CST 用户确认免费补给每日一次无广告,任务滚动及领取后重排,祈愿页签不处理" + ], + "reward_rules": { + "list_type": "任务列表", + "claim_button_text": "领取", + "claim_button_location": "任务条目右侧", + "eligible_when": "对应奖励可领取且领取按钮可用", + "daily_login_reward": { + "frequency": "daily", + "name": "登录奖励(具体文案待采集)" + }, + "pending_confirmation": [ + "任务图像模板、列表边界与滚动步长", + "奖励弹框和登录任务具体文案" + ], + "scrollable": true, + "scroll_direction": "vertical", + "claimed_button_text": "已完成", + "after_claim_reorder": "自动移到列表底部", + "execution_note": "领取后列表顺序会变化,应重新识别当前可领取条目,不能沿用上一次的列表序号和点击坐标。" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/wish_tasks.png", + "captured_at": "2026-10-06 00:27:13 CST", + "reward_actions_tested": false + } + }, + { + "id": "wish.pack", + "name": "礼包", + "parent": "home.wish", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_wish_pack.png", + "search": [ + 34, + 78, + 295, + 164 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 3, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 18:46:22 CST 用户确认祈愿页签及领奖规则", + "2026-10-05 18:52:33 CST 用户确认免费补给每日一次无广告,任务滚动及领取后重排,祈愿页签不处理" + ], + "reward_rules": { + "list_type": "补给列表", + "claim_target": "滚动查找免费补给或其已售罄状态,不固定第一行", + "claim_button_text": "免费", + "free_offer_count": 1, + "frequency": "daily", + "ad_requirement": "none", + "pending_confirmation": [ + "免费补给领完状态、按钮与奖励弹框模板" + ], + "claims_per_day": 1, + "claim_method": "direct_claim", + "observed_claimed_button_text": "已售罄", + "observed_claimed_position": "本次显示于付费礼包之后", + "scrollable": true + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/wish_pack.png", + "captured_at": "2026-10-06 00:27:18 CST", + "reward_actions_tested": false + } + }, + { + "id": "home.sprint", + "name": "冲刺(轮换三类)", + "parent": "home", + "kind": "overlay", + "status": "dynamic", + "recognition": [ + [ + { + "template": "map_audit_home_sprint.png", + "search": [ + 175, + 108, + 387, + 177 + ], + "threshold": 0.9 + } + ] + ], + "note": "实际为限时冲刺列表,轮换类型有独立可见卡片;展示期与进行期可能同时出现,需根据当前卡片状态进入。右上关闭列表回首页,各冲刺页左下直接回首页。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 19:06:16 CST 用户确认三类冲刺周期、晶矿与招募领奖和星珀商城", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "rotation": { + "variants": [ + "sprint.crystal", + "sprint.recruit", + "sprint.totem" + ], + "duration_days_per_period": 7, + "source": "user_confirmed" + }, + "observed_variant": { + "id": "sprint.recruit", + "as_of": "2026-10-06 00:37:40 CST", + "source": "navigation_probe", + "state": "进行期" + }, + "exit_to_home": { + "description": "列表弹框右上角X关闭回首页", + "status": "documented", + "source": "screenshot_layout_only" + }, + "pending_confirmation": [ + "任务领取后是否重排待确认", + "星珀金币广告条件、识别模板与实机切换待采集" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/sprint.png", + "captured_at": "2026-10-06 00:37:40 CST", + "reward_actions_tested": false + }, + "observed_variants": [ + { + "id": "sprint.crystal", + "state": "展示期", + "captured_at": "2026-10-06 00:37:40 CST" + }, + { + "id": "sprint.recruit", + "state": "进行期", + "captured_at": "2026-10-06 00:37:40 CST" + } + ] + }, + { + "id": "sprint.crystal", + "name": "晶矿冲刺", + "parent": "home.sprint", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则" + ], + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "variant_of": "home.sprint", + "tab_order": [ + "sprint.crystal.targets", + "sprint.crystal.rank", + "sprint.crystal.pack", + "sprint.crystal.tasks" + ], + "tab_inventory_status": "user_confirmed" + }, + { + "id": "sprint.crystal.targets", + "name": "冲刺目标", + "parent": "sprint.crystal", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭" + ], + "tab_order": 1, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认冲刺目标和冲刺排名不需要自动处理" + } + }, + { + "id": "sprint.crystal.rank", + "name": "冲刺排名", + "parent": "sprint.crystal", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭" + ], + "tab_order": 2, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认冲刺目标和冲刺排名不需要自动处理" + } + }, + { + "id": "sprint.crystal.pack", + "name": "冲刺礼包", + "parent": "sprint.crystal", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "tab_order": 3, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "list_type": "钻石兑换列表", + "scrollable": true, + "claim_target": "列表第一个免费项目", + "claim_button_text": "免费", + "frequency": "daily", + "free_offer_count": 1, + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费按钮、已售罄状态与领奖弹框的识别模板" + ], + "claims_per_day": 1, + "ad_requirement": "none", + "claim_method": "direct_claim" + } + }, + { + "id": "sprint.crystal.tasks", + "name": "冲刺任务", + "parent": "sprint.crystal", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "tab_order": 4, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "list_type": "任务列表", + "scrollable": true, + "claim_button_text": "领取", + "eligible_when": "任务奖励可领取且领取按钮可用", + "claimed_button_text": "已完成", + "pending_confirmation": [ + "列表是否领后重排、任务频率及识别模板" + ], + "after_claim_reorder": "pending", + "execution_note": "用户确认领取后是否移到列表底部待核实;每次领取后重新识别条目,不假定排序不变或一定重排。" + } + }, + { + "id": "sprint.recruit", + "name": "招募冲刺", + "parent": "home.sprint", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "四个底部页签切换时导航保持不变;点击礼包页签进入冲刺礼包,左侧箭头返回首页。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭" + ], + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "variant_of": "home.sprint", + "tab_order": [ + "sprint.recruit.targets", + "sprint.recruit.rank", + "sprint.recruit.pack", + "sprint.recruit.tasks" + ], + "tab_inventory_status": "user_confirmed", + "pending_confirmation": [], + "bottom_navigation_persists": true + }, + { + "id": "sprint.recruit.targets", + "name": "冲刺目标", + "parent": "sprint.recruit", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_sprint_recruit_targets.png", + "search": [ + 34, + 65, + 291, + 155 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭" + ], + "tab_order": 1, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认冲刺目标和冲刺排名不需要自动处理" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/sprint_recruit.png", + "captured_at": "2026-10-06 00:39:03 CST", + "reward_actions_tested": false + } + }, + { + "id": "sprint.recruit.rank", + "name": "冲刺排名", + "parent": "sprint.recruit", + "kind": "tab", + "status": "documented", + "recognition": [], + "note": "用户确认结构;识别模板及实机操作尚未采集。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭" + ], + "tab_order": 2, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认冲刺目标和冲刺排名不需要自动处理" + } + }, + { + "id": "sprint.recruit.tasks", + "name": "冲刺任务", + "parent": "sprint.recruit", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_sprint_recruit_tasks.png", + "search": [ + 430, + 931, + 547, + 993 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_recruit_event_art.png", + "search": [ + 326, + 140, + 526, + 234 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "tab_order": 4, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "list_type": "任务列表", + "scrollable": true, + "claim_button_text": "领取", + "eligible_when": "任务奖励可领取且领取按钮可用", + "claimed_button_text": "已完成", + "pending_confirmation": [ + "列表是否领后重排、任务频率及识别模板" + ], + "after_claim_reorder": "pending", + "execution_note": "用户确认领取后是否移到列表底部待核实;每次领取后重新识别条目,不假定排序不变或一定重排。" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/sprint_recruit_tasks.png", + "captured_at": "2026-10-06 00:40:16 CST", + "reward_actions_tested": false + } + }, + { + "id": "sprint.recruit.pack", + "name": "冲刺礼包", + "parent": "sprint.recruit", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_sprint_recruit_pack.png", + "search": [ + 56, + 267, + 252, + 326 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_recruit_pack_tab.png", + "search": [ + 336, + 919, + 444, + 994 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "entry_status": "user_confirmed", + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "list_type": "钻石兑换列表", + "scrollable": null, + "claim_target": "列表第一个免费项目", + "claim_button_text": "免费", + "frequency": "daily", + "free_offer_count": 1, + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费按钮、已售罄状态与领奖弹框的识别模板" + ], + "scroll_note": "用户未单独确认招募礼包列表的滚动方式;免费首项位于顶部。", + "claims_per_day": 1, + "ad_requirement": "none", + "claim_method": "direct_claim" + }, + "tab_order": 3, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/sprint_recruit_pack.png", + "captured_at": "2026-10-06 00:40:11 CST", + "reward_actions_tested": false + } + }, + { + "id": "sprint.totem", + "name": "图腾冲刺", + "parent": "home.sprint", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "每期7天,三类冲刺轮换;用户要求图腾冲刺出现后再确认内部结构,不套用其他冲刺页签或领奖流程。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则" + ], + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "variant_of": "home.sprint", + "automation": { + "status": "user_deferred", + "reason": "等图腾冲刺出现后确认" + } + }, + { + "id": "sprint.star_store", + "name": "星珀兑换(兑换商店弹框)", + "parent": "home.sprint", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_sprint_star_store.png", + "search": [ + 202, + 130, + 364, + 195 + ], + "threshold": 0.9 + } + ] + ], + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:06:16 CST 用户确认冲刺结构及领奖规则", + "2026-10-05 19:16:55 CST 用户确认招募四页签、目标排名不处理、星珀金币刷新时间窗及弹框关闭", + "2026-10-05 19:20:31 CST 用户确认免费礼包每日一次无广告、任务重排待确认及星珀金币已售罄状态" + ], + "entry_location": "冲刺面板右下角“兑换商店”", + "reward_rules": { + "claim_target": "商城第一项金币", + "price": "免费", + "user_time_description": "每周一刷新,整周可以领取一次", + "frequency": "weekly", + "pending_confirmation": [ + "广告条件、免费金币与已售罄状态的识别模板" + ], + "refresh_weekday": "monday", + "claim_window": "whole_week_after_refresh", + "claims_per_week": 1, + "claimed_button_text": "已售罄" + }, + "exit_to_parent": { + "target": "home.sprint", + "description": "弹框右上角X关闭", + "status": "documented", + "source": "navigation_probe", + "preserve_context": "本轮实际从限时冲刺列表打开,关闭回该列表;其他入口返回需保留打开来源" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/sprint_star_store.png", + "captured_at": "2026-10-06 00:38:20 CST", + "reward_actions_tested": false + }, + "aliases": [ + "星珀商城" + ] + }, + { + "id": "home.treasure", + "name": "寻宝", + "parent": "home", + "kind": "page", + "status": "dynamic", + "recognition": [], + "note": "达到一定等级后开放,冲刺下方入口当前存在;每期约9至10天并连续换期。宝藏兑换、冒险任务、冒险礼包三个页签,左下箭头返回首页。任务领奖后已完成排到底部,免费礼包每期一次、领完已售罄排到底部。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 19:30:33 CST 用户确认寻宝等级开放、连续周期、三页签和领奖重排规则", + "2026-10-05 19:33:35 CST 用户确认宝藏兑换不处理、每期免费礼包不需要广告" + ], + "appearance": "level_unlocked_recurring", + "entry_location": { + "description": "首页左侧,冲刺下方", + "below": "home.sprint" + }, + "observed_availability": { + "present": true, + "source": "user_confirmed", + "as_of": "2026-10-05 19:30:33 CST" + }, + "unlock_condition": { + "description": "达到一定等级后出现", + "level_threshold": null, + "source": "user_confirmed" + }, + "activity_cycle": { + "duration_days_range": [ + 9, + 10 + ], + "next_period": "一期结束后立即开始下一期", + "source": "user_confirmed" + }, + "tab_order": [ + "treasure.exchange", + "treasure.tasks", + "treasure.pack" + ], + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "pending_confirmation": [ + "开启等级具体阈值", + "任务奖励刷新与识别模板" + ], + "automation": { + "status": "user_confirmed_not_implemented", + "scope": [ + "treasure.tasks", + "treasure.pack" + ], + "excluded_tabs": [ + "treasure.exchange" + ] + } + }, + { + "id": "treasure.exchange", + "name": "宝藏兑换", + "parent": "home.treasure", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_treasure_exchange.png", + "search": [ + 30, + 66, + 309, + 158 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 1, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:30:33 CST 用户确认寻宝页签及领奖规则", + "2026-10-05 19:33:35 CST 用户确认宝藏兑换不处理、每期免费礼包不需要广告" + ], + "automation": { + "enabled": false, + "status": "user_excluded", + "reason": "用户确认宝藏兑换不需要自动处理" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/treasure.png", + "captured_at": "2026-10-06 00:41:45 CST", + "reward_actions_tested": false + } + }, + { + "id": "treasure.tasks", + "name": "冒险任务", + "parent": "home.treasure", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_treasure_tasks.png", + "search": [ + 30, + 68, + 293, + 160 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 2, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:30:33 CST 用户确认寻宝页签及领奖规则" + ], + "reward_rules": { + "list_type": "任务列表", + "scrollable": true, + "scroll_direction": "vertical", + "claim_button_text": "领取", + "eligible_when": "对应奖励可领取且领取按钮可用", + "claimed_button_text": "已完成", + "after_claim_reorder": "已领取任务自动排到列表下面", + "frequency": "when_rewards_eligible", + "execution_note": "领奖后列表重排,重新识别可领取条目,再继续滚动。", + "pending_confirmation": [ + "是否有每日刷新奖励与任务具体文案", + "列表边界、领奖弹框及识别模板" + ] + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/treasure_tasks.png", + "captured_at": "2026-10-06 00:47:02 CST", + "reward_actions_tested": false + } + }, + { + "id": "treasure.pack", + "name": "冒险礼包", + "parent": "home.treasure", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_treasure_pack.png", + "search": [ + 31, + 68, + 286, + 160 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 3, + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 19:30:33 CST 用户确认寻宝页签及领奖规则", + "2026-10-05 19:33:35 CST 用户确认宝藏兑换不处理、每期免费礼包不需要广告" + ], + "reward_rules": { + "list_type": "矿石兑换列表", + "scrollable": true, + "scroll_direction": "vertical", + "claim_target": "识别无价格的冒险福利礼免费项目,不以免费二字或行号作为唯一条件", + "claim_button_text": "免费", + "free_offer_count": 1, + "frequency": "per_activity_period", + "claims_per_period": 1, + "reset_on_new_period": true, + "claimed_button_text": "已售罄", + "after_claim_reorder": "已领取免费项目自动排到列表最底下", + "ad_requirement": "none", + "pending_confirmation": [ + "周期标识、按钮与领奖弹框模板" + ], + "claim_method": "direct_claim", + "claim_button_texts": [ + "免费", + "领取" + ], + "observed_item_label": "冒险福利礼", + "observed_claim_button_text": "领取" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/treasure_pack.png", + "captured_at": "2026-10-06 00:47:06 CST", + "reward_actions_tested": false + } + }, + { + "id": "home.friends", + "name": "好友列表", + "parent": "home", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "首页右侧好友打开列表弹框;底部有一键赠送和领取赠礼。每日登录后一键赠送一次,领取赠礼有红点时打开子弹框并一键领取,关闭赠礼后点击好友列表外关闭回首页。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 19:39:44 CST 用户确认好友两个日常流程与弹框关闭方式", + "2026-10-05 19:47:09 CST 用户确认赠送和领取按钮操作后不变且仍可点击,重复空领取提示暂无可收取的礼物" + ], + "controls": { + "daily_send": { + "text": "一键赠送", + "location": "弹框底部", + "frequency": "daily_after_login", + "actions_per_day": 1, + "button_after_action": "unchanged_clickable" + }, + "gift_receive": { + "text": "领取赠礼", + "location": "弹框底部", + "enter_when": "button_has_red_dot", + "target": "friends.gifts" + } + }, + "exit_to_home": { + "description": "点击好友列表弹框外面关闭", + "status": "documented", + "source": "user_confirmed" + }, + "pending_confirmation": [ + "一键赠送结果与弹框识别模板" + ] + }, + { + "id": "friends.gifts", + "name": "领取赠礼", + "parent": "home.friends", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "从好友列表底部带红点的领取赠礼按钮打开;点击一键领取,之后关闭赠礼弹框回到好友列表。", + "reward_rules": { + "claim_button_text": "一键领取", + "enter_when": "parent_gift_receive_button_has_red_dot", + "pending_confirmation": [ + "领奖结果、空奖励提示与弹框识别模板" + ], + "button_after_claim": "unchanged_clickable", + "empty_feedback_text": "暂无可收取的礼物", + "empty_feedback_meaning": "当前无可收取赠礼;停止领取并退出,不视为领取成功" + }, + "exit_to_parent": { + "target": "home.friends", + "methods": [ + "点击领取赠礼弹框外面", + "点击领取赠礼弹框右上角X" + ], + "status": "documented", + "source": "user_confirmed" + }, + "evidence": [ + "2026-10-05 19:39:44 CST 用户确认赠礼子弹框一键领取及两种关闭方式", + "2026-10-05 19:47:09 CST 用户确认赠送和领取按钮操作后不变且仍可点击,重复空领取提示暂无可收取的礼物" + ] + }, + { + "id": "heroes.detail", + "name": "英雄详情", + "parent": "heroes", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "已知入口:英雄卡片;内部页面与返回方式未采集,不参与自动识别或导航。", + "evidence": [ + "用户说明及主要页面截图" + ] + }, + { + "id": "heroes.pet", + "name": "宠物", + "parent": "heroes", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "已知入口:右下宠物;内部页面与返回方式未采集,不参与自动识别或导航。", + "evidence": [ + "用户说明及主要页面截图" + ] + }, + { + "id": "king.other", + "name": "国王其他页签与功能", + "parent": "king", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "已知入口:武器、披风、皮肤、城墙、藏品、图腾、材料等;内部页面与返回方式未采集,不参与自动识别或导航。", + "evidence": [ + "用户说明及主要页面截图" + ] + }, + { + "id": "territory.atlas", + "name": "图鉴", + "parent": "territory", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "领地入口保留;用户最新确认暂不处理,内部流程与返回规则暂缓,不参与自动化。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 21:18:49 CST 用户确认领地图鉴及排行榜暂不处理" + ], + "automation": { + "enabled": false, + "status": "user_deferred", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 21:18:49 CST" + }, + "pending_confirmation": [] + }, + { + "id": "territory.rank", + "name": "排行榜", + "parent": "territory", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "主线榜默认页,主线榜、竞技榜、合作榜、金币榜四页签已见;进度奖励顶行宝锤规则沿用用户说明,排行榜左下返回领地。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 21:18:49 CST 用户确认领地图鉴及排行榜暂不处理", + "2026-10-05 21:57:28 CST 用户更新领地排行榜处理范围,覆盖此前暂不处理的规则" + ], + "automation": { + "enabled": true, + "status": "user_confirmed_not_implemented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 21:57:28 CST" + }, + "pending_confirmation": [ + "入口红点、页签、进度奖励和顶行宝锤结果模板" + ], + "default_tab": "territory.rank.board", + "known_tabs": [ + "territory.rank.board" + ], + "other_tabs": "已观察名称,其他页签暂未定义自动化任务。", + "exit_to_parent": { + "target": "territory", + "description": "左下角返回领地", + "status": "documented", + "source": "navigation_probe" + }, + "observed_tab_labels": [ + "主线榜", + "竞技榜", + "合作榜", + "金币榜" + ] + }, + { + "id": "territory.wall", + "name": "城墙", + "parent": "territory", + "kind": "page", + "status": "documented", + "recognition": [], + "note": "城墙有打造、城墙两个底部页签,默认城墙;左下返回领地。每日免费机关先直接一次,额外广告次数待确认;使用机关次数打造只响应独立命令。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 21:27:01 CST 用户确认两个页签、默认城墙以及免费领取和命令打造的分离规则", + "用户后续确认左下返回领地、机关次数达到10选10次、每日先免费1次及额外广告领取次数待确认" + ], + "tabs": [ + "territory.wall.craft", + "territory.wall.overview" + ], + "default_tab": "territory.wall.overview", + "return_control": { + "location": "底部左侧", + "target": "territory", + "status": "documented", + "source": "user_confirmed" + } + }, + { + "id": "territory.wall.craft", + "name": "打造(机关打造)", + "parent": "territory.wall", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_territory_wall_craft.png", + "search": [ + 180, + 90, + 390, + 185 + ], + "threshold": 0.9 + } + ] + ], + "note": "领取每日免费机关,免费按钮点击若干次后消失;打造1次与打造10次使用机关次数,仅按独立命令执行。", + "evidence": [ + "2026-10-05 21:27:01 CST 用户确认机关打造页布局与两类任务", + "用户后续确认左下返回领地、机关次数达到10选10次、每日先免费1次及额外广告领取次数待确认" + ], + "displayed_resources": [ + "钻石", + "机关次数" + ], + "buttons": [ + "免费", + "打造1次", + "打造10次" + ], + "free_reward_rules": { + "frequency": "daily", + "claim_button_text": "免费", + "claims_per_day": null, + "loop": "确认免费按钮存在时点击,确认奖励反馈后重新识别;免费按钮消失时停止", + "claimed_state": "免费按钮消失", + "ad_requirement": "first_direct_then_ad_or_ad_free_card", + "pending_confirmation": [ + "额外广告领取次数、免费按钮与次数状态、广告及领奖结果识别模板" + ], + "first_daily_claim": { + "claims": 1, + "method": "direct_claim" + }, + "additional_claims": { + "count_per_day": null, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy", + "count_confirmation": "pending" + } + }, + "manual_build_rules": { + "trigger": "explicit_user_command", + "scheduled": false, + "uses_resource": "机关次数", + "resource_count_location": "页面顶部", + "selection_rule": "可用机关次数大于等于10选打造10次;1至9选打造1次;0时停止,命令剩余目标与最后一批处理待完善", + "batch_condition": { + "operator": ">=", + "value": 10, + "boundary_confirmation": "user_confirmed" + }, + "buttons": { + "single": "打造1次", + "batch": "打造10次" + }, + "requested_count": null, + "execution_design": "按独立命令指定次数执行,逐次确认结果、剩余机关次数与已完成量;无机关次数时停止,不将顶部钻石作为默认消耗资源", + "pending_confirmation": [ + "命令指定次数的计数单位及最后一批处理", + "机关次数、打造按钮与结果识别模板" + ] + }, + "return_control": { + "target": "territory.wall.overview", + "description": "右上角X关闭机关打造弹框回城墙,再左下返回领地", + "status": "documented", + "source": "navigation_probe" + }, + "verification": { + "scope": [ + "page_layout" + ], + "captured_at": "2026-10-05 23:49:54 CST", + "capture": "local/page_audit/wall_craft.png", + "reward_actions_tested": false + }, + "exit_to_parent": { + "target": "territory.wall.overview", + "description": "右上角X关闭机关打造弹框回城墙,再左下返回领地", + "status": "documented", + "source": "navigation_probe" + }, + "observed_free_button": "本次未显示免费,不推断领取结果" + }, + { + "id": "territory.wall.overview", + "name": "城墙", + "parent": "territory.wall", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_territory_wall_overview.png", + "search": [ + 25, + 520, + 310, + 600 + ], + "threshold": 0.9 + } + ] + ], + "note": "进入城墙模块默认显示此页签;内部功能尚未说明。", + "evidence": [ + "2026-10-05 21:27:01 CST 用户确认默认城墙页签", + "用户后续确认左下返回领地、机关次数达到10选10次、每日先免费1次及额外广告领取次数待确认" + ], + "automation": { + "enabled": false, + "status": "pending_scope_confirmation" + }, + "return_control": { + "location": "底部左侧", + "target": "territory", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "captured_at": "2026-10-05 23:49:20 CST", + "capture": "local/page_audit/wall.png", + "reward_actions_tested": false + } + }, + { + "id": "coop.pet", + "name": "保卫宠物", + "parent": "coop.selection", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_pet_daily_coin_label.png", + "search": [ + 144, + 128, + 334, + 178 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_pet_pass_label.png", + "search": [ + 489, + 367, + 556, + 415 + ], + "threshold": 0.9 + } + ] + ], + "note": "可能先出现本周buff提示,点知道了关闭;左上领券每天0点刷新,领完已领完;右侧宠物商店和右上挑战入口已记录,左下返回领地。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 21:57:28 CST 用户确认保卫宠物领券、商城及挑战奖励流程", + "用户后续确认保卫宠物券每周领取一次", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地", + "用户最新确认保卫宠物券每天0点刷新,覆盖此前每周一次说明" + ], + "aliases": [ + "保卫动物" + ], + "reward_rules": { + "claim_button_text": "可领取", + "claim_button_location": "左上角", + "claimed_button_text": "已领完", + "frequency": "daily", + "pending_confirmation": [ + "可领取及已领完、领奖结果识别模板" + ], + "claims_per_day": 1, + "refresh_time": "00:00", + "refresh_time_basis": "游戏日历" + }, + "return_control": { + "target": "territory", + "description": "左下角返回", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/pet.png", + "captured_at": "2026-10-05 23:40:22 CST", + "reward_actions_tested": false + } + }, + { + "id": "arena.peak", + "name": "巅峰决斗", + "parent": "arena.selection", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_arena_peak.png", + "search": [ + 180, + 25, + 380, + 110 + ], + "threshold": 0.9 + } + ] + ], + "note": "用户确认选择巅峰决斗模式后,右侧巅峰商店按三项优先级购买;商店右上X关闭,主页左下返回领地,模板与执行尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:14:33 CST 用户确认巅峰商店入口和优先级最大数量购买", + "用户后续确认巅峰商店顶部专用货币余额、右上X关闭与主页左下返回领地" + ], + "return_control": { + "target": "territory", + "description": "左下角返回", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "captured_at": "2026-10-06 00:02:08 CST", + "capture": "local/page_audit/peak.png", + "reward_actions_tested": false + } + }, + { + "id": "arena.peak.store", + "name": "巅峰商店", + "parent": "arena.peak", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_arena_peak_store.png", + "search": [ + 175, + 120, + 395, + 200 + ], + "threshold": 0.9 + } + ] + ], + "note": "右侧商店入口;按优先级购买最大可售数量,识别和执行尚未实现。", + "evidence": [ + "2026-10-05 22:14:33 CST 用户确认巅峰商店优先级购买规则", + "用户后续确认巅峰商店顶部专用货币余额、右上X关闭与主页左下返回领地" + ], + "entry_location": "巅峰决斗页面右侧", + "purchase_rules": { + "items": [ + { + "priority": 1, + "name": "随机藏品碎片" + }, + { + "priority": 2, + "name": "洗练石", + "aliases": [ + "洗炼石" + ] + }, + { + "priority": 3, + "name": "超凡宝锤" + } + ], + "quantity_policy": "maximum_affordable_available_per_priority", + "currency": "peak_store_specific_currency", + "balance_location": "页面顶部", + "balance_condition": "余额大于等于当前目标商品价格", + "selection_order": "随机藏品碎片优先,其次洗练石,最后超凡宝锤", + "execution_design": "先处理最高优先级;按余额和可售数量选择最大可买份数,确认结果后重读余额与库存;该商品无库存或无法支付时再检查下一优先级,不重复买入已处理的同一库存", + "max_quantity_design": "min(当前可购买份数, floor(余额/当前商品每份价格));价格、库存和每份内容须从当前商品读取", + "stop_when": "所有目标商品均无可售数量或余额不足以支付其价格", + "pending_confirmation": [ + "商品价格、可售份数、名称、购买确认与结果识别模板", + "顶部专用货币余额与返回控件识别模板" + ] + }, + "return_control": { + "target": "arena.peak", + "description": "右上角X关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "captured_at": "2026-10-06 00:02:38 CST", + "capture": "local/page_audit/peak_store.png", + "reward_actions_tested": false + } + }, + { + "id": "guild.store", + "name": "公会商城", + "parent": "guild", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_store_title.png", + "search": [ + 200, + 131, + 360, + 190 + ], + "threshold": 0.88 + } + ] + ], + "note": "用户已确认内部规则与右上关闭返回公会;识别和执行尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:31:15 CST 用户确认公会商城两个页签、购买优先级和公会任务及进度宝箱领奖规则" + ], + "return_control": { + "target": "guild", + "description": "右上角关闭按钮返回公会", + "status": "documented", + "source": "user_confirmed" + }, + "tabs": [ + "guild.store.contribution", + "guild.store.dragon_scale" + ], + "default_tab": null, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_store.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "observed_default_tab": "guild.store.contribution" + }, + { + "id": "guild.expedition", + "name": "远征大厅", + "parent": "guild", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_expedition.png", + "search": [ + 211, + 169, + 354, + 228 + ], + "threshold": 0.88 + } + ] + ], + "note": "本次确认弹框右上X关闭回公会;公会对决左下直接返回公会。迷宫寻宝仍暂缓。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "children": [ + "guild.expedition.labyrinth", + "guild.duel" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_expedition.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "return_control": { + "target": "guild", + "description": "右上角X关闭", + "status": "documented", + "source": "navigation_probe" + } + }, + { + "id": "guild.tasks", + "name": "公会任务", + "parent": "guild", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_tasks.png", + "search": [ + 204, + 98, + 360, + 157 + ], + "threshold": 0.88 + } + ] + ], + "note": "用户已确认内部规则与右上关闭返回公会;识别和执行尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:31:15 CST 用户确认公会商城两个页签、购买优先级和公会任务及进度宝箱领奖规则" + ], + "return_control": { + "target": "guild", + "description": "右上角关闭按钮返回公会", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "scrollable": true, + "claim_button_text": "领取", + "unavailable_button_text": "前往", + "claimed_button_text": "已完成", + "claimed_reorder": "领取后移到列表最后", + "skip_buttons": [ + "前往", + "已完成" + ], + "task_claim_flow": "逐项点击领取,确认结果后重新识别列表;不依赖原行位置", + "progress_chests": { + "location": "页面上方进度条各宝箱节点", + "claim_when": "进度达到宝箱且宝箱出现红点", + "claim_target": "有红点的小宝箱", + "claimed_marker": "小对号", + "skip_when": "已显示对号", + "check_after": "每次任务领取后及任务列表处理结束时重新检查" + }, + "completion_design": "处理可领取任务及红点进度宝箱,确认结果;滚动确认剩余列表,不点击前往", + "pending_confirmation": [ + "任务列表、滚动边界、领取状态和结果模板", + "进度条宝箱红点、对号和关闭控件模板" + ] + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_tasks.png", + "date": "2026-10-05", + "reward_actions_tested": false + } + }, + { + "id": "guild.blessing", + "name": "公会祝福", + "parent": "guild", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_blessing.png", + "search": [ + 199, + 22, + 360, + 85 + ], + "threshold": 0.88 + } + ] + ], + "note": "用户已确认操作规则,模板与执行尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则", + "用户确认升级消耗材料、红点说明材料充足,升级后左下角返回公会" + ], + "upgrade_rules": { + "button_text": "升级", + "require_button_red_dot": true, + "flow": "升级按钮存在且有红点时点击一次,完成后点击左下角返回公会", + "return_target": "guild", + "return_control": "左下角返回按钮", + "consumes_resources": true, + "pending_confirmation": [ + "升级按钮、红点、升级结果及左下返回识别模板" + ], + "resource_type": "材料", + "eligibility_indicator": "红点表示升级材料充足,进入后仍确认升级按钮有红点", + "observed_upgrade_button_location": "右下角;不与上方升级/升星页签混淆" + }, + "return_control": { + "target": "guild", + "description": "左下角返回按钮", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_blessing.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "observed_tabs": [ + "升级", + "升星" + ] + }, + { + "id": "guild.members", + "name": "成员大厅", + "parent": "guild", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "保留右上塔楼入口;用户明确不需要自动化,内部流程与返回规则不再确认,不参与自动识别或导航。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:54:16 CST 用户确认成员大厅不需要自动化" + ], + "automation": { + "enabled": false, + "reason": "用户明确成员大厅不需要自动化" + } + }, + { + "id": "guild.boss", + "name": "公会 Boss", + "parent": "guild", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_boss.png", + "search": [ + 181, + 7, + 338, + 65 + ], + "threshold": 0.88 + }, + { + "template": "map_audit_boss_back.png", + "search": [ + 17, + 888, + 119, + 959 + ], + "threshold": 0.88 + } + ] + ], + "note": "用户已确认操作规则,模板与执行尚未实现。", + "evidence": [ + "用户说明及主要页面截图", + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则", + "用户确认助威后按钮变成已助威且不可重复点击" + ], + "availability": { + "weekdays": [ + "monday", + "wednesday", + "friday", + "sunday" + ], + "source": "user_confirmed", + "rule": "每周1、3、5、7出现;只在入口实际可用时执行,不推断其他日期可进入" + }, + "treasure_rules": { + "entry_location": "页面右侧财宝", + "entry_indicator": "财宝图标左上角数字", + "enter_when": "左上角有数字,进入后再检查全部领取可用状态", + "count_meaning": "用户未说明具体数字含义,不据此计算点击次数" + }, + "cheer_rules": { + "button_text": "助威", + "require_button_red_dot": true, + "frequency": "daily", + "claims_per_day": 1, + "run_when": "当日首次进入可用的公会Boss页面且助威按钮有红点", + "completion_marker": "已助威", + "execution_design": "当日只点击一次,需确认结果并记录账号游戏日执行状态;不因为按钮仍可点而循环", + "pending_confirmation": [ + "助威红点、已助威及结果识别模板与每日执行记录" + ], + "claimed_button_text": "已助威", + "repeat_click_allowed": false, + "skip_when": "按钮显示已助威" + }, + "return_control": { + "target": "guild", + "description": "左下角返回", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_boss.png", + "date": "2026-10-05", + "reward_actions_tested": false + } + }, + { + "id": "shop.recruit", + "name": "英雄招募", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "商城滚动栏目;神灯任务和免费神灯已有脚本。用户确认除此之外没有其他需要处理的日常领奖内容。", + "evidence": [ + "用户提供商城截图", + "2026-10-05 21:12:15 CST 用户确认商城领取范围、每日次数、广告及领完状态" + ], + "automation_scope": { + "existing_task": "recruit", + "additional_daily_rewards": false, + "source": "user_confirmed" + } + }, + { + "id": "shop.totem", + "name": "图腾寻宝", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "商城图腾寻宝两张卡片每天各有一次免费领取;有免广告卡直接领,否则看视频,领取后该卡片免费按钮消失。只处理免费入口。", + "evidence": [ + "用户提供商城截图", + "2026-10-05 21:12:15 CST 用户确认商城领取范围、每日次数、广告及领完状态" + ], + "reward_rules": { + "cards_per_section": 2, + "frequency": "daily", + "claims_per_card_per_day": 1, + "claim_button_text": "免费", + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy", + "claimed_state": "对应卡片免费按钮消失", + "completion_requirement": "确认领奖结果和对应卡片免费按钮消失,不凭按钮未找到单独判成功", + "pending_confirmation": [ + "两张卡片边界、免费按钮、奖励结果和广告识别模板" + ] + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/shop_totem.png", + "captured_at": "2026-10-06 00:48:24 CST", + "reward_actions_tested": false + } + }, + { + "id": "shop.level_pack", + "name": "关卡礼包", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "商城滚动栏目;需定位栏目后操作。用户明确暂不处理。", + "evidence": [ + "用户提供商城截图" + ] + }, + { + "id": "shop.daily", + "name": "每日商店", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "商城每日商店六张卡片,首格免费招募券每天领取,无需广告,领完已售罄;600金币刷新后不会再出现免费。金币购买招募券及刷新执行规则待完善。", + "evidence": [ + "用户提供商城截图", + "2026-10-05 21:12:15 CST 用户确认商城领取范围、每日次数、广告及领完状态", + "用户后续确认首格免费招募券不需要广告,刷新后不会再出现免费招募券" + ], + "aliases": [ + "每日商城" + ], + "reward_rules": { + "card_count": 6, + "free_offer": { + "position": "第一格", + "item": "招募券", + "button_text": "免费", + "frequency": "daily", + "claims_per_day": 1, + "ad_requirement": "none", + "claimed_text": "已售罄", + "reappears_after_paid_refresh": false + }, + "other_cards": { + "items_user_examples": [ + "各类锻造书", + "英雄碎片", + "随机职业经验书", + "宝锤", + "招募券" + ], + "item_selection": "随机", + "price_currencies": [ + "金币", + "钻石" + ] + }, + "pending_confirmation": [ + "首格免费和已售罄、商品名称与币种及领奖模板" + ] + }, + "paid_ticket_purchase": { + "status": "user_confirmed_deferred_rules_incomplete", + "candidate_item": "招募券", + "required_currency": "金币", + "skip_other_items": true, + "skip_diamond_priced_items": true, + "rule": "只购买金币标价招募券,其他商品跳过;购买和刷新执行规则待完善", + "pending_rules": [ + "每次购买数量及金币预算", + "何时刷新、每日刷新次数或支出上限", + "金币不足及购买结果处理" + ] + }, + "refresh_control": { + "text": "600刷新", + "location": "板块右下方", + "currency": "金币", + "cost_per_refresh": 600, + "supports_multiple_refreshes": true, + "unavailable_marker": "黑色蒙版", + "exhausted_feedback_text": "今日刷新次数已用完", + "free_ticket_reappears": false, + "execution_status": "deferred_rules_incomplete", + "stop_rule": "观察到黑色蒙版则不继续刷新;已点击时若提示今日刷新次数已用完,停止,不追加点击验证" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/shop_daily_full.png", + "captured_at": "2026-10-06 00:49:40 CST", + "reward_actions_tested": false + } + }, + { + "id": "shop.diamonds", + "name": "钻石", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "商城滚动栏目;需定位栏目后操作。用户明确暂不处理。", + "evidence": [ + "用户提供商城截图" + ] + }, + { + "id": "shop.coins", + "name": "金币", + "parent": "shop", + "kind": "section", + "status": "documented", + "recognition": [], + "note": "金币模块三张卡片,仅领取首张免费奖励,每日两次;第一次直接领,第二次无免广告卡看视频、有卡跳过视频。两次领取完显示已售罄。", + "evidence": [ + "用户提供商城截图", + "2026-10-05 21:12:15 CST 用户确认商城领取范围、每日次数、广告及领完状态" + ], + "reward_rules": { + "card_count": 3, + "free_card_position": "第一张", + "frequency": "daily", + "claims_per_day": 2, + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "claims": [ + { + "ordinal": 1, + "method": "direct_claim" + }, + { + "ordinal": 2, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy" + } + ], + "other_cards_automation": false, + "pending_confirmation": [ + "首张免费和已售罄、第一次领取后状态、奖励和广告识别模板" + ], + "resume_design": "结合当前免费和已售罄状态及本日执行结果判断剩余次数,不在每次进入时固定再领取两次" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/shop_coins.png", + "captured_at": "2026-10-06 00:50:25 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.pack", + "name": "超值礼包", + "parent": "home.activity", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_pack.png", + "search": [ + 37, + 62, + 290, + 159 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 1, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity.png", + "captured_at": "2026-10-06 00:09:52 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.daily_offer", + "name": "每日特惠", + "parent": "home.activity", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_daily_offer.png", + "search": [ + 35, + 69, + 290, + 158 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 2, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:24:00 CST 用户确认第二次领取的免广告卡/广告分支" + ], + "reward_rules": { + "free_offer_count": 1, + "claims_per_day": 2, + "second_claim": { + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_ad_required", + "automation_ad_policy": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy" + } + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity_daily_offer.png", + "captured_at": "2026-10-06 00:10:26 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.daily_recharge", + "name": "每日充值", + "parent": "home.activity", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_daily_recharge.png", + "search": [ + 33, + 63, + 294, + 157 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 3, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:40:14 CST 用户确认有红点进入领取已达成奖励;低优先级,充值时后续完善" + ], + "reward_rules": { + "enter_when": "entry_has_red_dot", + "action": "claim_eligible_rewards", + "priority": "low", + "implementation": "deferred_until_user_has_recharge_rewards", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity_daily_recharge.png", + "captured_at": "2026-10-06 00:10:30 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.cumulative_recharge", + "name": "累充豪礼", + "parent": "home.activity", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_cumulative_recharge.png", + "search": [ + 37, + 65, + 294, + 153 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 4, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:40:14 CST 用户确认有红点进入领取已达成奖励;低优先级,充值时后续完善" + ], + "reward_rules": { + "enter_when": "entry_has_red_dot", + "action": "claim_eligible_rewards", + "priority": "low", + "implementation": "deferred_until_user_has_recharge_rewards", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity_cumulative.png", + "captured_at": "2026-10-06 00:10:34 CST", + "reward_actions_tested": false + }, + "aliases": [ + "累充豪里" + ] + }, + { + "id": "activity.pack.daily", + "name": "日礼包", + "parent": "activity.pack", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_pack.png", + "search": [ + 37, + 62, + 290, + 159 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_activity_pack_daily.png", + "search": [ + 17, + 801, + 189, + 871 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 1, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:40:14 CST 用户确认第一免费项目直接领,第二项目无免广告卡需看广告" + ], + "reward_rules": { + "free_offer_count": 2, + "frequency": "daily", + "offers": [ + { + "order": 1, + "claim_method": "direct_claim" + }, + { + "order": 2, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_ad_required", + "automation_ad_policy": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy" + } + ], + "source": "user_confirmed", + "observed_offer_order": [ + { + "item": "体力10", + "button_text": "免费", + "video_icon": true, + "position": "本次上方" + }, + { + "item": "金币500", + "button_text": "免费", + "video_icon": false, + "position": "本次下方" + } + ], + "ad_branch_policy_confirmation": "已询问是否按视频图标判断;确认前不把观测行号转换为执行顺序" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity.png", + "captured_at": "2026-10-06 00:09:52 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.pack.weekly", + "name": "周礼包", + "parent": "activity.pack", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 2, + "note": "超值礼包内周礼包页签;用户确认没有免费领取项目,免费领奖流程跳过。页签位置与识别标识尚未实机采集。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:29:01 CST 用户确认周礼包无免费项目" + ], + "reward_rules": { + "free_offer_count": 0, + "free_claim_automation": "skip", + "source": "user_confirmed" + } + }, + { + "id": "activity.pack.monthly", + "name": "月礼包", + "parent": "activity.pack", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 3, + "note": "超值礼包内月礼包页签;仅充值月卡会员可见;用户确认没有免费领取项目,免费领奖流程跳过。页签识别尚未实机采集。", + "evidence": [ + "2026-10-05 17:19:57 CST 用户说明", + "2026-10-05 17:32:28 CST 用户确认月礼包无免费项目" + ], + "visibility_condition": { + "requires": "paid_month_card_membership", + "source": "user_confirmed", + "if_not_visible": "skip" + }, + "reward_rules": { + "free_offer_count": 0, + "free_claim_automation": "skip", + "source": "user_confirmed" + } + }, + { + "id": "activity.daily_recharge.tier6", + "name": "6 元档", + "parent": "activity.daily_recharge", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_activity_daily_recharge.png", + "search": [ + 33, + 63, + 294, + 157 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_activity_daily_recharge_tier6.png", + "search": [ + 107, + 801, + 279, + 872 + ], + "threshold": 0.9 + } + ] + ], + "tab_order": 1, + "recharge_tier_cny": 6, + "note": "本轮已截图核实当前页布局,结果和状态变化未点击验证;识别适配当前活动样式,执行尚未实现。", + "evidence": [ + "2026-10-05 17:40:14 CST 用户说明" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/activity_daily_recharge.png", + "captured_at": "2026-10-06 00:10:30 CST", + "reward_actions_tested": false + } + }, + { + "id": "activity.daily_recharge.tier25", + "name": "25 元档", + "parent": "activity.daily_recharge", + "kind": "tab", + "status": "documented", + "recognition": [], + "tab_order": 2, + "recharge_tier_cny": 25, + "note": "用户确认档位页签,两档都可能有奖励;记录已达成奖励领取,不代表充值操作。识别与领取流程低优先级,后续完善。", + "evidence": [ + "2026-10-05 17:40:14 CST 用户说明" + ] + }, + { + "id": "relic", + "name": "遗迹夺宝", + "parent": "play_hall", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_relic.png", + "search": [ + 150, + 5, + 400, + 100 + ], + "threshold": 0.9 + } + ] + ], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "reward_rules": { + "frequency": "daily", + "entry_notice": "每日首次进入可能出现提示弹框,关闭后继续", + "sweep_button_text": "扫荡", + "sweeps_per_run": 1, + "warning_text_prefix": "国王势力过于强大,怪物不战而逃", + "warning_action": "点击确定", + "pending_confirmation": [ + "首次提示关闭控件、扫荡及领奖结果模板" + ], + "observed_sweep_button": "本次状态未显示扫荡,扫荡及提示分支待对应状态出现后核实", + "no_sweep_button_action": "skip_unavailable_no_action" + }, + "exit_to_parent": { + "target": "territory", + "description": "左下角返回领地", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "captured_at": "2026-10-05 23:58:44 CST", + "capture": "local/page_audit/relic.png", + "reward_actions_tested": false + } + }, + { + "id": "relic.notice", + "name": "遗迹夺宝首次提示", + "parent": "relic", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "dismiss_control": null + }, + { + "id": "relic.sweep_warning", + "name": "怪物不战而逃提示", + "parent": "relic", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "confirm_button_text": "确定" + }, + { + "id": "territory.rank.board", + "name": "排行榜", + "parent": "territory.rank", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_territory_rank_board.png", + "search": [ + 200, + 40, + 361, + 95 + ], + "threshold": 0.9 + }, + { + "template": "map_audit_main_rank_tab.png", + "search": [ + 152, + 940, + 237, + 989 + ], + "threshold": 0.9 + } + ] + ], + "note": "主线榜标题及选中页签已采集,左下返回领地已观察;进度领奖按钮和奖励结果尚未执行验证。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "exit_to_parent": { + "target": "territory", + "description": "左下角返回领地", + "status": "documented", + "source": "navigation_probe" + }, + "verification": { + "scope": [ + "page_layout" + ], + "date": "2026-10-05", + "capture": "local/page_audit/territory_rank.png", + "reward_actions_tested": false + } + }, + { + "id": "territory.rank.progress", + "name": "领地排行榜进度奖励", + "parent": "territory.rank.board", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "planet_progress_title.png", + "search": [ + 140, + 70, + 420, + 190 + ] + } + ] + ], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "reward_rules": { + "selection": "只点击列表最顶行右侧宝锤按钮", + "claims_per_entry": 1, + "claimed_marker": null + }, + "exit_to_parent": { + "target": "territory.rank.board", + "description": "右上关闭回排行榜页签", + "status": "documented", + "source": "user_confirmed" + }, + "shared_visual_group": "server_progress_rewards", + "recognition_note": "与另一排行榜的本服进度奖励外观相同,缺少已确认进入来源时保持歧义", + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/territory_rank_progress.png", + "captured_at": "2026-10-05 23:25:13 CST", + "reward_actions_tested": false + } + }, + { + "id": "coop.friend_store", + "name": "友情商店", + "parent": "coop", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_coop_friend_store.png", + "search": [ + 120, + 90, + 430, + 220 + ], + "threshold": 0.9 + } + ] + ], + "note": "友情商店可从合作模式打开,也可从保卫宠物商城切换进入;关闭回实际打开来源,不固定回合作模式。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程", + "用户确认使用友情商店自身货币,顶部显示余额,余额足够支付商品价格时购买", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地", + "用户确认免费金币每周一0点刷新,每周首次登录领取" + ], + "entry_location": "左上角", + "free_reward_rules": { + "frequency": "weekly", + "claim_on": "每周首次登录", + "free_offer_position": "第一张", + "claim_button_text": "免费", + "claims_per_week": 1, + "claimed_button_text": "已售罄", + "refresh_weekday": "monday", + "ad_requirement": "pending_confirmation", + "item": "金币", + "refresh_time": "00:00", + "refresh_time_basis": "游戏日历" + }, + "purchase_rules": { + "currency": "friend_store_specific_currency", + "balance_rule": "余额大于等于目标商品价格时购买", + "items": [ + { + "name": "洗练石", + "aliases": [ + "洗炼石" + ], + "quantity": 1, + "frequency": "daily" + }, + { + "name": "体力", + "quantity": 2, + "frequency": "daily" + }, + { + "name": "星愿币", + "quantity": 2, + "frequency": "weekly", + "purchase_on": "每周首次进入" + } + ], + "execution_design": "按当前商品数量、价格、余额及本日或本周已购结果记录剩余目标,不每次进入都重新购买全额", + "currency_display_location": "页面顶部" + }, + "return_control": { + "target": "coop", + "description": "右上关闭回打开商城的合作模式或保卫宠物页面;需保留入口来源", + "status": "documented", + "source": "navigation_probe", + "requires_origin_history": true, + "source_to_target": { + "coop": "coop", + "coop.pet": "coop.pet" + } + }, + "verification": { + "scope": [ + "page_layout" + ], + "date": "2026-10-05", + "capture": "local/page_audit/friend_store.png", + "reward_actions_tested": false + }, + "observed_variants": [ + "合作模式直接打开,无底部页签", + "保卫宠物商城切换打开,底部宠物商店和友情商店页签" + ] + }, + { + "id": "coop.pet.buff", + "name": "本周buff提示", + "parent": "coop.pet", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程" + ], + "confirm_button_text": "知道了" + }, + { + "id": "coop.pet.store", + "name": "宠物商店", + "parent": "coop.pet", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_coop_pet_store.png", + "search": [ + 120, + 90, + 430, + 220 + ], + "threshold": 0.9 + } + ] + ], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程", + "用户确认随机宠物碎片红色3200、黄色2400,仅买红色;商店各自货币顶部显示,余额足够支付时购买", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地", + "用户确认免费金币每周一0点刷新,每周首次登录领取", + "用户确认余额够就买完当前可售数量的红色随机宠物碎片" + ], + "entry_location": "页面右侧商城", + "free_reward_rules": { + "frequency": "weekly", + "claim_on": "每周首次登录", + "free_offer_position": "第一张", + "claim_button_text": "免费", + "claims_per_week": 1, + "claimed_button_text": "已售罄", + "refresh_weekday": "monday", + "ad_requirement": "pending_confirmation", + "item": "金币", + "refresh_time": "00:00", + "refresh_time_basis": "游戏日历" + }, + "purchase_rules": { + "confirmed_item_name": "随机宠物碎片", + "currency": "pet_store_specific_currency", + "balance_rule": "余额大于等于目标商品价格时购买", + "frequency": "when_stock_and_balance_available", + "pending_confirmation": [ + "商品颜色、价格、可售数量及余额和购买结果识别模板" + ], + "item_color": "红色", + "price": 3200, + "currency_display_location": "页面顶部", + "excluded_variants": [ + { + "item_name": "随机宠物碎片", + "color": "黄色", + "price": 2400 + } + ], + "quantity_policy": "buy_all_available_stock_while_affordable", + "stop_when": [ + "专用货币余额小于3200", + "无可售数量或购买按钮不可用" + ], + "after_each_purchase": "确认结果并重新读取专用货币余额和可售数量,再判断是否继续" + }, + "return_control": { + "target": "coop.pet", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "date": "2026-10-05", + "capture": "local/page_audit/pet_store.png", + "reward_actions_tested": false + }, + "observed_tabs": [ + "宠物商店", + "友情商店" + ], + "observed_goods_snapshot": { + "source": "本轮截图", + "values": { + "红色随机宠物碎片": { + "price": 3200, + "stock": 10, + "items_per_purchase": 6 + }, + "黄色随机宠物碎片": { + "price": 2400, + "stock": 15, + "items_per_purchase": 5 + } + }, + "use": "仅核实例子,执行时重读价格、每份数量和库存" + } + }, + { + "id": "coop.pet.challenge", + "name": "挑战", + "parent": "coop.pet", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地" + ], + "entry_location": "右侧上方", + "entry_red_dot_required": true, + "tabs": [ + "coop.pet.challenge.weekly", + "coop.pet.challenge.achievements" + ], + "default_tab": null, + "return_control": { + "target": "coop.pet", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "reward_rules": { + "tab_selection": "只进入有红点的每周或成就页签", + "claim_button_text": "领取", + "completion": "逐次确认结果并重新识别领取按钮,至无可领取奖励", + "pending_confirmation": [ + "是否需滚动、领取及完成状态、红点与结果模板" + ] + }, + "observed_scroll_required": true + }, + { + "id": "coop.pet.challenge.weekly", + "name": "每周", + "parent": "coop.pet.challenge", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_coop_pet_challenge_weekly.png", + "search": [ + 212, + 99, + 353, + 153 + ], + "threshold": 0.9 + } + ] + ], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地" + ], + "reward_rules": { + "enter_when": "页签有红点", + "claim_button_text": "领取" + }, + "return_control": { + "target": "coop.pet", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "date": "2026-10-05", + "capture": "local/page_audit/pet_challenge.png", + "reward_actions_tested": false + } + }, + { + "id": "coop.pet.challenge.achievements", + "name": "成就", + "parent": "coop.pet.challenge", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_coop_pet_challenge_achievements.png", + "search": [ + 213, + 99, + 352, + 153 + ], + "threshold": 0.9 + } + ] + ], + "note": "规则来自用户说明,识别与执行尚未实现。", + "evidence": [ + "2026-10-05 21:57:28 CST 用户确认领地新增任务流程", + "2026-10-05 22:05:01 CST 用户确认商店和挑战右上关闭、保卫宠物左下返回领地" + ], + "reward_rules": { + "enter_when": "页签有红点", + "claim_button_text": "领取", + "observed_unavailable_button_text": "未完成", + "additional_progress_chest": "顶部成就宝箱可见,是否纳入任务范围待确认" + }, + "return_control": { + "target": "coop.pet", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "date": "2026-10-05", + "capture": "local/page_audit/pet_achievements.png", + "reward_actions_tested": false + } + }, + { + "id": "guild.store.contribution", + "name": "贡献商店", + "parent": "guild.store", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_store_title.png", + "search": [ + 200, + 131, + 360, + 190 + ], + "threshold": 0.88 + }, + { + "template": "map_audit_contribution_tab.png", + "search": [ + 119, + 797, + 269, + 859 + ], + "threshold": 0.88 + } + ] + ], + "tab_order": 1, + "note": "共用公会商城入口,购买规则来自用户说明;模板与执行待实现。", + "evidence": [ + "2026-10-05 22:31:15 CST 用户确认公会商城两个页签、购买优先级和公会任务及进度宝箱领奖规则", + "用户补充顶部专用货币余额、罗盘每日2/10限额、合作券周一刷新整周最多7个及龙晶龙血按优先级买完", + "2026-10-05 22:37:57 CST 用户确认贡献商城优先合作券,再按黄金罗盘、白银罗盘顺序购买" + ], + "purchase_rules": { + "items": [ + { + "name": "合作券", + "frequency": "weekly", + "weekly_purchase_limit": 7, + "refresh_weekday": "monday", + "purchase_window": "whole_week", + "quantity_policy": "maximum_affordable_available", + "sold_out_text": "已售罄", + "priority": 1 + }, + { + "priority": 2, + "name": "黄金罗盘", + "frequency": "daily", + "daily_purchase_limit": 2, + "quantity_policy": "maximum_affordable_available" + }, + { + "priority": 3, + "name": "白银罗盘", + "frequency": "daily", + "daily_purchase_limit": 10, + "quantity_policy": "maximum_affordable_available" + } + ], + "daily_priority_order": [ + "黄金罗盘", + "白银罗盘" + ], + "currency": "contribution_store_specific_currency", + "balance_location": "页面顶部", + "quantity_policy": "maximum_affordable_available_with_daily_or_weekly_limits", + "weekly_purchase_window": "周一刷新后整周可购买,按余额补购至本周可售数量用完", + "pending_confirmation": [ + "商品价格、可售数量、货币、购买确认和结果识别模板" + ], + "balance_condition": "专用货币余额大于等于当前商品价格", + "weekly_refresh_weekday": "monday", + "sold_out_text": "已售罄", + "after_each_purchase": "确认结果,重新读取余额和可售数量;按剩余日周限额补购,不能每次进入重置限额", + "weekly_refresh_time": null, + "selection_order": [ + "合作券", + "黄金罗盘", + "白银罗盘" + ], + "execution_design": "优先按余额补购本周剩余可售合作券,最多7个;合作券不可售或余额不足以支付时再买黄金罗盘每日最多2个,最后白银罗盘每日最多10个;每次确认结果并重读余额、库存和剩余限额" + }, + "return_control": { + "target": "guild", + "description": "右上角关闭按钮返回公会", + "status": "documented", + "source": "user_confirmed" + }, + "aliases": [ + "贡献商城" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_store.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "observed_goods_snapshot": { + "source": "本轮截图", + "values": { + "合作券": { + "price": 100, + "stock": 7, + "items_per_purchase": 1 + }, + "白银罗盘": { + "price": 40, + "stock": 10, + "items_per_purchase": 1 + } + }, + "use": "仅核实例子,执行时重读价格、每份数量和库存" + } + }, + { + "id": "guild.store.dragon_scale", + "name": "龙鳞商店", + "parent": "guild.store", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_store_title.png", + "search": [ + 200, + 131, + 360, + 190 + ], + "threshold": 0.88 + }, + { + "template": "map_audit_dragon_tab.png", + "search": [ + 290, + 796, + 446, + 859 + ], + "threshold": 0.88 + } + ] + ], + "tab_order": 2, + "note": "共用公会商城入口,购买规则来自用户说明;模板与执行待实现。", + "evidence": [ + "2026-10-05 22:31:15 CST 用户确认公会商城两个页签、购买优先级和公会任务及进度宝箱领奖规则", + "用户补充顶部专用货币余额、罗盘每日2/10限额、合作券周一刷新整周最多7个及龙晶龙血按优先级买完" + ], + "purchase_rules": { + "items": [ + { + "priority": 1, + "name": "随机职业龙晶" + }, + { + "priority": 2, + "name": "随机职业龙血" + } + ], + "selection_order": [ + "随机职业龙晶", + "随机职业龙血" + ], + "quantity_policy": "maximum_affordable_available_per_priority", + "frequency": "when_stock_and_balance_available", + "currency": "dragon_scale_store_specific_currency", + "balance_location": "页面顶部", + "pending_confirmation": [ + "商品价格、可售数量、货币、购买确认和结果识别模板" + ], + "balance_condition": "专用货币余额大于等于当前商品价格", + "after_each_purchase": "优先买随机职业龙晶;当前商品不可售或无法支付后检查随机职业龙血,每次确认结果并重读余额库存", + "stop_when": "目标商品无库存或余额不足" + }, + "return_control": { + "target": "guild", + "description": "右上角关闭按钮返回公会", + "status": "documented", + "source": "user_confirmed" + }, + "aliases": [ + "龙鳞商城" + ], + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_dragon.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "observed_goods_snapshot": { + "source": "本轮截图", + "values": { + "随机职业龙晶": { + "price": 250, + "stock": 15, + "items_per_purchase": 5 + }, + "随机职业龙血": { + "price": 250, + "stock": 15, + "items_per_purchase": 100 + } + }, + "use": "仅核实例子,执行时重读价格、每份数量和库存" + } + }, + { + "id": "guild.expedition.labyrinth", + "name": "迷宫寻宝", + "parent": "guild.expedition", + "kind": "page", + "status": "pending", + "recognition": [], + "note": "保留入口,内部流程与返回暂缓确认。", + "evidence": [ + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "automation": { + "enabled": false, + "reason": "用户要求先搁置" + } + }, + { + "id": "guild.duel", + "name": "公会对决", + "parent": "guild.expedition", + "kind": "page", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_duel.png", + "search": [ + 218, + 12, + 339, + 109 + ], + "threshold": 0.88 + } + ] + ], + "note": "规则来自用户说明;识别和执行尚未实现。", + "evidence": [ + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "reward_entry": { + "location": "页面下方", + "button_text": "奖励", + "require_red_dot": true + }, + "return_control": { + "target": "guild", + "description": "左下角返回,直接回公会", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_duel.png", + "date": "2026-10-05", + "reward_actions_tested": false + } + }, + { + "id": "guild.duel.rewards", + "name": "公会对决奖励", + "parent": "guild.duel", + "kind": "overlay", + "status": "documented", + "recognition": [], + "note": "规则来自用户说明;识别和执行尚未实现。", + "evidence": [ + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "default_tab": "guild.duel.rewards.tasks", + "return_control": { + "target": "guild.duel", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "other_tabs": "胜负奖励只记录可见页签名称,内部和任务范围未核实", + "observed_tabs": [ + "任务奖励", + "胜负奖励" + ] + }, + { + "id": "guild.duel.rewards.tasks", + "name": "任务奖励", + "parent": "guild.duel.rewards", + "kind": "tab", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_duel_rewards_tasks.png", + "search": [ + 205, + 110, + 358, + 170 + ], + "threshold": 0.88 + }, + { + "template": "map_audit_duel_tasks_tab.png", + "search": [ + 134, + 840, + 271, + 902 + ], + "threshold": 0.88 + } + ] + ], + "note": "规则来自用户说明;识别和执行尚未实现。", + "evidence": [ + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "reward_rules": { + "scrollable": true, + "claim_button_text": "领取", + "unavailable_button_text": "前往", + "claimed_button_text": "已完成", + "claimable_position": "可领取任务集中在列表上方", + "claimed_reorder": "已完成任务移到列表最后", + "skip_buttons": [ + "前往", + "已完成" + ], + "execution_design": "点击领取后确认结果,重新识别重排后的列表;上下滚动检查剩余任务,不点击前往", + "pending_confirmation": [ + "任务列表、滚动边界、领取和结果、奖励入口红点与关闭识别模板" + ] + }, + "return_control": { + "target": "guild.duel", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_duel_rewards.png", + "date": "2026-10-05", + "reward_actions_tested": false + } + }, + { + "id": "guild.boss.treasure", + "name": "公会Boss财宝", + "parent": "guild.boss", + "kind": "overlay", + "status": "documented", + "recognition": [ + [ + { + "template": "map_audit_guild_boss_treasure.png", + "search": [ + 205, + 80, + 358, + 137 + ], + "threshold": 0.88 + } + ] + ], + "note": "规则来自用户说明;识别和执行尚未实现。", + "evidence": [ + "2026-10-05 22:49:51 CST 用户确认远征大厅、公会对决、公会祝福及公会Boss奖励和助威规则" + ], + "reward_rules": { + "claim_button_text": "全部领取", + "claimed_button_state": "灰色领取", + "completion": "领取后按钮变为灰色领取;确认奖励结果后关闭", + "claimed_action": "灰色领取跳过", + "pending_confirmation": [ + "财宝图标数字、全部领取、灰色领取及奖励结果模板" + ], + "excluded_button_text": "升级上限" + }, + "return_control": { + "target": "guild.boss", + "description": "右上角关闭", + "status": "documented", + "source": "user_confirmed" + }, + "verification": { + "scope": [ + "page_layout" + ], + "capture": "local/page_audit/guild_boss_treasure.png", + "date": "2026-10-05", + "reward_actions_tested": false + }, + "observed_title": "击杀宝箱" + } + ], + "edges": [ + { + "id": "home->shop", + "from": "home", + "to": "shop", + "label": "底部商城", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.1, + 0.94 + ] + } + }, + { + "id": "shop->home", + "from": "shop", + "to": "home", + "label": "底部原入口位置的返回", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.1, + 0.94 + ] + } + }, + { + "id": "home->heroes", + "from": "home", + "to": "heroes", + "label": "底部英雄", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.3, + 0.94 + ] + } + }, + { + "id": "heroes->home", + "from": "heroes", + "to": "home", + "label": "底部原入口位置的返回", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.3, + 0.94 + ] + } + }, + { + "id": "home->king", + "from": "home", + "to": "king", + "label": "底部国王", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.49, + 0.94 + ] + } + }, + { + "id": "king->home", + "from": "king", + "to": "home", + "label": "底部原入口位置的返回", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.49, + 0.94 + ] + } + }, + { + "id": "home->territory", + "from": "home", + "to": "territory", + "label": "底部领地", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.68, + 0.94 + ] + } + }, + { + "id": "territory->home", + "from": "territory", + "to": "home", + "label": "底部原入口位置的返回", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.68, + 0.94 + ] + } + }, + { + "id": "home->guild", + "from": "home", + "to": "guild", + "label": "底部公会", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.9, + 0.94 + ] + } + }, + { + "id": "guild->home", + "from": "guild", + "to": "home", + "label": "底部原入口位置的返回", + "status": "live_verified", + "action": { + "kind": "click", + "point": [ + 0.9, + 0.94 + ] + } + }, + { + "id": "home->offer.monthcard", + "from": "home", + "to": "offer.monthcard", + "label": "特惠(可能默认月卡)", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.08, + 0.233 + ], + "source": { + "workflow": "workflows/offer_claim.json", + "action": "open" + } + }, + "condition": "同一特惠入口可能到达月卡或战令,点击后必须重新识别,不保证规划终点。" + }, + { + "id": "home->offer.battlepass", + "from": "home", + "to": "offer.battlepass", + "label": "特惠(可能默认战令)", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.08, + 0.233 + ], + "source": { + "workflow": "workflows/offer_claim.json", + "action": "open" + } + }, + "condition": "同一特惠入口可能到达月卡或战令,点击后必须重新识别,不保证规划终点。" + }, + { + "id": "offer.monthcard->offer.battlepass", + "from": "offer.monthcard", + "to": "offer.battlepass", + "label": "底部战令", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.49, + 0.94 + ], + "source": { + "workflow": "workflows/offer_claim.json", + "action": "battlepass" + } + } + }, + { + "id": "offer.monthcard->home", + "from": "offer.monthcard", + "to": "home", + "label": "左下箭头返回首页", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/offer_claim.json", + "action": "back" + } + }, + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "offer.battlepass->home", + "from": "offer.battlepass", + "to": "home", + "label": "左下箭头返回首页", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/offer_claim.json", + "action": "back" + } + }, + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "home->idle", + "from": "home", + "to": "idle", + "label": "小金猪", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.135, + 0.607 + ], + "source": { + "workflow": "workflows/idle_claim.json", + "action": "open_pig" + } + } + }, + { + "id": "idle->home", + "from": "idle", + "to": "home", + "label": "空白处关闭", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.5, + 0.94 + ], + "source": { + "workflow": "workflows/idle_claim.json", + "action": "close" + } + } + }, + { + "id": "home->tasks.daily", + "from": "home", + "to": "tasks.daily", + "label": "右侧任务(默认页需识别)", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.21 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "open_tasks" + } + }, + "condition": "任务默认页可能为日常或周常,点击后重新识别。" + }, + { + "id": "home->tasks.weekly", + "from": "home", + "to": "tasks.weekly", + "label": "右侧任务(默认页需识别)", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.21 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "open_tasks" + } + }, + "condition": "任务默认页可能为日常或周常,点击后重新识别。" + }, + { + "id": "tasks.daily->tasks.weekly", + "from": "tasks.daily", + "to": "tasks.weekly", + "label": "周常页签", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.8, + 0.884 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "open_weekly" + } + } + }, + { + "id": "tasks.weekly->tasks.daily", + "from": "tasks.weekly", + "to": "tasks.daily", + "label": "日常页签", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.62, + 0.884 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "open_daily" + } + } + }, + { + "id": "tasks.daily->home", + "from": "tasks.daily", + "to": "home", + "label": "关闭任务", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.14 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "close" + } + } + }, + { + "id": "tasks.weekly->home", + "from": "tasks.weekly", + "to": "home", + "label": "关闭任务", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.14 + ], + "source": { + "workflow": "workflows/task_claim.json", + "action": "close" + } + } + }, + { + "id": "home->mail", + "from": "home", + "to": "mail", + "label": "右侧邮件", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.35 + ], + "source": { + "workflow": "workflows/mail_claim.json", + "action": "open_mail" + } + } + }, + { + "id": "mail->home", + "from": "mail", + "to": "home", + "label": "关闭邮件", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.93, + 0.14 + ], + "source": { + "workflow": "workflows/mail_claim.json", + "action": "close" + } + } + }, + { + "id": "home->rally", + "from": "home", + "to": "rally", + "label": "右侧英雄集结", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.9, + 0.43 + ], + "source": { + "workflow": "workflows/sword_gift_claim.json", + "action": "open_rally" + } + }, + "condition": "活动入口当前存在;名称、位置变化时重新定位。" + }, + { + "id": "rally->home", + "from": "rally", + "to": "home", + "label": "关闭活动", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.9, + 0.15 + ], + "source": { + "workflow": "workflows/sword_gift_claim.json", + "action": "close_rally" + } + } + }, + { + "id": "rally->rally.sword", + "from": "rally", + "to": "rally.sword", + "label": "剑来献礼", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.33, + 0.39 + ], + "source": { + "workflow": "workflows/sword_gift_claim.json", + "action": "open_sword" + } + } + }, + { + "id": "rally.sword->rally", + "from": "rally.sword", + "to": "rally", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/sword_gift_claim.json", + "action": "sword_back" + } + } + }, + { + "id": "rally->rally.lizhu", + "from": "rally", + "to": "rally.lizhu", + "label": "骊珠画卷", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.33, + 0.65 + ], + "source": { + "workflow": "workflows/lizhu_task_claim.json", + "action": "open_lizhu" + } + } + }, + { + "id": "rally.lizhu->rally", + "from": "rally.lizhu", + "to": "rally", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/lizhu_task_claim.json", + "action": "lizhu_back" + } + } + }, + { + "id": "rally.lizhu->rally.lizhu.tasks", + "from": "rally.lizhu", + "to": "rally.lizhu.tasks", + "label": "底部任务", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.7, + 0.94 + ], + "source": { + "workflow": "workflows/lizhu_task_claim.json", + "action": "open_tasks" + } + } + }, + { + "id": "rally.lizhu.tasks->rally.lizhu", + "from": "rally.lizhu.tasks", + "to": "rally.lizhu", + "label": "关闭任务", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.92, + 0.11 + ], + "source": { + "workflow": "workflows/lizhu_task_claim.json", + "action": "close_tasks" + } + } + }, + { + "id": "recruit.lamp->shop", + "from": "recruit.lamp", + "to": "shop", + "label": "关闭神灯召唤", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.915, + 0.205 + ], + "source": { + "workflow": "workflows/recruit_signin.json", + "action": "close_lamp" + } + } + }, + { + "id": "territory->rat", + "from": "territory", + "to": "rat", + "label": "狂鼠之家", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.2, + 0.52 + ], + "source": { + "workflow": "workflows/mining_claim.json", + "action": "rat_house" + } + } + }, + { + "id": "rat->territory", + "from": "rat", + "to": "territory", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/mining_claim.json", + "action": "rat_back" + } + } + }, + { + "id": "rat->rat.friends", + "from": "rat", + "to": "rat.friends", + "label": "底部好友", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.72, + 0.94 + ], + "source": { + "workflow": "workflows/feed_mice.json", + "action": "friends" + } + } + }, + { + "id": "rat.friends->rat", + "from": "rat.friends", + "to": "rat", + "label": "关闭好友列表", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.7, + 0.94 + ], + "source": { + "workflow": "workflows/feed_mice.json", + "action": "friends_back" + } + } + }, + { + "id": "rat.friend->rat", + "from": "rat.friend", + "to": "rat", + "label": "左下回家", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/feed_mice.json", + "action": "friend_home" + } + } + }, + { + "id": "territory->canteen", + "from": "territory", + "to": "canteen", + "label": "食堂", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.55, + 0.5 + ], + "source": { + "workflow": "workflows/stamina_claim.json", + "action": "canteen" + } + } + }, + { + "id": "canteen->territory", + "from": "canteen", + "to": "territory", + "label": "关闭食堂", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.5, + 0.9 + ], + "source": { + "workflow": "workflows/stamina_claim.json", + "action": "close_canteen" + } + } + }, + { + "id": "territory->coop.selection", + "from": "territory", + "to": "coop.selection", + "label": "合作模式入口", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.6, + 0.18 + ], + "source": { + "workflow": "workflows/cooperation_ticket.json", + "action": "open_cooperation" + } + } + }, + { + "id": "coop.selection->coop", + "from": "coop.selection", + "to": "coop", + "label": "左侧合作模式", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.27, + 0.47 + ], + "source": { + "workflow": "workflows/cooperation_ticket.json", + "action": "choose_cooperation" + } + } + }, + { + "id": "coop->territory", + "from": "coop", + "to": "territory", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/cooperation_ticket.json", + "action": "cooperation_back" + } + } + }, + { + "id": "territory->arena.selection", + "from": "territory", + "to": "arena.selection", + "label": "巅峰决斗入口", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.27, + 0.35 + ], + "source": { + "workflow": "workflows/arena_points.json", + "action": "peak_duel" + } + } + }, + { + "id": "arena.selection->arena", + "from": "arena.selection", + "to": "arena", + "label": "左侧竞技场", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.27, + 0.47 + ], + "source": { + "workflow": "workflows/arena_points.json", + "action": "arena" + } + } + }, + { + "id": "arena->territory", + "from": "arena", + "to": "territory", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/arena_points.json", + "action": "arena_back" + } + } + }, + { + "id": "territory->play_hall", + "from": "territory", + "to": "play_hall", + "label": "玩法大厅", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.4, + 0.67 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "hall" + } + } + }, + { + "id": "play_hall->territory", + "from": "play_hall", + "to": "territory", + "label": "关闭玩法大厅", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.94, + 0.19 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "hall_close" + } + } + }, + { + "id": "play_hall->planet", + "from": "play_hall", + "to": "planet", + "label": "星球矿场", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.5, + 0.37 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "planet" + } + } + }, + { + "id": "planet->play_hall", + "from": "planet", + "to": "play_hall", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "planet_back" + } + } + }, + { + "id": "planet->planet.rank", + "from": "planet", + "to": "planet.rank", + "label": "右上排行榜", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.92, + 0.15 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "rank" + } + } + }, + { + "id": "planet.rank->planet", + "from": "planet.rank", + "to": "planet", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "rank_back" + } + } + }, + { + "id": "planet.rank->planet.progress", + "from": "planet.rank", + "to": "planet.progress", + "label": "进度奖励", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.85, + 0.81 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "progress" + } + } + }, + { + "id": "planet.progress->planet.rank", + "from": "planet.progress", + "to": "planet.rank", + "label": "关闭", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.91, + 0.13 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "progress_close" + } + } + }, + { + "id": "guild->guild.altar", + "from": "guild", + "to": "guild.altar", + "label": "右下红珍珠祭坛", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.84, + 0.72 + ], + "source": { + "workflow": "workflows/guild_bargain.json", + "action": "altar" + } + } + }, + { + "id": "guild.altar->guild", + "from": "guild.altar", + "to": "guild", + "label": "返回", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.12, + 0.94 + ], + "source": { + "workflow": "workflows/guild_bargain.json", + "action": "altar_back" + } + } + }, + { + "id": "guild->guild.donation", + "from": "guild", + "to": "guild.donation", + "label": "每日捐献", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.84, + 0.43 + ], + "source": { + "workflow": "workflows/guild_donation.json", + "action": "donation" + } + } + }, + { + "id": "guild.donation->guild", + "from": "guild.donation", + "to": "guild", + "label": "关闭捐献", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.88, + 0.285 + ], + "source": { + "workflow": "workflows/guild_donation.json", + "action": "close_dialog" + } + } + }, + { + "id": "rat.hire->rat", + "from": "rat.hire", + "to": "rat", + "label": "关闭雇佣", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.905, + 0.293 + ], + "source": { + "workflow": "workflows/mining_claim.json", + "action": "close_dialog" + } + } + }, + { + "id": "shop->recruit.lamp", + "from": "shop", + "to": "recruit.lamp", + "label": "滚动定位限时 UP 卡片,点击带红点的任务按钮", + "status": "workflow_verified", + "action": { + "kind": "locate_then_click", + "description": "滚动定位限时 UP 卡片,点击带红点的任务按钮" + }, + "condition": "动态定位任务按钮和红点;可能没有活动卡片。" + }, + { + "id": "rat.friends->rat.friend", + "from": "rat.friends", + "to": "rat.friend", + "label": "定位首位喂矿鼠按钮", + "status": "workflow_verified", + "action": { + "kind": "locate_then_click", + "description": "定位首位喂矿鼠按钮" + }, + "condition": "必须存在可喂好友;位置按列表识别。" + }, + { + "id": "rat->rat.hire", + "from": "rat", + "to": "rat.hire", + "label": "打开一键雇佣", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.5, + 0.858 + ], + "source": { + "workflow": "workflows/mining_claim.json", + "action": "hire_open" + } + }, + "condition": "收矿任务完成后等待 10 秒,且当前底部按钮确为一键雇佣;不允许仅为导航点击。" + }, + { + "id": "planet->planet.sweep", + "from": "planet", + "to": "planet.sweep", + "label": "打开扫荡弹框", + "status": "workflow_verified", + "action": { + "kind": "click", + "point": [ + 0.29, + 0.82 + ], + "source": { + "workflow": "workflows/planet_mine.json", + "action": "sweep" + } + }, + "condition": "仅在执行用户指定扫荡任务且剩余次数非零时打开;不用于一般返回首页。" + }, + { + "id": "home->home.gold_trip", + "from": "home", + "to": "home.gold_trip", + "label": "左上角/金沙游记", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "识别左上角金沙游记入口后点击" + }, + "condition": "用户确认入口;识别模板未采集,不用于自动导航。" + }, + { + "id": "home->home.activity", + "from": "home", + "to": "home.activity", + "label": "左侧/活动", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "左侧/活动" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "home->home.rebate", + "from": "home", + "to": "home.rebate", + "label": "左侧/返利", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "左侧/返利" + }, + "condition": "入口不定期出现;用户明确暂不处理,不参与自动导航或任务执行。" + }, + { + "id": "home->home.movie", + "from": "home", + "to": "home.movie", + "label": "左侧/观影", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "左侧/观影" + }, + "condition": "仅在首页观影入口实际出现时考虑进入;当前未出现,流程待后续采集,不用于自动导航。" + }, + { + "id": "home->home.trial", + "from": "home", + "to": "home.trial", + "label": "左侧/试炼", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "左侧/试炼" + }, + "condition": "本次用户确认入口存在;属于不定期活动,执行时仍需重新确认入口,识别模板待采集,不用于自动导航。" + }, + { + "id": "home->home.sprint", + "from": "home", + "to": "home.sprint", + "label": "左侧/冲刺(轮换三类)", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "左侧/冲刺(轮换三类)" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "home->home.treasure", + "from": "home", + "to": "home.treasure", + "label": "左侧/寻宝活动", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "定位首页左侧冲刺下方的寻宝入口" + }, + "condition": "本次用户确认入口存在;等级解锁阈值与页面模板待采集,不用于自动导航。" + }, + { + "id": "home->home.friends", + "from": "home", + "to": "home.friends", + "label": "右侧/好友", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击首页右侧好友,打开好友列表弹框" + }, + "condition": "用户确认首页右侧好友入口;每日赠送无需先判断领取赠礼红点,页面模板未采集,不用于自动导航。" + }, + { + "id": "heroes->heroes.detail", + "from": "heroes", + "to": "heroes.detail", + "label": "英雄卡片/英雄详情", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "英雄卡片/英雄详情" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "heroes->heroes.pet", + "from": "heroes", + "to": "heroes.pet", + "label": "右下宠物/宠物", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "右下宠物/宠物" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "king->king.other", + "from": "king", + "to": "king.other", + "label": "武器、披风、皮肤、城墙、藏品、图腾、材料等/国王其他页签与功能", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "武器、披风、皮肤、城墙、藏品、图腾、材料等/国王其他页签与功能" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "territory->territory.atlas", + "from": "territory", + "to": "territory.atlas", + "label": "右下/图鉴", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "右下/图鉴" + }, + "condition": "用户确认此栏目暂不处理;仅保留入口关系,不参与自动执行。" + }, + { + "id": "territory->territory.rank", + "from": "territory", + "to": "territory.rank", + "label": "右侧/排行榜", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右侧/排行榜" + }, + "condition": "领地排行榜入口有红点时进入;最新要求启用此任务,模板未采集,不用于自动导航。" + }, + { + "id": "territory->territory.wall", + "from": "territory", + "to": "territory.wall", + "label": "右上/城墙", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上/城墙" + }, + "condition": "用户已确认入口与内部页签;模板未采集,不用于自动导航。" + }, + { + "id": "coop.selection->coop.pet", + "from": "coop.selection", + "to": "coop.pet", + "label": "右侧模式/保卫宠物", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右侧模式/保卫宠物" + }, + "condition": "用户确认保卫宠物内部任务;模板未采集,不用于自动导航。" + }, + { + "id": "arena.selection->arena.peak", + "from": "arena.selection", + "to": "arena.peak", + "label": "右侧模式/巅峰决斗", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右侧模式/巅峰决斗" + }, + "condition": "用户确认巅峰决斗及商店任务;入口模板未采集,不用于自动导航。" + }, + { + "id": "guild->guild.store", + "from": "guild", + "to": "guild.store", + "label": "左侧中下部/公会商城", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左侧中下部/公会商城" + }, + "condition": "用户确认入口及内部规则,模板未采集,不用于自动导航。" + }, + { + "id": "guild->guild.expedition", + "from": "guild", + "to": "guild.expedition", + "label": "下方偏左/远征大厅", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "下方偏左/远征大厅" + }, + "condition": "用户说明入口和流程,模板未采集,不用于自动导航。" + }, + { + "id": "guild->guild.tasks", + "from": "guild", + "to": "guild.tasks", + "label": "左侧中部/公会任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左侧中部/公会任务" + }, + "condition": "用户确认入口及内部规则,模板未采集,不用于自动导航。" + }, + { + "id": "guild->guild.blessing", + "from": "guild", + "to": "guild.blessing", + "label": "中部球体/公会祝福", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "中部球体/公会祝福" + }, + "condition": "用户说明入口和流程,模板未采集,不用于自动导航。" + }, + { + "id": "guild->guild.members", + "from": "guild", + "to": "guild.members", + "label": "右上塔楼/成员大厅", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "右上塔楼/成员大厅" + }, + "condition": "尚未验证;调度不可自动执行此边。" + }, + { + "id": "guild->guild.boss", + "from": "guild", + "to": "guild.boss", + "label": "左上巨龙/公会 Boss", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左上巨龙/公会 Boss" + }, + "condition": "用户说明入口和流程,模板未采集,不用于自动导航。" + }, + { + "id": "home.activity->activity.pack", + "from": "home.activity", + "to": "activity.pack", + "label": "超值礼包页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位超值礼包页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "home.activity->activity.daily_offer", + "from": "home.activity", + "to": "activity.daily_offer", + "label": "每日特惠页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位每日特惠页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "home.activity->activity.daily_recharge", + "from": "home.activity", + "to": "activity.daily_recharge", + "label": "每日充值页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位每日充值页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "home.activity->activity.cumulative_recharge", + "from": "home.activity", + "to": "activity.cumulative_recharge", + "label": "累充豪里页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位累充豪里页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "activity.pack->activity.pack.daily", + "from": "activity.pack", + "to": "activity.pack.daily", + "label": "日礼包页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位日礼包页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "activity.pack->activity.pack.weekly", + "from": "activity.pack", + "to": "activity.pack.weekly", + "label": "周礼包页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位周礼包页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。" + }, + { + "id": "activity.pack->activity.pack.monthly", + "from": "activity.pack", + "to": "activity.pack.monthly", + "label": "月礼包页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位月礼包页签后切换;当前未采集点击坐标或模板。" + }, + "condition": "页签存在且完成实机识别验证后才可自动切换。须已有月卡会员资格。" + }, + { + "id": "activity.daily_recharge->activity.daily_recharge.tier6", + "from": "activity.daily_recharge", + "to": "activity.daily_recharge.tier6", + "label": "6 元档页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位6 元档页签后切换;尚未采集模板或坐标。" + }, + "condition": "已存在充值奖励且完成页面识别验证后使用;不进行充值。" + }, + { + "id": "activity.daily_recharge->activity.daily_recharge.tier25", + "from": "activity.daily_recharge", + "to": "activity.daily_recharge.tier25", + "label": "25 元档页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位25 元档页签后切换;尚未采集模板或坐标。" + }, + "condition": "已存在充值奖励且完成页面识别验证后使用;不进行充值。" + }, + { + "id": "home.activity->home", + "from": "home.activity", + "to": "home", + "label": "活动左下返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位左下返回按钮,退出活动回到首页;坐标与模板待采集。" + }, + "condition": "仅在活动页面确认后使用;该退出规则适用于活动各页签。" + }, + { + "id": "home->offer.weekcard", + "from": "home", + "to": "offer.weekcard", + "label": "特惠/特惠周卡", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "首页左侧特惠,识别当前页签后选择底部特惠周卡" + }, + "condition": "用户确认入口结构;按钮位置和默认页签待采集,不用于自动导航。" + }, + { + "id": "offer.weekcard->home", + "from": "offer.weekcard", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮,回到首页" + }, + "condition": "返回逻辑已由用户确认;按钮识别与实机切换待验证,不用于自动导航。", + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "home->offer.diamond_fund", + "from": "home", + "to": "offer.diamond_fund", + "label": "特惠/钻石基金", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "首页左侧特惠,识别当前页签后选择底部钻石基金" + }, + "condition": "用户确认入口结构;按钮位置和默认页签待采集,不用于自动导航。" + }, + { + "id": "offer.diamond_fund->home", + "from": "offer.diamond_fund", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮,回到首页" + }, + "condition": "返回逻辑已由用户确认;按钮识别与实机切换待验证,不用于自动导航。", + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "home->offer.relic_pass", + "from": "home", + "to": "offer.relic_pass", + "label": "特惠/遗迹战令", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "首页左侧特惠,识别当前页签后选择底部遗迹战令" + }, + "condition": "用户确认入口结构;按钮位置和默认页签待采集,不用于自动导航。" + }, + { + "id": "offer.relic_pass->home", + "from": "offer.relic_pass", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮,回到首页" + }, + "condition": "返回逻辑已由用户确认;按钮识别与实机切换待验证,不用于自动导航。", + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "home->offer.pet_pass", + "from": "home", + "to": "offer.pet_pass", + "label": "特惠/宠物战令", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "首页左侧特惠,识别当前页签后选择底部宠物战令" + }, + "condition": "用户确认入口结构;按钮位置和默认页签待采集,不用于自动导航。" + }, + { + "id": "offer.pet_pass->home", + "from": "offer.pet_pass", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮,回到首页" + }, + "condition": "返回逻辑已由用户确认;按钮识别与实机切换待验证,不用于自动导航。", + "evidence": [ + "2026-10-05 18:19:12 CST 用户确认全部特惠页签统一返回方式" + ] + }, + { + "id": "offer.diamond_fund->offer.diamond_fund.tier1", + "from": "offer.diamond_fund", + "to": "offer.diamond_fund.tier1", + "label": "钻石基金 1", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位当前实际可见的钻石基金 1 页签并切换" + }, + "condition": "仅在当前页签可见时切换;模板未采集,不用于自动导航。" + }, + { + "id": "offer.diamond_fund->offer.diamond_fund.tier2", + "from": "offer.diamond_fund", + "to": "offer.diamond_fund.tier2", + "label": "钻石基金 2", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位当前实际可见的钻石基金 2 页签并切换" + }, + "condition": "仅在当前页签可见时切换;模板未采集,不用于自动导航。" + }, + { + "id": "offer.diamond_fund->offer.diamond_fund.tier3", + "from": "offer.diamond_fund", + "to": "offer.diamond_fund.tier3", + "label": "钻石基金 3", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位当前实际可见的钻石基金 3 页签并切换" + }, + "condition": "仅在当前页签可见时切换;模板未采集,不用于自动导航。" + }, + { + "id": "home.movie->home", + "from": "home.movie", + "to": "home", + "label": "右上关闭返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击观影页面右上角关闭按钮" + }, + "condition": "返回逻辑由用户确认;按钮模板尚未采集,不用于自动导航。" + }, + { + "id": "home.trial->trial.heroes", + "from": "home.trial", + "to": "trial.heroes", + "label": "英雄试炼", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位并点击试炼中的英雄试炼页签" + }, + "condition": "结构由用户确认;识别模板尚未采集,不用于自动导航。" + }, + { + "id": "trial.heroes->home", + "from": "trial.heroes", + "to": "home", + "label": "底部箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击试炼页面底部箭头样式返回按钮" + }, + "condition": "返回规则由用户确认;按钮与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.trial->trial.training", + "from": "home.trial", + "to": "trial.training", + "label": "特训", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位并点击试炼中的特训页签" + }, + "condition": "结构由用户确认;识别模板尚未采集,不用于自动导航。" + }, + { + "id": "trial.training->home", + "from": "trial.training", + "to": "home", + "label": "底部箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击试炼页面底部箭头样式返回按钮" + }, + "condition": "返回规则由用户确认;按钮与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.trial->trial.tasks", + "from": "home.trial", + "to": "trial.tasks", + "label": "试炼任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位并点击试炼中的试炼任务页签" + }, + "condition": "结构由用户确认;识别模板尚未采集,不用于自动导航。" + }, + { + "id": "trial.tasks->home", + "from": "trial.tasks", + "to": "home", + "label": "底部箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击试炼页面底部箭头样式返回按钮" + }, + "condition": "返回规则由用户确认;按钮与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.trial->home", + "from": "home.trial", + "to": "home", + "label": "底部箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击试炼页面底部箭头样式返回按钮" + }, + "condition": "返回规则由用户确认;按钮与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home->home.wish", + "from": "home", + "to": "home.wish", + "label": "左侧/祈愿(试炼下方、冲刺上方)", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位首页左侧试炼下方、冲刺上方实际出现的祈愿入口" + }, + "condition": "不定期入口;位置由用户确认,识别模板和进入后状态尚未采集,不用于自动导航。" + }, + { + "id": "home.wish->wish.main", + "from": "home.wish", + "to": "wish.main", + "label": "祈愿", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部左下返回按钮右侧的祈愿页签" + }, + "condition": "用户确认结构;按钮识别未采集,不用于自动导航。" + }, + { + "id": "wish.main->home", + "from": "wish.main", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回;模板和实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.wish->wish.tasks", + "from": "home.wish", + "to": "wish.tasks", + "label": "任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部左下返回按钮右侧的任务页签" + }, + "condition": "用户确认结构;按钮识别未采集,不用于自动导航。" + }, + { + "id": "wish.tasks->home", + "from": "wish.tasks", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回;模板和实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.wish->wish.pack", + "from": "home.wish", + "to": "wish.pack", + "label": "礼包", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部左下返回按钮右侧的礼包页签" + }, + "condition": "用户确认结构;按钮识别未采集,不用于自动导航。" + }, + { + "id": "wish.pack->home", + "from": "wish.pack", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回;模板和实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.wish->home", + "from": "home.wish", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回;模板和实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal->sprint.crystal.targets", + "from": "sprint.crystal", + "to": "sprint.crystal.targets", + "label": "冲刺目标", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺目标页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal.targets->home", + "from": "sprint.crystal.targets", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal->sprint.crystal.rank", + "from": "sprint.crystal", + "to": "sprint.crystal.rank", + "label": "冲刺排名", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺排名页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal.rank->home", + "from": "sprint.crystal.rank", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal->sprint.crystal.pack", + "from": "sprint.crystal", + "to": "sprint.crystal.pack", + "label": "冲刺礼包", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺礼包页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal.pack->home", + "from": "sprint.crystal.pack", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal->sprint.crystal.tasks", + "from": "sprint.crystal", + "to": "sprint.crystal.tasks", + "label": "冲刺任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺任务页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.crystal.tasks->home", + "from": "sprint.crystal.tasks", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.sprint->sprint.crystal", + "from": "home.sprint", + "to": "sprint.crystal", + "label": "定位可见晶矿冲刺卡片,识别展示期或进行期", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位可见晶矿冲刺卡片,识别展示期或进行期" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。" + }, + { + "id": "sprint.crystal->home", + "from": "sprint.crystal", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit->sprint.recruit.targets", + "from": "sprint.recruit", + "to": "sprint.recruit.targets", + "label": "冲刺目标", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺目标页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit.targets->home", + "from": "sprint.recruit.targets", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit->sprint.recruit.rank", + "from": "sprint.recruit", + "to": "sprint.recruit.rank", + "label": "冲刺排名", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺排名页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit.rank->home", + "from": "sprint.recruit.rank", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit->sprint.recruit.tasks", + "from": "sprint.recruit", + "to": "sprint.recruit.tasks", + "label": "冲刺任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击当前冲刺的冲刺任务页签" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit.tasks->home", + "from": "sprint.recruit.tasks", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "sprint.recruit->sprint.recruit.pack", + "from": "sprint.recruit", + "to": "sprint.recruit.pack", + "label": "冲刺礼包", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部冲刺礼包页签,底部导航保持不变" + }, + "condition": "用户已确认底部礼包页签;模板未采集,不用于自动导航。" + }, + { + "id": "sprint.recruit.pack->home", + "from": "sprint.recruit.pack", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.sprint->sprint.recruit", + "from": "home.sprint", + "to": "sprint.recruit", + "label": "定位进行期招募冲刺卡片并进入", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位进行期招募冲刺卡片并进入" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-06 00:39:03 CST", + "result_capture": "local/page_audit/sprint_recruit.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "sprint.recruit->home", + "from": "sprint.recruit", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.sprint->sprint.totem", + "from": "home.sprint", + "to": "sprint.totem", + "label": "出现后定位图腾冲刺卡片;当前样式未核实", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "出现后定位图腾冲刺卡片;当前样式未核实" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。" + }, + { + "id": "sprint.totem->home", + "from": "sprint.totem", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认结构,识别与实机切换尚未验证,不用于自动导航。" + }, + { + "id": "home.sprint->sprint.star_store", + "from": "home.sprint", + "to": "sprint.star_store", + "label": "右下兑换商店打开星珀兑换弹框", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右下兑换商店打开星珀兑换弹框" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-06 00:38:20 CST", + "result_capture": "local/page_audit/sprint_star_store.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "sprint.star_store->home.sprint", + "from": "sprint.star_store", + "to": "home.sprint", + "label": "右上X关闭星珀兑换回限时冲刺列表", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭星珀兑换回限时冲刺列表" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。 仅打开商城的原始主页面为home.sprint时采用此返回边。", + "preserve_context": true, + "requires_origin_history": true, + "origin_page": "home.sprint", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-06 00:38:58 CST", + "result_capture": "local/page_audit/sprint_store_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "home.sprint->home", + "from": "home.sprint", + "to": "home", + "label": "右上X关闭限时冲刺列表", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭限时冲刺列表" + }, + "condition": "截图观察到右上X;本轮未点击该X验证落点,仍待实测。" + }, + { + "id": "home.treasure->treasure.exchange", + "from": "home.treasure", + "to": "treasure.exchange", + "label": "宝藏兑换", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击寻宝页面底部宝藏兑换页签" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "treasure.exchange->home", + "from": "treasure.exchange", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回规则;识别和实机切换待验证,不用于自动导航。" + }, + { + "id": "home.treasure->treasure.tasks", + "from": "home.treasure", + "to": "treasure.tasks", + "label": "冒险任务", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击寻宝页面底部冒险任务页签" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "treasure.tasks->home", + "from": "treasure.tasks", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回规则;识别和实机切换待验证,不用于自动导航。" + }, + { + "id": "home.treasure->treasure.pack", + "from": "home.treasure", + "to": "treasure.pack", + "label": "冒险礼包", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击寻宝页面底部冒险礼包页签" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "treasure.pack->home", + "from": "treasure.pack", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头样式返回按钮" + }, + "condition": "用户确认返回规则;识别和实机切换待验证,不用于自动导航。" + }, + { + "id": "home.treasure->home", + "from": "home.treasure", + "to": "home", + "label": "左下箭头返回首页", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击寻宝页面左下角箭头样式返回按钮" + }, + "condition": "用户确认返回规则;识别和实机切换待验证,不用于自动导航。" + }, + { + "id": "home.friends->friends.gifts", + "from": "home.friends", + "to": "friends.gifts", + "label": "底部领取赠礼(有红点)", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "仅在好友列表底部领取赠礼按钮有红点时点击" + }, + "condition": "领取赠礼按钮有红点;模板未采集,不用于自动导航。" + }, + { + "id": "friends.gifts->home.friends", + "from": "friends.gifts", + "to": "home.friends", + "label": "关闭领取赠礼弹框", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击领取赠礼弹框外可见区域,或点击右上角X,回到好友列表" + }, + "condition": "仅关闭最上层赠礼弹框;模板未采集,不用于自动导航。" + }, + { + "id": "home.friends->home", + "from": "home.friends", + "to": "home", + "label": "点击好友列表外关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "确认赠礼弹框已关闭后,点击好友列表弹框外关闭,回到首页" + }, + "condition": "关闭好友列表回首页;模板未采集,不用于自动导航。" + }, + { + "id": "home.gold_trip->home", + "from": "home.gold_trip", + "to": "home", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记左下角箭头返回首页" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "home.gold_trip->gold_trip.treasure", + "from": "home.gold_trip", + "to": "gold_trip.treasure", + "label": "金顶夺宝", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记中的金顶夺宝入口" + }, + "condition": "已记录入口;未采集模板,暂不处理的分活动不执行。" + }, + { + "id": "home.gold_trip->gold_trip.letters", + "from": "home.gold_trip", + "to": "gold_trip.letters", + "label": "驿站密使", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "驿站密使入口有红点时点击" + }, + "condition": "名称与红点进入条件已确认;模板未采集,不用于自动导航。" + }, + { + "id": "home.gold_trip->gold_trip.roam", + "from": "home.gold_trip", + "to": "gold_trip.roam", + "label": "圣迹漫游", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记中的圣迹漫游入口" + }, + "condition": "已记录入口;未采集模板,暂不处理的分活动不执行。" + }, + { + "id": "home.gold_trip->gold_trip.cards", + "from": "home.gold_trip", + "to": "gold_trip.cards", + "label": "法老遗珍", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记中的法老遗珍入口" + }, + "condition": "已记录入口;未采集模板,暂不处理的分活动不执行。" + }, + { + "id": "home.gold_trip->gold_trip.sign_in", + "from": "home.gold_trip", + "to": "gold_trip.sign_in", + "label": "流沙赠礼", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记中的流沙赠礼入口" + }, + "condition": "已记录入口;未采集模板,暂不处理的分活动不执行。" + }, + { + "id": "home.gold_trip->gold_trip.supply", + "from": "home.gold_trip", + "to": "gold_trip.supply", + "label": "驼铃补给", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击金沙游记中的驼铃补给入口" + }, + "condition": "已记录入口;未采集模板,暂不处理的分活动不执行。" + }, + { + "id": "gold_trip.letters->home.gold_trip", + "from": "gold_trip.letters", + "to": "home.gold_trip", + "label": "关闭来信弹框", + "status": "documented", + "action": { + "kind": "dismiss_overlay", + "description": "点击弹框外或右上X回金沙游记" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "gold_trip.cards->home.gold_trip", + "from": "gold_trip.cards", + "to": "home.gold_trip", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头回金沙游记" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in->home.gold_trip", + "from": "gold_trip.sign_in", + "to": "home.gold_trip", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角箭头回金沙游记" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in->gold_trip.sign_in.day15", + "from": "gold_trip.sign_in", + "to": "gold_trip.sign_in.day15", + "label": "游戏自动选择15天", + "status": "documented", + "action": { + "kind": "observe_auto_selected_tab", + "description": "识别游戏按活动进度自动显示的页签,不发送点击" + }, + "condition": "自动显示的条件分支;当前页签需识别,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in.day15->home.gold_trip", + "from": "gold_trip.sign_in.day15", + "to": "home.gold_trip", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击签到页左下角箭头返回金沙游记" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in->gold_trip.sign_in.day23", + "from": "gold_trip.sign_in", + "to": "gold_trip.sign_in.day23", + "label": "游戏自动选择23天", + "status": "documented", + "action": { + "kind": "observe_auto_selected_tab", + "description": "识别游戏按活动进度自动显示的页签,不发送点击" + }, + "condition": "自动显示的条件分支;当前页签需识别,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in.day23->home.gold_trip", + "from": "gold_trip.sign_in.day23", + "to": "home.gold_trip", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击签到页左下角箭头返回金沙游记" + }, + "condition": "用户确认返回;模板未采集,不用于自动导航。" + }, + { + "id": "gold_trip.sign_in.day15->gold_trip.sign_in.day23", + "from": "gold_trip.sign_in.day15", + "to": "gold_trip.sign_in.day23", + "label": "23天页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击23天页签" + }, + "condition": "仅记录两个页签切换关系;领奖优先游戏自动选中页签,模板未采集。" + }, + { + "id": "gold_trip.sign_in.day23->gold_trip.sign_in.day15", + "from": "gold_trip.sign_in.day23", + "to": "gold_trip.sign_in.day15", + "label": "15天页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击15天页签" + }, + "condition": "仅记录两个页签切换关系;领奖优先游戏自动选中页签,模板未采集。" + }, + { + "id": "rally->rally.huai", + "from": "rally", + "to": "rally.huai", + "label": "槐萌祈缘", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位槐萌祈缘入口后点击;暂不处理的分活动不执行" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "rally->rally.sign_in", + "from": "rally", + "to": "rally.sign_in", + "label": "岁岁平安", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位岁岁平安入口后点击;暂不处理的分活动不执行" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "rally->rally.search", + "from": "rally", + "to": "rally.search", + "label": "骊珠寻珍", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "仅在入口有红点时点击骊珠寻珍" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "rally->rally.wall", + "from": "rally", + "to": "rally.wall", + "label": "剑守长城", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位剑守长城入口后点击;暂不处理的分活动不执行" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "rally.sign_in->rally", + "from": "rally.sign_in", + "to": "rally", + "label": "右上关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击岁岁平安右上角关闭按钮返回英雄集结" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "rally.search->rally", + "from": "rally.search", + "to": "rally", + "label": "左下箭头返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击骊珠寻珍左下返回箭头回英雄集结" + }, + "condition": "用户说明,模板尚未采集,不用于自动导航。" + }, + { + "id": "territory.wall->territory.wall.overview", + "from": "territory.wall", + "to": "territory.wall.overview", + "label": "默认城墙页签", + "status": "documented", + "action": { + "kind": "observe_default_tab", + "description": "进入模块后识别默认城墙页签,不发送点击" + }, + "condition": "页签关系来自用户说明,模板未采集,不用于自动导航。" + }, + { + "id": "territory.wall->territory.wall.craft", + "from": "territory.wall", + "to": "territory.wall.craft", + "label": "底部打造", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部打造页签,显示机关打造" + }, + "condition": "页签关系来自用户说明,模板未采集,不用于自动导航。" + }, + { + "id": "territory.wall.overview->territory.wall.craft", + "from": "territory.wall.overview", + "to": "territory.wall.craft", + "label": "底部打造打开机关打造弹框", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "底部打造打开机关打造弹框" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:49:54 CST", + "result_capture": "local/page_audit/wall_craft.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "territory.wall.craft->territory.wall.overview", + "from": "territory.wall.craft", + "to": "territory.wall.overview", + "label": "右上X关闭机关打造回城墙", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭机关打造回城墙" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:52:51 CST", + "result_capture": "local/page_audit/wall_craft_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "territory.wall->territory", + "from": "territory.wall", + "to": "territory", + "label": "左下返回领地", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击底部左侧返回按钮回到领地" + }, + "condition": "用户确认返回目标;模板未采集,不用于自动导航。" + }, + { + "id": "territory.wall.craft->territory", + "from": "territory.wall.craft", + "to": "territory", + "label": "左下返回领地", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "点击底部左侧返回按钮回到领地" + }, + "condition": "机关打造已核实为弹框,应先右上关闭回城墙再返回领地;直接点后方左下按钮未验证,不用于导航。" + }, + { + "id": "territory.wall.overview->territory", + "from": "territory.wall.overview", + "to": "territory", + "label": "左下返回领地", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左下返回领地" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:55:15 CST", + "result_capture": "local/page_audit/wall_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "play_hall->relic", + "from": "play_hall", + "to": "relic", + "label": "遗迹夺宝", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击遗迹夺宝入口" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "relic->relic.notice", + "from": "relic", + "to": "relic.notice", + "label": "每日首次提示", + "status": "documented", + "action": { + "kind": "observe_overlay", + "description": "出现每日首次提示时识别弹框" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "relic.notice->relic", + "from": "relic.notice", + "to": "relic", + "label": "关闭提示", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "关闭提示后继续遗迹夺宝;关闭控件待采集" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "relic->relic.sweep_warning", + "from": "relic", + "to": "relic.sweep_warning", + "label": "不战而逃提示", + "status": "documented", + "action": { + "kind": "observe_overlay", + "description": "扫荡出现国王势力过于强大、怪物不战而逃提示时识别" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "relic.sweep_warning->relic", + "from": "relic.sweep_warning", + "to": "relic", + "label": "确定", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击确定关闭提示" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "relic->territory", + "from": "relic", + "to": "territory", + "label": "左下返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击遗迹夺宝左下返回直接回领地" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "territory.rank->territory.rank.board", + "from": "territory.rank", + "to": "territory.rank.board", + "label": "默认排行榜页签", + "status": "documented", + "action": { + "kind": "observe_default_tab", + "description": "进入后识别默认排行榜页签" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "territory.rank.board->territory.rank.progress", + "from": "territory.rank.board", + "to": "territory.rank.progress", + "label": "下方进度奖励打开本服进度奖励弹框", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "下方进度奖励打开本服进度奖励弹框" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:25:13 CST", + "result_capture": "local/page_audit/territory_rank_progress.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "territory.rank.progress->territory.rank.board", + "from": "territory.rank.progress", + "to": "territory.rank.board", + "label": "右上X关闭进度奖励回主线榜", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭进度奖励回主线榜" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:31:33 CST", + "result_capture": "local/page_audit/rank_progress_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "territory.rank.board->territory", + "from": "territory.rank.board", + "to": "territory", + "label": "左下返回领地", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左下返回领地" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:37:05 CST", + "result_capture": "local/page_audit/rank_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "territory.rank->territory", + "from": "territory.rank", + "to": "territory", + "label": "左下角返回领地", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左下角返回领地" + }, + "condition": "2026-10-05截图确认左下返回;本轮随后核实落点" + }, + { + "id": "coop->coop.friend_store", + "from": "coop", + "to": "coop.friend_store", + "label": "左上友情商店", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击合作模式左上友情商店" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet->coop.pet.buff", + "from": "coop.pet", + "to": "coop.pet.buff", + "label": "本周buff提示", + "status": "documented", + "action": { + "kind": "observe_overlay", + "description": "存在本周buff提示时识别弹框" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.buff->coop.pet", + "from": "coop.pet.buff", + "to": "coop.pet", + "label": "知道了", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击知道了关闭本周buff提示" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet->coop.pet.store", + "from": "coop.pet", + "to": "coop.pet.store", + "label": "右侧商城", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击右侧商城进入宠物商店" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet->coop.pet.challenge", + "from": "coop.pet", + "to": "coop.pet.challenge", + "label": "右上挑战", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "仅在挑战入口有红点时点击" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge->coop.pet.challenge.weekly", + "from": "coop.pet.challenge", + "to": "coop.pet.challenge.weekly", + "label": "每周", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "仅在每周页签有红点时进入" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge->coop.pet.challenge.achievements", + "from": "coop.pet.challenge", + "to": "coop.pet.challenge.achievements", + "label": "成就", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "仅在成就页签有红点时进入" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge.weekly->coop.pet.challenge.achievements", + "from": "coop.pet.challenge.weekly", + "to": "coop.pet.challenge.achievements", + "label": "成就页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "成就页签有红点时切换" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge.achievements->coop.pet.challenge.weekly", + "from": "coop.pet.challenge.achievements", + "to": "coop.pet.challenge.weekly", + "label": "每周页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "每周页签有红点时切换" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "coop.friend_store->coop", + "from": "coop.friend_store", + "to": "coop", + "label": "右上X关闭商城回合作模式", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭商城回合作模式" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。 仅打开商城的原始主页面为coop时采用此返回边。", + "requires_origin_history": true, + "origin_page": "coop", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:38:52 CST", + "result_capture": "local/page_audit/friend_store_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "coop.pet.store->coop.pet", + "from": "coop.pet.store", + "to": "coop.pet", + "label": "右上X关闭宠物商店回保卫宠物", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭宠物商店回保卫宠物" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。 仅打开商城的原始主页面为coop.pet时采用此返回边。", + "requires_origin_history": true, + "origin_page": "coop.pet" + }, + { + "id": "coop.pet.challenge->coop.pet", + "from": "coop.pet.challenge", + "to": "coop.pet", + "label": "右上角关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击右上角关闭返回保卫宠物" + }, + "condition": "用户确认返回路径;控件模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge.weekly->coop.pet", + "from": "coop.pet.challenge.weekly", + "to": "coop.pet", + "label": "右上角关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击右上角关闭返回保卫宠物" + }, + "condition": "用户确认返回路径;控件模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet.challenge.achievements->coop.pet", + "from": "coop.pet.challenge.achievements", + "to": "coop.pet", + "label": "右上角关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击右上角关闭返回保卫宠物" + }, + "condition": "用户确认返回路径;控件模板未采集,不用于自动导航。" + }, + { + "id": "coop.pet->territory", + "from": "coop.pet", + "to": "territory", + "label": "左下角返回", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角返回返回领地" + }, + "condition": "用户确认返回路径;控件模板未采集,不用于自动导航。" + }, + { + "id": "arena.peak->arena.peak.store", + "from": "arena.peak", + "to": "arena.peak.store", + "label": "右侧商店/巅峰商店", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击巅峰决斗右侧商店" + }, + "condition": "用户确认入口;模板未采集,不用于自动导航。" + }, + { + "id": "arena.peak.store->arena.peak", + "from": "arena.peak.store", + "to": "arena.peak", + "label": "右上角X关闭", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击右上角X关闭返回巅峰决斗" + }, + "condition": "用户确认返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "arena.peak->territory", + "from": "arena.peak", + "to": "territory", + "label": "左下角返回领地", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角返回领地返回领地" + }, + "condition": "用户确认返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store->guild.store.contribution", + "from": "guild.store", + "to": "guild.store.contribution", + "label": "切换贡献商城页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "切换贡献商城页签" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store->guild.store.dragon_scale", + "from": "guild.store", + "to": "guild.store.dragon_scale", + "label": "切换龙鳞商城页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "切换龙鳞商城页签" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store.contribution->guild.store.dragon_scale", + "from": "guild.store.contribution", + "to": "guild.store.dragon_scale", + "label": "切换龙鳞商城页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "切换龙鳞商城页签" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store.dragon_scale->guild.store.contribution", + "from": "guild.store.dragon_scale", + "to": "guild.store.contribution", + "label": "切换贡献商城页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "切换贡献商城页签" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store->guild", + "from": "guild.store", + "to": "guild", + "label": "右上角关闭返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭返回公会" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store.contribution->guild", + "from": "guild.store.contribution", + "to": "guild", + "label": "右上角关闭返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭返回公会" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.store.dragon_scale->guild", + "from": "guild.store.dragon_scale", + "to": "guild", + "label": "右上角关闭返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭返回公会" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.tasks->guild", + "from": "guild.tasks", + "to": "guild", + "label": "右上角关闭返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭返回公会" + }, + "condition": "用户确认结构和返回;控件模板未采集,不用于自动导航。" + }, + { + "id": "guild.expedition->guild.expedition.labyrinth", + "from": "guild.expedition", + "to": "guild.expedition.labyrinth", + "label": "迷宫寻宝入口", + "status": "pending", + "action": { + "kind": "locate_then_click", + "description": "迷宫寻宝入口" + }, + "condition": "用户要求搁置,不用于自动化。" + }, + { + "id": "guild.expedition->guild.duel", + "from": "guild.expedition", + "to": "guild.duel", + "label": "定位公会对决卡片并进入", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "定位公会对决卡片并进入" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:14:15 CST", + "result_capture": "local/page_audit/guild_duel.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "guild.duel->guild.duel.rewards", + "from": "guild.duel", + "to": "guild.duel.rewards", + "label": "下方奖励按钮有红点时进入", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "下方奖励按钮有红点时进入" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.duel.rewards->guild.duel.rewards.tasks", + "from": "guild.duel.rewards", + "to": "guild.duel.rewards.tasks", + "label": "默认任务奖励页签", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "默认任务奖励页签" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.duel.rewards->guild.duel", + "from": "guild.duel.rewards", + "to": "guild.duel", + "label": "右上角关闭回公会对决", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭回公会对决" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.duel.rewards.tasks->guild.duel", + "from": "guild.duel.rewards.tasks", + "to": "guild.duel", + "label": "右上角关闭回公会对决", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭回公会对决" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.duel->guild", + "from": "guild.duel", + "to": "guild", + "label": "左下角直接返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左下角直接返回公会" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.boss->guild.boss.treasure", + "from": "guild.boss", + "to": "guild.boss.treasure", + "label": "右侧财宝图标左上角有数字时进入", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右侧财宝图标左上角有数字时进入" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.boss.treasure->guild.boss", + "from": "guild.boss.treasure", + "to": "guild.boss", + "label": "右上角关闭回公会Boss", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "右上角关闭回公会Boss" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.boss->guild", + "from": "guild.boss", + "to": "guild", + "label": "左下角返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "左下角返回公会" + }, + "condition": "用户确认结构;模板未采集,不用于自动导航。" + }, + { + "id": "guild.blessing->guild", + "from": "guild.blessing", + "to": "guild", + "label": "左下角返回公会", + "status": "documented", + "action": { + "kind": "locate_then_click", + "description": "点击左下角返回公会" + }, + "condition": "用户确认升级后左下返回;模板未采集,不用于自动导航。" + }, + { + "id": "guild.expedition->guild", + "from": "guild.expedition", + "to": "guild", + "status": "documented", + "label": "右上X关闭远征大厅回公会", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭远征大厅回公会" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:13:42 CST", + "result_capture": "local/page_audit/expedition_closed.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "coop.pet.store->coop.friend_store", + "from": "coop.pet.store", + "to": "coop.friend_store", + "status": "documented", + "label": "底部友情商店页签切换,保留保卫宠物来源", + "action": { + "kind": "locate_then_click", + "description": "底部友情商店页签切换,保留保卫宠物来源" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:43:03 CST", + "result_capture": "local/page_audit/pet_friend_store.png", + "rewards_or_purchases_tested": false + } + }, + { + "id": "coop.friend_store->coop.pet.store", + "from": "coop.friend_store", + "to": "coop.pet.store", + "status": "documented", + "label": "底部宠物商店页签切换,保留保卫宠物来源", + "action": { + "kind": "locate_then_click", + "description": "底部宠物商店页签切换,保留保卫宠物来源" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。 仅打开商城的原始主页面为coop.pet时采用此返回边。", + "requires_origin_history": true, + "origin_page": "coop.pet" + }, + { + "id": "coop.friend_store->coop.pet", + "from": "coop.friend_store", + "to": "coop.pet", + "status": "documented", + "label": "右上X关闭商城回保卫宠物", + "action": { + "kind": "locate_then_click", + "description": "右上X关闭商城回保卫宠物" + }, + "condition": "入口与落点已观察;控件定位和导航执行器尚未接入,暂不加入自动路线。 仅打开商城的原始主页面为coop.pet时采用此返回边。", + "requires_origin_history": true, + "origin_page": "coop.pet", + "audit_verification": { + "scope": "navigation_only", + "captured_at": "2026-10-05 23:43:30 CST", + "result_capture": "local/page_audit/pet_friend_closed.png", + "rewards_or_purchases_tested": false + } + } + ], + "tasks": [ + { + "id": "offer", + "name": "战令领取", + "script": "claim_offer.py", + "group_page": "home", + "task_page": "offer.battlepass", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false, + "reward_progress": "消耗一定体力后产生奖励;现有一键领取流程已实现。", + "known_limitations": [ + "一键领取后的幸运星需额外点击领取,此分支后续完善,现有脚本尚未处理。" + ] + }, + { + "id": "idle", + "name": "挂机奖励", + "script": "claim_idle.py", + "group_page": "home", + "task_page": "idle", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "sweep", + "name": "快速扫荡", + "script": "claim_sweep.py", + "group_page": "home", + "task_page": "idle", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": true + }, + { + "id": "tasks", + "name": "任务奖励", + "script": "claim_tasks.py", + "group_page": "home", + "task_page": "tasks.daily", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "mail", + "name": "收取邮件", + "script": "claim_mail.py", + "group_page": "home", + "task_page": "mail", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "sword", + "name": "剑来积分奖励", + "script": "claim_sword_gift_points.py", + "group_page": "home", + "task_page": "rally.sword", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "lizhu", + "name": "骊珠任务奖励", + "script": "claim_lizhu_task_rewards.py", + "group_page": "home", + "task_page": "rally.lizhu.tasks", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "recruit", + "name": "英雄招募签到", + "script": "claim_recruit_signin.py", + "group_page": "shop", + "task_page": "recruit.lamp", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "mining", + "name": "收矿与雇佣", + "script": "claim_mining.py", + "group_page": "territory", + "task_page": "rat", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": true + }, + { + "id": "feed", + "name": "喂养狂鼠", + "script": "claim_feed_mice.py", + "group_page": "territory", + "task_page": "rat.friend", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "stamina", + "name": "领取体力", + "script": "claim_stamina.py", + "group_page": "territory", + "task_page": "canteen", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "coop", + "name": "合作券", + "script": "claim_cooperation_ticket.py", + "group_page": "territory", + "task_page": "coop", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "arena", + "name": "竞技积分", + "script": "claim_arena_points.py", + "group_page": "territory", + "task_page": "arena", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "planet", + "name": "星球矿场金币", + "script": "claim_planet_mine.py", + "group_page": "territory", + "task_page": "planet", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": true + }, + { + "id": "help", + "name": "公会互助", + "script": "claim_guild_help.py", + "group_page": "any_primary", + "task_page": null, + "current_script_start": "any_primary", + "current_script_finish": "unchanged_primary", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "bargain", + "name": "公会砍价", + "script": "claim_guild_bargain.py", + "group_page": "guild", + "task_page": "guild.altar", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + }, + { + "id": "donation", + "name": "每日免费捐献", + "script": "claim_guild_donation.py", + "group_page": "guild", + "task_page": "guild.donation", + "current_script_start": "home", + "current_script_finish": "home", + "migration": "现有脚本仍自带导航;尚未重构为只在 task_page 执行。", + "consumes_resources": false + } + ], + "planned_tasks": [ + { + "id": "activity_daily_pack_free", + "name": "活动日礼包免费领取", + "group_page": "home", + "task_page": "activity.pack.daily", + "status": "user_confirmed_not_implemented", + "frequency": "daily", + "free_offer_count": 2, + "goal": "每日领取两个免费项目", + "script": null, + "consumes_resources": false, + "pending_confirmation": [ + "免费领取按钮的具体文案和领取后状态" + ], + "offers": [ + { + "order": 1, + "claim_method": "direct_claim" + }, + { + "order": 2, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_ad_required", + "automation_ad_policy": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy" + } + ] + }, + { + "id": "activity_daily_offer_free", + "name": "活动每日特惠免费领取", + "group_page": "home", + "task_page": "activity.daily_offer", + "status": "user_confirmed_not_implemented", + "frequency": "daily", + "free_offer_count": 1, + "claims_per_day": 2, + "goal": "每日领取同一免费项目两次", + "script": null, + "consumes_resources": false, + "pending_confirmation": [ + "领取按钮文案与剩余次数/领完状态" + ], + "second_claim": { + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_ad_required", + "automation_ad_policy": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy" + } + }, + { + "id": "activity_daily_recharge_rewards", + "name": "活动每日充值奖励", + "group_page": "home", + "task_page": "activity.daily_recharge", + "status": "user_confirmed_deferred", + "priority": "low", + "deferred_reason": "用户要求以后有充值奖励时再完善", + "goal": "入口有红点时进入领取已达成条件的奖励", + "script": null, + "enter_when": "entry_has_red_dot", + "consumes_resources": false, + "pending_confirmation": [ + "内部领取按钮和已领完状态待充值奖励出现时采集" + ] + }, + { + "id": "activity_cumulative_recharge_rewards", + "name": "活动累充奖励", + "group_page": "home", + "task_page": "activity.cumulative_recharge", + "status": "user_confirmed_deferred", + "priority": "low", + "deferred_reason": "用户要求以后有充值奖励时再完善", + "goal": "入口有红点时进入领取已达成条件的奖励", + "script": null, + "enter_when": "entry_has_red_dot", + "consumes_resources": false, + "pending_confirmation": [ + "内部领取按钮和已领完状态待充值奖励出现时采集" + ] + }, + { + "id": "offer_monthcard_rewards", + "name": "超值月卡奖励领取", + "group_page": "home", + "task_page": "offer.monthcard", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": false, + "goal": "每日领取已购买权益对应奖励", + "purchase_policy": "仅使用已购买或已解锁权益;不执行购买。", + "pending_confirmation": [ + "可领取时的按钮文案与识别模板待采集" + ], + "frequency": "daily", + "reset_local_time": "00:00", + "claims_per_reward_per_day": 1, + "skip_button_texts": [ + "18 元", + "30 元", + "续费:18 元", + "续费:30 元" + ], + "claimed_button_texts": [ + "续费:18 元", + "续费:30 元" + ] + }, + { + "id": "offer_weekcard_rewards", + "name": "特惠周卡奖励领取", + "group_page": "home", + "task_page": "offer.weekcard", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": false, + "goal": "在列表中点击签到", + "purchase_policy": "签到不要求购买周卡;不执行购买。", + "pending_confirmation": [ + "签到按钮与已领取状态的识别模板待实机采集" + ], + "frequency": "daily", + "reset_local_time": "00:00", + "purchase_required": false, + "claimed_button_text": "已领取" + }, + { + "id": "offer_diamond_fund_rewards", + "name": "钻石基金奖励领取", + "group_page": "home", + "task_page": "offer.diamond_fund", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": false, + "goal": "列表最后一列的钻石", + "purchase_policy": "仅使用已购买或已解锁权益;不执行购买。", + "pending_confirmation": [ + "奖励图标状态的识别模板待实机采集", + "未覆盖进度的页签规则;按实际可见页签发现处理" + ], + "frequency": "when_rewards_eligible", + "visit_internal_tabs": "按实际可见页签逐个处理;已确认基金1、2、3,后续进度未知", + "claim_when": "已购买解锁且达到指定关卡,钻石奖励无小锁头、无已领取对号、无未达成灰色蒙版", + "skip_when_any": [ + "未解锁小锁头", + "已领取对号", + "未达关卡灰色蒙版" + ] + }, + { + "id": "offer_relic_pass_rewards", + "name": "遗迹战令奖励领取", + "group_page": "home", + "task_page": "offer.relic_pass", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": false, + "goal": "列表第一列的奖励图标", + "purchase_policy": "仅使用已购买或已解锁权益;不执行购买。", + "pending_confirmation": [ + "未达成图标状态和识别模板", + "列表边界、滚动步长及领取后弹框待采集", + "其他奖励列的处理范围" + ], + "frequency": "when_rewards_eligible", + "claim_when": "第一列奖励项高亮且没有已领取对号", + "has_bulk_claim": false, + "claim_mode": "individual_reward_icons", + "scrollable": true, + "traversal": "上下滚动并逐项领取第一列符合条件的奖励" + }, + { + "id": "offer_pet_pass_rewards", + "name": "宠物战令奖励领取", + "group_page": "home", + "task_page": "offer.pet_pass", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": false, + "goal": "列表第一列的奖励图标", + "purchase_policy": "仅使用已购买或已解锁权益;不执行购买。", + "pending_confirmation": [ + "未达成图标状态和识别模板", + "列表边界、滚动步长及领取后弹框待采集", + "其他奖励列的处理范围" + ], + "frequency": "when_rewards_eligible", + "claim_when": "第一列奖励项高亮且没有已领取对号", + "has_bulk_claim": false, + "claim_mode": "individual_reward_icons", + "scrollable": true, + "traversal": "上下滚动并逐项领取第一列符合条件的奖励" + }, + { + "id": "movie_daily_rewards", + "name": "观影活动每日领奖", + "group_page": "home", + "task_page": "home.movie", + "status": "user_confirmed_deferred", + "deferred_reason": "活动当前未出现;用户要求等观影入口再次出现后完善", + "resume_when": "首页实际出现观影入口,再采集画面并完善任务", + "enter_when": "movie_entry_present", + "frequency": "daily_when_activity_present", + "claims_per_day": 5, + "usual_consecutive_sign_in_days": 5, + "script": null, + "consumes_resources": false, + "goal": "活动出现期间每日通过中间按钮领取5次,广告按共用策略完成", + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "shared_policy_ref": "reward_ad_policy", + "pending_confirmation": [ + "领取按钮模板、剩余次数和已领完状态待活动再次出现时采集", + "右上关闭按钮、广告返回及奖励状态待实机验证" + ] + }, + { + "id": "wish_task_rewards", + "name": "祈愿任务奖励领取", + "group_page": "home", + "task_page": "wish.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "领取每日登录奖励和任务列表中其他可领取的奖励", + "claim_button_text": "领取", + "claim_button_location": "任务条目右侧", + "daily_login_reward": { + "frequency": "daily", + "name": "登录奖励(具体文案待采集)" + }, + "consumes_resources": false, + "pending_confirmation": [ + "任务图像模板、列表边界、领奖弹框及返回验证" + ], + "scrollable": true, + "claimed_button_text": "已完成", + "after_claim_reorder": "自动移到列表底部", + "execution_note": "领取后列表顺序会变化,应重新识别当前可领取条目,不能沿用上一次的列表序号和点击坐标。" + }, + { + "id": "wish_free_supply", + "name": "祈愿免费补给领取", + "group_page": "home", + "task_page": "wish.pack", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "goal": "领取礼包补给列表最上面的一个免费项目", + "claim_button_text": "免费", + "free_offer_count": 1, + "consumes_resources": false, + "pending_confirmation": [ + "免费补给领完状态、按钮、奖励弹框及返回验证" + ], + "claims_per_day": 1, + "ad_requirement": "none", + "claim_method": "direct_claim" + }, + { + "id": "sprint_crystal_pack_rewards", + "name": "晶矿冲刺每日免费礼包", + "group_page": "home", + "task_page": "sprint.crystal.pack", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "goal": "领取首项免费礼包", + "consumes_resources": false, + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费按钮、已售罄状态、领奖弹框及返回验证" + ], + "scroll_required": false, + "claims_per_day": 1, + "ad_requirement": "none", + "claim_method": "direct_claim" + }, + { + "id": "sprint_crystal_tasks_rewards", + "name": "晶矿冲刺任务奖励领取", + "group_page": "home", + "task_page": "sprint.crystal.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "滚动任务列表,领取可领奖励", + "consumes_resources": false, + "claim_button_text": "领取", + "claimed_button_text": "已完成", + "scrollable": true, + "pending_confirmation": [ + "列表是否领后重排、任务频率及识别模板" + ], + "after_claim_reorder": "pending", + "execution_note": "领取后重新识别任务;列表是否重排尚待确认。" + }, + { + "id": "sprint_recruit_pack_rewards", + "name": "招募冲刺每日免费礼包", + "group_page": "home", + "task_page": "sprint.recruit.pack", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "goal": "领取首项免费礼包", + "consumes_resources": false, + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费按钮、已售罄状态、领奖弹框及返回验证" + ], + "scroll_required": false, + "claims_per_day": 1, + "ad_requirement": "none", + "claim_method": "direct_claim" + }, + { + "id": "sprint_recruit_tasks_rewards", + "name": "招募冲刺任务奖励领取", + "group_page": "home", + "task_page": "sprint.recruit.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "滚动任务列表,领取可领奖励", + "consumes_resources": false, + "claim_button_text": "领取", + "claimed_button_text": "已完成", + "scrollable": true, + "pending_confirmation": [ + "列表是否领后重排、任务频率及识别模板" + ], + "after_claim_reorder": "pending", + "execution_note": "领取后重新识别任务;列表是否重排尚待确认。" + }, + { + "id": "sprint_star_store_free_coins", + "name": "星珀商城免费金币", + "group_page": "home", + "task_page": "sprint.star_store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "weekly", + "goal": "领取商城第一项免费金币", + "consumes_resources": false, + "pending_confirmation": [ + "广告条件、免费金币与已售罄状态的识别模板" + ], + "refresh_weekday": "monday", + "claim_window": "whole_week_after_refresh", + "claims_per_week": 1, + "claimed_button_text": "已售罄" + }, + { + "id": "treasure_adventure_task_rewards", + "name": "寻宝冒险任务奖励", + "group_page": "home", + "task_page": "treasure.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "上下滚动任务列表,领取所有可领奖励", + "claim_button_text": "领取", + "claimed_button_text": "已完成", + "scrollable": true, + "after_claim_reorder": "自动排到列表下面", + "consumes_resources": false, + "execution_note": "领奖后重新识别条目,避免沿用重排前的序号和坐标", + "pending_confirmation": [ + "每日刷新奖励、任务文案、列表边界及领奖模板" + ] + }, + { + "id": "treasure_adventure_free_pack", + "name": "寻宝冒险免费礼包", + "group_page": "home", + "task_page": "treasure.pack", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "per_activity_period", + "claims_per_period": 1, + "reset_on_new_period": true, + "goal": "滚动矿石兑换列表,领取本期免费项目", + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "scrollable": true, + "after_claim_reorder": "自动排到列表最底下", + "consumes_resources": false, + "ad_requirement": "none", + "pending_confirmation": [ + "周期标识、按钮与领奖弹框模板及返回验证" + ], + "claim_method": "direct_claim" + }, + { + "id": "friends_daily_send", + "name": "好友一键赠送", + "group_page": "home", + "task_page": "home.friends", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily_after_login", + "actions_per_day": 1, + "action_button_text": "一键赠送", + "action_button_location": "好友列表弹框底部", + "goal": "每天登录后执行一次一键赠送", + "entry_red_dot_required": false, + "consumes_resources": null, + "pending_confirmation": [ + "一键赠送结果与弹框识别模板、游戏日刷新时间" + ], + "button_after_action": "unchanged_clickable", + "execution_design": { + "status": "not_implemented", + "daily_limit": 1, + "completion_tracking": "按账号与游戏日记录执行结果;按钮未变化不能作为再次赠送的依据", + "success_requirement": "根据结果反馈确认完成,不仅凭已发送点击记录成功" + } + }, + { + "id": "friends_gift_rewards", + "name": "好友赠礼领取", + "group_page": "home", + "task_page": "friends.gifts", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "enter_when": "好友列表底部领取赠礼按钮有红点", + "claim_button_text": "一键领取", + "goal": "一键领取赠礼,关闭子弹框后关闭好友列表回到首页", + "consumes_resources": false, + "pending_confirmation": [ + "领奖结果、空奖励提示与弹框识别模板" + ], + "button_after_claim": "unchanged_clickable", + "empty_feedback_text": "暂无可收取的礼物", + "execution_design": { + "status": "not_implemented", + "claim_clicks_per_entry": 1, + "after_claim": "确认结果后关闭赠礼弹框,再关闭好友列表回首页;不因按钮仍可点击而重复领取", + "empty_feedback_action": "停止领取并退出,标记当前无奖励,不记录为领取成功", + "verification": "不主动追加空领取点击来验证成功" + } + }, + { + "id": "gold_trip_sign_in", + "name": "金沙游记流沙赠礼签到", + "group_page": "home", + "task_page": "gold_trip.sign_in", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "claims_per_day": 1, + "claim_button_text": "可领取", + "reusable_pattern": "seasonal_daily_sign_in", + "goal": "在游戏自动选中的当前页签中识别当天可领取节点,领取后返回金沙游记", + "consumes_resources": false, + "pending_confirmation": [ + "可领取与已领取按钮、动态节点定位与领奖结果模板" + ], + "claimed_button_text": "已领取" + }, + { + "id": "gold_trip_daily_cards", + "name": "金沙游记法老遗珍翻牌", + "group_page": "home", + "task_page": "gold_trip.cards", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "flips_per_day": 3, + "reusable_pattern": "seasonal_daily_flip_cards", + "selection_order": "优先第一排从左到右,跳过已翻牌,继续处理仍可翻牌子", + "without_ad_free_card": { + "direct_flips": 1, + "ad_flips": 2, + "ad_policy_ref": "reward_ad_policy", + "visual_confirmation": { + "status": "deferred", + "reason": "当前账号有免广告卡,无卡时按钮及广告界面待以后出现该情况时确认" + } + }, + "with_ad_free_card": { + "direct_flips": 3 + }, + "goal": "跳过已翻牌,继续处理可翻牌子,出现剩余次数不足时停止并返回金沙游记", + "consumes_resources": null, + "pending_confirmation": [ + "每日重置方式、牌子及领奖结果识别模板", + "无免广告卡时的按钮文案和广告界面后续确认" + ], + "unflipped_text": "点我翻牌", + "flipped_state": "显示奖励内容", + "after_first_flip_text": "免费", + "stop_feedback_text": "剩余次数不足", + "after_first_flip_text_scope": "仅记录当前有免广告卡账号的表现,不据此推断无卡样式", + "account_context": { + "ad_free_card": true, + "source": "user_confirmed", + "confirmed_at": "2026-10-05 20:17:23 CST" + } + }, + { + "id": "gold_trip_letter_gifts", + "name": "金沙游记驿站来信领取", + "group_page": "home", + "task_page": "gold_trip.letters", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "entry_red_dot_required": true, + "reusable_pattern": "seasonal_letter_gifts", + "claimed_text": "已领取", + "scrollable": true, + "goal": "入口有红点时打开来信列表,滚动点击未领取来信,跳过已领取,关闭弹框回金沙游记", + "consumes_resources": false, + "pending_confirmation": [ + "来信、已领取标志、领奖反馈及滚动和弹框模板" + ], + "unclaimed_rule": "跳过显示已领取的来信,点击其余未领取来信" + }, + { + "id": "rally_daily_sign_in", + "name": "英雄集结岁岁平安签到", + "group_page": "home", + "task_page": "rally.sign_in", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "claims_per_day": 1, + "reusable_pattern": "seasonal_daily_sign_in", + "available_marker_text": "可领取", + "claim_target": "提示左下方对应卡片", + "claimed_marker": "对号", + "goal": "跳过带对号的卡片,定位可领取提示对应的签到卡片并点击,右上关闭回英雄集结", + "consumes_resources": false, + "pending_confirmation": [ + "对号、卡片和可领取提示及领奖结果识别模板" + ], + "total_days": 14 + }, + { + "id": "rally_lizhu_search", + "name": "英雄集结骊珠寻珍", + "group_page": "home", + "task_page": "rally.search", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "entry_red_dot_required": true, + "requires_skip_animation_checked": true, + "free_button_text": "免费", + "goal": "入口红点时进入,勾选跳过动画,点击免费;按每次重新读取的余额选择参与5次或参与1次,直到剩余为0,左下返回英雄集结", + "selection_rule": "剩余抽奖次数大于等于5时参与5次;大于0且小于5时参与1次;为0时停止", + "consumes_resources": true, + "resource_type": "event_specific_draw_coin", + "pending_confirmation": [ + "活动金币余额、跳过动画勾选状态、参与结果及按钮识别模板" + ], + "balance_quantity_meaning": "活动专用金币,可理解为剩余抽奖次数", + "cost_per_single": 1, + "cost_per_batch": 5 + }, + { + "id": "shop_totem_free_rewards", + "name": "商城图腾寻宝免费领取", + "group_page": "shop", + "task_page": "shop.totem", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "cards_per_section": 2, + "claims_per_card_per_day": 1, + "claim_button_text": "免费", + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy", + "claimed_state": "对应卡片免费按钮消失", + "goal": "分别领取两张图腾卡片每日免费奖励,确认结果与免费按钮消失", + "consumes_resources": false, + "pending_confirmation": [ + "两张卡片边界、免费按钮、奖励结果和广告识别模板" + ] + }, + { + "id": "shop_daily_free_ticket", + "name": "每日商店免费招募券", + "group_page": "shop", + "task_page": "shop.daily", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "claims_per_day": 1, + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "free_offer_position": "第一格", + "ad_requirement": "none", + "reappears_after_paid_refresh": false, + "goal": "领取每日商店第一格免费招募券,确认已售罄", + "consumes_resources": false, + "pending_confirmation": [ + "首格免费与已售罄、奖励结果模板" + ] + }, + { + "id": "shop_daily_coin_ticket", + "name": "每日商店金币购买招募券", + "group_page": "shop", + "task_page": "shop.daily", + "status": "user_confirmed_deferred_rules_incomplete", + "script": null, + "frequency": "pending", + "goal": "仅关注金币售卖的招募券;购买与刷新策略完善后实现", + "consumes_resources": true, + "currency": "金币", + "skip_diamond_priced_items": true, + "refresh_cost": 600, + "pending_confirmation": [ + "每次购买数量及金币预算", + "何时刷新、每日刷新次数或支出上限", + "金币不足及购买结果处理", + "商品与价格币种、刷新蒙版、购买和刷新结果模板" + ] + }, + { + "id": "shop_free_coins", + "name": "商城免费金币领取", + "group_page": "shop", + "task_page": "shop.coins", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "claims_per_day": 2, + "free_card_position": "第一张", + "claim_button_text": "免费", + "claimed_button_text": "已售罄", + "claims": [ + { + "ordinal": 1, + "method": "direct_claim" + }, + { + "ordinal": 2, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy" + } + ], + "goal": "每日领取首张金币卡片两次免费奖励,第二次按免广告卡分支处理,全部领完确认已售罄", + "consumes_resources": false, + "pending_confirmation": [ + "首张免费和已售罄、第一次领取后状态、奖励和广告识别模板" + ] + }, + { + "id": "wall_free_mechanisms", + "name": "城墙免费机关领取", + "group_page": "territory", + "task_page": "territory.wall.craft", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "claim_button_text": "免费", + "claimed_state": "免费按钮消失", + "claims_per_day": null, + "goal": "逐次领取免费机关并确认结果,直到免费按钮消失;不点击使用机关次数的打造按钮", + "consumes_resources": false, + "pending_confirmation": [ + "额外广告领取次数、免费按钮与次数状态、广告及领奖结果识别模板" + ], + "ad_requirement": "first_direct_then_ad_or_ad_free_card", + "first_daily_claim": { + "claims": 1, + "method": "direct_claim" + }, + "additional_claims": { + "count_per_day": null, + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "ad_policy_ref": "reward_ad_policy", + "count_confirmation": "pending" + } + }, + { + "id": "wall_command_build", + "name": "城墙机关打造(单独命令)", + "group_page": "territory", + "task_page": "territory.wall.craft", + "status": "user_confirmed_not_implemented", + "script": null, + "trigger": "explicit_user_command", + "frequency": "on_demand", + "scheduled": false, + "goal": "仅按单独命令与指定次数使用机关次数打造;次数达到10选打造10次、1至9选打造1次,0时停止;命令剩余量与最后一批处理待完善", + "consumes_resources": true, + "resource_type": "机关次数", + "pending_confirmation": [ + "命令指定次数的计数单位及最后一批处理", + "机关次数、打造按钮与结果识别模板" + ], + "batch_condition": { + "operator": ">=", + "value": 10, + "boundary_confirmation": "user_confirmed" + } + }, + { + "id": "relic_daily_sweep", + "name": "遗迹夺宝扫荡", + "group_page": "territory", + "task_page": "relic", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "goal": "关闭每日首次提示后扫荡一次,出现不战而逃提示点确定,左下返回领地", + "consumes_resources": null, + "sweeps_per_run": 1, + "pending_confirmation": [ + "首次提示关闭控件、扫荡次数与结果模板" + ] + }, + { + "id": "territory_rank_progress", + "name": "领地排行榜进度奖励", + "group_page": "territory", + "task_page": "territory.rank.progress", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "领地入口红点时进入默认排行榜页签,进度奖励只点最顶行宝锤,关闭后右下返回领地", + "consumes_resources": false, + "entry_red_dot_required": true, + "claims_per_entry": 1, + "pending_confirmation": [ + "顶行宝锤可领取与领奖结果模板" + ] + }, + { + "id": "friend_store_weekly_free", + "name": "友情商店签到", + "group_page": "territory", + "task_page": "coop.friend_store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "weekly", + "goal": "每周一0点刷新后,于本周首次登录领取首张免费金币,领完确认已售罄", + "consumes_resources": false, + "claims_per_week": 1, + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费广告条件、按钮和已售罄、结果与返回控件识别模板" + ], + "free_item": "金币", + "refresh_weekday": "monday", + "refresh_time": "00:00" + }, + { + "id": "friend_store_purchases", + "name": "友情商店购买", + "group_page": "territory", + "task_page": "coop.friend_store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily_and_weekly", + "goal": "有余额时每日买洗练石1个、体力2个,每周首次进入买星愿币2个", + "consumes_resources": true, + "purchase_items": [ + { + "name": "洗练石", + "aliases": [ + "洗炼石" + ], + "quantity": 1, + "frequency": "daily" + }, + { + "name": "体力", + "quantity": 2, + "frequency": "daily" + }, + { + "name": "星愿币", + "quantity": 2, + "frequency": "weekly", + "purchase_on": "每周首次进入" + } + ], + "currency": "friend_store_specific_currency", + "pending_confirmation": [ + "商品价格、数量和余额及结果模板、返回控件识别模板" + ], + "currency_display_location": "页面顶部", + "balance_rule": "余额大于等于目标商品价格时购买" + }, + { + "id": "pet_ticket_claim", + "name": "领保卫宠物券", + "group_page": "territory", + "task_page": "coop.pet", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "daily", + "goal": "存在buff提示时点知道了,左上可领取时领券,领完已领完", + "consumes_resources": false, + "claim_button_text": "可领取", + "claimed_button_text": "已领完", + "pending_confirmation": [ + "可领取及已领完、领奖结果与返回控件识别模板" + ], + "claims_per_day": 1, + "refresh_time": "00:00" + }, + { + "id": "pet_store_weekly_free", + "name": "宠物商店签到", + "group_page": "territory", + "task_page": "coop.pet.store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "weekly", + "goal": "每周一0点刷新后,于本周首次登录领取首张免费金币,领完确认已售罄", + "consumes_resources": false, + "claims_per_week": 1, + "claimed_button_text": "已售罄", + "pending_confirmation": [ + "免费广告条件、按钮和已售罄、结果与返回控件识别模板" + ], + "free_item": "金币", + "refresh_weekday": "monday", + "refresh_time": "00:00" + }, + { + "id": "pet_store_purchases", + "name": "宠物商店购买", + "group_page": "territory", + "task_page": "coop.pet.store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_stock_and_balance_available", + "goal": "只购买红色3200随机宠物碎片;专用货币余额足够时买完当前可售数量,每次重读余额和库存,余额不足或不可购买时停止", + "consumes_resources": true, + "currency": "pet_store_specific_currency", + "pending_confirmation": [ + "商品颜色、价格、可售数量及余额和购买结果识别模板", + "返回控件识别模板" + ], + "currency_display_location": "页面顶部", + "item_name": "随机宠物碎片", + "item_color": "红色", + "price": 3200, + "balance_rule": "余额大于等于目标商品价格时购买", + "excluded_variants": [ + { + "item_name": "随机宠物碎片", + "color": "黄色", + "price": 2400 + } + ], + "quantity_policy": "buy_all_available_stock_while_affordable", + "stop_when": [ + "专用货币余额小于3200", + "无可售数量或购买按钮不可用" + ] + }, + { + "id": "pet_challenge_rewards", + "name": "保卫宠物挑战奖励", + "group_page": "territory", + "task_page": "coop.pet.challenge", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_eligible", + "goal": "挑战入口有红点时进入,分别处理有红点的每周和成就页签,点击可领取奖励", + "consumes_resources": false, + "entry_red_dot_required": true, + "claim_button_text": "领取", + "pending_confirmation": [ + "列表是否滚动、领奖结果与返回控件识别模板" + ] + }, + { + "id": "peak_store_priority_purchases", + "name": "巅峰商店优先级购买", + "group_page": "territory", + "task_page": "arena.peak.store", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_stock_and_balance_available", + "goal": "按随机藏品碎片、洗练石、超凡宝锤顺序,用余额购买每项最大可售数量,逐次重读余额和库存", + "consumes_resources": true, + "currency": "peak_store_specific_currency", + "quantity_policy": "maximum_affordable_available_per_priority", + "items": [ + { + "priority": 1, + "name": "随机藏品碎片" + }, + { + "priority": 2, + "name": "洗练石", + "aliases": [ + "洗炼石" + ] + }, + { + "priority": 3, + "name": "超凡宝锤" + } + ], + "pending_confirmation": [ + "商品价格、可售份数、名称、购买确认与结果识别模板", + "顶部专用货币余额与返回控件识别模板" + ], + "balance_location": "页面顶部", + "exit_sequence": [ + "arena.peak.store", + "arena.peak", + "territory" + ] + }, + { + "id": "guild_contribution_store_purchases", + "name": "贡献商店任务", + "group_page": "guild", + "task_page": "guild.store.contribution", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": true, + "purchase_rules": { + "items": [ + { + "name": "合作券", + "frequency": "weekly", + "weekly_purchase_limit": 7, + "refresh_weekday": "monday", + "purchase_window": "whole_week", + "quantity_policy": "maximum_affordable_available", + "sold_out_text": "已售罄", + "priority": 1 + }, + { + "priority": 2, + "name": "黄金罗盘", + "frequency": "daily", + "daily_purchase_limit": 2, + "quantity_policy": "maximum_affordable_available" + }, + { + "priority": 3, + "name": "白银罗盘", + "frequency": "daily", + "daily_purchase_limit": 10, + "quantity_policy": "maximum_affordable_available" + } + ], + "daily_priority_order": [ + "黄金罗盘", + "白银罗盘" + ], + "currency": "contribution_store_specific_currency", + "balance_location": "页面顶部", + "quantity_policy": "maximum_affordable_available_with_daily_or_weekly_limits", + "weekly_purchase_window": "周一刷新后整周可购买,按余额补购至本周可售数量用完", + "pending_confirmation": [ + "商品价格、可售数量、货币、购买确认和结果识别模板" + ], + "balance_condition": "专用货币余额大于等于当前商品价格", + "weekly_refresh_weekday": "monday", + "sold_out_text": "已售罄", + "after_each_purchase": "确认结果,重新读取余额和可售数量;按剩余日周限额补购,不能每次进入重置限额", + "weekly_refresh_time": null, + "selection_order": [ + "合作券", + "黄金罗盘", + "白银罗盘" + ], + "execution_design": "优先按余额补购本周剩余可售合作券,最多7个;合作券不可售或余额不足以支付时再买黄金罗盘每日最多2个,最后白银罗盘每日最多10个;每次确认结果并重读余额、库存和剩余限额" + }, + "exit_sequence": [ + "guild.store.contribution", + "guild" + ] + }, + { + "id": "guild_dragon_scale_store_purchases", + "name": "龙鳞商店任务", + "group_page": "guild", + "task_page": "guild.store.dragon_scale", + "status": "user_confirmed_not_implemented", + "script": null, + "consumes_resources": true, + "purchase_rules": { + "items": [ + { + "priority": 1, + "name": "随机职业龙晶" + }, + { + "priority": 2, + "name": "随机职业龙血" + } + ], + "selection_order": [ + "随机职业龙晶", + "随机职业龙血" + ], + "quantity_policy": "maximum_affordable_available_per_priority", + "frequency": "when_stock_and_balance_available", + "currency": "dragon_scale_store_specific_currency", + "balance_location": "页面顶部", + "pending_confirmation": [ + "商品价格、可售数量、货币、购买确认和结果识别模板" + ], + "balance_condition": "专用货币余额大于等于当前商品价格", + "after_each_purchase": "优先买随机职业龙晶;当前商品不可售或无法支付后检查随机职业龙血,每次确认结果并重读余额库存", + "stop_when": "目标商品无库存或余额不足" + }, + "exit_sequence": [ + "guild.store.dragon_scale", + "guild" + ], + "frequency": "when_stock_and_balance_available" + }, + { + "id": "guild_task_rewards", + "name": "公会任务及进度宝箱领奖", + "group_page": "guild", + "task_page": "guild.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "frequency": "when_rewards_available", + "consumes_resources": false, + "goal": "滚动领取可领取任务,跳过前往和已完成;重排后重新识别,领取上方有红点的进度宝箱,已领取对号跳过", + "exit_sequence": [ + "guild.tasks", + "guild" + ] + }, + { + "id": "guild_duel_task_rewards", + "name": "公会对决任务奖励", + "group_page": "guild", + "task_page": "guild.duel.rewards.tasks", + "status": "user_confirmed_not_implemented", + "script": null, + "goal": "奖励入口红点时进入默认任务奖励,滚动领取并跳过前往和已完成,重排后重新识别", + "consumes_resources": false, + "frequency": "when_rewards_available" + }, + { + "id": "guild_blessing_upgrade", + "name": "公会祝福升级", + "group_page": "guild", + "task_page": "guild.blessing", + "status": "user_confirmed_not_implemented", + "script": null, + "goal": "升级按钮存在且有红点说明材料充足时升级一次,左下角返回公会", + "consumes_resources": true, + "frequency": "when_upgrade_button_has_red_dot", + "pending_confirmation": [ + "升级按钮、红点、升级结果及左下返回识别模板" + ] + }, + { + "id": "guild_boss_treasure_rewards", + "name": "领取公会boss奖励", + "group_page": "guild", + "task_page": "guild.boss.treasure", + "status": "user_confirmed_not_implemented", + "script": null, + "goal": "财宝图标左上角有数字时进入,点击全部领取,确认灰色领取后关闭", + "consumes_resources": false, + "frequency": "when_treasure_indicator_present", + "availability_ref": "guild.boss" + }, + { + "id": "guild_boss_cheer", + "name": "公会助威", + "group_page": "guild", + "task_page": "guild.boss", + "status": "user_confirmed_not_implemented", + "script": null, + "goal": "当天首次进入可用Boss页面时,助威按钮有红点则点击一次;已助威跳过并返回公会", + "consumes_resources": null, + "frequency": "daily_when_boss_available", + "availability_ref": "guild.boss", + "claims_per_day": 1, + "claimed_button_text": "已助威", + "repeat_click_allowed": false + }, + { + "id": "arena_ticket_claim", + "name": "领取竞技券", + "group_page": "territory", + "task_page": "arena", + "status": "user_confirmed_deferred_rules_incomplete", + "script": null, + "frequency": null, + "consumes_resources": null, + "goal": "在竞技场领取竞技券,具体领取流程由用户后续确认", + "deferred_reason": "用户要求如何实现后面确认,当前仅补充任务", + "pending_confirmation": [ + "竞技场内领取入口、面板及按钮位置", + "可领取条件、频率、次数和资源或广告要求", + "领取成功与已领完状态、关闭和返回路径" + ] + } + ], + "reward_ad_policy": { + "source": "user_confirmed", + "confirmed_at": "2026-10-05 17:27:23 CST", + "scope": "已配置领奖任务中,游戏要求观看广告才能领取的奖励", + "with_ad_free_card": "direct_claim", + "without_ad_free_card": "watch_to_completion_then_claim", + "applies_to": "所有符合该条件的任务,共用规则", + "runtime_status": "not_implemented", + "shared_flow": [ + "保存任务、页面及奖励来源", + "识别免广告直接领取或观看广告入口", + "需要广告时打开并等待完成", + "识别广告完成后允许关闭的控件并返回来源页面", + "根据游戏实际状态完成领取并确认结果" + ], + "recognition_status": "广告画面、完成标志、关闭入口和奖励到账状态尚未实机采集" + }, + "offer_tab_group": { + "entry_page": "home", + "entry_label": "左侧/特惠", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:00:38 CST", + "tab_order": [ + "offer.monthcard", + "offer.battlepass", + "offer.weekcard", + "offer.diamond_fund", + "offer.relic_pass", + "offer.pet_pass" + ], + "inventory_status": "six_tabs_user_confirmed", + "default_tab": "pending", + "exit_rule": "全部六个特惠页签点击左下角箭头样式返回按钮回到首页", + "exit_to_home": { + "description": "左下角箭头样式返回按钮", + "status": "documented", + "source": "user_confirmed", + "confirmed_at": "2026-10-05 18:19:12 CST" + } + }, + "excluded_tasks": [ + { + "id": "trial_task_rewards", + "name": "试炼任务奖励领取", + "group_page": "home", + "task_page": "trial.tasks", + "status": "user_excluded", + "script": null, + "frequency": "when_completed_tasks_available", + "enter_when": "trial_entry_present", + "goal": "领取每日登录游戏1次奖励及其他已完成任务奖励", + "daily_login_reward": { + "task_name": "每日登录游戏 1 次", + "frequency": "daily", + "claims_per_day": 1 + }, + "claim_button_text": "领取", + "eligible_when": "对应任务已完成且领取按钮可用", + "consumes_resources": false, + "scope": "领取任务奖励;其他任务的自动完成流程尚未确定", + "pending_confirmation": [], + "enabled": false, + "exclusion_reason": "用户最新确认试炼任务不需要自动化", + "updated_at": "2026-10-05 18:41:01 CST" + } + ], + "reusable_reward_patterns": [ + { + "id": "seasonal_daily_sign_in", + "status": "not_implemented", + "scope": "各季节活动签到", + "shared_logic": "识别当前页签与可领取节点,点击并确认结果后返回活动;按钮位置动态", + "per_activity_configuration": [ + "页面与页签样式", + "可领取与已领取标志", + "返回控件", + "活动周期及每日记录" + ] + }, + { + "id": "seasonal_daily_flip_cards", + "status": "not_implemented", + "scope": "各季节活动翻牌", + "shared_logic": "按当天已翻状态选择仍可翻牌子,跳过已展示奖励的牌,区分免费和广告分支,出现次数不足时停止,逐次确认结果", + "per_activity_configuration": [ + "翻牌区域及顺序", + "每日剩余次数与牌子状态", + "每日重置方式", + "广告与领奖反馈", + "返回控件" + ] + }, + { + "id": "seasonal_letter_gifts", + "status": "not_implemented", + "scope": "各季节活动来信送礼", + "shared_logic": "入口红点触发打开来信列表,滚动点击未领取条目,跳过已领取并确认结果,关闭弹框回活动", + "per_activity_configuration": [ + "入口及来信弹框样式", + "未领取与已领取标志", + "滚动边界", + "领奖反馈", + "关闭控件" + ] + } + ], + "audit_policy": { + "date": "2026-10-06 01:07:42 CST", + "scope": "navigation_and_layout_only", + "reward_actions_tested": false, + "purchases_tested": false, + "new_edges_auto_navigation_enabled": false, + "final_page": "home", + "final_capture": "local/page_audit/final_home.png", + "unverified": [ + "本轮新任务领取后的状态和列表重排", + "无免广告卡的视频结束与返回", + "未出现或未巡视的季节活动", + "购买确认、扣款和库存更新", + "宠物战令一键领取策略与日礼包广告顺序待确认" + ] + } +}