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/` |
-
----
-
-## 架构图
-
-
-
-```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 | 项目管理 | 进度总表 + 工作日志 |
+
+---
+
+## 架构图
+
+
+
+```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 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
-| 2 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
-| 3 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
-| 4 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
-| 5 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
-| 6 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 1 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 2 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 3 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 4 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 5 |  | Type-C/ADB 对连接手机执行安全读屏或滑动/搜索页进入返回动作。 |
+| 6 |  | 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 |  | 全部操作后统一采集的真机最终画面 |
-| 2 |  | 全部操作后统一采集的真机最终画面 |
-| 3 |  | 全部操作后统一采集的真机最终画面 |
-| 4 |  | 全部操作后统一采集的真机最终画面 |
-| 5 |  | 全部操作后统一采集的真机最终画面 |
-| 6 |  | 全部操作后统一采集的真机最终画面 |
+| 1 |  | 全部操作后统一采集的真机最终画面 |
+| 2 |  | 全部操作后统一采集的真机最终画面 |
+| 3 |  | 全部操作后统一采集的真机最终画面 |
+| 4 |  | 全部操作后统一采集的真机最终画面 |
+| 5 |  | 全部操作后统一采集的真机最终画面 |
+| 6 |  | 全部操作后统一采集的真机最终画面 |
## 后端执行效果
-后端逐项执行日志:`开发文档/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 |  | 全部操作后统一采集的真机最终画面 |
-| 2 |  | 全部操作后统一采集的真机最终画面 |
-| 3 |  | 全部操作后统一采集的真机最终画面 |
-| 4 |  | 全部操作后统一采集的真机最终画面 |
-| 5 |  | 全部操作后统一采集的真机最终画面 |
-| 6 |  | 全部操作后统一采集的真机最终画面 |
+| 1 |  | 全部操作后统一采集的真机最终画面 |
+| 2 |  | 全部操作后统一采集的真机最终画面 |
+| 3 |  | 全部操作后统一采集的真机最终画面 |
+| 4 |  | 全部操作后统一采集的真机最终画面 |
+| 5 |  | 全部操作后统一采集的真机最终画面 |
+| 6 |  | 全部操作后统一采集的真机最终画面 |
## 后端执行效果
-后端逐项执行日志:`开发文档/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 |  | 全部操作后统一采集的真机最终画面 |
-| 2 |  | 全部操作后统一采集的真机最终画面 |
-| 3 |  | 全部操作后统一采集的真机最终画面 |
-| 4 |  | 全部操作后统一采集的真机最终画面 |
-| 5 |  | 全部操作后统一采集的真机最终画面 |
-| 6 |  | 全部操作后统一采集的真机最终画面 |
+| 1 |  | 全部操作后统一采集的真机最终画面 |
+| 2 |  | 全部操作后统一采集的真机最终画面 |
+| 3 |  | 全部操作后统一采集的真机最终画面 |
+| 4 |  | 全部操作后统一采集的真机最终画面 |
+| 5 |  | 全部操作后统一采集的真机最终画面 |
+| 6 |  | 全部操作后统一采集的真机最终画面 |
## 后端执行效果
-后端逐项执行日志:`开发文档/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 |  | 全部操作后统一采集的真机最终画面 |
-| 2 |  | 全部操作后统一采集的真机最终画面 |
-| 3 |  | 全部操作后统一采集的真机最终画面 |
-| 4 |  | 全部操作后统一采集的真机最终画面 |
-| 5 |  | 全部操作后统一采集的真机最终画面 |
-| 6 |  | 全部操作后统一采集的真机最终画面 |
+| 1 |  | 全部操作后统一采集的真机最终画面 |
+| 2 |  | 全部操作后统一采集的真机最终画面 |
+| 3 |  | 全部操作后统一采集的真机最终画面 |
+| 4 |  | 全部操作后统一采集的真机最终画面 |
+| 5 |  | 全部操作后统一采集的真机最终画面 |
+| 6 |  | 全部操作后统一采集的真机最终画面 |
## 后端执行效果
-后端逐项执行日志:`开发文档/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 |  | capture_current_after_batch:统一截图阶段归档 |
-| 2 |  | capture_wechat_home:统一截图阶段归档 |
-| 3 |  | capture_wechat_search_page:统一截图阶段归档 |
-| 4 |  | capture_wechat_back_home:统一截图阶段归档 |
-| 5 |  | capture_wechat_contacts_tab:统一截图阶段归档 |
-| 6 |  | capture_wechat_discover_tab:统一截图阶段归档 |
-| 7 |  | capture_wechat_me_tab:统一截图阶段归档 |
+| 1 |  | capture_current_after_batch:统一截图阶段归档 |
+| 2 |  | capture_wechat_home:统一截图阶段归档 |
+| 3 |  | capture_wechat_search_page:统一截图阶段归档 |
+| 4 |  | capture_wechat_back_home:统一截图阶段归档 |
+| 5 |  | capture_wechat_contacts_tab:统一截图阶段归档 |
+| 6 |  | capture_wechat_discover_tab:统一截图阶段归档 |
+| 7 |  | 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 真机截图 — 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 真机截图 — 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与微信/` |
---