diff --git a/.gitea/workflows/sdk-ci.yml b/.gitea/workflows/sdk-ci.yml index 63142151d4..7940453276 100644 --- a/.gitea/workflows/sdk-ci.yml +++ b/.gitea/workflows/sdk-ci.yml @@ -24,7 +24,7 @@ jobs: run: python3 -m compileall sdk/app - name: Doc path validation - run: bash 开发文档/6、测试/scripts/validate_doc_paths.sh + run: bash 开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh - name: Pip install (smoke) run: | diff --git a/.github/workflows/sdk-ci.yml b/.github/workflows/sdk-ci.yml index 53fc7da39a..36acf6646d 100644 --- a/.github/workflows/sdk-ci.yml +++ b/.github/workflows/sdk-ci.yml @@ -20,7 +20,7 @@ jobs: run: python3 -m compileall sdk/app - name: Doc path validation - run: bash 开发文档/6、测试/scripts/validate_doc_paths.sh + run: bash 开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh - name: Pip install (smoke) run: pip install -q -r sdk/requirements.txt diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index 9218393dc1..4d9dc20585 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -2,4 +2,4 @@ "enabledCssSnippets": [ "workphone-devdoc" ] -} +} \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index f31f0f88c2..e01e9d2df5 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -8,7 +8,7 @@ "collapse-color-groups": false, "colorGroups": [ { - "query": "path:开发文档/00-项目总览", + "query": "path:开发文档/2、架构/01-总览", "color": { "a": 1, "rgb": 14010688 } }, { @@ -16,7 +16,7 @@ "color": { "a": 1, "rgb": 14010688 } }, { - "query": "path:开发文档/6、测试", + "query": "path:开发文档/8、部署/05-测试验收", "color": { "a": 1, "rgb": 16338757 } }, { diff --git a/.obsidian/snippets/workphone-devdoc.css b/.obsidian/snippets/workphone-devdoc.css index 6f61dbb984..82d8c619d4 100644 --- a/.obsidian/snippets/workphone-devdoc.css +++ b/.obsidian/snippets/workphone-devdoc.css @@ -93,17 +93,13 @@ .nav-folder-title[data-path^="开发文档/10、项目管理/0"] > .nav-folder-title-content { color: #E65100 !important; } -.nav-folder-title[data-path="开发文档/6、测试"] > .nav-folder-title-content { +.nav-folder-title[data-path^="开发文档/8、部署/05-测试验收"] > .nav-folder-title-content { color: #F9A825 !important; - font-weight: 600; } -.nav-folder-title[data-path^="开发文档/6、测试/scripts"] > .nav-folder-title-content { +.nav-folder-title[data-path^="开发文档/5、接口/06-验收与矩阵"] > .nav-folder-title-content { color: #FFB300 !important; } -.nav-folder-title[data-path^="开发文档/6、测试/screenshots"] > .nav-folder-title-content { - color: #FF8F00 !important; -} -.nav-folder-title[data-path="开发文档/00-项目总览"] > .nav-folder-title-content { +.nav-folder-title[data-path="开发文档/2、架构/01-总览"] > .nav-folder-title-content { color: #1565C0 !important; font-weight: 700; } @@ -121,7 +117,7 @@ color: #D84315 !important; font-weight: 600; } -.nav-folder-title[data-path="开发文档/平台分析"] > .nav-folder-title-content { +.nav-folder-title[data-path="开发文档/1、需求/03-调研/平台分析"] > .nav-folder-title-content { color: #AD1457 !important; font-weight: 600; } diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index e0b2c00ec0..ec4509957d 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", + "file": "开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "工作手机·五图总览与使用手册" + "title": "工作手机API全量接口目录" } } ] @@ -48,7 +48,7 @@ } }, { - "id": "6c2610f31fc31789", + "id": "5b068a2f44679a09", "type": "leaf", "state": { "type": "search", @@ -65,7 +65,7 @@ } }, { - "id": "bf871c0da2e3544e", + "id": "de198079042f48d2", "type": "leaf", "state": { "type": "bookmarks", @@ -78,23 +78,23 @@ } ], "direction": "horizontal", - "width": 300 + "width": 280 }, "right": { "id": "8c205b6b99b90ab6", "type": "split", "children": [ { - "id": "4d3b113af15e8bff", + "id": "d9214cf887fb7132", "type": "tabs", "children": [ { - "id": "9ac26a342021612c", + "id": "673ffc00f50f08ab", "type": "leaf", "state": { "type": "backlink", "state": { - "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -104,25 +104,25 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "本地控制模式_5_scrcpy可视化控制模式 的反向链接列表" + "title": "工作手机·五图总览与使用手册 的反向链接列表" } }, { - "id": "b0fa8e5a05c1294f", + "id": "890ed47dd78fef15", "type": "leaf", "state": { "type": "outgoing-link", "state": { - "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", "linksCollapsed": false, "unlinkedCollapsed": true }, "icon": "links-going-out", - "title": "本地控制模式_5_scrcpy可视化控制模式 的出链列表" + "title": "工作手机·五图总览与使用手册 的出链列表" } }, { - "id": "b5539cd67cedf99e", + "id": "f752a1d966b0f930", "type": "leaf", "state": { "type": "tag", @@ -137,7 +137,7 @@ } }, { - "id": "6be9303fddeb4281", + "id": "d42161fcc2191ec8", "type": "leaf", "state": { "type": "all-properties", @@ -151,18 +151,18 @@ } }, { - "id": "860b5ca18c83c83c", + "id": "2c28ac2360047882", "type": "leaf", "state": { "type": "outline", "state": { - "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "本地控制模式_5_scrcpy可视化控制模式 的大纲" + "title": "工作手机·五图总览与使用手册 的大纲" } } ] @@ -183,50 +183,53 @@ "bases:新建数据库": false } }, - "active": "dcfc7855fc8fae84", + "active": "214e9888679abd96", "lastOpenFiles": [ - "开发文档/2、架构/images/01-整体总览/工作手机项目目录总览.png", - "开发文档/00-项目总览/README.md", - "开发文档/8、部署/04-Gitea门户/README.md", - "开发文档/6、测试/screenshots/README.md", - "开发文档/6、测试/scripts/README.md", - "开发文档/6、测试/README.md", - "开发文档/6、测试/scripts/legacy/real_class_discovery_20260518.json", - "开发文档/6、测试/scripts/legacy/hook_find_send_20260518.json", - "开发文档/6、测试/scripts/legacy/debug_data_20260518.json", - "开发文档/6、测试/scripts/legacy/db_full_scan_20260518.json", - "开发文档/6、测试/scripts/legacy/verification_v8fix_results.json", - "开发文档/6、测试/scripts/legacy/verification_v8_results.json", - "开发文档/6、测试/scripts/legacy/verification_v6_results.json", - "开发文档/6、测试/scripts/legacy/verification_v5_results.json", - "开发文档/6、测试/scripts/legacy/verification_v4_20260518.json", - "开发文档/6、测试/scripts/legacy/verification_screenshot_v2_20260518.json", - "开发文档/6、测试/screenshots/test_img/t.png", - "开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png", - "开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png", - "开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png", - "开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png", - "开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png", - "开发文档/6、测试/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png", - "开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png", - "开发文档/6、测试/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png", - "开发文档/6、测试/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png", - "机擎/阿服/local-mount-sync/SKILL.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/架构一览.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/快速开始.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/完整整合手册.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/下载中心.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md", - "开发文档/8、部署/04-Gitea门户/wiki-gitea/Hook与Frida.md", - "开发文档/8、部署/04-Gitea门户/gitea/WIKI_SYNC.md", - "开发文档/8、部署/04-Gitea门户/gitea/RELEASES.md", - "开发文档/8、部署/04-Gitea门户/gitea/README.md", - "开发文档/8、部署/04-Gitea门户/gitea/PROJECTS.md", - "开发文档/8、部署/04-Gitea门户/gitea/PACKAGES.md", - "资料/archive/README.md", - "开发文档/2、架构/03-通道与设备/Hook通道与多设备多服务器架构.md", - "开发文档/9、手册/04-专项/README.md", - "开发文档/9、手册/03-验证/README.md" + "开发文档/5、接口/06-验收与矩阵/README.md", + "sdk/tmp/sdk_restart3.log", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/README.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/run_soul_capture.sh", + "开发文档/1、需求/03-调研/平台分析/Soul调研/soul_capture_addon.py", + "开发文档/1、需求/03-调研/平台分析/Soul调研/soul_post_moment_mac.sh", + "开发文档/1、需求/03-调研/平台分析/Soul调研/调研", + "开发文档/1、需求/03-调研/平台分析/Soul调研/Soul自动化方案与命令行操作.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/README.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研/Soul项目分析.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研.zip", + "开发文档/1、需求/03-调研/平台分析/README.md", + "开发文档/1、需求/03-调研/平台分析/Soul调研", + "开发文档/1、需求/03-调研/平台分析", + "开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json", + "开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md", + "开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518", + "开发文档/8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png", + "开发文档/8、部署/05-测试验收/v9fix_final_state.png", + "开发文档/8、部署/05-测试验收/v9_moments_1779114104.png", + "开发文档/8、部署/05-测试验收/v9_moments_1779113961.png", + "开发文档/8、部署/05-测试验收/v9_final_state.png", + "开发文档/8、部署/05-测试验收/v9_final_1779114109.png", + "开发文档/8、部署/05-测试验收/v9_final_1779113966.png", + "开发文档/8、部署/05-测试验收/v9_before_send_1779114095.png", + "开发文档/8、部署/05-测试验收/v9_before_send_1779113952.png", + "开发文档/8、部署/05-测试验收/v9_after_send_1779114098.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md", + "开发文档/5、接口/03-Hook与微信/API接口文档_v8fix.md", + "开发文档/5、接口/06-验收与矩阵/dev_log_v6_20260518.md", + "开发文档/2、架构/01-总览/项目目录总览.md", + "开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md", + "开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260518.md", + "开发文档/8、部署/05-测试验收/README.md", + "开发文档/8、部署/05-测试验收/wireless_frida_20260518/无线Frida微信控制批量验证报告.md" ] } \ No newline at end of file diff --git a/.obsidian/workspace.json.bak-20260524 b/.obsidian/workspace.json.bak-20260524 new file mode 100644 index 0000000000..3a664b2ef9 --- /dev/null +++ b/.obsidian/workspace.json.bak-20260524 @@ -0,0 +1,87 @@ +{ + "main": { + "id": "6762a12341cb5052", + "type": "split", + "children": [ + { + "id": "085e1d408a6336ac", + "type": "tabs", + "children": [ + { + "id": "dcfc7855fc8fae84", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "工作手机·五图总览与使用手册" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "b5ddfce06d2f444b", + "type": "split", + "children": [ + { + "id": "34646979b3318f8f", + "type": "tabs", + "children": [ + { + "id": "214e9888679abd96", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "文件列表" + } + } + ] + } + ], + "direction": "horizontal", + "width": 280 + }, + "right": { + "id": "8c205b6b99b90ab6", + "type": "split", + "children": [ + { + "id": "4d3b113af15e8bff", + "type": "tabs", + "children": [] + } + ], + "direction": "horizontal", + "width": 0, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "switcher:打开快速切换": false, + "graph:查看关系图谱": false, + "canvas:新建白板": false, + "daily-notes:打开/创建今天的日记": false, + "templates:插入模板": false, + "command-palette:打开命令面板": false, + "bases:新建数据库": false + } + }, + "active": "214e9888679abd96", + "lastOpenFiles": [ + "开发文档/00-项目总览/README.md", + "开发文档/9、手册/工作手机·五图总览与使用手册.md", + "开发文档/2、架构/01-总览/系统架构.md" + ] +} diff --git a/README.md b/README.md index 02609d9bdd..9da505cff6 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ | 入口 | 地址 | |------|------| | **📖 完整整合手册(必读)** | [开发文档/9、手册/工作手机·五图总览与使用手册.md](开发文档/9、手册/工作手机·五图总览与使用手册.md) · `./开发文档/9、手册/open_handbook.sh` | -| **🗂️ 项目目录总览** | [开发文档/00-项目总览/README.md](开发文档/00-项目总览/README.md) | +| **🗂️ 项目目录总览** | [开发文档/2、架构/01-总览/项目目录总览.md](开发文档/2、架构/01-总览/项目目录总览.md) | | **本仓库(Gitea)** | http://open.quwanzhi.com:3000/fnvtk/workphone-sdk | | **百科(Wiki)** | 仓库内同步源:`开发文档/8、部署/04-Gitea门户/wiki-gitea/` → 见下方「Wiki 同步」 | | **本地 SDK 控制台(Hub)** | 启动服务后:`http://127.0.0.1:8899/hub` | diff --git a/sdk/README.md b/sdk/README.md index 889f3f283a..d86d3a2910 100644 --- a/sdk/README.md +++ b/sdk/README.md @@ -2,7 +2,7 @@ > 存客宝的 AI 手机控制引擎 — 替代奥创,统一控制微信/抖音/小红书/闲鱼等 > **完整手册**:[开发文档/9、手册/工作手机·五图总览与使用手册.md](../开发文档/9、手册/工作手机·五图总览与使用手册.md)(v2.1) -> **仓库结构**:[开发文档/00-项目总览/README.md](../开发文档/00-项目总览/README.md) +> **仓库结构**:[开发文档/2、架构/01-总览/项目目录总览.md](../开发文档/2、架构/01-总览/项目目录总览.md) ## 项目模块结构 diff --git a/sdk/tests/run_live_verification.py b/sdk/tests/run_live_verification.py index 84c3b5be44..0ee7570986 100644 --- a/sdk/tests/run_live_verification.py +++ b/sdk/tests/run_live_verification.py @@ -27,7 +27,7 @@ if not os.path.exists(SCRIPT_PATH): # 截图保存目录 SCREENSHOT_DIR = os.path.join( os.path.dirname(__file__), '..', '..', '..', - '开发文档', '6、测试', 'screenshots', 'verification_110', + '开发文档', '8、部署', '05-测试验收', 'screenshots', 'verification_110', ) os.makedirs(SCREENSHOT_DIR, exist_ok=True) diff --git a/sdk/tests/test_wechat_full_e2e.py b/sdk/tests/test_wechat_full_e2e.py index 31d11c16d2..c18d304aa7 100644 --- a/sdk/tests/test_wechat_full_e2e.py +++ b/sdk/tests/test_wechat_full_e2e.py @@ -392,11 +392,32 @@ async def main(): print(f"\n 即将测试 {total_actions} 个 action ({len(tests)} 组)") print("-" * 70) + # 预取最近消息 msgId,供 forward/recall 真机链路 + last_msg_id = None + try: + pre = await run_test(client, "get_messages", "POST", "/api/v3/message/list", + {"conversation_id": "filehelper", "limit": 3}, "预检") + msgs = (pre.response.get("data") or {}).get("messages") or [] + if not msgs and isinstance(pre.response.get("data"), dict): + inner = pre.response["data"].get("data") or pre.response["data"] + msgs = inner.get("messages") or [] + if msgs: + last_msg_id = str(msgs[0].get("id") or msgs[0].get("msgId") or msgs[0].get("msg_svr_id") or "") + print(f" 预检 msg_svr_id={last_msg_id}") + except Exception as e: + print(f" 预检 get_messages 跳过: {e}") + for group_name, group_tests in tests.items(): print(f"\n[{group_name}] 测试中...") for action, method, endpoint, params, safe in group_tests: - result = await run_test(client, action, method, endpoint, - dict(params), group_name) + p = dict(params) + if action == "forward_message" and last_msg_id: + p["msg_svr_id"] = last_msg_id + if action == "recall_message" and last_msg_id: + p["msg_svr_id"] = last_msg_id + if action == "friend_info": + p["user_id"] = "filehelper" + result = await run_test(client, action, method, endpoint, p, group_name) report.results.append(result) icon = "✓" if result.success else "✗" print(f" {icon} {action:<30} {result.elapsed_ms:>5}ms [{result.channel}]") diff --git a/sdk/tests/test_wireless_frida.py b/sdk/tests/test_wireless_frida.py index d96b952dd2..2d4920a9f1 100644 --- a/sdk/tests/test_wireless_frida.py +++ b/sdk/tests/test_wireless_frida.py @@ -425,7 +425,7 @@ def generate_verification_report(mode: str = "mock", output_path: str = "") -> s if not output_path: output_path = os.path.join( os.path.dirname(__file__), '..', '..', - '开发文档', '6、测试', + '开发文档', '8、部署', '05-测试验收', f'Frida无线控制验证报告_{datetime.now().strftime("%Y%m%d_%H%M%S")}.md' ) diff --git a/开发文档/.obsidian/app.json b/开发文档/.obsidian/app.json new file mode 100644 index 0000000000..e609a07e76 --- /dev/null +++ b/开发文档/.obsidian/app.json @@ -0,0 +1,3 @@ +{ + "promptDelete": false +} \ No newline at end of file diff --git a/开发文档/.obsidian/appearance.json b/开发文档/.obsidian/appearance.json new file mode 100644 index 0000000000..4d9dc20585 --- /dev/null +++ b/开发文档/.obsidian/appearance.json @@ -0,0 +1,5 @@ +{ + "enabledCssSnippets": [ + "workphone-devdoc" + ] +} \ No newline at end of file diff --git a/开发文档/.obsidian/core-plugins.json b/开发文档/.obsidian/core-plugins.json new file mode 100644 index 0000000000..a6737dee31 --- /dev/null +++ b/开发文档/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": false, + "backlink": true, + "canvas": false, + "outgoing-link": true, + "tag-pane": true, + "footnotes": false, + "properties": true, + "page-preview": true, + "daily-notes": false, + "templates": false, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": false, + "bases": false, + "webviewer": false +} \ No newline at end of file diff --git a/开发文档/.obsidian/snippets/workphone-devdoc.css b/开发文档/.obsidian/snippets/workphone-devdoc.css new file mode 100644 index 0000000000..82d8c619d4 --- /dev/null +++ b/开发文档/.obsidian/snippets/workphone-devdoc.css @@ -0,0 +1,128 @@ +/* 工作手机 · 开发文档 Obsidian 目录配色 + * 启用:Settings → Appearance → CSS snippets → workphone-devdoc + * 依赖:Obsidian 文件资源管理器 nav-folder-title data-path 属性 + */ + +.nav-folder-title[data-path="开发文档/2、架构"] > .nav-folder-title-content { + color: #1565C0 !important; + font-weight: 600; +} +.nav-folder-title[data-path="开发文档/2、架构/01-总览"] > .nav-folder-title-content { + color: #2E7D32 !important; +} +.nav-folder-title[data-path="开发文档/2、架构/02-技术基座"] > .nav-folder-title-content { + color: #6A1B9A !important; +} +.nav-folder-title[data-path="开发文档/2、架构/03-通道与设备"] > .nav-folder-title-content { + color: #EF6C00 !important; +} +.nav-folder-title[data-path="开发文档/2、架构/04-交互图"] > .nav-folder-title-content { + color: #00838F !important; +} +.nav-folder-title[data-path="开发文档/2、架构/05-规范"] > .nav-folder-title-content { + color: #455A64 !important; +} +.nav-folder-title[data-path="开发文档/2、架构/images"] > .nav-folder-title-content { + color: #78909C !important; +} +.nav-folder-title[data-path^="开发文档/2、架构/images/"] > .nav-folder-title-content { + color: #546E7A !important; +} + +/* 9、手册 · 五图总览 */ +.nav-folder-title[data-path="开发文档/9、手册"] > .nav-folder-title-content { + color: #1565C0 !important; + font-weight: 600; +} +.nav-folder-title[data-path^="开发文档/9、手册/0"] > .nav-folder-title-content { + color: #0288D1 !important; +} + +/* 10、项目管理 */ +.nav-folder-title[data-path="开发文档/10、项目管理"] > .nav-folder-title-content { + color: #C62828 !important; + font-weight: 600; +} + +/* 开发文档 1~10 根目录(四类分类色) */ +.nav-folder-title[data-path="开发文档/1、需求"] > .nav-folder-title-content { + color: #5E35B1 !important; + font-weight: 600; +} +.nav-folder-title[data-path^="开发文档/1、需求/0"] > .nav-folder-title-content { + color: #7E57C2 !important; +} +.nav-folder-title[data-path="开发文档/3、原型"] > .nav-folder-title-content { + color: #5E35B1 !important; +} +.nav-folder-title[data-path="开发文档/4、前端"] > .nav-folder-title-content { + color: #0277BD !important; + font-weight: 600; +} +.nav-folder-title[data-path="开发文档/5、接口"] > .nav-folder-title-content { + color: #0277BD !important; + font-weight: 600; +} +.nav-folder-title[data-path^="开发文档/5、接口/0"] > .nav-folder-title-content { + color: #0288D1 !important; +} +.nav-folder-title[data-path="开发文档/5、接口/images"] > .nav-folder-title-content { + color: #78909C !important; +} +.nav-folder-title[data-path="开发文档/6、后端"] > .nav-folder-title-content { + color: #0277BD !important; + font-weight: 600; +} +.nav-folder-title[data-path^="开发文档/6、后端/0"] > .nav-folder-title-content { + color: #0288D1 !important; +} +.nav-folder-title[data-path="开发文档/6、后端/images"] > .nav-folder-title-content { + color: #78909C !important; +} +.nav-folder-title[data-path="开发文档/7、数据库"] > .nav-folder-title-content { + color: #558B2F !important; + font-weight: 600; +} +.nav-folder-title[data-path="开发文档/8、部署"] > .nav-folder-title-content { + color: #558B2F !important; + font-weight: 600; +} +.nav-folder-title[data-path^="开发文档/8、部署/0"] > .nav-folder-title-content { + color: #689F38 !important; +} +.nav-folder-title[data-path^="开发文档/10、项目管理/0"] > .nav-folder-title-content { + color: #E65100 !important; +} +.nav-folder-title[data-path^="开发文档/8、部署/05-测试验收"] > .nav-folder-title-content { + color: #F9A825 !important; +} +.nav-folder-title[data-path^="开发文档/5、接口/06-验收与矩阵"] > .nav-folder-title-content { + color: #FFB300 !important; +} +.nav-folder-title[data-path="开发文档/2、架构/01-总览"] > .nav-folder-title-content { + color: #1565C0 !important; + font-weight: 700; +} +.nav-folder-title[data-path="开发文档/8、部署/04-Gitea门户"] > .nav-folder-title-content { + color: #33691E !important; +} +.nav-folder-title[data-path="机擎"] > .nav-folder-title-content { + color: #6A1B9A !important; + font-weight: 600; +} +.nav-folder-title[data-path^="机擎/"] > .nav-folder-title-content { + color: #8E24AA !important; +} +.nav-folder-title[data-path="sdk"] > .nav-folder-title-content { + color: #D84315 !important; + font-weight: 600; +} +.nav-folder-title[data-path="开发文档/1、需求/03-调研/平台分析"] > .nav-folder-title-content { + color: #AD1457 !important; + font-weight: 600; +} + +/* 通用 images 子目录(各手册/架构下) */ +.nav-folder-title[data-path$="/images"] > .nav-folder-title-content { + color: #78909C !important; +} diff --git a/开发文档/.obsidian/workspace.json b/开发文档/.obsidian/workspace.json new file mode 100644 index 0000000000..2188a965db --- /dev/null +++ b/开发文档/.obsidian/workspace.json @@ -0,0 +1,230 @@ +{ + "main": { + "id": "main-split", + "type": "split", + "children": [ + { + "id": "main-tabs", + "type": "tabs", + "children": [ + { + "id": "readme-leaf", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "5、接口/03-Hook与微信/微信全功能矩阵_v8.0.56.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "微信全功能矩阵_v8.0.56" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "left-split", + "type": "split", + "children": [ + { + "id": "left-tabs", + "type": "tabs", + "children": [ + { + "id": "explorer-leaf", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": true + }, + "icon": "lucide-folder-closed", + "title": "文件列表" + } + }, + { + "id": "b9cf67aaa9208e69", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "搜索" + } + }, + { + "id": "67200df3dc2337a9", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "书签" + } + } + ] + } + ], + "direction": "horizontal", + "width": 280 + }, + "right": { + "id": "ae919b9875c47ddb", + "type": "split", + "children": [ + { + "id": "7c3ec0adb7fc4368", + "type": "tabs", + "children": [ + { + "id": "dbb3910abb87a0eb", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "2、架构/01-总览/项目目录总览.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "README 的反向链接列表" + } + }, + { + "id": "8d8766f784e14cbc", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "2、架构/01-总览/项目目录总览.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "README 的出链列表" + } + }, + { + "id": "920b5e5ea8150052", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "标签" + } + }, + { + "id": "baf4545002294d61", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-archive", + "title": "添加笔记属性" + } + }, + { + "id": "1794cfc42d4545a0", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "2、架构/01-总览/项目目录总览.md", + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "README 的大纲" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "switcher:打开快速切换": false, + "command-palette:打开命令面板": false + } + }, + "active": "explorer-leaf", + "lastOpenFiles": [ + "5、接口/06-验收与矩阵/README.md", + "1、需求/03-调研/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md", + "1、需求/03-调研/平台分析/Soul调研/调研/README.md", + "1、需求/03-调研/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md", + "1、需求/03-调研/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md", + "1、需求/03-调研/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md", + "1、需求/03-调研/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md", + "1、需求/03-调研/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md", + "1、需求/03-调研/平台分析/Soul调研/调研", + "1、需求/03-调研/平台分析/Soul调研/soul_post_moment_mac.sh", + "1、需求/03-调研/平台分析/Soul调研/soul_capture_addon.py", + "1、需求/03-调研/平台分析/Soul调研/run_soul_capture.sh", + "1、需求/03-调研/平台分析/Soul调研/README.md", + "1、需求/03-调研/平台分析/Soul调研/Soul项目分析.md", + "1、需求/03-调研/平台分析/Soul调研/Soul自动化方案与命令行操作.md", + "1、需求/03-调研/平台分析/Soul调研.zip", + "1、需求/03-调研/平台分析/Soul调研", + "1、需求/03-调研/平台分析/README.md", + "1、需求/03-调研/平台分析", + "8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json", + "8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md", + "8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518", + "8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png", + "8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208", + "8、部署/05-测试验收/v9fix_final_state.png", + "8、部署/05-测试验收/v9_moments_1779114104.png", + "8、部署/05-测试验收/v9_moments_1779113961.png", + "8、部署/05-测试验收/v9_final_state.png", + "8、部署/05-测试验收/v9_final_1779114109.png", + "8、部署/05-测试验收/v9_final_1779113966.png", + "8、部署/05-测试验收/v9_before_send_1779114095.png", + "8、部署/05-测试验收/v9_before_send_1779113952.png", + "8、部署/05-测试验收/v9_after_send_1779114098.png", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md", + "8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md", + "5、接口/03-Hook与微信/API接口文档_v8fix.md", + "5、接口/06-验收与矩阵/dev_log_v6_20260518.md", + "2、架构/01-总览/项目目录总览.md", + "8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md", + "8、部署/05-测试验收/Frida无线控制验证报告_20260518.md", + "8、部署/05-测试验收/README.md", + "5、接口/06-验收与矩阵/dev_log_v5.md" + ] +} \ No newline at end of file diff --git a/开发文档/.obsidianignore b/开发文档/.obsidianignore new file mode 100644 index 0000000000..30ca840456 --- /dev/null +++ b/开发文档/.obsidianignore @@ -0,0 +1,7 @@ +# 轻量 vault:仅 开发文档/ 目录 +6、后端/github-repos/ +6、测试/scripts/legacy/ +.git/ +node_modules/ +__pycache__/ +*.pyc diff --git a/开发文档/00-项目总览/README.md b/开发文档/00-项目总览/README.md deleted file mode 100644 index eda5b0a6ee..0000000000 --- a/开发文档/00-项目总览/README.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -obsidian-color: "#1565C0" -cssclasses: - - devdoc-index ---- - -# 00 · 项目总览 - -**工作手机 SDK v3.0** 仓库顶层结构(Obsidian 配色见 `.obsidian/snippets/workphone-devdoc.css`)。 - ---- - -## 根目录一览 - -```text -工作手机/ -├── sdk/ ★ 代码真源(app / agent / android-app / tests) -├── 开发文档/ ★ 文档真源(1~10 + 平台分析 + 00总览) -├── 机擎/ ★ 项目管理 SKILL(五人小组) -├── 资料/ 外部调研;`apk_analysis/` 本地解包不入库 -├── README.md 项目入口 -└── .obsidian/ Obsidian 配色 snippet -└── .obsidianignore ★ 排除 sdk 解包等 25 万+ 非文档文件(防卡死) -``` - -**Obsidian 打不开 / 一直「加载仓库中」**: -1. 确认根目录有 `.obsidianignore`;**Cmd+Q** 完全退出后重开根 vault -2. 若仍卡:已清 IndexedDB 缓存后重开;或用轻量 vault → 终端执行 `open-obsidian.sh`(**推荐 ASCII 路径** `~/Documents/workphone-devdoc` → 开发文档,约 400 文件) - -Git 双推:`开发文档/8、部署/03-运维同步/sync_to_gitea_github.sh` - -**CodeGraph(符号索引)**:项目根已 `codegraph init -i`;Cursor MCP 见 `.cursor/mcp.json`(重启 IDE 生效)。CLI:`npx @colbymchenry/codegraph query "FridaManager"`。 - -**已迁入开发文档**(根目录不再散落): - -| 原路径 | 新路径 | -|--------|--------| -| `docs/` | `开发文档/8、部署/04-Gitea门户/` | -| `tools/` | `开发文档/6、测试/scripts/` | -| `verification_screenshots/` | `开发文档/6、测试/screenshots/verification_110/` | -| `local-mount-sync/` | `机擎/阿服/local-mount-sync/` | -| `补全包/` · `工作手机SDK补全包_微信Frida/` | 已删;历史 ZIP → `资料/archive/`;代码 → `sdk/` | - ---- - -## 架构图 - -![工作手机项目目录总览](../2、架构/images/01-整体总览/工作手机项目目录总览.png) - -```mermaid -flowchart TB - subgraph root [工作手机仓库] - SDK[sdk/ 代码] - DOC[开发文档/ 1-10 + 00] - JQ[机擎/ SKILL] - ZL[资料/ 调研] - end - SDK --> APP[sdk/app FastAPI 8899] - SDK --> AGT[sdk/agent Hook] - DOC --> T6[6、测试 scripts] - DOC --> T8[8、部署 Gitea门户] - JQ --> AFU[阿服 local-mount-sync] - DOC -.-> SDK - JQ -.-> DOC -``` - -详细模块拆解:[2、架构/01-总览/系统架构.md §3.0](../2、架构/01-总览/系统架构.md) - -规范 Skill:[机擎/阿表/开发文档结构规范/SKILL.md](../../机擎/阿表/开发文档结构规范/SKILL.md) diff --git a/开发文档/10、项目管理/03-计划与专项/项目落地执行表.md b/开发文档/10、项目管理/03-计划与专项/项目落地执行表.md index c51fc47688..af90790d9f 100644 --- a/开发文档/10、项目管理/03-计划与专项/项目落地执行表.md +++ b/开发文档/10、项目管理/03-计划与专项/项目落地执行表.md @@ -357,7 +357,7 @@ | 时间 | 人设=浏览器 | 对话链接 | 用户对话整理/扫描 | 本轮完成 | 相关文件链接 | 总进度 | 当前进度 | 本地同步状态 | |---|---|---|---|---|---|---:|---:|---| -| 2026-05-19 00:35 CST | Codex/本地终端(未获取到 Manus/Atlas 公开链接) | 当前 Codex 本地对话,未生成公开访问链接 | 用户要求安装 `/Users/karuo/Downloads/ai.zip` 与 `/Users/karuo/Downloads/机擎.zip` 两个 AI skill,参考 `iteration_20260518_185854.zip`、`iteration_20260518_195036.zip`、`iteration_20260518_213029.zip`,延续工作手机开发文档和进度,继续完成微信/SDK/手机控制接口并测试。扫描结论:两个 skill 可安装;三个 iteration 包主要提示“112/110项能力已规划但需真机验证与数据结构确认”;本地 SDK 存在 `skill_v2` 110动作规划、`wechat_full.py` 62个新增路由、`wechat_api_v9_final.js` 42个真实 RPC 导出。 | 1. 已安装 `karuo-ai-unified` 与 `jiqi-web-dev-orchestrator` 到本机 Codex skills。2. 已在 `sdk/app/main.py` 挂载 `frida_wireless.router` 与 `wechat_full.router`,HTTP OpenAPI 可见 `/api/v3/frida/*` 13条和 `/api/v3/wechat/*` 64条微信相关路径。3. 已完成语法编译、FastAPI 离线 OpenAPI、HTTP `/health` 验收。4. 真机非破坏性状态采集成功:设备 `xgfe65eimrrofyws` / `2312DRAABC`,微信 PID `20420`,当前焦点在微信朋友圈页面。5. 已生成 mock 验证报告和真实覆盖矩阵,明确区分 mock 通过与真机 RPC 真实覆盖。 | [[开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md]];[[开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json]];[[开发文档/6、测试/Frida无线控制验证报告_20260519_002820.md]];`/Users/karuo/.codex/skills/karuo-ai-unified/SKILL.md`;`/Users/karuo/.codex/skills/jiqi-web-dev-orchestrator/SKILL.md`;`sdk/app/main.py` | 约 52% | 本轮约 100% | 本地文件写入成功;待 GitHub 同步。 | +| 2026-05-19 00:35 CST | Codex/本地终端(未获取到 Manus/Atlas 公开链接) | 当前 Codex 本地对话,未生成公开访问链接 | 用户要求安装 `/Users/karuo/Downloads/ai.zip` 与 `/Users/karuo/Downloads/机擎.zip` 两个 AI skill,参考 `iteration_20260518_185854.zip`、`iteration_20260518_195036.zip`、`iteration_20260518_213029.zip`,延续工作手机开发文档和进度,继续完成微信/SDK/手机控制接口并测试。扫描结论:两个 skill 可安装;三个 iteration 包主要提示“112/110项能力已规划但需真机验证与数据结构确认”;本地 SDK 存在 `skill_v2` 110动作规划、`wechat_full.py` 62个新增路由、`wechat_api_v9_final.js` 42个真实 RPC 导出。 | 1. 已安装 `karuo-ai-unified` 与 `jiqi-web-dev-orchestrator` 到本机 Codex skills。2. 已在 `sdk/app/main.py` 挂载 `frida_wireless.router` 与 `wechat_full.router`,HTTP OpenAPI 可见 `/api/v3/frida/*` 13条和 `/api/v3/wechat/*` 64条微信相关路径。3. 已完成语法编译、FastAPI 离线 OpenAPI、HTTP `/health` 验收。4. 真机非破坏性状态采集成功:设备 `xgfe65eimrrofyws` / `2312DRAABC`,微信 PID `20420`,当前焦点在微信朋友圈页面。5. 已生成 mock 验证报告和真实覆盖矩阵,明确区分 mock 通过与真机 RPC 真实覆盖。 | [[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md]];[[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json]];[[开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md]];`/Users/karuo/.codex/skills/karuo-ai-unified/SKILL.md`;`/Users/karuo/.codex/skills/jiqi-web-dev-orchestrator/SKILL.md`;`sdk/app/main.py` | 约 52% | 本轮约 100% | 本地文件写入成功;待 GitHub 同步。 | ### 卡若AI复盘(2026-05-19 00:35) diff --git a/开发文档/10、项目管理/工作日志.md b/开发文档/10、项目管理/工作日志.md index 7d811e5faa..72adb5d79a 100644 --- a/开发文档/10、项目管理/工作日志.md +++ b/开发文档/10、项目管理/工作日志.md @@ -5,6 +5,49 @@ --- +## 2026-05-24 18:00 | 家里 NAS 工作手机网站部署完成 + +### 执行人:@阿服(部署) + +### 完成内容 +- [x] 家里 Station(192.168.110.29 · DS213j)原生部署工作手机网站(无 Docker,Python 3.8 armv7) +- [x] 精简依赖 `requirements.nas-armv7.txt`;`motor`/`aiohttp` 可选降级 +- [x] SDK 监听 **8899**,控制台 `/hub` 内网验收 **200** +- [x] frpc 增加 `[home-nas-workphone]` 8899→8889(外网待 frps 恢复) +- [x] 脚本 `sdk/scripts/deploy_home_station.sh` + +### 访问地址 +| 场景 | URL | +|------|-----| +| **内网控制台(可用)** | http://192.168.110.29:8899/hub | +| **内网 API/文档** | http://192.168.110.29:8899/docs | +| **外网控制台(frps 恢复后)** | http://opennas2.quwanzhi.com:8889/hub | + +### 进度 +- 家里 NAS 工作手机网站部署:**100%**(内网可运行) +- 外网穿透:**待 frps(42.194.245.239:7000)恢复** + +--- + + +### 执行人:@阿桥(接口)+ @阿端(联调) + +### 完成内容 +- [x] **Hook 动作别名补全** `hook_executor.py`:unified/ADB 方法名 → Frida RPC(recall→revoke、search_contact→search_contacts 等 30+ 别名) +- [x] **补 RPC** `wechat_hook_v2.js`:getSafetyCenter / checkRestrictions / getTopStories / getWechatSteps / getStickerList / showPaymentCode +- [x] **send_message 走 Hook 主控**:ChannelRouter 微信强制 `Channel.HOOK`;`_send_via_hook` 解析 ADB serial +- [x] **forward/recall** 接口补 `msg_svr_id` 字段透传 +- [x] 真机 `xgfe65eimrrofyws` 安全组 E2E:**29/29 全绿**(channel=frida/hook) +- [x] 验收脚本 `sdk/scripts/matrix_v8056_real_device_verify.py` + 报告 `sdk/tmp/matrix_v8056_verify_*` +- [x] 矩阵文档更新:`workphone-devdoc/.../微信全功能矩阵_v8.0.56.md` 引擎改为 Frida Hook + 真机验收戳 + +### 进度 +- 矩阵安全只读组真机验收:**100%**(29/29) +- 矩阵全量 97 端点(含写操作/支付/加好友):**待 `--full` 续验** +- 总进度:**99.7%** + +--- + ## 2026-05-24 09:30 | 接口全量目录 + 存客宝对接架构图 ### 执行人:@阿桥(接口)+ @阿表(文档结构) @@ -32,10 +75,10 @@ ### 完成内容 - [x] `docs/` → `开发文档/8、部署/04-Gitea门户/`;`publish_wiki.py` / `sync_when_online.sh` 路径修复 -- [x] `tools/` → `开发文档/6、测试/scripts/` + `_repo_root.py`;根目录 46 个 legacy 脚本/JSON → `scripts/legacy/` +- [x] `tools/` → `开发文档/8、部署/05-测试验收/scripts/` + `_repo_root.py`;根目录 46 个 legacy 脚本/JSON → `scripts/legacy/` - [x] `verification_screenshots/` → `screenshots/verification_110/`;`sdk/tests/run_live_verification.py` 对齐 - [x] `local-mount-sync/` → `机擎/阿服/local-mount-sync/` -- [x] 新增 `开发文档/00-项目总览/README.md`、各层 README;Skill §九 根目录迁入速查 +- [x] 新增 `开发文档/2、架构/01-总览/项目目录总览.md`、各层 README;Skill §九 根目录迁入速查 - [x] Obsidian `workphone-devdoc.css` 扩展(00总览/6测试/scripts/机擎/sdk);workspace 去旧路径 - [x] 架构图 `2、架构/images/01-整体总览/工作手机项目目录总览.png` @@ -55,7 +98,7 @@ - [x] 唯一未收编资产 `wechat_hook_bridge.js` → `sdk/agent/hook/wechat_hook_bridge.js` - [x] 历史 ZIP → `资料/archive/微信Frida_SDK_20260518_补全包.zip` + `资料/archive/README.md` - [x] 移除根目录 `补全包/`、`工作手机SDK补全包_微信Frida/`(代码已在主线 `sdk/`) -- [x] `开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py` 扫描源仅保留 `sdk/` + 测试脚本 +- [x] `开发文档/8、部署/05-测试验收/scripts/extract_wechat_sdk_control_interfaces_1838.py` 扫描源仅保留 `sdk/` + 测试脚本 - [x] 主手册 v2.2、Wiki 摘要、hook README 路径对齐 - [x] `.cursor/rules/codegraph.mdc` + `codegraph init -i` + `codegraph install -l local`(MCP 写入 `.cursor/mcp.json`) @@ -138,7 +181,7 @@ ### 完成内容 - [x] **阿机**:定位 V3 检测脚本 `tools/build_wechat_sdk_true_control_matrix_v3_1858.py` 的 `parse_hook_exports()` 用 `r'rpc\.exports\s*=\s*\{(?P.*?)}\s*;'` 非贪婪正则,遇到第一个内层 `return { ... };` 即截断;导致 V4 矩阵把 `wechat_hook_v2.js` 后段 122 个真实 RPC 全部误标「未确认导出」。 - [x] **阿桥**:新增 `tools/build_wechat_sdk_true_control_matrix_v5_corrigendum.py`:用「定位 `rpc.exports = {` + 找紧跟行首的 `\n};\n` 闭合」替代非贪婪正则,按 4 空格缩进抓顶层方法名;并跟随 `_xxxInternal` / `_getXxxFromDB` 内部委托判定实现类型(`sql_or_java` / `intent_only` / `mixed_sql_intent` / `simple_return`)。 -- [x] **阿表**:产出 `开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md` + `.json`。 +- [x] **阿表**:产出 `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md` + `.json`。 - `wechat_hook_v2.js` 真实 `rpc.exports` 顶层方法数:**126** - `wechat_hook_ckb_patch.js` 扩展 RPC:**6**(getContactsDetail / getContactDetail / getGroupMembersDetail / startFriendAddListener / startGroupMemberListener / batchSyncContacts) - V4 标记的 32 条「未确认导出」:**32/32 全部为脚本误判**,实际全部已在 wechat_hook_v2.js 导出(含 `sendMessage` / `getMessages` / `addFriend` / `acceptFriend` / `getContacts` / `postMoments` / `getProfile` 等核心动作)。 @@ -3185,3 +3228,17 @@ v3.1: Agent 内置 AI Brain → 心跳驱动自主决策 → Frida优先/u2兜 4. 手册:`9、手册/02-操作指南/Obsidian打开说明.md` **进度**: 99.5%(Obsidian 文档入口已恢复) + +--- + +### 2026-05-24 | 开发文档顶层仅 1~10(Phase B) + +**完成项**: +1. 取消顶层 `6、测试` `00-项目总览` `5、开发日志` `5、接口文档` `平台分析` +2. 真机验收 → `8、部署/05-测试验收/`;接口矩阵+开发日志 → `5、接口/06-验收与矩阵/` +3. 项目总览 → `2、架构/01-总览/项目目录总览.md`;平台分析 → `1、需求/03-调研/平台分析/` +4. 全仓路径 sed + `validate_doc_paths.sh` / CI 更新;Obsidian CSS/workspace 同步 + +**进度**: 99.5% + +--- diff --git a/开发文档/10、项目管理/开发进度总表.md b/开发文档/10、项目管理/开发进度总表.md index b3c97c39c5..9c30f7fc6d 100644 --- a/开发文档/10、项目管理/开发进度总表.md +++ b/开发文档/10、项目管理/开发进度总表.md @@ -21,7 +21,7 @@ 已完成(Phase 8: Frida全功能)████████████████████████ 100% ← 110个Hook操作/24模块/v3.1 进行中(Phase 9: 自动注册) ████████████████████░░░░ 85% ← 全自动注册引擎/SIM读取/验证码 已完成(Phase 10: v4.0 APK) ████████████████████████ 100% ← AI数智员工统一安装包,28模块 -已完成(Phase 11: 项目结构) ████████████████████████ 100% ← 根目录非SDK收编、00-项目总览、Obsidian配色+图谱 +已完成(Phase 11: 项目结构) ████████████████████████ 100% ← 根目录非SDK收编、1~10顶层、Obsidian配色+图谱 ``` --- diff --git a/开发文档/1、需求/03-调研/README.md b/开发文档/1、需求/03-调研/README.md index ff73dfbe3e..d75786aeb6 100644 --- a/开发文档/1、需求/03-调研/README.md +++ b/开发文档/1、需求/03-调研/README.md @@ -7,3 +7,4 @@ obsidian-color: "#5E35B1" | 文档 | 说明 | |------|------| | [技术调研与方案选型.md](技术调研与方案选型.md) | 奥创拆解、Frida/Hook 方案对比、选型结论 | +| [平台分析/](平台分析/) | Soul 等平台专项调研(按平台分子目录) | diff --git a/开发文档/平台分析/README.md b/开发文档/1、需求/03-调研/平台分析/README.md similarity index 100% rename from 开发文档/平台分析/README.md rename to 开发文档/1、需求/03-调研/平台分析/README.md diff --git a/开发文档/平台分析/Soul调研.zip b/开发文档/1、需求/03-调研/平台分析/Soul调研.zip similarity index 100% rename from 开发文档/平台分析/Soul调研.zip rename to 开发文档/1、需求/03-调研/平台分析/Soul调研.zip diff --git a/开发文档/平台分析/Soul调研/README.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/README.md similarity index 100% rename from 开发文档/平台分析/Soul调研/README.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/README.md diff --git a/开发文档/平台分析/Soul调研/Soul自动化方案与命令行操作.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/Soul自动化方案与命令行操作.md similarity index 100% rename from 开发文档/平台分析/Soul调研/Soul自动化方案与命令行操作.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/Soul自动化方案与命令行操作.md diff --git a/开发文档/平台分析/Soul调研/Soul项目分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/Soul项目分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/Soul项目分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/Soul项目分析.md diff --git a/开发文档/平台分析/Soul调研/run_soul_capture.sh b/开发文档/1、需求/03-调研/平台分析/Soul调研/run_soul_capture.sh similarity index 100% rename from 开发文档/平台分析/Soul调研/run_soul_capture.sh rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/run_soul_capture.sh diff --git a/开发文档/平台分析/Soul调研/soul_capture_addon.py b/开发文档/1、需求/03-调研/平台分析/Soul调研/soul_capture_addon.py similarity index 100% rename from 开发文档/平台分析/Soul调研/soul_capture_addon.py rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/soul_capture_addon.py diff --git a/开发文档/平台分析/Soul调研/soul_post_moment_mac.sh b/开发文档/1、需求/03-调研/平台分析/Soul调研/soul_post_moment_mac.sh similarity index 100% rename from 开发文档/平台分析/Soul调研/soul_post_moment_mac.sh rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/soul_post_moment_mac.sh diff --git a/开发文档/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/01_Soul产品与功能维度分析.md diff --git a/开发文档/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/02_Soul技术架构与实现维度分析.md diff --git a/开发文档/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/03_Soul安全与风控维度分析.md diff --git a/开发文档/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/04_Soul商业与运营维度分析.md diff --git a/开发文档/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/05_Soul体验与交互维度分析.md diff --git a/开发文档/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/06_参考Soul开发APP的技术基线与实现方式.md diff --git a/开发文档/平台分析/Soul调研/调研/README.md b/开发文档/1、需求/03-调研/平台分析/Soul调研/调研/README.md similarity index 100% rename from 开发文档/平台分析/Soul调研/调研/README.md rename to 开发文档/1、需求/03-调研/平台分析/Soul调研/调研/README.md diff --git a/开发文档/2、架构/01-总览/项目目录总览.md b/开发文档/2、架构/01-总览/项目目录总览.md new file mode 100644 index 0000000000..b934c83fba --- /dev/null +++ b/开发文档/2、架构/01-总览/项目目录总览.md @@ -0,0 +1,50 @@ +# 00 · 项目目录总览 + +**工作手机 SDK v3.0** 仓库顶层结构(Obsidian 配色见 `.obsidian/snippets/workphone-devdoc.css`)。 + +> 开发文档顶层**仅 1~10** 十个编号目录;本页位于 **2、架构/01-总览/**。 + +--- + +## 根目录一览 + +```text +工作手机/ +├── sdk/ ★ 代码真源 +├── 开发文档/ ★ 1~10 文档真源 +├── 机擎/ ★ 项目管理 SKILL +├── 资料/ 外部调研 +└── README.md +``` + +Git 双推:`开发文档/8、部署/03-运维同步/sync_to_gitea_github.sh` + +**文档分层(10 个编号)** + +| 编号 | 目录 | 要点 | +|------|------|------| +| 5 | 接口 | 规范 + **06-验收与矩阵**(接口矩阵/开发日志) | +| 6 | 后端 | 服务端 + Agent | +| 8 | 部署 | 环境 + Hook + **05-测试验收**(脚本/截图/真机报告) | +| 10 | 项目管理 | 进度总表 + 工作日志 | + +--- + +## 架构图 + +![工作手机项目目录总览](../images/01-整体总览/工作手机项目目录总览.png) + +```mermaid +flowchart TB + subgraph root [工作手机仓库] + SDK[sdk/ 代码] + DOC[开发文档/ 1-10] + JQ[机擎/ SKILL] + end + SDK --> APP[sdk/app 8899] + DOC --> J5[5、接口 06矩阵] + DOC --> J8[8、部署 05测试] + JQ -.-> DOC +``` + +详细模块:[系统架构.md §3.0](系统架构.md) · 规范:[机擎/阿表/开发文档结构规范/SKILL.md](../../../机擎/阿表/开发文档结构规范/SKILL.md) diff --git a/开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md b/开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md index 69e7177b1b..9e482daeaa 100644 --- a/开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md +++ b/开发文档/5、接口/01-规范与统一层/工作手机API全量接口目录.md @@ -585,4 +585,4 @@ Content-Type: application/json - [API架构与交互流程图](05-交互图/API架构与交互流程图.html) - [存客宝对接架构图](05-交互图/存客宝对接架构图.html) -**维护**:接口变更后重新运行 `开发文档/6、测试/scripts/export_api_catalog.py`(或让 @阿桥 从 main.py 扫描更新)。 \ No newline at end of file +**维护**:接口变更后重新运行 `开发文档/8、部署/05-测试验收/scripts/export_api_catalog.py`(或让 @阿桥 从 main.py 扫描更新)。 \ No newline at end of file diff --git a/开发文档/5、接口/02-业务对接/存客宝BFF与工作手机SDK映射表.md b/开发文档/5、接口/02-业务对接/存客宝BFF与工作手机SDK映射表.md index 292352d3e8..1b4f60db29 100644 --- a/开发文档/5、接口/02-业务对接/存客宝BFF与工作手机SDK映射表.md +++ b/开发文档/5、接口/02-业务对接/存客宝BFF与工作手机SDK映射表.md @@ -208,7 +208,7 @@ curl -s -X POST http://127.0.0.1:8899/api/v3/devices/{device_id}/ai/task \ -d '{"instruction":"检查微信未读","priority":5}' ``` -**一键冒烟脚本**:`开发文档/6、测试/scripts/workphone_bff_smoke.sh` +**一键冒烟脚本**:`开发文档/8、部署/05-测试验收/scripts/workphone_bff_smoke.sh` **2026-05-24 实测**:SDK healthy,2 台 WS 在线;`/ai/status` 与 `/ai/task` 返回 200。 diff --git a/开发文档/5、接口文档/API接口文档_v8fix.md b/开发文档/5、接口/03-Hook与微信/API接口文档_v8fix.md similarity index 100% rename from 开发文档/5、接口文档/API接口文档_v8fix.md rename to 开发文档/5、接口/03-Hook与微信/API接口文档_v8fix.md diff --git a/开发文档/5、接口/03-Hook与微信/微信全功能矩阵_v8.0.56.md b/开发文档/5、接口/03-Hook与微信/微信全功能矩阵_v8.0.56.md index 61294f3f65..265bf998db 100644 --- a/开发文档/5、接口/03-Hook与微信/微信全功能矩阵_v8.0.56.md +++ b/开发文档/5、接口/03-Hook与微信/微信全功能矩阵_v8.0.56.md @@ -1,8 +1,10 @@ # 微信全功能矩阵 — WeChat 8.0.56 > 设备: Redmi Note 13 5G | Android 13 | SDK targetSdk=34 -> 引擎: WeChatADBEngine v2.0(ADB UI 自动化,无需 Root) +> 引擎: Frida Hook v3.1(真机主控,WECHAT_BACKEND_ONLY) > 更新: 2026-03-14 +> **真机验收**: 2026-05-24 | 设备 `xgfe65eimrrofyws` | Frida Hook | 安全组 **29/29** 通过 +> 引擎已切换为 **Frida Hook 主控**(非 ADB UI);详见 `sdk/scripts/matrix_v8056_real_device_verify.py` ## 功能覆盖统计 diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md similarity index 98% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md index c8260b2d50..5d4fe48d44 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能定义与验收口径_追加版_181550.md @@ -143,7 +143,7 @@ | 证据 | 路径 | |---|---| -| 110项矩阵 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | -| 最新真机报告目录 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227` | -| 最新结果JSON | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json` | +| 110项矩阵 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | +| 最新真机报告目录 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227` | +| 最新结果JSON | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json` | diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md similarity index 67% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md index 410653926b..9c8fd85a65 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md @@ -8,122 +8,122 @@ ## 当前确认口径 -本轮从验收矩阵读取前110项功能,并合并最新真机验证结果目录:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227`。其中只读项优先通过无线Frida RPC验证,安全UI项通过无线ADB验证,高风险外发或改写项只允许安全闸与空参数契约验证,不触发真实添加好友、群发、朋友圈、解封、支付、删除或资料改写。 +本轮从验收矩阵读取前110项功能,并合并最新真机验证结果目录:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227`。其中只读项优先通过无线Frida RPC验证,安全UI项通过无线ADB验证,高风险外发或改写项只允许安全闸与空参数契约验证,不触发真实添加好友、群发、朋友圈、解封、支付、删除或资料改写。 ## 110项功能总表 | 序号 | 功能名 | 中文拆解 | 功能要做什么 | 类型 | 风险/边界 | 测试方式 | 最新状态 | 结果断言 | 证据链接 | |---:|---|---|---|---|---|---|---|---|---| -| 1 | `browseChannels` | browse Channels | 浏览或读取相关页面/内容状态。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 2 | `changePassword` | change Password | 修改类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 3 | `checkAccountStatus` | check Account Status | 检查账号、环境或兼容状态。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 4 | `createLabel` | create Label | 创建类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 5 | `enableFingerprint` | enable Fingerprint | 启用配置类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 6 | `generateMyQrCode` | generate My Qr Code | 生成类能力,当前仅做接口存在和安全边界确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 7 | `getContactInfo` | get Contact Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 8 | `getContacts` | get Contacts | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 9 | `getContactsByLabel` | get Contacts By Label | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 10 | `getDeviceInfo` | get Device Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 11 | `getFavorites` | get Favorites | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 12 | `getHookStatus` | get Hook Status | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 13 | `getLabels` | get Labels | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 14 | `getMessages` | get Messages | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 15 | `getNetworkInfo` | get Network Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 16 | `getProcessInfo` | get Process Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 17 | `getProfile` | get Profile | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 18 | `getRecentMessages` | get Recent Messages | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 19 | `getRecentMiniPrograms` | get Recent Mini Programs | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 20 | `getStorageInfo` | get Storage Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 21 | `getTransactionHistory` | get Transaction History | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 22 | `getVersionCompat` | get Version Compat | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 23 | `getWalletBalance` | get Wallet Balance | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 24 | `getWechatVersion` | get Wechat Version | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 25 | `globalSearch` | global Search | 全局搜索类只读能力。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 26 | `openMiniProgram` | open Mini Program | 打开应用、页面或小程序的安全UI能力。 | frida_rpc | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 27 | `pinChat` | pin Chat | 置顶/固定类改写能力,当前仅做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 28 | `ping` | ping | 置顶/固定类改写能力,当前仅做安全闸。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 29 | `receiveRedPacket` | receive Red Packet | 领取类高风险能力,当前只做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 30 | `receiveTransfer` | receive Transfer | 领取类高风险能力,当前只做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 31 | `scanQrCode` | scan Qr Code | 扫码入口能力,当前只做契约/安全验证。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 32 | `searchContacts` | search Contacts | 搜索联系人或消息的只读能力。 | frida_rpc | 待人工确认 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 33 | `searchMessages` | search Messages | 搜索联系人或消息的只读能力。 | frida_rpc | 待人工确认 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 34 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 35 | `GET /devices/{serial}` | GET /devices/{serial} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 36 | `GET /devices/{serial}/app/current` | GET /devices/{serial}/app/current | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 37 | `GET /devices/{serial}/app/list` | GET /devices/{serial}/app/list | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 38 | `GET /devices/{serial}/ui-tree` | GET /devices/{serial}/ui-tree | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 39 | `GET /scan` | GET /scan | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 40 | `click` | click | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 41 | `click_text` | click text | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 42 | `current_app` | current app | 读取当前应用或页面状态。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 43 | `get_device_info` | get device info | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 44 | `get_ui_tree` | get ui tree | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 45 | `input_text` | input text | ADB输入类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 46 | `list_apps` | list apps | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 47 | `list_devices` | list devices | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 48 | `press_key` | press key | 项目能力接口契约、执行日志与安全边界验证。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 49 | `scan_devices` | scan devices | 扫码入口能力,当前只做契约/安全验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 50 | `screenshot` | screenshot | 截图采集能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 51 | `start_app` | start app | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 52 | `stop_app` | stop app | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 53 | `swipe` | swipe | 滑动类UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:safe_scroll | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 54 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 55 | `GET /devices/{device_id}` | GET /devices/{device_id} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 56 | `GET /devices/{device_id}/ai/status` | GET /devices/{device_id}/ai/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 57 | `GET /devices/{device_id}/guard-events` | GET /devices/{device_id}/guard-events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 58 | `GET /devices/{device_id}/health` | GET /devices/{device_id}/health | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 59 | `GET /devices/{device_id}/health/events` | GET /devices/{device_id}/health/events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 60 | `GET /devices/{device_id}/heartbeat` | GET /devices/{device_id}/heartbeat | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 61 | `GET /devices/{device_id}/ui-tree` | GET /devices/{device_id}/ui-tree | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 62 | `GET /guard-events/all` | GET /guard-events/all | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 63 | `GET /heartbeat/dashboard` | GET /heartbeat/dashboard | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 64 | `GET /heartbeat/events` | GET /heartbeat/events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 65 | `ai_execute` | ai execute | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 66 | `all_health_events` | all health events | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 67 | `click` | click | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 68 | `click_text` | click text | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 69 | `device_health` | device health | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 70 | `device_health_events` | device health events | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 71 | `execute_script` | execute script | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 72 | `get_ai_brain_status` | get ai brain status | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 73 | `get_all_guard_events` | get all guard events | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 74 | `get_device` | get device | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 75 | `get_device_heartbeat` | get device heartbeat | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 76 | `get_devices` | get devices | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 77 | `get_guard_events` | get guard events | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 78 | `get_ui_tree` | get ui tree | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 79 | `heartbeat_dashboard` | heartbeat dashboard | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 80 | `input_text` | input text | ADB输入类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 81 | `push_ai_task` | push ai task | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 82 | `push_standing_order` | push standing order | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 83 | `queue_ai_task` | queue ai task | 任务入队或异步执行记录能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 84 | `screenshot` | screenshot | 截图采集能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 85 | `swipe` | swipe | 滑动类UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:safe_scroll | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 86 | `GET /actions` | GET /actions | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 87 | `GET /deploy/install-script` | GET /deploy/install-script | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 88 | `GET /device/{device_id}` | GET /device/{device_id} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 89 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 90 | `GET /status` | GET /status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 91 | `connect_device` | connect device | 设备连接管理能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 92 | `disconnect_device` | disconnect device | 设备断开管理能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 93 | `discover_devices` | discover devices | 设备发现能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 94 | `execute_batch` | execute batch | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 95 | `execute_command` | execute command | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 96 | `frida_status` | frida status | Frida服务状态或Hook状态能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 97 | `generate_deploy_script` | generate deploy script | 生成类能力,当前仅做接口存在和安全边界确认。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 98 | `get_device` | get device | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 99 | `get_install_command` | get install command | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 100 | `list_devices` | list devices | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 101 | `list_supported_actions` | list supported actions | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 102 | `GET /account/status` | GET /account/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 103 | `GET /actions` | GET /actions | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 104 | `GET /channels/browse` | GET /channels/browse | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 105 | `GET /device-info` | GET /device-info | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 106 | `GET /favorites` | GET /favorites | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 107 | `GET /hook/process-info` | GET /hook/process-info | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 108 | `GET /hook/status` | GET /hook/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 109 | `GET /hook/wechat-version` | GET /hook/wechat-version | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | -| 110 | `GET /mini-program/recent` | GET /mini-program/recent | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 1 | `browseChannels` | browse Channels | 浏览或读取相关页面/内容状态。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 2 | `changePassword` | change Password | 修改类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 3 | `checkAccountStatus` | check Account Status | 检查账号、环境或兼容状态。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 4 | `createLabel` | create Label | 创建类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 5 | `enableFingerprint` | enable Fingerprint | 启用配置类能力,当前仅做安全闸或契约确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 6 | `generateMyQrCode` | generate My Qr Code | 生成类能力,当前仅做接口存在和安全边界确认。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 7 | `getContactInfo` | get Contact Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 8 | `getContacts` | get Contacts | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 9 | `getContactsByLabel` | get Contacts By Label | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 10 | `getDeviceInfo` | get Device Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 11 | `getFavorites` | get Favorites | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 12 | `getHookStatus` | get Hook Status | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 13 | `getLabels` | get Labels | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 14 | `getMessages` | get Messages | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 15 | `getNetworkInfo` | get Network Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 16 | `getProcessInfo` | get Process Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 17 | `getProfile` | get Profile | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 18 | `getRecentMessages` | get Recent Messages | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 19 | `getRecentMiniPrograms` | get Recent Mini Programs | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 20 | `getStorageInfo` | get Storage Info | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 21 | `getTransactionHistory` | get Transaction History | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 22 | `getVersionCompat` | get Version Compat | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 23 | `getWalletBalance` | get Wallet Balance | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 24 | `getWechatVersion` | get Wechat Version | 读取资料、设备、消息、状态或列表数据。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 25 | `globalSearch` | global Search | 全局搜索类只读能力。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 26 | `openMiniProgram` | open Mini Program | 打开应用、页面或小程序的安全UI能力。 | frida_rpc | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 27 | `pinChat` | pin Chat | 置顶/固定类改写能力,当前仅做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 28 | `ping` | ping | 置顶/固定类改写能力,当前仅做安全闸。 | frida_rpc | 只读可真机执行 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 29 | `receiveRedPacket` | receive Red Packet | 领取类高风险能力,当前只做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 30 | `receiveTransfer` | receive Transfer | 领取类高风险能力,当前只做安全闸。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 31 | `scanQrCode` | scan Qr Code | 扫码入口能力,当前只做契约/安全验证。 | frida_rpc | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 32 | `searchContacts` | search Contacts | 搜索联系人或消息的只读能力。 | frida_rpc | 待人工确认 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 33 | `searchMessages` | search Messages | 搜索联系人或消息的只读能力。 | frida_rpc | 待人工确认 | wireless-frida-rpc | 通过 | 真机RPC已调用,返回结构可解析;如返回缺参/空数据,也记录为接口契约有效 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 34 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 35 | `GET /devices/{serial}` | GET /devices/{serial} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 36 | `GET /devices/{serial}/app/current` | GET /devices/{serial}/app/current | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 37 | `GET /devices/{serial}/app/list` | GET /devices/{serial}/app/list | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 38 | `GET /devices/{serial}/ui-tree` | GET /devices/{serial}/ui-tree | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 39 | `GET /scan` | GET /scan | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 40 | `click` | click | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 41 | `click_text` | click text | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 42 | `current_app` | current app | 读取当前应用或页面状态。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 43 | `get_device_info` | get device info | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 44 | `get_ui_tree` | get ui tree | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 45 | `input_text` | input text | ADB输入类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 46 | `list_apps` | list apps | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 47 | `list_devices` | list devices | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 48 | `press_key` | press key | 项目能力接口契约、执行日志与安全边界验证。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 49 | `scan_devices` | scan devices | 扫码入口能力,当前只做契约/安全验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 50 | `screenshot` | screenshot | 截图采集能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 51 | `start_app` | start app | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 52 | `stop_app` | stop app | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 53 | `swipe` | swipe | 滑动类UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:safe_scroll | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 54 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 55 | `GET /devices/{device_id}` | GET /devices/{device_id} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 56 | `GET /devices/{device_id}/ai/status` | GET /devices/{device_id}/ai/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 57 | `GET /devices/{device_id}/guard-events` | GET /devices/{device_id}/guard-events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 58 | `GET /devices/{device_id}/health` | GET /devices/{device_id}/health | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 59 | `GET /devices/{device_id}/health/events` | GET /devices/{device_id}/health/events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 60 | `GET /devices/{device_id}/heartbeat` | GET /devices/{device_id}/heartbeat | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 61 | `GET /devices/{device_id}/ui-tree` | GET /devices/{device_id}/ui-tree | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 62 | `GET /guard-events/all` | GET /guard-events/all | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 63 | `GET /heartbeat/dashboard` | GET /heartbeat/dashboard | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 64 | `GET /heartbeat/events` | GET /heartbeat/events | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 65 | `ai_execute` | ai execute | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 66 | `all_health_events` | all health events | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 67 | `click` | click | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:open_wechat | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 68 | `click_text` | click text | ADB点击类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 69 | `device_health` | device health | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 70 | `device_health_events` | device health events | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 71 | `execute_script` | execute script | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 72 | `get_ai_brain_status` | get ai brain status | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 73 | `get_all_guard_events` | get all guard events | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 74 | `get_device` | get device | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 75 | `get_device_heartbeat` | get device heartbeat | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 76 | `get_devices` | get devices | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 77 | `get_guard_events` | get guard events | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 78 | `get_ui_tree` | get ui tree | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 79 | `heartbeat_dashboard` | heartbeat dashboard | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 80 | `input_text` | input text | ADB输入类安全UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:input_safe_text | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 81 | `push_ai_task` | push ai task | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 82 | `push_standing_order` | push standing order | 项目能力接口契约、执行日志与安全边界验证。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 83 | `queue_ai_task` | queue ai task | 任务入队或异步执行记录能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 84 | `screenshot` | screenshot | 截图采集能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 85 | `swipe` | swipe | 滑动类UI能力。 | python_function | UI安全操作 | wireless-adb-ui | 通过 | 真机已执行安全UI动作:safe_scroll | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 86 | `GET /actions` | GET /actions | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 87 | `GET /deploy/install-script` | GET /deploy/install-script | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 88 | `GET /device/{device_id}` | GET /device/{device_id} | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 89 | `GET /devices` | GET /devices | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 90 | `GET /status` | GET /status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 91 | `connect_device` | connect device | 设备连接管理能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 92 | `disconnect_device` | disconnect device | 设备断开管理能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 93 | `discover_devices` | discover devices | 设备发现能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 94 | `execute_batch` | execute batch | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 95 | `execute_command` | execute command | 命令或批量执行能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 96 | `frida_status` | frida status | Frida服务状态或Hook状态能力。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 97 | `generate_deploy_script` | generate deploy script | 生成类能力,当前仅做接口存在和安全边界确认。 | python_function | 待人工确认 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 98 | `get_device` | get device | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 99 | `get_install_command` | get install command | 读取资料、设备、消息、状态或列表数据。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 100 | `list_devices` | list devices | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 101 | `list_supported_actions` | list supported actions | 列表读取能力。 | python_function | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 102 | `GET /account/status` | GET /account/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 103 | `GET /actions` | GET /actions | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 104 | `GET /channels/browse` | GET /channels/browse | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 105 | `GET /device-info` | GET /device-info | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 106 | `GET /favorites` | GET /favorites | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 107 | `GET /hook/process-info` | GET /hook/process-info | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 108 | `GET /hook/status` | GET /hook/status | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 109 | `GET /hook/wechat-version` | GET /hook/wechat-version | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | +| 110 | `GET /mini-program/recent` | GET /mini-program/recent | 后端GET路由契约与状态读取验证。 | fastapi_route | 只读可真机执行 | backend-contract-log | 通过 | 源码中已定位 | [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md]] | ## 逐项完成原则 @@ -142,8 +142,8 @@ | 文件 | 说明 | |---|---| -| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | 110项验收矩阵源文件 | -| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md` | 最新110项真机验收报告 | -| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl` | 后端逐项执行日志 | -| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots` | 统一截图目录 | +| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | 110项验收矩阵源文件 | +| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md` | 最新110项真机验收报告 | +| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl` | 后端逐项执行日志 | +| `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots` | 统一截图目录 | diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/README_追加索引_1819.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/README_追加索引_1819.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/README_追加索引_1819.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/README_追加索引_1819.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1819_before_state.txt b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1819_before_state.txt similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1819_before_state.txt rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1819_before_state.txt diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat_state.txt b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat_state.txt similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat_state.txt rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat_state.txt diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/锁屏亮屏解锁复核记录_追加.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/锁屏亮屏解锁复核记录_追加.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/锁屏亮屏解锁复核记录_追加.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/锁屏亮屏解锁复核记录_追加.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md similarity index 99% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md index de3e8b4c87..a2970379c2 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md @@ -564,6 +564,6 @@ | 类型 | 路径 | |---|---| -| CSV 矩阵 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv` | -| JSON 明细 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json` | -| 本报告 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md` | +| CSV 矩阵 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv` | +| JSON 明细 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json` | +| 本报告 | `/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_183545.md` | diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_183545.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口纠偏规则_追加版_1834.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口纠偏规则_追加版_1834.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口纠偏规则_追加版_1834.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口纠偏规则_追加版_1834.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器核心控制接口矩阵_追加版_184154.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V2_追加版_184504.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md similarity index 99% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md index a353b9ad10..472b99a536 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.md @@ -141,7 +141,7 @@ ## 5. 文件链接 -- CSV矩阵:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv` -- JSON矩阵:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json` +- CSV矩阵:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.csv` +- JSON矩阵:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V3_追加版_185935.json` - 生成脚本:`/Users/karuo/Documents/开发/2、私域银行/工作手机/tools/build_wechat_sdk_true_control_matrix_v3_1858.py` diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md similarity index 99% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md index 9e298eb3ce..7c4a4e6e6a 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md @@ -144,6 +144,6 @@ ## 5. 文件链接 -- CSV:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv` -- JSON:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json` +- CSV:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv` +- JSON:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json` - 脚本:`/Users/karuo/Documents/开发/2、私域银行/工作手机/tools/build_wechat_sdk_true_control_matrix_v4_1905.py` diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json similarity index 71% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json index 287aad5d6e..9c0fa35ce2 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json @@ -1,6 +1,6 @@ [ { - "path": "开发文档/6、测试/live_verify_20260518/live_verify_results.json", + "path": "开发文档/8、部署/05-测试验收/live_verify_20260518/live_verify_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -16,7 +16,7 @@ "error": "" }, { - "path": "开发文档/6、测试/live_verify_20260518/接口清单.json", + "path": "开发文档/8、部署/05-测试验收/live_verify_20260518/接口清单.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -30,7 +30,7 @@ "error": "" }, { - "path": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json", + "path": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -53,7 +53,7 @@ "error": "" }, { - "path": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json", + "path": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -76,7 +76,7 @@ "error": "" }, { - "path": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json", + "path": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -99,7 +99,7 @@ "error": "" }, { - "path": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json", + "path": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -122,7 +122,7 @@ "error": "" }, { - "path": "开发文档/6、测试/wireless_frida_20260518/wireless_frida_batch_results.json", + "path": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/wireless_frida_batch_results.json", "ok": true, "top_type": "dict", "top_keys": [ @@ -140,7 +140,7 @@ "error": "" }, { - "path": "开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json", + "path": "开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json", "ok": true, "top_type": "list", "top_keys": [], diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md similarity index 85% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md index 5e9be8b55d..36f06cb6c7 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/资料读取与锁屏后台证据复核_追加版_181855.md @@ -45,16 +45,16 @@ | 截图 | 尺寸 | 平均亮度 | 黑暗像素占比 | 判断 | |---|---|---:|---:|---| -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png]] | 1080×2400 | 228.21 | 0.0015 | 非黑屏,可作为截图证据 | -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png]] | 1080×2400 | 228.21 | 0.0015 | 非黑屏,可作为截图证据 | -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | -| [[开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png]] | 1080×2400 | 228.21 | 0.0015 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png]] | 1080×2400 | 228.21 | 0.0015 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | +| [[开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png]] | 1080×2400 | 236.24 | 0.0 | 非黑屏,可作为截图证据 | ## 后端日志复核摘要 -后端日志路径:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl`。当前解析到日志行数:128。下表列出前20个日志键名/动作名计数,用于判断每项执行是否落到后端记录。 +后端日志路径:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl`。当前解析到日志行数:128。下表列出前20个日志键名/动作名计数,用于判断每项执行是否落到后端记录。 | 日志键名/动作名 | 次数 | |---|---:| diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md similarity index 85% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md index 527b7fe1cb..2706e752fe 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/非微信接口剔除与核心完成率口径_追加版_1903.md @@ -34,9 +34,9 @@ | 文件 | 说明 | |---|---| -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md` | 最新V4核心矩阵,后续以此为真机验证基线。 | -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv` | 结构化矩阵,可继续生成测试任务。 | -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json` | 机器可读矩阵,用于自动化调用和回写结果。 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.md` | 最新V4核心矩阵,后续以此为真机验证基线。 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.csv` | 结构化矩阵,可继续生成测试任务。 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V4_追加版_190130.json` | 机器可读矩阵,用于自动化调用和回写结果。 | | `tools/build_wechat_sdk_true_control_matrix_v4_1905.py` | V4矩阵生成脚本,只新增不覆盖。 | ## 5. 下一步执行 diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/黑屏与人工确认重测规则_追加版_1830.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/黑屏与人工确认重测规则_追加版_1830.md similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/黑屏与人工确认重测规则_追加版_1830.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/黑屏与人工确认重测规则_追加版_1830.md diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md similarity index 78% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md index e0ffbe9dc2..d59f4dddf4 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/黑屏人工确认图片识别证据扫描_追加版_182830.md @@ -17,35 +17,35 @@ ## 二、疑似黑屏或无效截图清单 | # | 截图路径 | 尺寸 | 平均亮度 | 非黑像素比例 | 原因 | |---:|---|---:|---:|---:|---| -| 1 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 2 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 3 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 4 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 5 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 6 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 7 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 8 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 9 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 10 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 11 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 12 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 13 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 14 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 15 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 16 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 17 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | -| 18 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 1 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 2 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 3 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 4 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 5 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 6 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 7 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 8 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 9 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 10 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 11 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 12 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 13 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 14 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 15 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 16 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 17 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | +| 18 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png` | 1080×2400 | 0.0 | 0.0 | 疑似黑屏/暗屏 | ## 三、重复截图风险 | 视觉哈希 | 数量 | 示例路径 | 处理要求 | |---|---:|---|---| -| `ef3f1f0f271f3fff` | 2 | `开发文档/6、测试/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png`
`开发文档/6、测试/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `00031f3f3f3f3f3f` | 3 | `开发文档/6、测试/live_verify_20260518/screenshots/00_current_wechat.png`
`开发文档/6、测试/live_verify_20260518/screenshots/172748_before_demo_wechat.png`
`开发文档/6、测试/live_verify_20260518/screenshots/172750_wechat_opened.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `3c30b7ffffffe7c7` | 7 | `开发文档/6、测试/live_verify_20260518/screenshots/172754_search_page.png`
`开发文档/6、测试/live_verify_20260518/screenshots/172756_back_done.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `ffffffffffffffff` | 18 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `3d270f0f0f0f3fff` | 2 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png`
`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `7f1f0f3f1f3f3fff` | 2 | `开发文档/6、测试/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png`
`开发文档/6、测试/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png` | 不得用同一张图证明多个功能,需逐项重跑 | -| `000000ffffff007e` | 3 | `开发文档/6、测试/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png`
`开发文档/6、测试/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png`
`开发文档/6、测试/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `ef3f1f0f271f3fff` | 2 | `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/lockscreen_live_verify/1820_after_unlock_wechat.png`
`开发文档/8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `00031f3f3f3f3f3f` | 3 | `开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/00_current_wechat.png`
`开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172748_before_demo_wechat.png`
`开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172750_wechat_opened.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `3c30b7ffffffe7c7` | 7 | `开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172754_search_page.png`
`开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172756_back_done.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `ffffffffffffffff` | 18 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `3d270f0f0f0f3fff` | 2 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png`
`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `7f1f0f3f1f3f3fff` | 2 | `开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png`
`开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png` | 不得用同一张图证明多个功能,需逐项重跑 | +| `000000ffffff007e` | 3 | `开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png`
`开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png`
`开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png` | 不得用同一张图证明多个功能,需逐项重跑 | ## 四、人工确认、图片识别、微信细节待重测汇总 | 序号 | 功能名称或内容 | 人工确认 | 图片识别 | 微信细节 | 当前判定 | 待处理原因 | @@ -164,14 +164,14 @@ ## 五、结果 JSON 结构复核 | # | JSON路径 | 是否可读 | 顶层类型 | 顶层键/最大列表 | 估算功能条目 | 叶子字段数 | 错误 | |---:|---|---|---|---|---:|---:|---| -| 1 | `开发文档/6、测试/live_verify_20260518/live_verify_results.json` | True | dict | generated_at, device_id, preflight, visible_demo, results | 128 | 2793 | | -| 2 | `开发文档/6、测试/live_verify_20260518/接口清单.json` | True | dict | total, summary, routes | 329 | 2435 | | -| 3 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | -| 4 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | -| 5 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | -| 6 | `开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | -| 7 | `开发文档/6、测试/wireless_frida_20260518/wireless_frida_batch_results.json` | True | dict | generated_at, adb_serial, frida_host, total, passed, failed, results | 148 | 1190 | | -| 8 | `开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | True | list | 160 | 160 | 1760 | | +| 1 | `开发文档/8、部署/05-测试验收/live_verify_20260518/live_verify_results.json` | True | dict | generated_at, device_id, preflight, visible_demo, results | 128 | 2793 | | +| 2 | `开发文档/8、部署/05-测试验收/live_verify_20260518/接口清单.json` | True | dict | total, summary, routes | 329 | 2435 | | +| 3 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | +| 4 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | +| 5 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | +| 6 | `开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json` | True | dict | run_id, generated_at, adb_serial, frida_host, real_device, type_c_unplugged, total_110, passed | 115 | 1511 | | +| 7 | `开发文档/8、部署/05-测试验收/wireless_frida_20260518/wireless_frida_batch_results.json` | True | dict | generated_at, adb_serial, frida_host, total, passed, failed, results | 148 | 1190 | | +| 8 | `开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json` | True | list | 160 | 160 | 1760 | | ## 六、下一步重测规则 接下来必须先修复截图质量门禁,再跑 110 项。每一项都要生成独立截图、前台包名、操作路径、返回数据摘要和日志证据。人工确认项只验证到确认前,图片识别项必须写出识别结果,微信控制项必须写出真实页面和数据字段。旧的黑屏或一图多用证据全部作废,不得再作为完成依据。 @@ -179,6 +179,6 @@ ## 七、输出文件 | 文件 | 作用 | |---|---| -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv` | 截图质量明细 | -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv` | 110功能待重测清单 | -| `开发文档/6、测试/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json` | JSON结构扫描结果 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/截图质量扫描明细_追加版_182830.csv` | 截图质量明细 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110功能待重测清单_追加版_182830.csv` | 110功能待重测清单 | +| `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/结果JSON结构扫描_追加版_182830.json` | JSON结构扫描结果 | diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json similarity index 100% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md similarity index 97% rename from 开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md rename to 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md index a96ed01166..5b1a86630c 100644 --- a/开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md +++ b/开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_追加版_20260519_0033.md @@ -36,8 +36,8 @@ | 文件 | 本轮变更 | |---|---| | `sdk/app/main.py` | 挂载 `frida_wireless.router` 到 `/api/v3/frida/*`,挂载 `wechat_full.router` 到 `/api/v3/wechat/*`。 | -| `开发文档/6、测试/Frida无线控制验证报告_20260519_002820.md` | 生成 mock 模式验证报告:106/106 通过。该报告只能证明规划动作/测试框架可跑,不能替代真机 RPC 通过。 | -| 本文 JSON | 机器可读矩阵:[[开发文档/6、测试/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json]] | +| `开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md` | 生成 mock 模式验证报告:106/106 通过。该报告只能证明规划动作/测试框架可跑,不能替代真机 RPC 通过。 | +| 本文 JSON | 机器可读矩阵:[[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-19/微信SDK真实覆盖矩阵_20260519_0033.json]] | ## 5. 规划动作到 v9 RPC 覆盖表 | 模块 | 名称 | Action | 规划 RPC | v9真实导出 | diff --git a/开发文档/5、接口/06-验收与矩阵/README.md b/开发文档/5、接口/06-验收与矩阵/README.md new file mode 100644 index 0000000000..750d920b35 --- /dev/null +++ b/开发文档/5、接口/06-验收与矩阵/README.md @@ -0,0 +1,10 @@ +# 06 · 验收与矩阵 + +接口扫描矩阵、110 项逐项确认、开发日志(接口验收口径)。 + +| 内容 | 路径 | +|------|------| +| 110 项矩阵/扫描追加 | `110项功能逐项确认/` | +| 开发日志 | `dev_log_v5.md` · `dev_log_v6_20260518.md` | + +脚本在 [8、部署/05-测试验收/scripts](../../8、部署/05-测试验收/scripts/)。 diff --git a/开发文档/6、测试/dev_log_v5.md b/开发文档/5、接口/06-验收与矩阵/dev_log_v5.md similarity index 100% rename from 开发文档/6、测试/dev_log_v5.md rename to 开发文档/5、接口/06-验收与矩阵/dev_log_v5.md diff --git a/开发文档/5、开发日志/dev_log_v6_20260518.md b/开发文档/5、接口/06-验收与矩阵/dev_log_v6_20260518.md similarity index 100% rename from 开发文档/5、开发日志/dev_log_v6_20260518.md rename to 开发文档/5、接口/06-验收与矩阵/dev_log_v6_20260518.md diff --git a/开发文档/5、接口/README.md b/开发文档/5、接口/README.md index 6b2c7d2795..d6be7216d6 100644 --- a/开发文档/5、接口/README.md +++ b/开发文档/5、接口/README.md @@ -21,7 +21,8 @@ cssclasses: ├── 02-业务对接/ ← 存客宝 + 外部网关 ├── 03-Hook与微信/ ← Hook 模块 API + 微信矩阵 + Frida 跳转 ├── 04-OpenAPI/ ← openapi_v3.0.json -└── 05-交互图/ ← API 架构 HTML +├── 05-交互图/ ← API 架构 HTML +└── 06-验收与矩阵/ ← 110项矩阵 + 接口开发日志 ``` --- @@ -35,6 +36,7 @@ cssclasses: | **03 Hook与微信** | [Hook模块管理接口.md](03-Hook与微信/Hook模块管理接口.md) · [微信全功能矩阵](03-Hook与微信/微信全功能矩阵_v8.0.56.md) | | **04 OpenAPI** | [openapi_v3.0.json](04-OpenAPI/openapi_v3.0.json) | | **05 交互图** | [接口全量分类浏览.html](05-交互图/接口全量分类浏览.html) · [存客宝对接架构图.html](05-交互图/存客宝对接架构图.html) · [API架构与交互流程图.html](05-交互图/API架构与交互流程图.html) | +| **06 验收与矩阵** | [06-验收与矩阵/README.md](06-验收与矩阵/README.md) · `110项功能逐项确认/` · 开发日志 | **维护规范**:[机擎/阿表/开发文档结构规范/SKILL.md](../../机擎/阿表/开发文档结构规范/SKILL.md) diff --git a/开发文档/6、测试/README.md b/开发文档/6、测试/README.md deleted file mode 100644 index dfa3e2f42e..0000000000 --- a/开发文档/6、测试/README.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -obsidian-color: "#F9A825" -cssclasses: - - devdoc-index ---- - -# 6、测试 - -验收脚本、真机证据、矩阵报告与截图归档。 - ---- - -## 目录树 - -```text -6、测试/ -├── scripts/ 验收/矩阵生成 Python 脚本(原根目录 tools/) -│ └── legacy/ 历史一次性调试脚本(原根目录 *.py) -├── screenshots/ -│ ├── verification_110/ 110 项视觉验证截图(原 verification_screenshots/) -│ └── test_img/ 临时测试图 -├── 110项功能逐项确认/ 按日期的追加报告 -└── … 各轮 wireless_frida / live_verify 目录 -``` - -**运行示例**(在项目根目录): - -```bash -python3 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py -python3 开发文档/6、测试/scripts/real_device_110_effect_verify.py -``` - -脚本内 `ROOT` 由 `scripts/_repo_root.py` 自动解析,无需 `cd`。 diff --git a/开发文档/6、测试/scripts/validate_doc_paths.sh b/开发文档/6、测试/scripts/validate_doc_paths.sh deleted file mode 100755 index 2a67442c52..0000000000 --- a/开发文档/6、测试/scripts/validate_doc_paths.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -# 校验活跃文档中是否仍引用已废弃「根目录」路径 -set -euo pipefail -ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" -cd "$ROOT" -SELF="开发文档/6、测试/scripts/validate_doc_paths.sh" -PAT='docs/gitea/|docs/wiki-gitea/|verification_screenshots/|python3 tools/|`tools/|bash docs/gitea' -EXCLUDE='工作日志\.md|110项功能逐项确认|开发文档结构规范/SKILL\.md|00-项目总览|legacy/|机擎/阿服/local-mount-sync|validate_doc_paths\.sh|live_verify_20260518|6、测试/README\.md' -hits=$(rg -l "$PAT" 开发文档 机擎 sdk README.md 2>/dev/null | rg -v "$EXCLUDE" || true) -if [ -n "$hits" ]; then - echo "❌ 发现残留旧路径:" - echo "$hits" - rg -n "$PAT" $hits 2>/dev/null | head -20 - exit 1 -fi -echo "✅ 活跃文档无废弃根路径引用" -python3 "开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py" --check-only diff --git a/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md b/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md index 8e2a8c9db4..a55c839d2b 100644 --- a/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md +++ b/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md @@ -11,6 +11,6 @@ | 无线路由 | `sdk/app/routers/frida_wireless.py` | | 手机 Agent | `sdk/agent/wireless_agent.py` | | Frida | `sdk/agent/hook/frida_manager.py` | -| 验证 | `开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py` | +| 验证 | `开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py` | -**WiFi 直连要点(2026-05-24 真机)**:`frida-server` 须 `-l 0.0.0.0:27042`(仅 `127.0.0.1` 会导致 Mac 无线 attach 失败);验收 **148/148** 见 `开发文档/6、测试/wireless_frida_20260518/`。 +**WiFi 直连要点(2026-05-24 真机)**:`frida-server` 须 `-l 0.0.0.0:27042`(仅 `127.0.0.1` 会导致 Mac 无线 attach 失败);验收 **148/148** 见 `开发文档/8、部署/05-测试验收/wireless_frida_20260518/`。 diff --git a/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md b/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md index c1c6436892..5b6aa855fd 100644 --- a/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md +++ b/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md @@ -29,7 +29,7 @@ | 项目级同步规范 | `机擎/阿服/local-mount-sync/SKILL.md` | 已新建,后续可作为固定执行规则读取 | | 阶段性同步说明 | `开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md` | 本文件 | | 每轮执行记录 | `开发文档/10、项目管理/03-计划与专项/项目落地执行表.md` | 只追加,不覆盖旧记录 | -| 真机验收报告 | `开发文档/6、测试/110项功能逐项确认/2026-05-18/` | 按日期目录追加 | +| 真机验收报告 | `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/` | 按日期目录追加 | | 代码修复 | `sdk/app/...`、`sdk/tests/...` | 与具体模块对应 | ## 四、执行流程 diff --git a/开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md index fb0e32b2dc..fcf0273fdd 100644 --- a/开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md +++ b/开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md @@ -7,7 +7,7 @@ - **产品 / 运营**:读 [[完整整合手册]]、[[快速开始]]、[[更新动态]] - **后端 / 设备**:读 [[完整整合手册]]、[[架构一览]]、[[Hook与Frida]]、[[下载中心]] - **部署运维**:[[完整整合手册]] §八 无线 Frida + 仓库 `开发文档/8、部署/` -- **目录结构**:仓库 `开发文档/00-项目总览/`(含项目架构总览图) +- **目录结构**:仓库 `开发文档/2、架构/01-总览/`(含项目架构总览图) ## 核心链接 diff --git a/开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md index b89713b304..8fafbab176 100644 --- a/开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md +++ b/开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md @@ -8,7 +8,7 @@ - **服务端**:`hook/probe`、`hook/data` 等接口;Hub **Hook 数据** 面板(拉取联系人/群/标签/消息等)。 - **文档**:`设备端Hook安装部署.md`、`快速入机部署_Root_Frida_Hook.md`、机擎 SKILL 更新。 - **Gitea 门户**:`开发文档/8、部署/04-Gitea门户/`(百科源 `wiki-gitea/`、脚本 `gitea/publish_wiki.py`)。 -- **项目目录总览**:仓库 `开发文档/00-项目总览/README.md`(Obsidian + 架构 PNG)。 +- **项目目录总览**:仓库 `开发文档/2、架构/01-总览/项目目录总览.md`(Obsidian + 架构 PNG)。 ## 如何跟进最新进度 diff --git a/开发文档/6、测试/Frida无线控制验证报告_20260518.md b/开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260518.md similarity index 100% rename from 开发文档/6、测试/Frida无线控制验证报告_20260518.md rename to 开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260518.md diff --git a/开发文档/6、测试/Frida无线控制验证报告_20260519_002820.md b/开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md similarity index 100% rename from 开发文档/6、测试/Frida无线控制验证报告_20260519_002820.md rename to 开发文档/8、部署/05-测试验收/Frida无线控制验证报告_20260519_002820.md diff --git a/开发文档/8、部署/05-测试验收/README.md b/开发文档/8、部署/05-测试验收/README.md new file mode 100644 index 0000000000..86791c3088 --- /dev/null +++ b/开发文档/8、部署/05-测试验收/README.md @@ -0,0 +1,20 @@ +--- +obsidian-color: "#F9A825" +--- + +# 05 · 测试验收 + +部署侧真机验收:脚本、截图、按日期的验证报告(**接口矩阵报告**在 [5、接口/06-验收与矩阵](../../5、接口/06-验收与矩阵/))。 + +```text +05-测试验收/ +├── scripts/ 验收与矩阵生成脚本 +├── screenshots/ 110 项视觉截图 +├── live_verify_*/ Type-C 真机验证 +└── wireless_frida_*/ 无线 Frida 批量验证 +``` + +```bash +python3 开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py +bash 开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh +``` diff --git a/开发文档/6、测试/live_verify_20260518/110接口真机验证清单.md b/开发文档/8、部署/05-测试验收/live_verify_20260518/110接口真机验证清单.md similarity index 99% rename from 开发文档/6、测试/live_verify_20260518/110接口真机验证清单.md rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/110接口真机验证清单.md index fb574cf56d..54a44053be 100644 --- a/开发文档/6、测试/live_verify_20260518/110接口真机验证清单.md +++ b/开发文档/8、部署/05-测试验收/live_verify_20260518/110接口真机验证清单.md @@ -1,6 +1,6 @@ # 110接口真机验证清单 -本清单由 `tools/inventory_routes.py` 自动扫描 SDK 路由生成,优先服务于 Type-C 连接真机验证。 +本清单由 `开发文档/8、部署/05-测试验收/scripts/inventory_routes.py` 自动扫描 SDK 路由生成,优先服务于 Type-C 连接真机验证。 | 序号 | 方法 | 路径 | 函数 | 文件 | 分类 | 原因 | |---:|---|---|---|---|---|---| diff --git a/开发文档/6、测试/live_verify_20260518/Frida真机验证报告_v2_20260518.md b/开发文档/8、部署/05-测试验收/live_verify_20260518/Frida真机验证报告_v2_20260518.md similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/Frida真机验证报告_v2_20260518.md rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/Frida真机验证报告_v2_20260518.md diff --git a/开发文档/6、测试/live_verify_20260518/Type-C真机控制与110接口验证报告.md b/开发文档/8、部署/05-测试验收/live_verify_20260518/Type-C真机控制与110接口验证报告.md similarity index 92% rename from 开发文档/6、测试/live_verify_20260518/Type-C真机控制与110接口验证报告.md rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/Type-C真机控制与110接口验证报告.md index 7e64c3e2fc..9e83ba1f5c 100644 --- a/开发文档/6、测试/live_verify_20260518/Type-C真机控制与110接口验证报告.md +++ b/开发文档/8、部署/05-测试验收/live_verify_20260518/Type-C真机控制与110接口验证报告.md @@ -10,12 +10,12 @@ | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172748_before_demo_wechat.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | -| 2 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172750_wechat_opened.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | -| 3 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172751_after_scroll_down.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | -| 4 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172753_after_scroll_up.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | -| 5 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172754_search_page.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | -| 6 | ![](开发文档/6、测试/live_verify_20260518/screenshots/172756_back_done.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 1 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172748_before_demo_wechat.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 2 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172750_wechat_opened.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 3 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172751_after_scroll_down.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 4 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172753_after_scroll_up.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 5 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172754_search_page.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | +| 6 | ![](开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172756_back_done.png) | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 | ## 110接口逐项结果 diff --git a/开发文档/6、测试/live_verify_20260518/live_verify_results.json b/开发文档/8、部署/05-测试验收/live_verify_20260518/live_verify_results.json similarity index 99% rename from 开发文档/6、测试/live_verify_20260518/live_verify_results.json rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/live_verify_results.json index 11c85ab82c..64da0a9424 100644 --- a/开发文档/6、测试/live_verify_20260518/live_verify_results.json +++ b/开发文档/8、部署/05-测试验收/live_verify_20260518/live_verify_results.json @@ -83,7 +83,7 @@ "visible_demo": [ { "name": "before_demo", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172748_before_demo_wechat.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172748_before_demo_wechat.png" }, { "name": "ensure_wechat", @@ -98,7 +98,7 @@ }, { "name": "wechat_opened", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172750_wechat_opened.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172750_wechat_opened.png" }, { "name": "safe_scroll_down", @@ -113,7 +113,7 @@ }, { "name": "after_scroll_down", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172751_after_scroll_down.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172751_after_scroll_down.png" }, { "name": "safe_scroll_up", @@ -128,7 +128,7 @@ }, { "name": "after_scroll_up", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172753_after_scroll_up.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172753_after_scroll_up.png" }, { "name": "tap_search", @@ -143,7 +143,7 @@ }, { "name": "search_page", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172754_search_page.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172754_search_page.png" }, { "name": "back_to_wechat", @@ -158,7 +158,7 @@ }, { "name": "back_done", - "screenshot": "开发文档/6、测试/live_verify_20260518/screenshots/172756_back_done.png" + "screenshot": "开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172756_back_done.png" } ], "results": [ diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/00_current_wechat.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/00_current_wechat.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/00_current_wechat.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/00_current_wechat.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172748_before_demo_wechat.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172748_before_demo_wechat.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172748_before_demo_wechat.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172748_before_demo_wechat.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172750_wechat_opened.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172750_wechat_opened.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172750_wechat_opened.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172750_wechat_opened.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172751_after_scroll_down.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172751_after_scroll_down.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172751_after_scroll_down.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172751_after_scroll_down.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172753_after_scroll_up.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172753_after_scroll_up.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172753_after_scroll_up.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172753_after_scroll_up.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172754_search_page.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172754_search_page.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172754_search_page.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172754_search_page.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/172756_back_done.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172756_back_done.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/172756_back_done.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/172756_back_done.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/business_verify_20260518.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/business_verify_20260518.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/business_verify_20260518.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/business_verify_20260518.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/current_phone_20260518_2007.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/current_phone_20260518_2007.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/current_phone_20260518_2007.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/current_phone_20260518_2007.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/db_insert_test.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/db_insert_test.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/db_insert_test.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/db_insert_test.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/moment_A_main_202009.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_A_main_202009.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/moment_A_main_202009.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_A_main_202009.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/moment_B_after_send_202009.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_B_after_send_202009.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/moment_B_after_send_202009.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_B_after_send_202009.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/moment_step0_main_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step0_main_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/moment_step0_main_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step0_main_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/moment_step1_before_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step1_before_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/moment_step1_before_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step1_before_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/moment_step2_after_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step2_after_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/moment_step2_after_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/moment_step2_after_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_A_before_202009.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_A_before_202009.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_A_before_202009.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_A_before_202009.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_B_after_send1_202009.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_B_after_send1_202009.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_B_after_send1_202009.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_B_after_send1_202009.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_C_after_send2_202009.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_C_after_send2_202009.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_C_after_send2_202009.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_C_after_send2_202009.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_step1_before_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step1_before_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_step1_before_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step1_before_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_step2_after_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step2_after_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_step2_after_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step2_after_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/msg_step3_confirm_201810.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step3_confirm_201810.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/msg_step3_confirm_201810.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/msg_step3_confirm_201810.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/u2_step1_main_203014.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step1_main_203014.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/u2_step1_main_203014.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step1_main_203014.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/u2_step2_search_203014.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step2_search_203014.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/u2_step2_search_203014.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step2_search_203014.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/u2_step3_search_result_203014.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step3_search_result_203014.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/u2_step3_search_result_203014.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/u2_step3_search_result_203014.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v3_after_send_203756.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_after_send_203756.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v3_after_send_203756.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_after_send_203756.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v3_before_send_203756.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_before_send_203756.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v3_before_send_203756.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_before_send_203756.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v3_final_chat_203756.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_final_chat_203756.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v3_final_chat_203756.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v3_final_chat_203756.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v4_after_send_204217.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_after_send_204217.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v4_after_send_204217.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_after_send_204217.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v4_before_send_204217.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_before_send_204217.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v4_before_send_204217.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_before_send_204217.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/v4_final_204217.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_final_204217.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/v4_final_204217.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/v4_final_204217.png diff --git a/开发文档/6、测试/live_verify_20260518/screenshots/wakeup_verify_202027.png b/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/wakeup_verify_202027.png similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/screenshots/wakeup_verify_202027.png rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/wakeup_verify_202027.png diff --git a/开发文档/6、测试/live_verify_20260518/接口清单.json b/开发文档/8、部署/05-测试验收/live_verify_20260518/接口清单.json similarity index 100% rename from 开发文档/6、测试/live_verify_20260518/接口清单.json rename to 开发文档/8、部署/05-测试验收/live_verify_20260518/接口清单.json diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json similarity index 98% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json index e665d046c0..30cd2575bf 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/real_device_110_effect_results.json @@ -9,14 +9,14 @@ "passed": 87, "failed": 23, "screenshots": [ - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png" + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png" ], - "backend_log": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl", + "backend_log": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl", "results": [ { "idx": -1, diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md similarity index 96% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md index 00811e7b36..616b4da011 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/真实脱线手机110功能最终效果验证报告.md @@ -19,20 +19,20 @@ ## 统一截图文件夹 -截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots` +截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots` | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | -| 2 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | -| 3 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | -| 4 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | -| 5 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | -| 6 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | +| 1 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | +| 2 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | +| 3 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | +| 4 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | +| 5 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | +| 6 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | ## 后端执行效果 -后端逐项执行日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 +后端逐项执行日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_174929/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 ## 110功能明细 diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json similarity index 98% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json index 9b9c3afbc7..d7d2d50c39 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/real_device_110_effect_results.json @@ -9,14 +9,14 @@ "passed": 92, "failed": 18, "screenshots": [ - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png" + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png" ], - "backend_log": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl", + "backend_log": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl", "results": [ { "idx": -1, diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md similarity index 94% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md index 6cd4305fbc..35d16ec30f 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/真实脱线手机110功能最终效果验证报告.md @@ -19,20 +19,20 @@ ## 统一截图文件夹 -截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots` +截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots` | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | -| 2 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | -| 3 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | -| 4 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | -| 5 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | -| 6 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | +| 1 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | +| 2 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | +| 3 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | +| 4 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | +| 5 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | +| 6 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | ## 后端执行效果 -后端逐项执行日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 +后端逐项执行日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175142/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 ## 110功能明细 diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json similarity index 98% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json index 8346dc8630..1dd2ac22cf 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/real_device_110_effect_results.json @@ -9,14 +9,14 @@ "passed": 110, "failed": 0, "screenshots": [ - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png" + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png" ], - "backend_log": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl", + "backend_log": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl", "results": [ { "idx": -1, diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/截图复核发现.md diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md similarity index 94% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md index c955f2cf9b..d6a622427c 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/真实脱线手机110功能最终效果验证报告.md @@ -19,22 +19,22 @@ ## 统一截图文件夹 -截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots` +截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots` | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | -| 2 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | -| 3 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | -| 4 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | -| 5 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | -| 6 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | +| 1 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | +| 2 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | +| 3 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | +| 4 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | +| 5 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | +| 6 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | ## 后端执行效果 -后端逐项执行日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 +后端逐项执行日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 -Frida Hook 消息日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl`,用于确认真实 Hook 初始化、SQLite/网络/朋友圈等拦截模块已在真机进程内运行。 +Frida Hook 消息日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_175801/backend_logs/frida_hook_messages.jsonl`,用于确认真实 Hook 初始化、SQLite/网络/朋友圈等拦截模块已在真机进程内运行。 ## 110功能明细 diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json similarity index 98% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json index c48783edcd..58ca7fef82 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/real_device_110_effect_results.json @@ -9,14 +9,14 @@ "passed": 110, "failed": 0, "screenshots": [ - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png", - "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png" + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png", + "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png" ], - "backend_log": "开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl", + "backend_log": "开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl", "results": [ { "idx": -1, diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md similarity index 100% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/截图复核与待修正.md diff --git a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md similarity index 94% rename from 开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md rename to 开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md index 8858f99131..463f92b7d8 100644 --- a/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md +++ b/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/真实脱线手机110功能最终效果验证报告.md @@ -19,22 +19,22 @@ ## 统一截图文件夹 -截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots` +截图目录:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots` | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | -| 2 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | -| 3 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | -| 4 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | -| 5 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | -| 6 | ![](开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | +| 1 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/001_01_current_final.png) | 全部操作后统一采集的真机最终画面 | +| 2 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/002_02_wechat_home.png) | 全部操作后统一采集的真机最终画面 | +| 3 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/003_03_search_final.png) | 全部操作后统一采集的真机最终画面 | +| 4 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/004_04_contacts_final.png) | 全部操作后统一采集的真机最终画面 | +| 5 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/005_05_discover_final.png) | 全部操作后统一采集的真机最终画面 | +| 6 | ![](开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/screenshots/006_06_me_final.png) | 全部操作后统一采集的真机最终画面 | ## 后端执行效果 -后端逐项执行日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 +后端逐项执行日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/backend_execution_events.jsonl`。每一行都是一个功能的执行事件,包含执行模式、返回摘要、耗时、手机状态和断言。 -Frida Hook 消息日志:`开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl`,用于确认真实 Hook 初始化、SQLite/网络/朋友圈等拦截模块已在真机进程内运行。 +Frida Hook 消息日志:`开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227/backend_logs/frida_hook_messages.jsonl`,用于确认真实 Hook 初始化、SQLite/网络/朋友圈等拦截模块已在真机进程内运行。 ## 110功能明细 diff --git a/开发文档/6、测试/screenshots/README.md b/开发文档/8、部署/05-测试验收/screenshots/README.md similarity index 100% rename from 开发文档/6、测试/screenshots/README.md rename to 开发文档/8、部署/05-测试验收/screenshots/README.md diff --git a/开发文档/6、测试/screenshots/test_img/t.png b/开发文档/8、部署/05-测试验收/screenshots/test_img/t.png similarity index 100% rename from 开发文档/6、测试/screenshots/test_img/t.png rename to 开发文档/8、部署/05-测试验收/screenshots/test_img/t.png diff --git a/开发文档/6、测试/screenshots/verification_110/00_initial_state_1779086251.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/00_initial_state_1779086251.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/00_initial_state_1779086251.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/00_initial_state_1779086251.png diff --git a/开发文档/6、测试/screenshots/verification_110/99_final_state_1779086291.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/99_final_state_1779086291.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/99_final_state_1779086291.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/99_final_state_1779086291.png diff --git a/开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png diff --git a/开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png diff --git a/开发文档/6、测试/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png diff --git a/开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png diff --git a/开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png diff --git a/开发文档/6、测试/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png diff --git a/开发文档/6、测试/screenshots/verification_110/H17_消息发送_send_message_1779086261.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H17_消息发送_send_message_1779086261.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H17_消息发送_send_message_1779086261.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H17_消息发送_send_message_1779086261.png diff --git a/开发文档/6、测试/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png diff --git a/开发文档/6、测试/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png diff --git a/开发文档/6、测试/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png diff --git a/开发文档/6、测试/screenshots/verification_110/H22_群管理_get_groups_1779086265.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H22_群管理_get_groups_1779086265.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H22_群管理_get_groups_1779086265.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H22_群管理_get_groups_1779086265.png diff --git a/开发文档/6、测试/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png diff --git a/开发文档/6、测试/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png diff --git a/开发文档/6、测试/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png diff --git a/开发文档/6、测试/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png diff --git a/开发文档/6、测试/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png diff --git a/开发文档/6、测试/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png diff --git a/开发文档/6、测试/screenshots/verification_110/H28_标签_get_labels_1779086274.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H28_标签_get_labels_1779086274.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H28_标签_get_labels_1779086274.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H28_标签_get_labels_1779086274.png diff --git a/开发文档/6、测试/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png diff --git a/开发文档/6、测试/screenshots/verification_110/H31_搜索_global_search_1779086276.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H31_搜索_global_search_1779086276.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H31_搜索_global_search_1779086276.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H31_搜索_global_search_1779086276.png diff --git a/开发文档/6、测试/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png diff --git a/开发文档/6、测试/screenshots/verification_110/H33_文件传输_send_image_1779086279.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H33_文件传输_send_image_1779086279.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H33_文件传输_send_image_1779086279.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H33_文件传输_send_image_1779086279.png diff --git a/开发文档/6、测试/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png diff --git a/开发文档/6、测试/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png diff --git a/开发文档/6、测试/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png diff --git a/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png diff --git a/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png diff --git a/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png diff --git a/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png diff --git a/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png diff --git a/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png b/开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png similarity index 100% rename from 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png rename to 开发文档/8、部署/05-测试验收/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png diff --git a/开发文档/6、测试/scripts/README.md b/开发文档/8、部署/05-测试验收/scripts/README.md similarity index 100% rename from 开发文档/6、测试/scripts/README.md rename to 开发文档/8、部署/05-测试验收/scripts/README.md diff --git a/开发文档/6、测试/scripts/_repo_root.py b/开发文档/8、部署/05-测试验收/scripts/_repo_root.py similarity index 89% rename from 开发文档/6、测试/scripts/_repo_root.py rename to 开发文档/8、部署/05-测试验收/scripts/_repo_root.py index 8d57a828f7..50ac143a44 100644 --- a/开发文档/6、测试/scripts/_repo_root.py +++ b/开发文档/8、部署/05-测试验收/scripts/_repo_root.py @@ -1,4 +1,4 @@ -"""Resolve workphone-sdk repository root from scripts under 开发文档/6、测试/scripts/.""" +"""Resolve workphone-sdk repository root from scripts under 开发文档/8、部署/05-测试验收/scripts/.""" from __future__ import annotations from pathlib import Path diff --git a/开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py b/开发文档/8、部署/05-测试验收/scripts/analyze_real_device_evidence_append_doc.py similarity index 96% rename from 开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py rename to 开发文档/8、部署/05-测试验收/scripts/analyze_real_device_evidence_append_doc.py index fc81774f39..140baab9fa 100644 --- a/开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py +++ b/开发文档/8、部署/05-测试验收/scripts/analyze_real_device_evidence_append_doc.py @@ -17,10 +17,10 @@ except Exception: ImageStat = None ROOT = repo_root() -LATEST = ROOT / '开发文档/6、测试/real_device_110_effect_verify_20260518/20260518_180227' +LATEST = ROOT / '开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518/20260518_180227' RESULT_JSON = LATEST / 'real_device_110_effect_results.json' BACKEND_LOG = LATEST / 'backend_logs/backend_execution_events.jsonl' -DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' +DOC_DIR = ROOT / '开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18' PROGRESS = ROOT / '开发文档/10、项目管理/项目落地执行表.md' NOW = datetime.now().strftime('%Y-%m-%d %H:%M:%S') STAMP = datetime.now().strftime('%H%M%S') @@ -200,7 +200,7 @@ def main() -> None: progress_row = ( f"\n| {NOW} | Manus/浏览器 | 用户要求继续把110项逐项测试清楚,并且资料获取成功要说明获取了什么;手机非亮屏时要自动亮屏、解锁并继续控制微信。 | " - f"新增证据复核文档:[[开发文档/6、测试/110项功能逐项确认/2026-05-18/{doc.name}]];复核最新结果JSON、后端日志和6张截图亮度。 | " + f"新增证据复核文档:[[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/{doc.name}]];复核最新结果JSON、后端日志和6张截图亮度。 | " f"总进度75%;当前资料与锁屏证据复核进度60%;110项结果仍为110/110通过,但资料明细与锁屏后独立证据待下一轮补齐。 | 本地追加成功;未覆盖旧文档。 |\n" ) with PROGRESS.open('a', encoding='utf-8') as f: diff --git a/开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py b/开发文档/8、部署/05-测试验收/scripts/build_real_device_acceptance_matrix.py similarity index 97% rename from 开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py rename to 开发文档/8、部署/05-测试验收/scripts/build_real_device_acceptance_matrix.py index 808954b4bb..b8de752ceb 100644 --- a/开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py +++ b/开发文档/8、部署/05-测试验收/scripts/build_real_device_acceptance_matrix.py @@ -16,7 +16,7 @@ from pathlib import Path from datetime import datetime ROOT = repo_root() -OUT = ROOT / "开发文档" / "6、测试" / "wireless_frida_real_device_acceptance_20260518" +OUT = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "wireless_frida_real_device_acceptance_20260518" OUT.mkdir(parents=True, exist_ok=True) CANDIDATE_FILES = [ @@ -26,7 +26,7 @@ CANDIDATE_FILES = [ ROOT / "sdk/app/routers/devices.py", ROOT / "sdk/app/services/wechat_adb_engine.py", ROOT / "sdk/app/agent/hook/wechat_hook_v2.js", - ROOT / "开发文档" / "6、测试" / "scripts/wireless_frida_wechat_batch_verify.py", + ROOT / "开发文档" / "8、部署" / "05-测试验收" / "scripts/wireless_frida_wechat_batch_verify.py", ] HIGH_RISK_RE = re.compile(r"add|accept|delete|remove|post|send|forward|revoke|register|login|logout|switch|invite|quit|set|clear|follow|unfollow|like|comment|share|batchExecute|getSimPhone|moments|friend|group|official|phone|sim|feedback|report|unblock|手机号|添加好友|朋友圈|群发|解封|支付|转账|红包|举报|反馈|外发|删除|清空|资料改写", re.I) diff --git a/开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_core_interface_matrix_1842.py similarity index 99% rename from 开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py rename to 开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_core_interface_matrix_1842.py index 091058803c..e4f0139ce1 100644 --- a/开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py +++ b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_core_interface_matrix_1842.py @@ -17,7 +17,7 @@ from typing import Any, Dict, List, Optional ROOT = repo_root() SDK_APP = ROOT / 'sdk' / 'app' -DOC_DIR = ROOT / '开发文档' / '6、测试' / '110项功能逐项确认' / '2026-05-18' +DOC_DIR = ROOT / '开发文档' / '5、接口' / '06-验收与矩阵' / '110项功能逐项确认' / '2026-05-18' DOC_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime('%H%M%S') OUT_MD = DOC_DIR / f'微信SDK服务器核心控制接口矩阵_追加版_{TS}.md' diff --git a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py similarity index 98% rename from 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py rename to 开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py index b24429d68f..3eccb40a85 100644 --- a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py +++ b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py @@ -10,7 +10,7 @@ from pathlib import Path ROOT=repo_root() APP=ROOT/'sdk/app'; ROUTERS=APP/'routers'; MAIN=APP/'main.py' -DOC=ROOT/'开发文档/6、测试/110项功能逐项确认/2026-05-18'; DOC.mkdir(parents=True,exist_ok=True) +DOC=ROOT/'开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18'; DOC.mkdir(parents=True,exist_ok=True) TS=datetime.now().strftime('%H%M%S') OUT_MD=DOC/f'微信SDK真实控制接口矩阵V2_追加版_{TS}.md' OUT_JSON=DOC/f'微信SDK真实控制接口矩阵V2_追加版_{TS}.json' diff --git a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py similarity index 98% rename from 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py rename to 开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py index 0f27585758..4d3a78cfda 100644 --- a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py +++ b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py @@ -22,7 +22,7 @@ from typing import Dict, List, Optional, Tuple ROOT = repo_root() -DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' +DOC_DIR = ROOT / '开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18' DOC_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime('%H%M%S') MD_OUT = DOC_DIR / f'微信SDK真实控制接口矩阵V3_追加版_{TS}.md' @@ -331,7 +331,7 @@ def main() -> None: lines.append('') lines.append(f'- CSV矩阵:`{CSV_OUT}`') lines.append(f'- JSON矩阵:`{JSON_OUT}`') - lines.append(f'- 生成脚本:`{ROOT / "开发文档" / "6、测试" / "scripts/build_wechat_sdk_true_control_matrix_v3_1858.py"}`') + lines.append(f'- 生成脚本:`{ROOT / "开发文档" / "8、部署" / "05-测试验收" / "scripts/build_wechat_sdk_true_control_matrix_v3_1858.py"}`') lines.append('') MD_OUT.write_text('\n'.join(lines) + '\n', encoding='utf-8') diff --git a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py similarity index 96% rename from 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py rename to 开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py index a46a5680f0..e4b3e0ca9c 100644 --- a/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py +++ b/开发文档/8、部署/05-测试验收/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py @@ -17,11 +17,11 @@ from datetime import datetime from pathlib import Path ROOT = repo_root() -DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' +DOC_DIR = ROOT / '开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18' DOC_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime('%H%M%S') -V3_PATH = ROOT / '开发文档' / '6、测试' / 'scripts/build_wechat_sdk_true_control_matrix_v3_1858.py' +V3_PATH = ROOT / '开发文档' / '8、部署' / '05-测试验收' / 'scripts/build_wechat_sdk_true_control_matrix_v3_1858.py' spec = importlib.util.spec_from_file_location('v3matrix', str(V3_PATH)) v3 = importlib.util.module_from_spec(spec) sys.modules['v3matrix'] = v3 @@ -200,7 +200,7 @@ def main() -> None: lines.append('') lines.append(f'- CSV:`{CSV_OUT}`') lines.append(f'- JSON:`{JSON_OUT}`') - lines.append(f'- 脚本:`{ROOT / "开发文档" / "6、测试" / "scripts/build_wechat_sdk_true_control_matrix_v4_1905.py"}`') + lines.append(f'- 脚本:`{ROOT / "开发文档" / "8、部署" / "05-测试验收" / "scripts/build_wechat_sdk_true_control_matrix_v4_1905.py"}`') MD_OUT.write_text('\n'.join(lines) + '\n', encoding='utf-8') print(json.dumps({'md': str(MD_OUT), 'csv': str(CSV_OUT), 'json': str(JSON_OUT), 'rows': len(rows), 'core_count': core_count, 'by_scope': by_scope, 'by_priority': by_pri, 'by_category': by_cat}, ensure_ascii=False, indent=2)) diff --git a/开发文档/6、测试/scripts/export_api_catalog.py b/开发文档/8、部署/05-测试验收/scripts/export_api_catalog.py similarity index 100% rename from 开发文档/6、测试/scripts/export_api_catalog.py rename to 开发文档/8、部署/05-测试验收/scripts/export_api_catalog.py diff --git a/开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py b/开发文档/8、部署/05-测试验收/scripts/extract_wechat_sdk_control_interfaces_1838.py similarity index 95% rename from 开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py rename to 开发文档/8、部署/05-测试验收/scripts/extract_wechat_sdk_control_interfaces_1838.py index f606ec1314..78a1a9caa1 100644 --- a/开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py +++ b/开发文档/8、部署/05-测试验收/scripts/extract_wechat_sdk_control_interfaces_1838.py @@ -3,8 +3,8 @@ """只追加:扫描 SDK 服务器中能控制手机端微信的真实接口。 输出: -- 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_*.md -- 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_*.csv +- 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口扫描_追加版_*.md +- 开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK服务器控制接口矩阵_追加版_*.csv 判定原则: 1. 微信业务接口:接口语义指向好友、消息、群、朋友圈、搜索、资料、二维码、小程序、支付/钱包等微信功能。 @@ -25,7 +25,7 @@ from pathlib import Path from typing import Iterable ROOT = repo_root() -OUT_DIR = ROOT / "开发文档" / "6、测试" / "110项功能逐项确认" / "2026-05-18" +OUT_DIR = ROOT / "开发文档" / "5、接口" / "06-验收与矩阵" / "110项功能逐项确认" / "2026-05-18" OUT_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime("%H%M%S") @@ -34,7 +34,7 @@ PY_SOURCES = [ ROOT / "sdk" / "app" / "services", ROOT / "sdk" / "agent" / "hook", ROOT / "sdk" / "tests", - ROOT / "开发文档" / "6、测试" / "scripts", + ROOT / "开发文档" / "8、部署" / "05-测试验收" / "scripts", ] JS_SOURCES = [ ROOT / "sdk" / "agent" / "hook", @@ -277,7 +277,7 @@ def write_outputs(items: list[InterfaceItem]) -> tuple[Path, Path, Path]: ## 一、扫描结论 -本次从 `sdk/app/routers`、`sdk/app/services`、`sdk/agent/hook`、`sdk/tests`、`开发文档/6、测试/scripts` 中提取服务器路由、Python 符号和 Frida/JS 符号。扫描结果仅作为接口矩阵初稿,下一步还必须结合真实调用链和真机证据复核。 +本次从 `sdk/app/routers`、`sdk/app/services`、`sdk/agent/hook`、`sdk/tests`、`开发文档/8、部署/05-测试验收/scripts` 中提取服务器路由、Python 符号和 Frida/JS 符号。扫描结果仅作为接口矩阵初稿,下一步还必须结合真实调用链和真机证据复核。 | 指标 | 数量 | |---|---:| diff --git a/开发文档/6、测试/scripts/generate_append_only_110_docs.py b/开发文档/8、部署/05-测试验收/scripts/generate_append_only_110_docs.py similarity index 94% rename from 开发文档/6、测试/scripts/generate_append_only_110_docs.py rename to 开发文档/8、部署/05-测试验收/scripts/generate_append_only_110_docs.py index 294274dd48..556c1fa792 100644 --- a/开发文档/6、测试/scripts/generate_append_only_110_docs.py +++ b/开发文档/8、部署/05-测试验收/scripts/generate_append_only_110_docs.py @@ -11,9 +11,9 @@ from pathlib import Path from typing import Any ROOT = repo_root() -MATRIX = ROOT / '开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json' -LATEST_BASE = ROOT / '开发文档/6、测试/real_device_110_effect_verify_20260518' -DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' +MATRIX = ROOT / '开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json' +LATEST_BASE = ROOT / '开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518' +DOC_DIR = ROOT / '开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18' PROGRESS = ROOT / '开发文档/10、项目管理/项目落地执行表.md' NOW = datetime.now().strftime('%Y-%m-%d %H:%M:%S') @@ -206,7 +206,7 @@ def main() -> None: progress_row = ( f"\n| {NOW} | Manus/浏览器 | 用户要求先列清楚110个功能;所有开发文档只能追加,不能覆盖;按日期分类;先确定功能、再逐项确认完成。 | " - f"新增追加文档:[[开发文档/6、测试/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md]];CSV:[[开发文档/6、测试/110项功能逐项确认/2026-05-18/{csv_path.name}]] | " + f"新增追加文档:[[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/110项功能逐项确认清单_追加版.md]];CSV:[[开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/{csv_path.name}]] | " f"总进度65%,当前清单确认进度100%;下一步逐项补资料读取明细、锁屏后台控制与截图可见性。 | 本地追加成功,未覆盖既有文档 |\n" ) if PROGRESS.exists(): diff --git a/开发文档/6、测试/scripts/generate_function_definition_append_doc.py b/开发文档/8、部署/05-测试验收/scripts/generate_function_definition_append_doc.py similarity index 97% rename from 开发文档/6、测试/scripts/generate_function_definition_append_doc.py rename to 开发文档/8、部署/05-测试验收/scripts/generate_function_definition_append_doc.py index 0aefa323ea..5d461231c2 100644 --- a/开发文档/6、测试/scripts/generate_function_definition_append_doc.py +++ b/开发文档/8、部署/05-测试验收/scripts/generate_function_definition_append_doc.py @@ -12,9 +12,9 @@ from pathlib import Path from typing import Any ROOT = repo_root() -MATRIX = ROOT / '开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json' -LATEST_BASE = ROOT / '开发文档/6、测试/real_device_110_effect_verify_20260518' -DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' +MATRIX = ROOT / '开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json' +LATEST_BASE = ROOT / '开发文档/8、部署/05-测试验收/real_device_110_effect_verify_20260518' +DOC_DIR = ROOT / '开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18' NOW = datetime.now().strftime('%Y-%m-%d %H:%M:%S') STAMP = datetime.now().strftime('%H%M%S') diff --git a/开发文档/6、测试/scripts/inventory_routes.py b/开发文档/8、部署/05-测试验收/scripts/inventory_routes.py similarity index 93% rename from 开发文档/6、测试/scripts/inventory_routes.py rename to 开发文档/8、部署/05-测试验收/scripts/inventory_routes.py index 034af77c26..f54f5975e9 100644 --- a/开发文档/6、测试/scripts/inventory_routes.py +++ b/开发文档/8、部署/05-测试验收/scripts/inventory_routes.py @@ -11,7 +11,7 @@ from pathlib import Path ROOT = repo_root() SCAN_DIRS = [ROOT / "sdk" / "app"] -OUT_DIR = ROOT / "开发文档" / "6、测试" / "live_verify_20260518" +OUT_DIR = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "live_verify_20260518" OUT_DIR.mkdir(parents=True, exist_ok=True) HTTP_METHODS = {"get", "post", "put", "delete", "patch"} @@ -93,7 +93,7 @@ def main(): "reason": reason, }) routes = [r for r in routes if "method" in r] - md = ["# 110接口真机验证清单", "", "本清单由 `开发文档/6、测试/scripts/inventory_routes.py` 自动扫描 SDK 路由生成,优先服务于 Type-C 连接真机验证。", "", "| 序号 | 方法 | 路径 | 函数 | 文件 | 分类 | 原因 |", "|---:|---|---|---|---|---|---|"] + md = ["# 110接口真机验证清单", "", "本清单由 `开发文档/8、部署/05-测试验收/scripts/inventory_routes.py` 自动扫描 SDK 路由生成,优先服务于 Type-C 连接真机验证。", "", "| 序号 | 方法 | 路径 | 函数 | 文件 | 分类 | 原因 |", "|---:|---|---|---|---|---|---|"] for i, r in enumerate(routes, 1): md.append(f"| {i} | {r['method']} | `{r['path']}` | `{r['function']}` | `{r['file']}:{r['line']}` | {r['verify_class']} | {r['reason']} |") summary = {} diff --git a/开发文档/6、测试/scripts/legacy/db_full_scan_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/db_full_scan_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/db_full_scan_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/db_full_scan_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/debug_contacts.py b/开发文档/8、部署/05-测试验收/scripts/legacy/debug_contacts.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/debug_contacts.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/debug_contacts.py diff --git a/开发文档/6、测试/scripts/legacy/debug_data_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/debug_data_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/debug_data_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/debug_data_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/do_real_actions.py b/开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/do_real_actions.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions.py index 8ad809126c..33f9e94b51 100644 --- a/开发文档/6、测试/scripts/legacy/do_real_actions.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions.py @@ -353,7 +353,7 @@ time.sleep(0.5) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "input swipe 540 1800 540 900"], capture_output=True) time.sleep(0.5) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "screencap -p /sdcard/v6_msg_before.png"], capture_output=True) -subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_msg_before.png", BASE + "/开发文档/6、测试/v6_msg_before.png"], capture_output=True) +subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_msg_before.png", BASE + "/开发文档/8、部署/05-测试验收/v6_msg_before.png"], capture_output=True) # ===== 操作2:发布朋友圈 ===== print("\n" + "="*40) @@ -398,8 +398,8 @@ if r_verify_moment.get("moments"): print("\n【截图验证】") time.sleep(1) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "screencap -p /sdcard/v6_final.png"], capture_output=True) -subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_final.png", BASE + "/开发文档/6、测试/v6_final.png"], capture_output=True) -print(f" 截图: {BASE}/开发文档/6、测试/v6_final.png") +subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_final.png", BASE + "/开发文档/8、部署/05-测试验收/v6_final.png"], capture_output=True) +print(f" 截图: {BASE}/开发文档/8、部署/05-测试验收/v6_final.png") # 保存结果 output = { diff --git a/开发文档/6、测试/scripts/legacy/do_real_actions_v2.py b/开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions_v2.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/do_real_actions_v2.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions_v2.py index 2e20104f24..f02d923321 100644 --- a/开发文档/6、测试/scripts/legacy/do_real_actions_v2.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/do_real_actions_v2.py @@ -364,7 +364,7 @@ time.sleep(0.5) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "am start -n com.tencent.mm/.ui.LauncherUI -e username filehelper"], capture_output=True) time.sleep(2) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "screencap -p /sdcard/v6_msg_result.png"], capture_output=True) -subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_msg_result.png", BASE + "/开发文档/6、测试/v6_msg_result.png"], capture_output=True) +subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_msg_result.png", BASE + "/开发文档/8、部署/05-测试验收/v6_msg_result.png"], capture_output=True) print(f" 截图: v6_msg_result.png") # ===== 操作2:发布朋友圈 ===== @@ -388,7 +388,7 @@ results["post_moment"] = r_moment subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "am start -n com.tencent.mm/.plugin.sns.ui.SnsTimeLineUI"], capture_output=True) time.sleep(2) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "screencap -p /sdcard/v6_moment_result.png"], capture_output=True) -subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_moment_result.png", BASE + "/开发文档/6、测试/v6_moment_result.png"], capture_output=True) +subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_moment_result.png", BASE + "/开发文档/8、部署/05-测试验收/v6_moment_result.png"], capture_output=True) print(f" 截图: v6_moment_result.png") # ===== 操作3:添加好友 ===== @@ -434,7 +434,7 @@ if r_verify_moment.get("moments"): print("\n【最终截图】") time.sleep(1) subprocess.run(["adb", "-s", ADB_SERIAL, "shell", "screencap -p /sdcard/v6_final_v2.png"], capture_output=True) -subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_final_v2.png", BASE + "/开发文档/6、测试/v6_final_v2.png"], capture_output=True) +subprocess.run(["adb", "-s", ADB_SERIAL, "pull", "/sdcard/v6_final_v2.png", BASE + "/开发文档/8、部署/05-测试验收/v6_final_v2.png"], capture_output=True) print(f" 截图: v6_final_v2.png") # 保存结果 diff --git a/开发文档/6、测试/scripts/legacy/explore_v6.py b/开发文档/8、部署/05-测试验收/scripts/legacy/explore_v6.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/explore_v6.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/explore_v6.py diff --git a/开发文档/6、测试/scripts/legacy/find_real_send_class.py b/开发文档/8、部署/05-测试验收/scripts/legacy/find_real_send_class.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/find_real_send_class.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/find_real_send_class.py diff --git a/开发文档/6、测试/scripts/legacy/hook_find_send.py b/开发文档/8、部署/05-测试验收/scripts/legacy/hook_find_send.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/hook_find_send.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/hook_find_send.py index 1af6a5f123..cec06810e6 100644 --- a/开发文档/6、测试/scripts/legacy/hook_find_send.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/hook_find_send.py @@ -250,7 +250,7 @@ time.sleep(1) import subprocess subprocess.run(["adb", "-s", "192.168.110.80:5555", "shell", "screencap", "-p", "/sdcard/db_insert_test.png"]) subprocess.run(["adb", "-s", "192.168.110.80:5555", "pull", "/sdcard/db_insert_test.png", - BASE + "/开发文档/6、测试/live_verify_20260518/screenshots/db_insert_test.png"]) + BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots/db_insert_test.png"]) print(" 截图已保存") # 4. 检查消息是否在DB中 diff --git a/开发文档/6、测试/scripts/legacy/hook_find_send_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/hook_find_send_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/hook_find_send_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/hook_find_send_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/patch_hook_js.py b/开发文档/8、部署/05-测试验收/scripts/legacy/patch_hook_js.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/patch_hook_js.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/patch_hook_js.py diff --git a/开发文档/6、测试/scripts/legacy/query_db_schema.py b/开发文档/8、部署/05-测试验收/scripts/legacy/query_db_schema.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/query_db_schema.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/query_db_schema.py diff --git a/开发文档/6、测试/scripts/legacy/real_class_discovery_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/real_class_discovery_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/real_class_discovery_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/real_class_discovery_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/scan_all_db_tables.py b/开发文档/8、部署/05-测试验收/scripts/legacy/scan_all_db_tables.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/scan_all_db_tables.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/scan_all_db_tables.py diff --git a/开发文档/6、测试/scripts/legacy/scan_wechat_classes.py b/开发文档/8、部署/05-测试验收/scripts/legacy/scan_wechat_classes.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/scan_wechat_classes.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/scan_wechat_classes.py diff --git a/开发文档/6、测试/scripts/legacy/test_db_choose.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_db_choose.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_db_choose.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_db_choose.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_business_20260518.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_business_20260518.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_business_20260518.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_business_20260518.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_debug_data.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_debug_data.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_debug_data.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_debug_data.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_final.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_final.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_final.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_final.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_final.py.bak b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_final.py.bak similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_final.py.bak rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_final.py.bak diff --git a/开发文档/6、测试/scripts/legacy/test_frida_live_20260518.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_live_20260518.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_live_20260518.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_live_20260518.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_rpc.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_rpc.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_rpc.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_rpc.py diff --git a/开发文档/6、测试/scripts/legacy/test_frida_screenshot_v2.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_v2.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/test_frida_screenshot_v2.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_v2.py index 945ee62c27..fe36dc7ffe 100644 --- a/开发文档/6、测试/scripts/legacy/test_frida_screenshot_v2.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_v2.py @@ -13,7 +13,7 @@ FRIDA_PORT = 27042 WECHAT_PID = 16816 BASE = "/Users/karuo/Documents/开发/2、私域银行/工作手机" HOOK_SCRIPT = BASE + "/sdk/agent/hook/wechat_hook_v2.js" -SCREENSHOT_DIR = BASE + "/开发文档/6、测试/live_verify_20260518/screenshots" +SCREENSHOT_DIR = BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots" RESULT_FILE = BASE + "/verification_screenshot_v2_20260518.json" os.makedirs(SCREENSHOT_DIR, exist_ok=True) diff --git a/开发文档/6、测试/scripts/legacy/test_frida_screenshot_verify.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_verify.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/test_frida_screenshot_verify.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_verify.py index 40ec7fd11a..95c174b32b 100644 --- a/开发文档/6、测试/scripts/legacy/test_frida_screenshot_verify.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_screenshot_verify.py @@ -11,7 +11,7 @@ FRIDA_PORT = 27042 WECHAT_PID = 16816 BASE = "/Users/karuo/Documents/开发/2、私域银行/工作手机" HOOK_SCRIPT = BASE + "/sdk/agent/hook/wechat_hook_v2.js" -SCREENSHOT_DIR = BASE + "/开发文档/6、测试/live_verify_20260518/screenshots" +SCREENSHOT_DIR = BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots" RESULT_FILE = BASE + "/verification_screenshot_20260518.json" os.makedirs(SCREENSHOT_DIR, exist_ok=True) diff --git a/开发文档/6、测试/scripts/legacy/test_frida_stats_20260518.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_stats_20260518.py similarity index 100% rename from 开发文档/6、测试/scripts/legacy/test_frida_stats_20260518.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_frida_stats_20260518.py diff --git a/开发文档/6、测试/scripts/legacy/test_u2_send_message.py b/开发文档/8、部署/05-测试验收/scripts/legacy/test_u2_send_message.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/test_u2_send_message.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/test_u2_send_message.py index 655fc244b3..5ed75dea24 100644 --- a/开发文档/6、测试/scripts/legacy/test_u2_send_message.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/test_u2_send_message.py @@ -14,7 +14,7 @@ FRIDA_PORT = 27042 WECHAT_PID = 9462 BASE = "/Users/karuo/Documents/开发/2、私域银行/工作手机" HOOK_SCRIPT = BASE + "/sdk/agent/hook/wechat_hook_v2.js" -SC_DIR = BASE + "/开发文档/6、测试/live_verify_20260518/screenshots" +SC_DIR = BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots" RESULT_FILE = BASE + "/verification_u2_20260518.json" os.makedirs(SC_DIR, exist_ok=True) diff --git a/开发文档/6、测试/scripts/legacy/verification_business_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_business_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_business_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_business_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_full_v3_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_full_v3_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_full_v3_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_full_v3_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_results.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_results.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_results.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_results.json diff --git a/开发文档/6、测试/scripts/legacy/verification_results_live_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_results_live_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_results_live_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_results_live_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_screenshot_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_screenshot_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_screenshot_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_screenshot_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_screenshot_v2_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_screenshot_v2_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_screenshot_v2_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_screenshot_v2_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_v4_20260518.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_v4_20260518.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_v4_20260518.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_v4_20260518.json diff --git a/开发文档/6、测试/scripts/legacy/verification_v5_results.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_v5_results.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_v5_results.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_v5_results.json diff --git a/开发文档/6、测试/scripts/legacy/verification_v6_results.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_v6_results.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_v6_results.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_v6_results.json diff --git a/开发文档/6、测试/scripts/legacy/verification_v8_results.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_v8_results.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_v8_results.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_v8_results.json diff --git a/开发文档/6、测试/scripts/legacy/verification_v8fix_results.json b/开发文档/8、部署/05-测试验收/scripts/legacy/verification_v8fix_results.json similarity index 100% rename from 开发文档/6、测试/scripts/legacy/verification_v8fix_results.json rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verification_v8fix_results.json diff --git a/开发文档/6、测试/scripts/legacy/verify_all_features.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_features.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_all_features.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_features.py index a491f80e7c..017d55d099 100644 --- a/开发文档/6、测试/scripts/legacy/verify_all_features.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_features.py @@ -13,7 +13,7 @@ FRIDA_PORT = 27042 WECHAT_PID = 9462 BASE = "/Users/karuo/Documents/开发/2、私域银行/工作手机" HOOK_JS = BASE + "/sdk/agent/hook/wechat_full_control.js" -SC_DIR = BASE + "/开发文档/6、测试/live_verify_20260518/screenshots" +SC_DIR = BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots" RESULT_FILE = BASE + "/verification_full_v3_20260518.json" os.makedirs(SC_DIR, exist_ok=True) diff --git a/开发文档/6、测试/scripts/legacy/verify_all_v7.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_v7.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_all_v7.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_v7.py index 4d8035e6ac..f6c4b2aecd 100644 --- a/开发文档/6、测试/scripts/legacy/verify_all_v7.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_all_v7.py @@ -21,7 +21,7 @@ screenshots = [] def adb_screenshot(name): """ADB截图""" remote = f'/sdcard/verify_{name}.png' - local = f'/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/verify_{name}.png' + local = f'/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/verify_{name}.png' subprocess.run(['adb', '-s', f'{PHONE_IP}:{PHONE_PORT}', 'shell', f'screencap -p {remote}'], capture_output=True) subprocess.run(['adb', '-s', f'{PHONE_IP}:{PHONE_PORT}', 'pull', remote, local], capture_output=True) screenshots.append({'name': name, 'path': local}) diff --git a/开发文档/6、测试/scripts/legacy/verify_complete_v9.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_complete_v9.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_complete_v9.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_complete_v9.py index 32fbe83b37..28341f9c13 100644 --- a/开发文档/6、测试/scripts/legacy/verify_complete_v9.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_complete_v9.py @@ -13,7 +13,7 @@ import sys PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' results = {} errors = [] diff --git a/开发文档/6、测试/scripts/legacy/verify_v10.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v10.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v10.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v10.py index b121ac2041..c908ccedb8 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v10.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v10.py @@ -13,7 +13,7 @@ import sys PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' results = {} errors = [] diff --git a/开发文档/6、测试/scripts/legacy/verify_v11.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v11.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v11.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v11.py index ec41a6b84e..33d1c5ff0d 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v11.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v11.py @@ -13,7 +13,7 @@ import sys PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' results = {} errors = [] diff --git a/开发文档/6、测试/scripts/legacy/verify_v12.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v12.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v12.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v12.py index 58e6e0d140..1f27049c45 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v12.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v12.py @@ -8,7 +8,7 @@ import frida, json, time, subprocess, sys, re PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' results = {} errors = [] diff --git a/开发文档/6、测试/scripts/legacy/verify_v4.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v4.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v4.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v4.py index 3e1be7576f..2d4b5fb964 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v4.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v4.py @@ -12,7 +12,7 @@ ADB_SERIAL = "192.168.110.80:5555" FRIDA_PORT = 27042 BASE = "/Users/karuo/Documents/开发/2、私域银行/工作手机" HOOK_JS = BASE + "/sdk/agent/hook/wechat_full_control_v4.js" -SC_DIR = BASE + "/开发文档/6、测试/live_verify_20260518/screenshots" +SC_DIR = BASE + "/开发文档/8、部署/05-测试验收/live_verify_20260518/screenshots" RESULT_FILE = BASE + "/verification_v4_20260518.json" os.makedirs(SC_DIR, exist_ok=True) diff --git a/开发文档/6、测试/scripts/legacy/verify_v5.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v5.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/verify_v5.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v5.py index 79d65c5df8..41a195b5d5 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v5.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v5.py @@ -195,8 +195,8 @@ test("rawQuery(WalletLedger)", lambda: rpc.raw_query({"sql":"SELECT COUNT(*) as print("\n【截图验证】") time.sleep(1) adb_result = subprocess.run(["adb","-s",ADB_SERIAL,"shell","screencap -p /sdcard/v5_verify.png"],capture_output=True) -subprocess.run(["adb","-s",ADB_SERIAL,"pull","/sdcard/v5_verify.png",BASE+"/开发文档/6、测试/v5_verify_final.png"],capture_output=True) -print(f" 截图保存: {BASE}/开发文档/6、测试/v5_verify_final.png") +subprocess.run(["adb","-s",ADB_SERIAL,"pull","/sdcard/v5_verify.png",BASE+"/开发文档/8、部署/05-测试验收/v5_verify_final.png"],capture_output=True) +print(f" 截图保存: {BASE}/开发文档/8、部署/05-测试验收/v5_verify_final.png") # ===== 汇总 ===== total = len(results) diff --git a/开发文档/6、测试/scripts/legacy/verify_v8.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v8.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8.py index 00683666a4..b81105e14c 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v8.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8.py @@ -6,7 +6,7 @@ PHONE_IP = '127.0.0.1' PHONE_PORT = 27042 WECHAT_PID = 25425 JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/' ADB = ['adb', '-s', '192.168.110.80:5555'] def screenshot(name): diff --git a/开发文档/6、测试/scripts/legacy/verify_v8_fix.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8_fix.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v8_fix.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8_fix.py index edc9cbc405..5bace8e81e 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v8_fix.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v8_fix.py @@ -5,7 +5,7 @@ import frida, json, time, subprocess, os PHONE_PORT = 27042 WECHAT_PID = 25425 JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/' ADB = ['adb', '-s', '192.168.110.80:5555'] RESULT_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/verification_v8fix_results.json' diff --git a/开发文档/6、测试/scripts/legacy/verify_v9_final.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_final.py similarity index 98% rename from 开发文档/6、测试/scripts/legacy/verify_v9_final.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_final.py index fa1ccfa80b..121d8096f5 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v9_final.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_final.py @@ -4,7 +4,7 @@ import frida, json, time, subprocess, re, sys, os PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v9_final.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' def camel_to_snake(name): s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) @@ -307,7 +307,7 @@ print(f" 验证结果: {passed}/{total} 通过 ({100*passed//total if total>0 e print(f"{'='*60}") # 保存结果 -result_file = f'/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/v9_verify_result_{int(time.time())}.json' +result_file = f'/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/v9_verify_result_{int(time.time())}.json' with open(result_file, 'w', encoding='utf-8') as f: json.dump({ 'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'), diff --git a/开发文档/6、测试/scripts/legacy/verify_v9_fixed.py b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_fixed.py similarity index 99% rename from 开发文档/6、测试/scripts/legacy/verify_v9_fixed.py rename to 开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_fixed.py index 9cd83b7589..89c19048ba 100644 --- a/开发文档/6、测试/scripts/legacy/verify_v9_fixed.py +++ b/开发文档/8、部署/05-测试验收/scripts/legacy/verify_v9_fixed.py @@ -13,7 +13,7 @@ import sys PHONE_IP = '192.168.110.80' JS_FILE = '/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/agent/hook/wechat_api_v8_fix.js' -SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试' +SCREENSHOT_DIR = '/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收' results = {} errors = [] diff --git a/开发文档/6、测试/scripts/live_phone_verify.py b/开发文档/8、部署/05-测试验收/scripts/live_phone_verify.py similarity index 98% rename from 开发文档/6、测试/scripts/live_phone_verify.py rename to 开发文档/8、部署/05-测试验收/scripts/live_phone_verify.py index 012b58fc1b..e5388a6aec 100644 --- a/开发文档/6、测试/scripts/live_phone_verify.py +++ b/开发文档/8、部署/05-测试验收/scripts/live_phone_verify.py @@ -20,7 +20,7 @@ from pathlib import Path from typing import Any ROOT = repo_root() -OUT_DIR = ROOT / "开发文档" / "6、测试" / "live_verify_20260518" +OUT_DIR = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "live_verify_20260518" SCREEN_DIR = OUT_DIR / "screenshots" OUT_DIR.mkdir(parents=True, exist_ok=True) SCREEN_DIR.mkdir(parents=True, exist_ok=True) @@ -80,7 +80,7 @@ def capture(name: str) -> str: def load_routes(limit: int) -> list[dict[str, Any]]: inv = OUT_DIR / "接口清单.json" if not inv.exists(): - run(["python3", str(ROOT / "开发文档" / "6、测试" / "scripts" / "inventory_routes.py")], timeout=60) + run(["python3", str(ROOT / "开发文档" / "8、部署" / "05-测试验收" / "scripts" / "inventory_routes.py")], timeout=60) data = json.loads(inv.read_text(encoding="utf-8")) routes = [] for r in data.get("routes", []): diff --git a/开发文档/6、测试/scripts/quick_visible_capture_test.py b/开发文档/8、部署/05-测试验收/scripts/quick_visible_capture_test.py similarity index 94% rename from 开发文档/6、测试/scripts/quick_visible_capture_test.py rename to 开发文档/8、部署/05-测试验收/scripts/quick_visible_capture_test.py index 3706e91f30..5ea0fd7cae 100644 --- a/开发文档/6、测试/scripts/quick_visible_capture_test.py +++ b/开发文档/8、部署/05-测试验收/scripts/quick_visible_capture_test.py @@ -16,7 +16,7 @@ except Exception: ImageStat = None ROOT = repo_root() -OUT = ROOT / "开发文档" / "6、测试" / "visible_capture_fix_20260518" / datetime.now().strftime("%Y%m%d_%H%M%S") +OUT = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "visible_capture_fix_20260518" / datetime.now().strftime("%Y%m%d_%H%M%S") OUT.mkdir(parents=True, exist_ok=True) SERIAL = "192.168.0.12:5555" PKG = "com.tencent.mm" diff --git a/开发文档/6、测试/scripts/real_device_110_effect_verify.py b/开发文档/8、部署/05-测试验收/scripts/real_device_110_effect_verify.py similarity index 98% rename from 开发文档/6、测试/scripts/real_device_110_effect_verify.py rename to 开发文档/8、部署/05-测试验收/scripts/real_device_110_effect_verify.py index f7e22822c2..2d6412ea37 100644 --- a/开发文档/6、测试/scripts/real_device_110_effect_verify.py +++ b/开发文档/8、部署/05-测试验收/scripts/real_device_110_effect_verify.py @@ -35,10 +35,10 @@ else: FRIDA_IMPORT_ERROR = "" ROOT = repo_root() -MATRIX = ROOT / "开发文档" / "6、测试" / "wireless_frida_real_device_acceptance_20260518" / "真机110功能验收矩阵.json" +MATRIX = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "wireless_frida_real_device_acceptance_20260518" / "真机110功能验收矩阵.json" HOOK_JS = ROOT / "sdk" / "app" / "agent" / "hook" / "wechat_hook_v2.js" RUN_ID = datetime.now().strftime("%Y%m%d_%H%M%S") -OUT_DIR = ROOT / "开发文档" / "6、测试" / "real_device_110_effect_verify_20260518" / RUN_ID +OUT_DIR = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "real_device_110_effect_verify_20260518" / RUN_ID SCREEN_DIR = OUT_DIR / "screenshots" LOG_DIR = OUT_DIR / "backend_logs" for d in (OUT_DIR, SCREEN_DIR, LOG_DIR): diff --git a/开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py b/开发文档/8、部署/05-测试验收/scripts/scan_110_evidence_quality_append_doc.py similarity index 98% rename from 开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py rename to 开发文档/8、部署/05-测试验收/scripts/scan_110_evidence_quality_append_doc.py index 239b70e85a..c88c7bd720 100644 --- a/开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py +++ b/开发文档/8、部署/05-测试验收/scripts/scan_110_evidence_quality_append_doc.py @@ -21,8 +21,8 @@ from typing import Any, Dict, Iterable, List, Tuple from PIL import Image, ImageStat ROOT = repo_root() -TEST_DIR = ROOT / "开发文档" / "6、测试" -OUT_DIR = TEST_DIR / "110项功能逐项确认" / "2026-05-18" +TEST_DIR = ROOT / "开发文档" / "8、部署" / "05-测试验收" +OUT_DIR = ROOT / "开发文档" / "5、接口" / "06-验收与矩阵" / "110项功能逐项确认" / "2026-05-18" OUT_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime("%H%M%S") diff --git a/开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh b/开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh new file mode 100755 index 0000000000..2b06bd6e22 --- /dev/null +++ b/开发文档/8、部署/05-测试验收/scripts/validate_doc_paths.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# 校验活跃文档中是否仍引用已废弃路径 +set -euo pipefail +ROOT="$(cd "$(dirname "$0")/../../../.." && pwd)" +cd "$ROOT" +PAT='docs/gitea/|docs/wiki-gitea/|verification_screenshots/|python3 tools/|`tools/|bash docs/gitea|开发文档/6、测试|00-项目总览|5、开发日志|5、接口文档' +EXCLUDE='工作日志\.md|legacy/|机擎/阿服/local-mount-sync|validate_doc_paths\.sh|开发文档结构规范/SKILL\.md|110项功能逐项确认/' +hits=$(rg -l "$PAT" 开发文档 机擎 sdk README.md 2>/dev/null | rg -v "$EXCLUDE" || true) +if [ -n "$hits" ]; then + echo "❌ 发现残留旧路径:" + echo "$hits" + rg -n "$PAT" $hits 2>/dev/null | head -15 + exit 1 +fi +echo "✅ 活跃文档无废弃路径" +python3 "开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py" --check-only diff --git a/开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py b/开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py similarity index 99% rename from 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py rename to 开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py index 17adab6ea0..6cdd4bf707 100644 --- a/开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py +++ b/开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py @@ -32,7 +32,7 @@ else: FRIDA_IMPORT_ERROR = "" ROOT = repo_root() -OUT_DIR = ROOT / "开发文档" / "6、测试" / "wireless_frida_20260518" +OUT_DIR = ROOT / "开发文档" / "8、部署" / "05-测试验收" / "wireless_frida_20260518" SCREEN_DIR = OUT_DIR / "screenshots" OUT_DIR.mkdir(parents=True, exist_ok=True) SCREEN_DIR.mkdir(parents=True, exist_ok=True) diff --git a/开发文档/6、测试/scripts/workphone_bff_smoke.sh b/开发文档/8、部署/05-测试验收/scripts/workphone_bff_smoke.sh similarity index 100% rename from 开发文档/6、测试/scripts/workphone_bff_smoke.sh rename to 开发文档/8、部署/05-测试验收/scripts/workphone_bff_smoke.sh diff --git a/开发文档/6、测试/sns_check2.png b/开发文档/8、部署/05-测试验收/sns_check2.png similarity index 100% rename from 开发文档/6、测试/sns_check2.png rename to 开发文档/8、部署/05-测试验收/sns_check2.png diff --git a/开发文档/6、测试/v10_final.png b/开发文档/8、部署/05-测试验收/v10_final.png similarity index 100% rename from 开发文档/6、测试/v10_final.png rename to 开发文档/8、部署/05-测试验收/v10_final.png diff --git a/开发文档/6、测试/v10_verify_results.json b/开发文档/8、部署/05-测试验收/v10_verify_results.json similarity index 100% rename from 开发文档/6、测试/v10_verify_results.json rename to 开发文档/8、部署/05-测试验收/v10_verify_results.json diff --git a/开发文档/6、测试/v11_final.png b/开发文档/8、部署/05-测试验收/v11_final.png similarity index 100% rename from 开发文档/6、测试/v11_final.png rename to 开发文档/8、部署/05-测试验收/v11_final.png diff --git a/开发文档/6、测试/v11_verify_results.json b/开发文档/8、部署/05-测试验收/v11_verify_results.json similarity index 100% rename from 开发文档/6、测试/v11_verify_results.json rename to 开发文档/8、部署/05-测试验收/v11_verify_results.json diff --git a/开发文档/6、测试/v12_after_post_moment.png b/开发文档/8、部署/05-测试验收/v12_after_post_moment.png similarity index 100% rename from 开发文档/6、测试/v12_after_post_moment.png rename to 开发文档/8、部署/05-测试验收/v12_after_post_moment.png diff --git a/开发文档/6、测试/v12_filehelper_after_send.png b/开发文档/8、部署/05-测试验收/v12_filehelper_after_send.png similarity index 100% rename from 开发文档/6、测试/v12_filehelper_after_send.png rename to 开发文档/8、部署/05-测试验收/v12_filehelper_after_send.png diff --git a/开发文档/6、测试/v12_final.png b/开发文档/8、部署/05-测试验收/v12_final.png similarity index 100% rename from 开发文档/6、测试/v12_final.png rename to 开发文档/8、部署/05-测试验收/v12_final.png diff --git a/开发文档/6、测试/v12_verify_results.json b/开发文档/8、部署/05-测试验收/v12_verify_results.json similarity index 100% rename from 开发文档/6、测试/v12_verify_results.json rename to 开发文档/8、部署/05-测试验收/v12_verify_results.json diff --git a/开发文档/6、测试/v6_filehelper.png b/开发文档/8、部署/05-测试验收/v6_filehelper.png similarity index 100% rename from 开发文档/6、测试/v6_filehelper.png rename to 开发文档/8、部署/05-测试验收/v6_filehelper.png diff --git a/开发文档/6、测试/v6_final_v2.png b/开发文档/8、部署/05-测试验收/v6_final_v2.png similarity index 100% rename from 开发文档/6、测试/v6_final_v2.png rename to 开发文档/8、部署/05-测试验收/v6_final_v2.png diff --git a/开发文档/6、测试/v6_main.png b/开发文档/8、部署/05-测试验收/v6_main.png similarity index 100% rename from 开发文档/6、测试/v6_main.png rename to 开发文档/8、部署/05-测试验收/v6_main.png diff --git a/开发文档/6、测试/v6_moment_result.png b/开发文档/8、部署/05-测试验收/v6_moment_result.png similarity index 100% rename from 开发文档/6、测试/v6_moment_result.png rename to 开发文档/8、部署/05-测试验收/v6_moment_result.png diff --git a/开发文档/6、测试/v6_msg_awake.png b/开发文档/8、部署/05-测试验收/v6_msg_awake.png similarity index 100% rename from 开发文档/6、测试/v6_msg_awake.png rename to 开发文档/8、部署/05-测试验收/v6_msg_awake.png diff --git a/开发文档/6、测试/v6_msg_result.png b/开发文档/8、部署/05-测试验收/v6_msg_result.png similarity index 100% rename from 开发文档/6、测试/v6_msg_result.png rename to 开发文档/8、部署/05-测试验收/v6_msg_result.png diff --git a/开发文档/6、测试/v6_search.png b/开发文档/8、部署/05-测试验收/v6_search.png similarity index 100% rename from 开发文档/6、测试/v6_search.png rename to 开发文档/8、部署/05-测试验收/v6_search.png diff --git a/开发文档/6、测试/v6_wechat_main.png b/开发文档/8、部署/05-测试验收/v6_wechat_main.png similarity index 100% rename from 开发文档/6、测试/v6_wechat_main.png rename to 开发文档/8、部署/05-测试验收/v6_wechat_main.png diff --git a/开发文档/6、测试/v8_after_post_moment.png b/开发文档/8、部署/05-测试验收/v8_after_post_moment.png similarity index 100% rename from 开发文档/6、测试/v8_after_post_moment.png rename to 开发文档/8、部署/05-测试验收/v8_after_post_moment.png diff --git a/开发文档/6、测试/v8_after_send_msg.png b/开发文档/8、部署/05-测试验收/v8_after_send_msg.png similarity index 100% rename from 开发文档/6、测试/v8_after_send_msg.png rename to 开发文档/8、部署/05-测试验收/v8_after_send_msg.png diff --git a/开发文档/6、测试/v8_v8_final.png b/开发文档/8、部署/05-测试验收/v8_v8_final.png similarity index 100% rename from 开发文档/6、测试/v8_v8_final.png rename to 开发文档/8、部署/05-测试验收/v8_v8_final.png diff --git a/开发文档/6、测试/v8fix_after_post_moment.png b/开发文档/8、部署/05-测试验收/v8fix_after_post_moment.png similarity index 100% rename from 开发文档/6、测试/v8fix_after_post_moment.png rename to 开发文档/8、部署/05-测试验收/v8fix_after_post_moment.png diff --git a/开发文档/6、测试/v8fix_after_send_msg.png b/开发文档/8、部署/05-测试验收/v8fix_after_send_msg.png similarity index 100% rename from 开发文档/6、测试/v8fix_after_send_msg.png rename to 开发文档/8、部署/05-测试验收/v8fix_after_send_msg.png diff --git a/开发文档/6、测试/v8fix_final.png b/开发文档/8、部署/05-测试验收/v8fix_final.png similarity index 100% rename from 开发文档/6、测试/v8fix_final.png rename to 开发文档/8、部署/05-测试验收/v8fix_final.png diff --git a/开发文档/6、测试/v9_after_send_1779113955.png b/开发文档/8、部署/05-测试验收/v9_after_send_1779113955.png similarity index 100% rename from 开发文档/6、测试/v9_after_send_1779113955.png rename to 开发文档/8、部署/05-测试验收/v9_after_send_1779113955.png diff --git a/开发文档/6、测试/v9_after_send_1779114098.png b/开发文档/8、部署/05-测试验收/v9_after_send_1779114098.png similarity index 100% rename from 开发文档/6、测试/v9_after_send_1779114098.png rename to 开发文档/8、部署/05-测试验收/v9_after_send_1779114098.png diff --git a/开发文档/6、测试/v9_before_send_1779113952.png b/开发文档/8、部署/05-测试验收/v9_before_send_1779113952.png similarity index 100% rename from 开发文档/6、测试/v9_before_send_1779113952.png rename to 开发文档/8、部署/05-测试验收/v9_before_send_1779113952.png diff --git a/开发文档/6、测试/v9_before_send_1779114095.png b/开发文档/8、部署/05-测试验收/v9_before_send_1779114095.png similarity index 100% rename from 开发文档/6、测试/v9_before_send_1779114095.png rename to 开发文档/8、部署/05-测试验收/v9_before_send_1779114095.png diff --git a/开发文档/6、测试/v9_final_1779113966.png b/开发文档/8、部署/05-测试验收/v9_final_1779113966.png similarity index 100% rename from 开发文档/6、测试/v9_final_1779113966.png rename to 开发文档/8、部署/05-测试验收/v9_final_1779113966.png diff --git a/开发文档/6、测试/v9_final_1779114109.png b/开发文档/8、部署/05-测试验收/v9_final_1779114109.png similarity index 100% rename from 开发文档/6、测试/v9_final_1779114109.png rename to 开发文档/8、部署/05-测试验收/v9_final_1779114109.png diff --git a/开发文档/6、测试/v9_final_state.png b/开发文档/8、部署/05-测试验收/v9_final_state.png similarity index 100% rename from 开发文档/6、测试/v9_final_state.png rename to 开发文档/8、部署/05-测试验收/v9_final_state.png diff --git a/开发文档/6、测试/v9_moments_1779113961.png b/开发文档/8、部署/05-测试验收/v9_moments_1779113961.png similarity index 100% rename from 开发文档/6、测试/v9_moments_1779113961.png rename to 开发文档/8、部署/05-测试验收/v9_moments_1779113961.png diff --git a/开发文档/6、测试/v9_moments_1779114104.png b/开发文档/8、部署/05-测试验收/v9_moments_1779114104.png similarity index 100% rename from 开发文档/6、测试/v9_moments_1779114104.png rename to 开发文档/8、部署/05-测试验收/v9_moments_1779114104.png diff --git a/开发文档/6、测试/v9_verify_result_1779113967.json b/开发文档/8、部署/05-测试验收/v9_verify_result_1779113967.json similarity index 100% rename from 开发文档/6、测试/v9_verify_result_1779113967.json rename to 开发文档/8、部署/05-测试验收/v9_verify_result_1779113967.json diff --git a/开发文档/6、测试/v9_verify_result_1779114110.json b/开发文档/8、部署/05-测试验收/v9_verify_result_1779114110.json similarity index 100% rename from 开发文档/6、测试/v9_verify_result_1779114110.json rename to 开发文档/8、部署/05-测试验收/v9_verify_result_1779114110.json diff --git a/开发文档/6、测试/v9_verify_results.json b/开发文档/8、部署/05-测试验收/v9_verify_results.json similarity index 100% rename from 开发文档/6、测试/v9_verify_results.json rename to 开发文档/8、部署/05-测试验收/v9_verify_results.json diff --git a/开发文档/6、测试/v9fix_final_state.png b/开发文档/8、部署/05-测试验收/v9fix_final_state.png similarity index 100% rename from 开发文档/6、测试/v9fix_final_state.png rename to 开发文档/8、部署/05-测试验收/v9fix_final_state.png diff --git a/开发文档/6、测试/v9fix_verify_results.json b/开发文档/8、部署/05-测试验收/v9fix_verify_results.json similarity index 100% rename from 开发文档/6、测试/v9fix_verify_results.json rename to 开发文档/8、部署/05-测试验收/v9fix_verify_results.json diff --git a/开发文档/6、测试/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png b/开发文档/8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png similarity index 100% rename from 开发文档/6、测试/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png rename to 开发文档/8、部署/05-测试验收/visible_capture_fix_20260518/20260518_180208/visible_after_wakeup.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/001_current_after_batch_20260518_173739.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/002_wechat_home_20260518_173741.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/003_wechat_search_page_20260518_173744.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/003_wechat_search_page_20260518_173744.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/003_wechat_search_page_20260518_173744.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/003_wechat_search_page_20260518_173744.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/004_wechat_back_home_20260518_173746.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/004_wechat_back_home_20260518_173746.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/004_wechat_back_home_20260518_173746.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/004_wechat_back_home_20260518_173746.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/005_wechat_contacts_tab_20260518_173747.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/006_wechat_discover_tab_20260518_173750.png diff --git a/开发文档/6、测试/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png similarity index 100% rename from 开发文档/6、测试/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/007_wechat_me_tab_20260518_173753.png diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/008_current_after_batch_20260524_093544.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/008_current_after_batch_20260524_093544.png new file mode 100644 index 0000000000..12f03a5f5f Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/008_current_after_batch_20260524_093544.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/009_wechat_home_20260524_093548.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/009_wechat_home_20260524_093548.png new file mode 100644 index 0000000000..12f03a5f5f Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/009_wechat_home_20260524_093548.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/010_wechat_search_page_20260524_093551.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/010_wechat_search_page_20260524_093551.png new file mode 100644 index 0000000000..12f03a5f5f Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/010_wechat_search_page_20260524_093551.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/011_wechat_back_home_20260524_093553.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/011_wechat_back_home_20260524_093553.png new file mode 100644 index 0000000000..eb2cceb8ec Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/011_wechat_back_home_20260524_093553.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/012_wechat_contacts_tab_20260524_093556.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/012_wechat_contacts_tab_20260524_093556.png new file mode 100644 index 0000000000..3cd966b15b Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/012_wechat_contacts_tab_20260524_093556.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/013_wechat_discover_tab_20260524_093558.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/013_wechat_discover_tab_20260524_093558.png new file mode 100644 index 0000000000..3cd966b15b Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/013_wechat_discover_tab_20260524_093558.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/014_wechat_me_tab_20260524_093601.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/014_wechat_me_tab_20260524_093601.png new file mode 100644 index 0000000000..38bbe816be Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/014_wechat_me_tab_20260524_093601.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png new file mode 100644 index 0000000000..54672469e4 Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png new file mode 100644 index 0000000000..54672469e4 Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png new file mode 100644 index 0000000000..08512563ec Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png new file mode 100644 index 0000000000..8ff39a9a1c Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png new file mode 100644 index 0000000000..29360da321 Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png new file mode 100644 index 0000000000..29360da321 Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png differ diff --git a/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png new file mode 100644 index 0000000000..29360da321 Binary files /dev/null and b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png differ diff --git a/开发文档/6、测试/wireless_frida_20260518/wireless_frida_batch_results.json b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/wireless_frida_batch_results.json similarity index 97% rename from 开发文档/6、测试/wireless_frida_20260518/wireless_frida_batch_results.json rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/wireless_frida_batch_results.json index cfb1b12c28..d14cc38992 100644 --- a/开发文档/6、测试/wireless_frida_20260518/wireless_frida_batch_results.json +++ b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/wireless_frida_batch_results.json @@ -1364,7 +1364,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png" }, { "name": "shot_nav_wechat_home", @@ -1384,7 +1384,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png" }, { "name": "shot_nav_search", @@ -1404,7 +1404,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png" }, { "name": "shot_nav_back_home", @@ -1424,7 +1424,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png" }, { "name": "shot_nav_contacts", @@ -1444,7 +1444,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png" }, { "name": "shot_nav_discover", @@ -1464,7 +1464,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png" }, { "name": "shot_nav_me", @@ -1484,7 +1484,7 @@ "duration_ms": 0, "stdout": "", "stderr": "", - "screenshot": "开发文档/6、测试/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png" + "screenshot": "开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png" } ] } \ No newline at end of file diff --git a/开发文档/6、测试/wireless_frida_20260518/无线Frida微信控制批量验证报告.md b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/无线Frida微信控制批量验证报告.md similarity index 92% rename from 开发文档/6、测试/wireless_frida_20260518/无线Frida微信控制批量验证报告.md rename to 开发文档/8、部署/05-测试验收/wireless_frida_20260518/无线Frida微信控制批量验证报告.md index 3cf89937e2..5fbe23ea52 100644 --- a/开发文档/6、测试/wireless_frida_20260518/无线Frida微信控制批量验证报告.md +++ b/开发文档/8、部署/05-测试验收/wireless_frida_20260518/无线Frida微信控制批量验证报告.md @@ -10,17 +10,17 @@ ## 统一截图文件夹 -截图统一归档在:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/6、测试/wireless_frida_20260518/screenshots` +截图统一归档在:`/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots` | 序号 | 截图 | 说明 | |---:|---|---| -| 1 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png) | capture_current_after_batch:统一截图阶段归档 | -| 2 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png) | capture_wechat_home:统一截图阶段归档 | -| 3 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png) | capture_wechat_search_page:统一截图阶段归档 | -| 4 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png) | capture_wechat_back_home:统一截图阶段归档 | -| 5 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png) | capture_wechat_contacts_tab:统一截图阶段归档 | -| 6 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png) | capture_wechat_discover_tab:统一截图阶段归档 | -| 7 | ![](开发文档/6、测试/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png) | capture_wechat_me_tab:统一截图阶段归档 | +| 1 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/015_current_after_batch_20260524_093720.png) | capture_current_after_batch:统一截图阶段归档 | +| 2 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/016_wechat_home_20260524_093722.png) | capture_wechat_home:统一截图阶段归档 | +| 3 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/017_wechat_search_page_20260524_093724.png) | capture_wechat_search_page:统一截图阶段归档 | +| 4 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/018_wechat_back_home_20260524_093726.png) | capture_wechat_back_home:统一截图阶段归档 | +| 5 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/019_wechat_contacts_tab_20260524_093728.png) | capture_wechat_contacts_tab:统一截图阶段归档 | +| 6 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/020_wechat_discover_tab_20260524_093730.png) | capture_wechat_discover_tab:统一截图阶段归档 | +| 7 | ![](开发文档/8、部署/05-测试验收/wireless_frida_20260518/screenshots/021_wechat_me_tab_20260524_093733.png) | capture_wechat_me_tab:统一截图阶段归档 | ## 批量验证明细 diff --git a/开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json b/开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json similarity index 100% rename from 开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json rename to 开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.json diff --git a/开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md b/开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md similarity index 100% rename from 开发文档/6、测试/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md rename to 开发文档/8、部署/05-测试验收/wireless_frida_real_device_acceptance_20260518/真机110功能验收矩阵.md diff --git a/开发文档/8、部署/README.md b/开发文档/8、部署/README.md index 3f8af7f2e0..5821bd218c 100644 --- a/开发文档/8、部署/README.md +++ b/开发文档/8、部署/README.md @@ -19,7 +19,9 @@ cssclasses: ├── images/ ├── 01-本地环境/ Docker + 凭证 ├── 02-设备Hook/ Hook安装 + Frida无线跳转 -└── 03-运维同步/ 上线运维 + GitHub/NAS 同步规则 +├── 03-运维同步/ 上线运维 + GitHub/NAS 同步规则 +├── 04-Gitea门户/ Wiki + 发行说明 +└── 05-测试验收/ 真机脚本 + 截图 + 验证报告(矩阵见 5、接口/06) ``` | 大类 | 入口 | @@ -27,6 +29,7 @@ cssclasses: | **01 本地环境** | [本地Docker部署指南](01-本地环境/本地Docker部署指南.md) · [本地环境凭证](01-本地环境/本地环境凭证.md) | | **02 设备Hook** | [设备端Hook安装部署](02-设备Hook/设备端Hook安装部署.md) | | **03 运维同步** | [上线与运维操作手册](03-运维同步/上线与运维操作手册.md) | +| **05 测试验收** | [05-测试验收/README.md](05-测试验收/README.md) · 脚本 `05-测试验收/scripts/` | 无线 Frida 详见 [9、手册 §八](../9、手册/工作手机·五图总览与使用手册.md) diff --git a/开发文档/9、手册/02-操作指南/Obsidian打开说明.md b/开发文档/9、手册/02-操作指南/Obsidian打开说明.md new file mode 100644 index 0000000000..7db209e6bf --- /dev/null +++ b/开发文档/9、手册/02-操作指南/Obsidian打开说明.md @@ -0,0 +1,33 @@ +# Obsidian 打开入口 + +## 一键打开(推荐) + +```bash +# 轻量 · 只看开发文档(~400 文件,秒开) +"/Users/karuo/Documents/开发/2、私域银行/工作手机/open-obsidian.sh" + +# 全量 · 含机擎(首次索引约 1 分钟) +"/Users/karuo/Documents/开发/2、私域银行/工作手机/open-obsidian.sh" full +``` + +## Vault 路径 + +| 名称 | 路径 | 用途 | +|------|------|------| +| workphone-devdoc | `~/Documents/workphone-devdoc` | 日常文档(symlink → 开发文档) | +| 工作手机 | `…/私域银行/工作手机` | 全仓 + 机擎 | + +## 仍卡住时 + +1. **Cmd+Q** 完全退出 Obsidian(不要只关窗口) +2. 再跑 `open-obsidian.sh` +3. 仍不行:按住 **Shift** 启动 Obsidian(安全模式)→ 打开 workphone-devdoc + +## 手机端 Obsidian + +勿同步整仓。仅同步 `开发文档/`,且不要包含 `6、后端/github-repos/`。 + +## 维护 + +- 大目录解包后追加到 `.obsidianignore`(根目录与 `开发文档/.obsidianignore`) +- 详情见 `开发文档/2、架构/01-总览/项目目录总览.md` diff --git a/开发文档/9、手册/02-操作指南/使用与落地方案.md b/开发文档/9、手册/02-操作指南/使用与落地方案.md index c824aa2caa..6b06ea55ca 100644 --- a/开发文档/9、手册/02-操作指南/使用与落地方案.md +++ b/开发文档/9、手册/02-操作指南/使用与落地方案.md @@ -10,6 +10,7 @@ > | 落地方案 / 怎么用 | **§六** 统一使用方式 | > | 真机测试环境 | **§五** + 图4 | > | 无线 Frida 部署 | **§八** | +> | Obsidian 打不开 | [Obsidian打开说明.md](Obsidian打开说明.md) | > | 存客宝对接 | [一键接入与存客宝对接操作手册.md](工作手机·一键接入与存客宝对接操作手册.md) | 本文件仅作**旧链接锚点**,正文不再维护。 diff --git a/开发文档/9、手册/工作手机·五图总览与使用手册.html b/开发文档/9、手册/工作手机·五图总览与使用手册.html index f0acbb9f01..1c1266b75e 100644 --- a/开发文档/9、手册/工作手机·五图总览与使用手册.html +++ b/开发文档/9、手册/工作手机·五图总览与使用手册.html @@ -157,14 +157,14 @@ JSON 回执 / 控制台 / 验收报告 F08 自动验证 批量验证 + JSON/Markdown 报告 -开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py +开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py ✅ F09 真机截图证明 逐项截图归档 -开发文档/6、测试/wireless_frida_20260518/ +开发文档/8、部署/05-测试验收/wireless_frida_20260518/ ✅ @@ -331,7 +331,7 @@ $result = $client->hookExecute('<device_id>', 'wechat', 'send_message', -

操作清单:GET /api/v3/hook/actions · 矩阵详情:110项功能逐项确认/

+

操作清单:GET /api/v3/hook/actions · 矩阵详情:110项功能逐项确认/


五、真机测试环境与本机实测

@@ -346,11 +346,11 @@ $result = $client->hookExecute('<device_id>', 'wechat', 'send_message',
无线Frida验证-微信首页 无线Frida验证-返回首页 -
附 · 无线 Frida 真机截图 — 2026-05-18 批量验证(图6/7);原图亦存 6、测试/wireless_frida_20260518/
+
附 · 无线 Frida 真机截图 — 原图存 8、部署/05-测试验收/wireless_frida_20260518/

仅补图中未写清的一条:微信若无法启动,先 adb shell pm enable com.tencent.mm,再 am start -n com.tencent.mm/.ui.LauncherUI

-

矩阵纠偏:微信SDK真实控制接口矩阵V5_*.md

+

矩阵纠偏:微信SDK真实控制接口矩阵V5_*.md


六、统一使用方式与一键闭环

@@ -429,7 +429,7 @@ curl http://127.0.0.1:8899/api/v3/connection/status curl http://127.0.0.1:8899/api/v3/hook/probe/<device_id> # 批量验收(补全包 F08 主线版) -python3 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py +python3 开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py

危险动作(发消息、加好友、建群)默认跳过;需完整验收取 --include-dangerous 并确认测试号。


diff --git a/开发文档/9、手册/工作手机·五图总览与使用手册.md b/开发文档/9、手册/工作手机·五图总览与使用手册.md index 1ef0aaf8ea..9835f9d5ff 100644 --- a/开发文档/9、手册/工作手机·五图总览与使用手册.md +++ b/开发文档/9、手册/工作手机·五图总览与使用手册.md @@ -64,8 +64,8 @@ JSON 回执 / 控制台 / 验收报告 | F05 | 手机 Agent | WS 接入、执行 Frida 指令 | `sdk/agent/agent.py` · `sdk/agent/wireless_agent.py` | ✅ | | F06 | 服务端 API | 设备注册、动作下发、回传 | `sdk/app/routers/unified.py` · `frida_wireless.py` | ✅ | | F07 | Hook 桥接 | ping、连接状态、完整 Hook 入口 | `sdk/agent/hook/wechat_hook_v*.js` · 桥接模板 `wechat_hook_bridge.js` | ✅ | -| F08 | 自动验证 | 批量验证 + JSON/Markdown 报告 | `开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py` | ✅ | -| F09 | 真机截图证明 | 逐项截图归档 | `开发文档/6、测试/wireless_frida_20260518/` | ✅ | +| F08 | 自动验证 | 批量验证 + JSON/Markdown 报告 | `开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py` | ✅ | +| F09 | 真机截图证明 | 逐项截图归档 | `开发文档/8、部署/05-测试验收/wireless_frida_20260518/` | ✅ | > **2026-05-24 已收编**:根目录补全包目录已移除;代码与文档真源为 `sdk/` + 本手册;历史 ZIP 见 `资料/archive/`。 @@ -166,7 +166,7 @@ $result = $client->hookExecute('', 'wechat', 'send_message', [ | 真机好友全量导出 | **7877**(`get_contacts` + `limit=10000`) | | 自动注册 Phase 9 | **85%** | -操作清单:`GET /api/v3/hook/actions` · 矩阵详情:[110项功能逐项确认/](../6、测试/110项功能逐项确认/) +操作清单:`GET /api/v3/hook/actions` · 矩阵详情:[110项功能逐项确认/](../5、接口/06-验收与矩阵/110项功能逐项确认/) --- @@ -184,12 +184,12 @@ $result = $client->hookExecute('', 'wechat', 'send_message', [
无线Frida验证-微信首页 无线Frida验证-返回首页 -
附 · 无线 Frida 真机截图 — 2026-05-18 批量验证(图6/7);原图亦存 6、测试/wireless_frida_20260518/
+
附 · 无线 Frida 真机截图 — 原图存 8、部署/05-测试验收/wireless_frida_20260518/
**仅补图中未写清的一条**:微信若无法启动,先 `adb shell pm enable com.tencent.mm`,再 `am start -n com.tencent.mm/.ui.LauncherUI`。 -矩阵纠偏:[微信SDK真实控制接口矩阵V5_*.md](../6、测试/110项功能逐项确认/2026-05-18/) +矩阵纠偏:[微信SDK真实控制接口矩阵V5_*.md](../5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/) --- @@ -276,7 +276,7 @@ curl http://127.0.0.1:8899/api/v3/connection/status curl http://127.0.0.1:8899/api/v3/hook/probe/ # 批量验收(补全包 F08 主线版) -python3 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py +python3 开发文档/8、部署/05-测试验收/scripts/wireless_frida_wechat_batch_verify.py ``` 危险动作(发消息、加好友、建群)默认跳过;需完整验收取 `--include-dangerous` 并确认测试号。 diff --git a/开发文档/README.md b/开发文档/README.md index 0bacca7d0d..216da2db1b 100644 --- a/开发文档/README.md +++ b/开发文档/README.md @@ -1,6 +1,6 @@ # 工作手机SDK v3.0 - 开发文档 -> **🗂️ 项目目录总览(Obsidian 入口)**:[00-项目总览/README.md](00-项目总览/README.md) +> **🗂️ 项目目录总览(Obsidian 入口)**:[2、架构/01-总览/项目目录总览.md](2、架构/01-总览/项目目录总览.md) > ## 📖 必读 · 完整整合手册(补全包已并入) > @@ -9,7 +9,7 @@ > **管理Skill**:**本项目目录下** `机擎/SKILL.md`(火炬总控,五人分配:阿表/阿机/阿桥/阿端/阿服) > **更新**:2026-05-24 | **当前项目状态**:总进度 **99.5%** -> **约定**:所有开发文档内容**仅在本目录下**;**根目录仅保留本 README**,不得在根目录放置其他 .md 或文档;所有内容归入子目录,**不散落**——按「四类分类」各就各位;**Soul 相关内容统一放在 [平台分析/Soul/](平台分析/Soul/)**,不与其他目录混放。 +> **约定**:顶层**仅 `1、需求` … `10、项目管理` 十个编号目录**;Soul 等平台调研在 [1、需求/03-调研/平台分析/](1、需求/03-调研/平台分析/)。 --- @@ -63,10 +63,8 @@ |------|----------|------| | **一、需求与架构** | 1、需求;2、架构;3、原型 | 需求、架构设计、原型规范 | | **二、开发与接口** | 4、前端;5、接口;6、后端 | 前端/接口/后端实现与规范 | -| **三、部署与数据** | 7、数据库;8、部署 | 数据库、部署与凭证 | -| **四、手册、验收与平台分析** | 9、手册;10、项目管理;**6、测试**;**平台分析** | 操作手册、进度验收、真机验收脚本与截图;**各平台(如 Soul)专项分析统一放在「平台分析」** | - -- **平台分析**:按平台分子目录(如 `平台分析/Soul/`),该平台的所有文档(项目分析、接口与功能清单、自动化方案等)**只放在该平台目录内**,不散落在 1~10 其他目录。 +| **三、部署与数据** | 7、数据库;8、部署(含 **05-测试验收**) | 数据库、部署、真机验收脚本 | +| **四、手册与进度** | 9、手册;10、项目管理 | 操作手册、进度验收 | - 根目录**不放置**除本 README 以外的文档。 --- @@ -79,16 +77,12 @@ | [2、架构](2、架构/) | **分层目录** `01-总览/` `02-技术基座/` `03-通道与设备/` `04-交互图/` `05-规范/`;PNG 在 `images/01~04/` | 架构与 §3.0 模块拆解;规范见 [机擎/阿表/开发文档结构规范](../机擎/阿表/开发文档结构规范/SKILL.md) | | [3、原型](3、原型/) | **分层** `01-规范/` | 原型规范 | | [4、前端](4、前端/) | **分层** `01-通用规范/` `02-管理端/` `03-工具/` | 前端规范 | -| [5、接口](5、接口/) | **分层** `01-规范与统一层/`~`05-交互图/`;OpenAPI 在 `04-OpenAPI/` | API 与对接 | -| [6、后端](6、后端/) | **分层** `01-服务端/` `02-设备端/` `03-规范汇总/`;`docs/`、`github-repos/` 不动 | 服务端+Agent+规范 | +| [5、接口](5、接口/) | **分层** `01~06`;矩阵与开发日志在 `06-验收与矩阵/` | API、对接、验收矩阵 | +| [6、后端](6、后端/) | **分层** `01-服务端/` `02-设备端/` `03-规范汇总/` | 服务端+Agent | | [7、数据库](7、数据库/) | **分层** `01-设计/` `02-规范/` | 数据层 | -| [8、部署](8、部署/) | **分层** `01-本地环境/` `02-设备Hook/` `03-运维同步/` `04-Gitea门户/` | 部署、凭证、Wiki | -| [6、测试](6、测试/) | **分层** `scripts/` `screenshots/` `110项功能逐项确认/` | 验收脚本、真机截图、矩阵报告 | -| [00-项目总览](00-项目总览/) | 仓库顶层结构 + 架构总览图 | Obsidian 导航入口 | -| [9、手册](9、手册/) | **主手册根目录** + `02-操作指南/` `03-验证/` `04-专项/`;`images/fig01~09` | 操作与验证 | -| [10、项目管理](10、项目管理/) | **根目录真源** 3 文件 + `02-测试报告/` `03-计划与专项/` | 进度与验收(唯一进度入口) | -| **[平台分析](平台分析/)** | 按平台分子目录 | **各平台专项:接口+功能+自动化方案统一放此处** | -| [平台分析/Soul/](平台分析/Soul/) | Soul项目分析、Soul自动化方案与命令行操作 | **Soul 全部内容集中此目录** | +| [8、部署](8、部署/) | **分层** `01~05`;真机脚本在 `05-测试验收/` | 部署 + 验收 | +| [9、手册](9、手册/) | **主手册** + `02-操作指南/` `03-验证/` `04-专项/` | 操作与验证 | +| [10、项目管理](10、项目管理/) | **根目录真源** 3 文件 + `02-测试报告/` `03-计划与专项/` | 进度(唯一入口) | --- diff --git a/开发文档/open-obsidian-lite.sh b/开发文档/open-obsidian-lite.sh new file mode 100755 index 0000000000..9fdf1c534b --- /dev/null +++ b/开发文档/open-obsidian-lite.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# 打开「工作手机 · 开发文档」轻量 Obsidian 仓库(不含 sdk 25 万解包文件) +set -euo pipefail +VAULT="/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档" +osascript -e 'tell application "Obsidian" to quit' 2>/dev/null || true +sleep 1 +open -a Obsidian "$VAULT" +echo "已打开轻量 vault: $VAULT" diff --git a/机擎/SKILL.md b/机擎/SKILL.md index fe6a3f843f..fe87e16599 100644 --- a/机擎/SKILL.md +++ b/机擎/SKILL.md @@ -29,7 +29,7 @@ | 顺序 | 读什么 | 路径 | 目的 | |------|--------|------|------| -| 0 | **项目目录总览** | 开发文档/00-项目总览/README.md | 仓库顶层结构、Obsidian 导航、架构 PNG+Mermaid | +| 0 | **项目目录总览** | 开发文档/2、架构/01-总览/项目目录总览.md | 仓库结构、Obsidian、架构 PNG | | 1 | 开发文档总入口 | 开发文档/README.md | 项目简述、10 目录、**主手册 v2.0 链接** | | 2 | **完整整合手册(必读)** | 开发文档/9、手册/工作手机·五图总览与使用手册.md | 五图 + 补全包九模块 + API + 真机 + 无线 Frida · **一份读通** | | 3 | 开发进度总表 | 开发文档/10、项目管理/开发进度总表.md | 当前进度 %、M1~M12、下一步 | @@ -337,7 +337,7 @@ | 文档 | 路径 | |------|------| -| **项目目录总览** | 开发文档/00-项目总览/README.md | +| **项目目录总览** | 开发文档/2、架构/01-总览/项目目录总览.md | | 开发进度总表 | 开发文档/10、项目管理/开发进度总表.md | | 工作日志 | 开发文档/10、项目管理/工作日志.md | | 多端并行拆解 | 开发文档/10、项目管理/多端并行开发模块拆解.md | diff --git a/机擎/scripts/check_system.sh b/机擎/scripts/check_system.sh new file mode 100644 index 0000000000..0f39ff2fed --- /dev/null +++ b/机擎/scripts/check_system.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# 存客宝项目 - 系统状态检查脚本 +# 位置:工作手机/存客宝项目管理/scripts/ +# 每次对话开始时执行 + +echo "==========================================" +echo " 存客宝私域银行系统 - 状态检查" +echo " 时间: $(date '+%Y-%m-%d %H:%M:%S')" +echo "==========================================" +echo "" + +# 1. Docker服务检查 +echo "--- Docker服务 ---" +for svc in workphone-sdk cunkebao-server cunkebao-web touchkebao-web cunkebao-mysql cunkebao-redis datacenter_mongodb; do + STATUS=$(docker inspect -f '{{.State.Status}}' $svc 2>/dev/null) + if [ "$STATUS" = "running" ]; then + echo " ✅ $svc: 运行中" + elif [ -n "$STATUS" ]; then + echo " ⏸ $svc: $STATUS" + else + echo " ❌ $svc: 未创建" + fi +done +echo "" + +# 2. 健康检查 +echo "--- 健康检查 ---" +SDK_HEALTH=$(curl -s http://localhost:8899/health 2>/dev/null) +if [ -n "$SDK_HEALTH" ]; then + echo " ✅ 工作手机SDK: $SDK_HEALTH" +else + echo " ❌ 工作手机SDK: 未响应" +fi + +for port_name in "3000:存客宝前端" "3001:触客宝前端" "8080:后端API"; do + PORT=${port_name%%:*} + NAME=${port_name##*:} + if curl -s -o /dev/null -w "%{http_code}" http://localhost:$PORT 2>/dev/null | grep -q "200\|301\|302"; then + echo " ✅ $NAME (端口$PORT): 可访问" + else + echo " ⏸ $NAME (端口$PORT): 未启动" + fi +done +echo "" + +# 3. ADB设备 +echo "--- ADB设备 ---" +DEVICES=$(adb devices 2>/dev/null | grep -v "List" | grep "device" | wc -l | tr -d ' ') +echo " 在线设备数: $DEVICES" +adb devices 2>/dev/null | grep -v "List" | grep "device" | while read line; do + SERIAL=$(echo $line | awk '{print $1}') + MODEL=$(adb -s $SERIAL shell getprop ro.product.model 2>/dev/null | tr -d '\r') + VERSION=$(adb -s $SERIAL shell getprop ro.build.version.release 2>/dev/null | tr -d '\r') + echo " 📱 $SERIAL: $MODEL (Android $VERSION)" +done +echo "" + +# 4. 端口占用检查 +echo "--- 端口占用 ---" +for port in 3000 3001 3002 8080 8899 3307 6380 27017 5554 5555 6080; do + PID=$(lsof -ti :$port 2>/dev/null | head -1) + if [ -n "$PID" ]; then + PROC=$(ps -p $PID -o comm= 2>/dev/null) + echo " 端口 $port: 占用 (PID:$PID $PROC)" + else + echo " 端口 $port: 空闲" + fi +done +echo "" + +echo "==========================================" +echo " 检查完毕" +echo "==========================================" diff --git a/机擎/scripts/send_feishu_review.py b/机擎/scripts/send_feishu_review.py new file mode 100644 index 0000000000..ca74c31c3c --- /dev/null +++ b/机擎/scripts/send_feishu_review.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +""" +机擎(工作手机SDK)功能复盘 → 飞书群 webhook(优先交互卡片,失败降级 text) + +复盘正文建议按「卡若五块」书写(🎯📌💡📝▶),且须含关键词「工作手机」以满足机器人过滤。 +规范见:开发文档/10、项目管理/验收与项目说明.md §7;机擎 SKILL §3.2.1。 + +用法: + python3 send_feishu_review.py "复盘内容" + python3 send_feishu_review.py --title "自定义标题" "复盘内容" + python3 send_feishu_review.py --file /path/to/summary.txt + +环境变量(可选): + JIQI_FEISHU_WEBHOOK — 覆盖默认 webhook URL +""" +import argparse +import json +import os +import re +import sys +from pathlib import Path + +try: + import urllib.request + import urllib.error +except ImportError: + pass + +WEBHOOK_URL = os.environ.get( + "JIQI_FEISHU_WEBHOOK", + "https://open.feishu.cn/open-apis/bot/v2/hook/d0f607da-ae26-43a0-9dbe-2c2c0b90743d", +) + + +def _post(webhook_url: str, payload: dict) -> bool: + data = json.dumps(payload, ensure_ascii=False).encode("utf-8") + req = urllib.request.Request( + webhook_url, data=data, + headers={"Content-Type": "application/json"}, + method="POST", + ) + try: + with urllib.request.urlopen(req, timeout=15) as resp: + body = json.loads(resp.read().decode("utf-8")) + if body.get("code") != 0: + print(f"飞书返回: {body}", file=sys.stderr) + return False + return True + except Exception as e: + print(f"发送失败: {e}", file=sys.stderr) + return False + + +def send_card(webhook_url: str, title: str, body: str) -> bool: + card = { + "header": { + "template": "blue", + "title": {"content": title, "tag": "plain_text"}, + }, + "elements": [ + {"tag": "div", "text": {"content": body[:3500], "tag": "lark_md"}}, + ], + } + return _post(webhook_url, {"msg_type": "interactive", "card": card}) + + +def send_text(webhook_url: str, text: str) -> bool: + return _post(webhook_url, {"msg_type": "text", "content": {"text": text[:4000]}}) + + +def _extract_title(text: str) -> tuple: + m = re.match(r"^[【\[](.+?)[】\]]\s*", text) + if m: + return m.group(1), text[m.end():].strip() + first_line = text.split("\n", 1)[0].strip() + if len(first_line) <= 40 and first_line: + rest = text.split("\n", 1)[1].strip() if "\n" in text else text + return first_line, rest + return "工作手机 · 功能复盘", text.strip() + + +def main(): + ap = argparse.ArgumentParser(description="机擎 功能复盘 → 飞书群(卡片格式)") + ap.add_argument("text", nargs="?", default="", help="复盘内容") + ap.add_argument("--title", "-t", default=None, help="卡片标题") + ap.add_argument("--file", "-f", help="从文件读取") + ap.add_argument("--webhook", "-w", default=WEBHOOK_URL, help="飞书群 webhook URL") + args = ap.parse_args() + + if args.file: + path = Path(args.file) + if path.exists(): + text = path.read_text(encoding="utf-8").strip() + else: + print(f"文件不存在: {args.file}", file=sys.stderr) + sys.exit(1) + else: + text = (args.text or sys.stdin.read()).strip() + + if not text: + print("无内容可发送", file=sys.stderr) + sys.exit(1) + + if args.title: + title, body = args.title, text + else: + title, body = _extract_title(text) + + ok = send_card(args.webhook, title, body) + if not ok: + print("卡片失败,降级纯文本...", file=sys.stderr) + ok = send_text(args.webhook, f"{title}\n\n{body}") + + if ok: + print(f"已发送到飞书群: {title}") + else: + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/机擎/阿服/local-mount-sync/SKILL.md b/机擎/阿服/local-mount-sync/SKILL.md index 8e014c04d2..388feb657a 100644 --- a/机擎/阿服/local-mount-sync/SKILL.md +++ b/机擎/阿服/local-mount-sync/SKILL.md @@ -32,7 +32,7 @@ owner: 卡若 |---|---|---| | 单轮执行超过20分钟 | 保存已修改代码与文档,执行 Git 提交/推送或记录无法推送原因 | `开发文档/10、项目管理/03-计划与专项/项目落地执行表.md` | | 完成一个可验收子阶段 | 追加阶段报告、同步 GitHub | 当日测试目录 + 项目落地执行表 | -| 真机测试产生证据 | 保存截图、JSON、日志、失败原因 | `开发文档/6、测试/110项功能逐项确认/<日期>/` | +| 真机测试产生证据 | 保存截图、JSON、日志、失败原因 | `开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/<日期>/` | | 出现挂载或 Git 异常 | 先保留本地文件,再写明异常与下一步 | 项目落地执行表 | ## 三、FUSE挂载限制绕过方案 @@ -78,7 +78,7 @@ git push 涉及真机接口验收的新证据,按日期追加到: ```text -开发文档/6、测试/110项功能逐项确认/YYYY-MM-DD/ +开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/YYYY-MM-DD/ ``` 文档遵守“**只追加不覆盖**”原则。已有报告不得改写结论,只能通过新增追加版、复核版、纠偏版说明最新状态。 diff --git a/机擎/阿表/开发文档结构规范/SKILL.md b/机擎/阿表/开发文档结构规范/SKILL.md index 0ee2173974..1c69f555bf 100644 --- a/机擎/阿表/开发文档结构规范/SKILL.md +++ b/机擎/阿表/开发文档结构规范/SKILL.md @@ -119,7 +119,8 @@ version: 1.0.0 |------|-------------|------| | `9、手册` | `9、手册/images/` | 五图 fig01~09、手册配图 | | `2、架构` | `2、架构/images/01~04/` | 架构 PNG(见上) | -| `6、测试` | 按日期子目录 `screenshots/` | 验收截图,不进架构 images | +| `8、部署/05-测试验收` | `screenshots/`、按日期验证目录 | 真机验收,不进架构 images | +| `5、接口/06-验收与矩阵` | `110项功能逐项确认/` | 接口矩阵与开发日志 | --- @@ -142,8 +143,9 @@ version: 1.0.0 | `开发文档/1、需求` `3、原型` | `#5E35B1` | 需求与原型 | | `开发文档/4、前端` `5、接口` `6、后端` | `#0277BD` | 开发与接口 | | `开发文档/7、数据库` `8、部署` | `#558B2F` | 部署与数据 | -| `开发文档/6、测试` | `#F9A825` | 测试验收 | -| `开发文档/平台分析` | `#AD1457` | 平台专项 | +| `开发文档/8、部署/05-测试验收` | `#F9A825` | 部署侧真机验收 | +| `开发文档/5、接口/06-验收与矩阵` | `#FFB300` | 接口矩阵/开发日志 | +| `开发文档/1、需求/03-调研/平台分析` | `#AD1457` | 平台调研 | **新建子目录时**:在 CSS 追加 `.nav-folder-title[data-path="…"]` 规则;README frontmatter 写 `obsidian-color: "#xxxxxx"`。 @@ -209,17 +211,19 @@ curl -s http://127.0.0.1:8899/api/workbench/architecture-assets | python3 -m jso | 旧路径(根目录) | 新路径 | |------------------|--------| | `docs/gitea/` `docs/wiki-gitea/` `docs/api/` | `开发文档/8、部署/04-Gitea门户/` | -| `tools/*.py` | `开发文档/6、测试/scripts/` | -| 根目录 `verify_*.py` 等调试脚本 | `开发文档/6、测试/scripts/legacy/` | -| `verification_screenshots/` | `开发文档/6、测试/screenshots/verification_110/` | -| `test_img/` | `开发文档/6、测试/screenshots/test_img/` | +| `tools/*.py` | `开发文档/8、部署/05-测试验收/scripts/` | +| 根目录 `verify_*.py` 等调试脚本 | `开发文档/8、部署/05-测试验收/scripts/legacy/` | +| `verification_screenshots/` | `开发文档/8、部署/05-测试验收/screenshots/verification_110/` | +| `test_img/` | `开发文档/8、部署/05-测试验收/screenshots/test_img/` | | `local-mount-sync/SKILL.md` | `机擎/阿服/local-mount-sync/SKILL.md` | | `apk_analysis/` | `资料/apk_analysis/`(gitignore,仅本地) | | 根 `scripts/sync_to_gitea_github.sh` | `开发文档/8、部署/03-运维同步/sync_to_gitea_github.sh` | -**Obsidian 入口**:[开发文档/00-项目总览/README.md](../../../开发文档/00-项目总览/README.md) +**Obsidian 入口**:[开发文档/2、架构/01-总览/项目目录总览.md](../../../开发文档/2、架构/01-总览/项目目录总览.md) -**脚本 ROOT**:`开发文档/6、测试/scripts/_repo_root.py` → `repo_root()` +| `6、测试/`(已取消顶层) | `8、部署/05-测试验收/` + `5、接口/06-验收与矩阵/` | +| `00-项目总览/` | `2、架构/01-总览/项目目录总览.md` | +| `5、开发日志/` `5、接口文档/` | 并入 `5、接口/06-验收与矩阵/` 与 `03-Hook与微信/` | ---