diff --git a/.gitignore b/.gitignore index 52828ece51..b6baaba4ea 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ # 不上传的目录 .cursor/ -scripts/ +/scripts/ *.py[cod] __pycache__/ .idea/ diff --git a/.obsidian/snippets/workphone-devdoc.css b/.obsidian/snippets/workphone-devdoc.css index 39973f8efc..6f61dbb984 100644 --- a/.obsidian/snippets/workphone-devdoc.css +++ b/.obsidian/snippets/workphone-devdoc.css @@ -97,6 +97,30 @@ color: #F9A825 !important; font-weight: 600; } +.nav-folder-title[data-path^="开发文档/6、测试/scripts"] > .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 { + 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="开发文档/平台分析"] > .nav-folder-title-content { color: #AD1457 !important; font-weight: 600; diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index ca541d48a4..abe097c058 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "开发文档/2、架构/03-通道与设备/Hook通道与多设备多服务器架构.md", + "file": "开发文档/9、手册/工作手机·五图总览与使用手册.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "Hook通道与多设备多服务器架构" + "title": "工作手机·五图总览与使用手册" } } ] @@ -94,7 +94,7 @@ "state": { "type": "backlink", "state": { - "file": "开发文档/2、架构/images/02-控制通道/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -113,7 +113,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "开发文档/2、架构/images/02-控制通道/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", "linksCollapsed": false, "unlinkedCollapsed": true }, @@ -156,7 +156,7 @@ "state": { "type": "outline", "state": { - "file": "开发文档/2、架构/images/02-控制通道/本地控制模式_5_scrcpy可视化控制模式.png", + "file": "开发文档/2、架构/本地控制模式_5_scrcpy可视化控制模式.png", "followCursor": false, "showSearch": false, "searchQuery": "" @@ -183,53 +183,53 @@ "bases:新建数据库": false } }, - "active": "214e9888679abd96", + "active": "dcfc7855fc8fae84", "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", + "local-mount-sync/SKILL.md", + "docs/gitea/PROJECTS.md", + "docs/gitea/PACKAGES.md", + "开发文档/2、架构/03-通道与设备/Hook通道与多设备多服务器架构.md", "开发文档/9、手册/04-专项/README.md", - "开发文档/9、手册/03-验证/README.md", - "开发文档/9、手册/02-操作指南/README.md", - "开发文档/9、手册/04-专项/安装前配置检查规范.md", - "开发文档/9、手册/04-专项/会议电视192.168.0.5接入说明.md", - "开发文档/9、手册/04-专项/设备端Agent安装与公司设备说明.md", - "开发文档/9、手册/03-验证/微信消息E2E验证指南.md", - "开发文档/9、手册/02-操作指南/使用与落地方案.md", - "开发文档/9、手册/02-操作指南/工作手机·一键接入与存客宝对接操作手册.md", - "开发文档/9、手册/02-操作指南/SDK操作手册.md", - "开发文档/9、手册/04-专项", - "开发文档/9、手册/03-验证", - "开发文档/9、手册/02-操作指南", - "开发文档/7、数据库/images", - "开发文档/7、数据库/02-规范/数据库管理规范.md", - "开发文档/7、数据库/02-规范", - "开发文档/7、数据库/01-设计/数据库设计文档.md", - "开发文档/7、数据库/01-设计", - "开发文档/4、前端/images", - "开发文档/4、前端/03-工具/v0配置.md", - "开发文档/4、前端/03-工具", - "开发文档/4、前端/02-管理端/管理端前端开发规范(毛玻璃风格).md", - "开发文档/4、前端/02-管理端", - "开发文档/4、前端/01-通用规范/前端开发规范.md", - "开发文档/4、前端/01-通用规范", - "开发文档/3、原型/01-规范/原型设计规范.md", - "开发文档/1、需求/images/README.md", - "开发文档/1、需求/03-调研/README.md", - "开发文档/1、需求/02-业务/README.md", - "开发文档/1、需求/01-概述/README.md", - "开发文档/1、需求/03-调研/技术调研与方案选型.md", - "开发文档/1、需求/02-业务/业务需求.md", - "开发文档/1、需求/01-概述/项目概述.md", - "开发文档/10、项目管理/03-计划与专项/README.md", - "开发文档/10、项目管理/02-测试报告/README.md", - "开发文档/8、部署/03-运维同步/README.md", - "开发文档/2、架构/images/02-控制通道/本地控制模式_3_Agent_WebSocket远控模式.png", - "开发文档/2、架构/images/04-防封/防封服务端核心能力拆细图.png", - "开发文档/2、架构/images/04-防封/防封模块架构图.png", - "开发文档/2、架构/images/03-微信与Hook/Hook与服务器交互流程图.png", - "开发文档/2、架构/images/03-微信与Hook/设备与服务器交互流程_微信控制.png", - "开发文档/2、架构/images/02-控制通道/本地控制模式_5_scrcpy可视化控制模式.png", - "开发文档/2、架构/images/02-控制通道/本地控制模式_4_AI_Agent自然语言模式.png", - "开发文档/2、架构/images/02-控制通道/本地控制模式_3_Agent_WebSocket远控模式.png", - "开发文档/2、架构/images/02-控制通道/本地控制模式_2_ADB静默控制模式.png", - "开发文档/2、架构/images/02-控制通道/本地控制模式_1_Hook_Frida模式.png" + "开发文档/9、手册/03-验证/README.md" ] } \ No newline at end of file diff --git a/README.md b/README.md index e3c1d1b8da..f5e085258c 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ | 入口 | 地址 | |------|------| | **📖 完整整合手册(必读)** | [开发文档/9、手册/工作手机·五图总览与使用手册.md](开发文档/9、手册/工作手机·五图总览与使用手册.md) · `./开发文档/9、手册/open_handbook.sh` | +| **🗂️ 项目目录总览** | [开发文档/00-项目总览/README.md](开发文档/00-项目总览/README.md) | | **本仓库(Gitea)** | http://open.quwanzhi.com:3000/fnvtk/workphone-sdk | -| **百科(Wiki)** | 仓库内同步源:`docs/wiki-gitea/` → 见下方「Wiki 同步」 | +| **百科(Wiki)** | 仓库内同步源:`开发文档/8、部署/04-Gitea门户/wiki-gitea/` → 见下方「Wiki 同步」 | | **本地 SDK 控制台(Hub)** | 启动服务后:`http://127.0.0.1:8899/hub` | | **API 文档(Swagger)** | `http://127.0.0.1:8899/docs` | @@ -31,16 +32,16 @@ cd app && python -m uvicorn main:app --host 0.0.0.0 --port 8899 ## Gitea:Actions / 百科 / 发行版 / 软件包 - **Actions**:`.gitea/workflows/sdk-ci.yml`(需 Gitea 管理员配置 `act_runner` 后才会跑绿) -- **百科正文**:`docs/wiki-gitea/*.md` — 用脚本或手动粘贴到 Gitea Wiki -- **发行版清单**:`docs/gitea/RELEASES.md` — 创建 Release 时对照上传资产 -- **软件包说明**:`docs/gitea/PACKAGES.md` -- **项目看板建议**:`docs/gitea/PROJECTS.md` +- **百科正文**:`开发文档/8、部署/04-Gitea门户/wiki-gitea/*.md` — 用脚本或手动粘贴到 Gitea Wiki +- **发行版清单**:`开发文档/8、部署/04-Gitea门户/gitea/RELEASES.md` — 创建 Release 时对照上传资产 +- **软件包说明**:`开发文档/8、部署/04-Gitea门户/gitea/PACKAGES.md` +- **项目看板建议**:`开发文档/8、部署/04-Gitea门户/gitea/PROJECTS.md` 一键同步 Wiki(推荐 `GITEA_TOKEN`;**勿把令牌写进仓库**): ```bash export GITEA_TOKEN='你的 Gitea 访问令牌' -python3 docs/gitea/publish_wiki.py +python3 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py # 若未设变量,脚本会尝试从 git remote gitea 解析(本地开发机可用) ``` diff --git a/sdk/tests/run_live_verification.py b/sdk/tests/run_live_verification.py index 8972c99129..84c3b5be44 100644 --- a/sdk/tests/run_live_verification.py +++ b/sdk/tests/run_live_verification.py @@ -25,7 +25,10 @@ if not os.path.exists(SCRIPT_PATH): SCRIPT_PATH = os.path.expanduser("~/Documents/GitHub/workphone-sdk/sdk/agent/hook/wechat_hook_v2.js") # 截图保存目录 -SCREENSHOT_DIR = os.path.join(os.path.dirname(__file__), '..', '..', 'verification_screenshots') +SCREENSHOT_DIR = os.path.join( + os.path.dirname(__file__), '..', '..', '..', + '开发文档', '6、测试', 'screenshots', 'verification_110', +) os.makedirs(SCREENSHOT_DIR, exist_ok=True) # 结果文件 diff --git a/开发文档/00-项目总览/README.md b/开发文档/00-项目总览/README.md new file mode 100644 index 0000000000..0344608139 --- /dev/null +++ b/开发文档/00-项目总览/README.md @@ -0,0 +1,43 @@ +--- +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(五人小组) +├── 资料/ 外部调研与归档(非运行时代码) +├── scripts/ 仓库级 Git 双推(sync_to_gitea_github.sh) +├── README.md 项目入口 +└── .obsidian/ Obsidian 配色 snippet +``` + +**已迁入开发文档**(根目录不再散落): + +| 原路径 | 新路径 | +|--------|--------| +| `docs/` | `开发文档/8、部署/04-Gitea门户/` | +| `tools/` | `开发文档/6、测试/scripts/` | +| `verification_screenshots/` | `开发文档/6、测试/screenshots/verification_110/` | +| `local-mount-sync/` | `机擎/阿服/local-mount-sync/` | + +--- + +## 架构图 + +![工作手机项目目录总览](../2、架构/images/01-整体总览/工作手机项目目录总览.png) + +详细模块拆解:[2、架构/01-总览/系统架构.md §3.0](../2、架构/01-总览/系统架构.md) + +规范 Skill:[机擎/阿表/开发文档结构规范/SKILL.md](../../机擎/阿表/开发文档结构规范/SKILL.md) diff --git a/开发文档/10、项目管理/工作日志.md b/开发文档/10、项目管理/工作日志.md index 6553d07cbd..4f201a2650 100644 --- a/开发文档/10、项目管理/工作日志.md +++ b/开发文档/10、项目管理/工作日志.md @@ -5,6 +5,41 @@ --- +## 2026-05-24 15:30 | 根目录非 SDK 整理 · 项目总览图 + +### 执行人:阿表(文档)+ 阿服(Gitea/挂载)+ 阿端(Obsidian) + +### 完成内容 +- [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] `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] Obsidian `workphone-devdoc.css` 扩展(00总览/6测试/scripts/机擎/sdk);workspace 去旧路径 +- [x] 架构图 `2、架构/images/01-整体总览/工作手机项目目录总览.png` + +### 进度 +- 根目录非 SDK 整理:**100%** +- 总进度:**99.5%** + +--- + +### 执行人:阿机(代码收编)+ 阿表(文档)+ 火炬(CodeGraph) + +### 完成内容 +- [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] `tools/extract_wechat_sdk_control_interfaces_1838.py` 扫描源仅保留 `sdk/` + `tools/` +- [x] 主手册 v2.2、Wiki 摘要、hook README 路径对齐 +- [x] `.cursor/rules/codegraph.mdc` + `npx @colbymchenry/codegraph init -i` 初始化符号索引 + +### 进度 +- 项目结构整理:**100%**(根目录无补全包冗余) +- 总进度:**99.5%**(不变) + +--- + ## 2026-05-24 12:00 | 补全包并入开发文档 · 统一手册 v2.0 ### 执行人:阿端(手册)+ 阿桥(接口收敛)+ 阿表(索引) diff --git a/开发文档/2、架构/images/01-整体总览/工作手机项目目录总览.png b/开发文档/2、架构/images/01-整体总览/工作手机项目目录总览.png new file mode 100644 index 0000000000..7a72df4be5 Binary files /dev/null and b/开发文档/2、架构/images/01-整体总览/工作手机项目目录总览.png differ diff --git a/开发文档/6、测试/README.md b/开发文档/6、测试/README.md new file mode 100644 index 0000000000..dfa3e2f42e --- /dev/null +++ b/开发文档/6、测试/README.md @@ -0,0 +1,33 @@ +--- +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、测试/screenshots/README.md b/开发文档/6、测试/screenshots/README.md new file mode 100644 index 0000000000..c7c5ab95b5 --- /dev/null +++ b/开发文档/6、测试/screenshots/README.md @@ -0,0 +1,6 @@ +# screenshots + +| 子目录 | 来源 | +|--------|------| +| `verification_110/` | sdk/tests/run_live_verification 与 110 项视觉验收 | +| `test_img/` | 临时测试图 | diff --git a/test_img/t.png b/开发文档/6、测试/screenshots/test_img/t.png similarity index 100% rename from test_img/t.png rename to 开发文档/6、测试/screenshots/test_img/t.png diff --git a/verification_screenshots/00_initial_state_1779086251.png b/开发文档/6、测试/screenshots/verification_110/00_initial_state_1779086251.png similarity index 100% rename from verification_screenshots/00_initial_state_1779086251.png rename to 开发文档/6、测试/screenshots/verification_110/00_initial_state_1779086251.png diff --git a/verification_screenshots/99_final_state_1779086291.png b/开发文档/6、测试/screenshots/verification_110/99_final_state_1779086291.png similarity index 100% rename from verification_screenshots/99_final_state_1779086291.png rename to 开发文档/6、测试/screenshots/verification_110/99_final_state_1779086291.png diff --git a/verification_screenshots/H15_消息接收_get_messages_1779086253.png b/开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png similarity index 100% rename from verification_screenshots/H15_消息接收_get_messages_1779086253.png rename to 开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_messages_1779086253.png diff --git a/verification_screenshots/H15_消息接收_get_recent_messages_1779086254.png b/开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png similarity index 100% rename from verification_screenshots/H15_消息接收_get_recent_messages_1779086254.png rename to 开发文档/6、测试/screenshots/verification_110/H15_消息接收_get_recent_messages_1779086254.png diff --git a/verification_screenshots/H15_消息接收_search_messages_1779086256.png b/开发文档/6、测试/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png similarity index 100% rename from verification_screenshots/H15_消息接收_search_messages_1779086256.png rename to 开发文档/6、测试/screenshots/verification_110/H15_消息接收_search_messages_1779086256.png diff --git a/verification_screenshots/H16_联系人_get_contact_info_1779086258.png b/开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png similarity index 100% rename from verification_screenshots/H16_联系人_get_contact_info_1779086258.png rename to 开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contact_info_1779086258.png diff --git a/verification_screenshots/H16_联系人_get_contacts_1779086257.png b/开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png similarity index 100% rename from verification_screenshots/H16_联系人_get_contacts_1779086257.png rename to 开发文档/6、测试/screenshots/verification_110/H16_联系人_get_contacts_1779086257.png diff --git a/verification_screenshots/H16_联系人_search_contacts_1779086259.png b/开发文档/6、测试/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png similarity index 100% rename from verification_screenshots/H16_联系人_search_contacts_1779086259.png rename to 开发文档/6、测试/screenshots/verification_110/H16_联系人_search_contacts_1779086259.png diff --git a/verification_screenshots/H17_消息发送_send_message_1779086261.png b/开发文档/6、测试/screenshots/verification_110/H17_消息发送_send_message_1779086261.png similarity index 100% rename from verification_screenshots/H17_消息发送_send_message_1779086261.png rename to 开发文档/6、测试/screenshots/verification_110/H17_消息发送_send_message_1779086261.png diff --git a/verification_screenshots/H18_好友请求_get_friend_requests_1779086262.png b/开发文档/6、测试/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png similarity index 100% rename from verification_screenshots/H18_好友请求_get_friend_requests_1779086262.png rename to 开发文档/6、测试/screenshots/verification_110/H18_好友请求_get_friend_requests_1779086262.png diff --git a/verification_screenshots/H19_好友管理_set_friend_remark_1779086263.png b/开发文档/6、测试/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png similarity index 100% rename from verification_screenshots/H19_好友管理_set_friend_remark_1779086263.png rename to 开发文档/6、测试/screenshots/verification_110/H19_好友管理_set_friend_remark_1779086263.png diff --git a/verification_screenshots/H21_朋友圈浏览_get_moments_1779086264.png b/开发文档/6、测试/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png similarity index 100% rename from verification_screenshots/H21_朋友圈浏览_get_moments_1779086264.png rename to 开发文档/6、测试/screenshots/verification_110/H21_朋友圈浏览_get_moments_1779086264.png diff --git a/verification_screenshots/H22_群管理_get_groups_1779086265.png b/开发文档/6、测试/screenshots/verification_110/H22_群管理_get_groups_1779086265.png similarity index 100% rename from verification_screenshots/H22_群管理_get_groups_1779086265.png rename to 开发文档/6、测试/screenshots/verification_110/H22_群管理_get_groups_1779086265.png diff --git a/verification_screenshots/H23_账号管理_check_account_status_1779086268.png b/开发文档/6、测试/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png similarity index 100% rename from verification_screenshots/H23_账号管理_check_account_status_1779086268.png rename to 开发文档/6、测试/screenshots/verification_110/H23_账号管理_check_account_status_1779086268.png diff --git a/verification_screenshots/H23_账号管理_get_profile_1779086267.png b/开发文档/6、测试/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png similarity index 100% rename from verification_screenshots/H23_账号管理_get_profile_1779086267.png rename to 开发文档/6、测试/screenshots/verification_110/H23_账号管理_get_profile_1779086267.png diff --git a/verification_screenshots/H24_账号安全_get_login_devices_1779086269.png b/开发文档/6、测试/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png similarity index 100% rename from verification_screenshots/H24_账号安全_get_login_devices_1779086269.png rename to 开发文档/6、测试/screenshots/verification_110/H24_账号安全_get_login_devices_1779086269.png diff --git a/verification_screenshots/H25_支付_get_wallet_balance_1779086270.png b/开发文档/6、测试/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png similarity index 100% rename from verification_screenshots/H25_支付_get_wallet_balance_1779086270.png rename to 开发文档/6、测试/screenshots/verification_110/H25_支付_get_wallet_balance_1779086270.png diff --git a/verification_screenshots/H26_二维码_generate_my_qr_code_1779086272.png b/开发文档/6、测试/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png similarity index 100% rename from verification_screenshots/H26_二维码_generate_my_qr_code_1779086272.png rename to 开发文档/6、测试/screenshots/verification_110/H26_二维码_generate_my_qr_code_1779086272.png diff --git a/verification_screenshots/H27_视频号_browse_channels_1779086273.png b/开发文档/6、测试/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png similarity index 100% rename from verification_screenshots/H27_视频号_browse_channels_1779086273.png rename to 开发文档/6、测试/screenshots/verification_110/H27_视频号_browse_channels_1779086273.png diff --git a/verification_screenshots/H28_标签_get_labels_1779086274.png b/开发文档/6、测试/screenshots/verification_110/H28_标签_get_labels_1779086274.png similarity index 100% rename from verification_screenshots/H28_标签_get_labels_1779086274.png rename to 开发文档/6、测试/screenshots/verification_110/H28_标签_get_labels_1779086274.png diff --git a/verification_screenshots/H29_收藏_get_favorites_1779086275.png b/开发文档/6、测试/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png similarity index 100% rename from verification_screenshots/H29_收藏_get_favorites_1779086275.png rename to 开发文档/6、测试/screenshots/verification_110/H29_收藏_get_favorites_1779086275.png diff --git a/verification_screenshots/H31_搜索_global_search_1779086276.png b/开发文档/6、测试/screenshots/verification_110/H31_搜索_global_search_1779086276.png similarity index 100% rename from verification_screenshots/H31_搜索_global_search_1779086276.png rename to 开发文档/6、测试/screenshots/verification_110/H31_搜索_global_search_1779086276.png diff --git a/verification_screenshots/H32_小程序_get_recent_mini_programs_1779086278.png b/开发文档/6、测试/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png similarity index 100% rename from verification_screenshots/H32_小程序_get_recent_mini_programs_1779086278.png rename to 开发文档/6、测试/screenshots/verification_110/H32_小程序_get_recent_mini_programs_1779086278.png diff --git a/verification_screenshots/H33_文件传输_send_image_1779086279.png b/开发文档/6、测试/screenshots/verification_110/H33_文件传输_send_image_1779086279.png similarity index 100% rename from verification_screenshots/H33_文件传输_send_image_1779086279.png rename to 开发文档/6、测试/screenshots/verification_110/H33_文件传输_send_image_1779086279.png diff --git a/verification_screenshots/H35_注册登录_check_login_state_1779086280.png b/开发文档/6、测试/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png similarity index 100% rename from verification_screenshots/H35_注册登录_check_login_state_1779086280.png rename to 开发文档/6、测试/screenshots/verification_110/H35_注册登录_check_login_state_1779086280.png diff --git a/verification_screenshots/H35_注册登录_get_sim_phone_1779086281.png b/开发文档/6、测试/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png similarity index 100% rename from verification_screenshots/H35_注册登录_get_sim_phone_1779086281.png rename to 开发文档/6、测试/screenshots/verification_110/H35_注册登录_get_sim_phone_1779086281.png diff --git a/verification_screenshots/H36_公众号_get_official_accounts_1779086283.png b/开发文档/6、测试/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png similarity index 100% rename from verification_screenshots/H36_公众号_get_official_accounts_1779086283.png rename to 开发文档/6、测试/screenshots/verification_110/H36_公众号_get_official_accounts_1779086283.png diff --git a/verification_screenshots/H39_设备信息_get_device_info_1779086284.png b/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png similarity index 100% rename from verification_screenshots/H39_设备信息_get_device_info_1779086284.png rename to 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_device_info_1779086284.png diff --git a/verification_screenshots/H39_设备信息_get_network_info_1779086286.png b/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png similarity index 100% rename from verification_screenshots/H39_设备信息_get_network_info_1779086286.png rename to 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_network_info_1779086286.png diff --git a/verification_screenshots/H39_设备信息_get_storage_info_1779086285.png b/开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png similarity index 100% rename from verification_screenshots/H39_设备信息_get_storage_info_1779086285.png rename to 开发文档/6、测试/screenshots/verification_110/H39_设备信息_get_storage_info_1779086285.png diff --git a/verification_screenshots/系统_Hook状态_get_hook_status_1779086288.png b/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png similarity index 100% rename from verification_screenshots/系统_Hook状态_get_hook_status_1779086288.png rename to 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_hook_status_1779086288.png diff --git a/verification_screenshots/系统_Hook状态_get_process_info_1779086289.png b/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png similarity index 100% rename from verification_screenshots/系统_Hook状态_get_process_info_1779086289.png rename to 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_process_info_1779086289.png diff --git a/verification_screenshots/系统_Hook状态_get_wechat_version_1779086290.png b/开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png similarity index 100% rename from verification_screenshots/系统_Hook状态_get_wechat_version_1779086290.png rename to 开发文档/6、测试/screenshots/verification_110/系统_Hook状态_get_wechat_version_1779086290.png diff --git a/开发文档/6、测试/scripts/README.md b/开发文档/6、测试/scripts/README.md new file mode 100644 index 0000000000..e004220cda --- /dev/null +++ b/开发文档/6、测试/scripts/README.md @@ -0,0 +1,11 @@ +# scripts + +验收与矩阵生成脚本。`from _repo_root import repo_root` 解析仓库根目录。 + +| 脚本 | 用途 | +|------|------| +| `wireless_frida_wechat_batch_verify.py` | 无线 Frida 批量验证 | +| `real_device_110_effect_verify.py` | 110 项真机效果验证 | +| `build_wechat_sdk_true_control_matrix_v*.py` | 接口矩阵生成 | + +历史调试脚本见 `legacy/`。 diff --git a/开发文档/6、测试/scripts/_repo_root.py b/开发文档/6、测试/scripts/_repo_root.py new file mode 100644 index 0000000000..8d57a828f7 --- /dev/null +++ b/开发文档/6、测试/scripts/_repo_root.py @@ -0,0 +1,13 @@ +"""Resolve workphone-sdk repository root from scripts under 开发文档/6、测试/scripts/.""" +from __future__ import annotations + +from pathlib import Path + + +def repo_root() -> Path: + p = Path(__file__).resolve().parent + for _ in range(8): + if (p / "sdk" / "app" / "main.py").is_file() and (p / "开发文档").is_dir(): + return p + p = p.parent + raise FileNotFoundError("workphone-sdk repository root not found") diff --git a/tools/analyze_real_device_evidence_append_doc.py b/开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py similarity index 99% rename from tools/analyze_real_device_evidence_append_doc.py rename to 开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py index 9f132d5bc5..fc81774f39 100644 --- a/tools/analyze_real_device_evidence_append_doc.py +++ b/开发文档/6、测试/scripts/analyze_real_device_evidence_append_doc.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- """复核110项真机证据、资料读取摘要、截图非黑屏与锁屏后台链路;只新增文档。""" from __future__ import annotations +from _repo_root import repo_root import json from collections import Counter @@ -15,7 +16,7 @@ except Exception: Image = None ImageStat = None -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() LATEST = ROOT / '开发文档/6、测试/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' diff --git a/tools/build_real_device_acceptance_matrix.py b/开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py similarity index 98% rename from tools/build_real_device_acceptance_matrix.py rename to 开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py index 3f771a2cee..808954b4bb 100644 --- a/tools/build_real_device_acceptance_matrix.py +++ b/开发文档/6、测试/scripts/build_real_device_acceptance_matrix.py @@ -8,13 +8,14 @@ 3. 每项功能是否属于高风险,只能在测试对象或空数据下验证。 """ from __future__ import annotations +from _repo_root import repo_root import json import re from pathlib import Path from datetime import datetime -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() OUT = ROOT / "开发文档" / "6、测试" / "wireless_frida_real_device_acceptance_20260518" OUT.mkdir(parents=True, exist_ok=True) @@ -25,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 / "tools/wireless_frida_wechat_batch_verify.py", + ROOT / "开发文档" / "6、测试" / "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/tools/build_wechat_sdk_core_interface_matrix_1842.py b/开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py similarity index 99% rename from tools/build_wechat_sdk_core_interface_matrix_1842.py rename to 开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py index 5dbd50f08c..091058803c 100644 --- a/tools/build_wechat_sdk_core_interface_matrix_1842.py +++ b/开发文档/6、测试/scripts/build_wechat_sdk_core_interface_matrix_1842.py @@ -5,6 +5,7 @@ 口径:只统计“SDK服务器 HTTP/API -> 手机端微信”的真实控制接口;非微信、纯展示、纯文档、纯设备管理不纳入核心完成率。 """ from __future__ import annotations +from _repo_root import repo_root import ast import json @@ -13,9 +14,7 @@ from datetime import datetime from pathlib import Path from typing import Any, Dict, List, Optional -ROOT = Path('/Users/karuo/Documents/开发/2、私域银行/工作手机') -if not ROOT.exists(): - ROOT = Path('/mnt/desktop/工作手机') +ROOT = repo_root() SDK_APP = ROOT / 'sdk' / 'app' DOC_DIR = ROOT / '开发文档' / '6、测试' / '110项功能逐项确认' / '2026-05-18' diff --git a/tools/build_wechat_sdk_true_control_matrix_v2_1848.py b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py similarity index 98% rename from tools/build_wechat_sdk_true_control_matrix_v2_1848.py rename to 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py index 1e5367fc9f..b24429d68f 100644 --- a/tools/build_wechat_sdk_true_control_matrix_v2_1848.py +++ b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v2_1848.py @@ -1,13 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import annotations + +from _repo_root import repo_root import ast, csv, json, re from collections import OrderedDict from datetime import datetime from pathlib import Path -ROOT=Path('/Users/karuo/Documents/开发/2、私域银行/工作手机') -if not ROOT.exists(): ROOT=Path('/mnt/desktop/工作手机') +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) TS=datetime.now().strftime('%H%M%S') diff --git a/tools/build_wechat_sdk_true_control_matrix_v3_1858.py b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py similarity index 98% rename from tools/build_wechat_sdk_true_control_matrix_v3_1858.py rename to 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py index 0f3e1afd4c..0f27585758 100644 --- a/tools/build_wechat_sdk_true_control_matrix_v3_1858.py +++ b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v3_1858.py @@ -9,6 +9,7 @@ 4. 有真实执行通道但涉及发送、删除、支付、解封、清空等高风险动作,标为需人工确认和安全闸。 """ from __future__ import annotations +from _repo_root import repo_root import ast import csv @@ -19,9 +20,7 @@ from datetime import datetime from pathlib import Path from typing import Dict, List, Optional, Tuple -ROOT = Path('/Users/karuo/Documents/开发/2、私域银行/工作手机') -if not ROOT.exists(): - ROOT = Path('/mnt/desktop/工作手机') +ROOT = repo_root() DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' DOC_DIR.mkdir(parents=True, exist_ok=True) @@ -332,7 +331,7 @@ def main() -> None: lines.append('') lines.append(f'- CSV矩阵:`{CSV_OUT}`') lines.append(f'- JSON矩阵:`{JSON_OUT}`') - lines.append(f'- 生成脚本:`{ROOT / "tools/build_wechat_sdk_true_control_matrix_v3_1858.py"}`') + lines.append(f'- 生成脚本:`{ROOT / "开发文档" / "6、测试" / "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/tools/build_wechat_sdk_true_control_matrix_v4_1905.py b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py similarity index 97% rename from tools/build_wechat_sdk_true_control_matrix_v4_1905.py rename to 开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py index 1c6d6a32c7..a46a5680f0 100644 --- a/tools/build_wechat_sdk_true_control_matrix_v4_1905.py +++ b/开发文档/6、测试/scripts/build_wechat_sdk_true_control_matrix_v4_1905.py @@ -5,6 +5,7 @@ 本脚本只生成追加文档,不覆盖既有文档。 """ from __future__ import annotations +from _repo_root import repo_root import csv import importlib.util @@ -15,14 +16,12 @@ from dataclasses import asdict from datetime import datetime from pathlib import Path -ROOT = Path('/Users/karuo/Documents/开发/2、私域银行/工作手机') -if not ROOT.exists(): - ROOT = Path('/mnt/desktop/工作手机') +ROOT = repo_root() DOC_DIR = ROOT / '开发文档/6、测试/110项功能逐项确认/2026-05-18' DOC_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime('%H%M%S') -V3_PATH = ROOT / 'tools/build_wechat_sdk_true_control_matrix_v3_1858.py' +V3_PATH = ROOT / '开发文档' / '6、测试' / '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 @@ -201,7 +200,7 @@ def main() -> None: lines.append('') lines.append(f'- CSV:`{CSV_OUT}`') lines.append(f'- JSON:`{JSON_OUT}`') - lines.append(f'- 脚本:`{ROOT / "tools/build_wechat_sdk_true_control_matrix_v4_1905.py"}`') + lines.append(f'- 脚本:`{ROOT / "开发文档" / "6、测试" / "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/tools/extract_wechat_sdk_control_interfaces_1838.py b/开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py similarity index 96% rename from tools/extract_wechat_sdk_control_interfaces_1838.py rename to 开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py index bb0e7be118..8efef33976 100644 --- a/tools/extract_wechat_sdk_control_interfaces_1838.py +++ b/开发文档/6、测试/scripts/extract_wechat_sdk_control_interfaces_1838.py @@ -12,6 +12,7 @@ 3. 非核心接口:泛设备、非微信、项目管理、注册中心、经验库等不直接控制手机微信端的接口。 """ from __future__ import annotations +from _repo_root import repo_root import ast import csv @@ -23,7 +24,7 @@ from datetime import datetime from pathlib import Path from typing import Iterable -ROOT = Path.cwd() +ROOT = repo_root() OUT_DIR = ROOT / "开发文档" / "6、测试" / "110项功能逐项确认" / "2026-05-18" OUT_DIR.mkdir(parents=True, exist_ok=True) TS = datetime.now().strftime("%H%M%S") @@ -33,14 +34,10 @@ PY_SOURCES = [ ROOT / "sdk" / "app" / "services", ROOT / "sdk" / "agent" / "hook", ROOT / "sdk" / "tests", - ROOT / "tools", - ROOT / "工作手机SDK补全包_微信Frida", - ROOT / "补全包" / "微信Frida_SDK_20260518", + ROOT / "开发文档" / "6、测试" / "scripts", ] JS_SOURCES = [ ROOT / "sdk" / "agent" / "hook", - ROOT / "工作手机SDK补全包_微信Frida", - ROOT / "补全包" / "微信Frida_SDK_20260518", ] BUSINESS_KEYWORDS = { @@ -280,7 +277,7 @@ def write_outputs(items: list[InterfaceItem]) -> tuple[Path, Path, Path]: ## 一、扫描结论 -本次从 `sdk/app/routers`、`sdk/app/services`、`sdk/agent/hook`、`sdk/tests`、`tools`、`工作手机SDK补全包_微信Frida`、`补全包/微信Frida_SDK_20260518` 中提取服务器路由、Python 符号和 Frida/JS 符号。扫描结果仅作为接口矩阵初稿,下一步还必须结合真实调用链和真机证据复核。 +本次从 `sdk/app/routers`、`sdk/app/services`、`sdk/agent/hook`、`sdk/tests`、`tools` 中提取服务器路由、Python 符号和 Frida/JS 符号。扫描结果仅作为接口矩阵初稿,下一步还必须结合真实调用链和真机证据复核。 | 指标 | 数量 | |---|---:| diff --git a/tools/generate_append_only_110_docs.py b/开发文档/6、测试/scripts/generate_append_only_110_docs.py similarity index 99% rename from tools/generate_append_only_110_docs.py rename to 开发文档/6、测试/scripts/generate_append_only_110_docs.py index 553e2221ba..294274dd48 100644 --- a/tools/generate_append_only_110_docs.py +++ b/开发文档/6、测试/scripts/generate_append_only_110_docs.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- """生成工作手机110项功能清单与只追加开发文档。""" from __future__ import annotations +from _repo_root import repo_root import json import re @@ -9,7 +10,7 @@ from datetime import datetime from pathlib import Path from typing import Any -ROOT = Path(__file__).resolve().parents[1] +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' diff --git a/tools/generate_function_definition_append_doc.py b/开发文档/6、测试/scripts/generate_function_definition_append_doc.py similarity index 99% rename from tools/generate_function_definition_append_doc.py rename to 开发文档/6、测试/scripts/generate_function_definition_append_doc.py index d44b80199d..0aefa323ea 100644 --- a/tools/generate_function_definition_append_doc.py +++ b/开发文档/6、测试/scripts/generate_function_definition_append_doc.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- """按日期新增110项功能定义与逐项验收口径文档,绝不覆盖旧文档。""" from __future__ import annotations +from _repo_root import repo_root import json import re @@ -10,7 +11,7 @@ from datetime import datetime from pathlib import Path from typing import Any -ROOT = Path(__file__).resolve().parents[1] +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' diff --git a/tools/inventory_routes.py b/开发文档/6、测试/scripts/inventory_routes.py similarity index 98% rename from tools/inventory_routes.py rename to 开发文档/6、测试/scripts/inventory_routes.py index f7d5bedbed..2c9c39d6f6 100644 --- a/tools/inventory_routes.py +++ b/开发文档/6、测试/scripts/inventory_routes.py @@ -2,13 +2,14 @@ # -*- coding: utf-8 -*- """盘点工作手机 SDK 的 FastAPI 路由,并按真机验证优先级分类。""" from __future__ import annotations +from _repo_root import repo_root import ast import json import re from pathlib import Path -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() SCAN_DIRS = [ROOT / "sdk" / "app"] OUT_DIR = ROOT / "开发文档" / "6、测试" / "live_verify_20260518" OUT_DIR.mkdir(parents=True, exist_ok=True) diff --git a/db_full_scan_20260518.json b/开发文档/6、测试/scripts/legacy/db_full_scan_20260518.json similarity index 100% rename from db_full_scan_20260518.json rename to 开发文档/6、测试/scripts/legacy/db_full_scan_20260518.json diff --git a/debug_contacts.py b/开发文档/6、测试/scripts/legacy/debug_contacts.py similarity index 100% rename from debug_contacts.py rename to 开发文档/6、测试/scripts/legacy/debug_contacts.py diff --git a/debug_data_20260518.json b/开发文档/6、测试/scripts/legacy/debug_data_20260518.json similarity index 100% rename from debug_data_20260518.json rename to 开发文档/6、测试/scripts/legacy/debug_data_20260518.json diff --git a/do_real_actions.py b/开发文档/6、测试/scripts/legacy/do_real_actions.py similarity index 100% rename from do_real_actions.py rename to 开发文档/6、测试/scripts/legacy/do_real_actions.py diff --git a/do_real_actions_v2.py b/开发文档/6、测试/scripts/legacy/do_real_actions_v2.py similarity index 100% rename from do_real_actions_v2.py rename to 开发文档/6、测试/scripts/legacy/do_real_actions_v2.py diff --git a/explore_v6.py b/开发文档/6、测试/scripts/legacy/explore_v6.py similarity index 100% rename from explore_v6.py rename to 开发文档/6、测试/scripts/legacy/explore_v6.py diff --git a/find_real_send_class.py b/开发文档/6、测试/scripts/legacy/find_real_send_class.py similarity index 100% rename from find_real_send_class.py rename to 开发文档/6、测试/scripts/legacy/find_real_send_class.py diff --git a/hook_find_send.py b/开发文档/6、测试/scripts/legacy/hook_find_send.py similarity index 100% rename from hook_find_send.py rename to 开发文档/6、测试/scripts/legacy/hook_find_send.py diff --git a/hook_find_send_20260518.json b/开发文档/6、测试/scripts/legacy/hook_find_send_20260518.json similarity index 100% rename from hook_find_send_20260518.json rename to 开发文档/6、测试/scripts/legacy/hook_find_send_20260518.json diff --git a/patch_hook_js.py b/开发文档/6、测试/scripts/legacy/patch_hook_js.py similarity index 100% rename from patch_hook_js.py rename to 开发文档/6、测试/scripts/legacy/patch_hook_js.py diff --git a/query_db_schema.py b/开发文档/6、测试/scripts/legacy/query_db_schema.py similarity index 100% rename from query_db_schema.py rename to 开发文档/6、测试/scripts/legacy/query_db_schema.py diff --git a/real_class_discovery_20260518.json b/开发文档/6、测试/scripts/legacy/real_class_discovery_20260518.json similarity index 100% rename from real_class_discovery_20260518.json rename to 开发文档/6、测试/scripts/legacy/real_class_discovery_20260518.json diff --git a/scan_all_db_tables.py b/开发文档/6、测试/scripts/legacy/scan_all_db_tables.py similarity index 100% rename from scan_all_db_tables.py rename to 开发文档/6、测试/scripts/legacy/scan_all_db_tables.py diff --git a/scan_wechat_classes.py b/开发文档/6、测试/scripts/legacy/scan_wechat_classes.py similarity index 100% rename from scan_wechat_classes.py rename to 开发文档/6、测试/scripts/legacy/scan_wechat_classes.py diff --git a/test_frida_business_20260518.py b/开发文档/6、测试/scripts/legacy/test_frida_business_20260518.py similarity index 100% rename from test_frida_business_20260518.py rename to 开发文档/6、测试/scripts/legacy/test_frida_business_20260518.py diff --git a/test_frida_debug_data.py b/开发文档/6、测试/scripts/legacy/test_frida_debug_data.py similarity index 100% rename from test_frida_debug_data.py rename to 开发文档/6、测试/scripts/legacy/test_frida_debug_data.py diff --git a/test_frida_final.py b/开发文档/6、测试/scripts/legacy/test_frida_final.py similarity index 100% rename from test_frida_final.py rename to 开发文档/6、测试/scripts/legacy/test_frida_final.py diff --git a/test_frida_final.py.bak b/开发文档/6、测试/scripts/legacy/test_frida_final.py.bak similarity index 100% rename from test_frida_final.py.bak rename to 开发文档/6、测试/scripts/legacy/test_frida_final.py.bak diff --git a/test_frida_live_20260518.py b/开发文档/6、测试/scripts/legacy/test_frida_live_20260518.py similarity index 100% rename from test_frida_live_20260518.py rename to 开发文档/6、测试/scripts/legacy/test_frida_live_20260518.py diff --git a/test_frida_rpc.py b/开发文档/6、测试/scripts/legacy/test_frida_rpc.py similarity index 100% rename from test_frida_rpc.py rename to 开发文档/6、测试/scripts/legacy/test_frida_rpc.py diff --git a/test_frida_screenshot_v2.py b/开发文档/6、测试/scripts/legacy/test_frida_screenshot_v2.py similarity index 100% rename from test_frida_screenshot_v2.py rename to 开发文档/6、测试/scripts/legacy/test_frida_screenshot_v2.py diff --git a/test_frida_screenshot_verify.py b/开发文档/6、测试/scripts/legacy/test_frida_screenshot_verify.py similarity index 100% rename from test_frida_screenshot_verify.py rename to 开发文档/6、测试/scripts/legacy/test_frida_screenshot_verify.py diff --git a/test_frida_stats_20260518.py b/开发文档/6、测试/scripts/legacy/test_frida_stats_20260518.py similarity index 100% rename from test_frida_stats_20260518.py rename to 开发文档/6、测试/scripts/legacy/test_frida_stats_20260518.py diff --git a/verification_business_20260518.json b/开发文档/6、测试/scripts/legacy/verification_business_20260518.json similarity index 100% rename from verification_business_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_business_20260518.json diff --git a/verification_full_v3_20260518.json b/开发文档/6、测试/scripts/legacy/verification_full_v3_20260518.json similarity index 100% rename from verification_full_v3_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_full_v3_20260518.json diff --git a/verification_results.json b/开发文档/6、测试/scripts/legacy/verification_results.json similarity index 100% rename from verification_results.json rename to 开发文档/6、测试/scripts/legacy/verification_results.json diff --git a/verification_results_live_20260518.json b/开发文档/6、测试/scripts/legacy/verification_results_live_20260518.json similarity index 100% rename from verification_results_live_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_results_live_20260518.json diff --git a/verification_screenshot_20260518.json b/开发文档/6、测试/scripts/legacy/verification_screenshot_20260518.json similarity index 100% rename from verification_screenshot_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_screenshot_20260518.json diff --git a/verification_screenshot_v2_20260518.json b/开发文档/6、测试/scripts/legacy/verification_screenshot_v2_20260518.json similarity index 100% rename from verification_screenshot_v2_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_screenshot_v2_20260518.json diff --git a/verification_v4_20260518.json b/开发文档/6、测试/scripts/legacy/verification_v4_20260518.json similarity index 100% rename from verification_v4_20260518.json rename to 开发文档/6、测试/scripts/legacy/verification_v4_20260518.json diff --git a/verification_v5_results.json b/开发文档/6、测试/scripts/legacy/verification_v5_results.json similarity index 100% rename from verification_v5_results.json rename to 开发文档/6、测试/scripts/legacy/verification_v5_results.json diff --git a/verification_v6_results.json b/开发文档/6、测试/scripts/legacy/verification_v6_results.json similarity index 100% rename from verification_v6_results.json rename to 开发文档/6、测试/scripts/legacy/verification_v6_results.json diff --git a/verification_v8_results.json b/开发文档/6、测试/scripts/legacy/verification_v8_results.json similarity index 100% rename from verification_v8_results.json rename to 开发文档/6、测试/scripts/legacy/verification_v8_results.json diff --git a/verification_v8fix_results.json b/开发文档/6、测试/scripts/legacy/verification_v8fix_results.json similarity index 100% rename from verification_v8fix_results.json rename to 开发文档/6、测试/scripts/legacy/verification_v8fix_results.json diff --git a/verify_all_features.py b/开发文档/6、测试/scripts/legacy/verify_all_features.py similarity index 100% rename from verify_all_features.py rename to 开发文档/6、测试/scripts/legacy/verify_all_features.py diff --git a/verify_all_v7.py b/开发文档/6、测试/scripts/legacy/verify_all_v7.py similarity index 100% rename from verify_all_v7.py rename to 开发文档/6、测试/scripts/legacy/verify_all_v7.py diff --git a/verify_complete_v9.py b/开发文档/6、测试/scripts/legacy/verify_complete_v9.py similarity index 100% rename from verify_complete_v9.py rename to 开发文档/6、测试/scripts/legacy/verify_complete_v9.py diff --git a/verify_v10.py b/开发文档/6、测试/scripts/legacy/verify_v10.py similarity index 100% rename from verify_v10.py rename to 开发文档/6、测试/scripts/legacy/verify_v10.py diff --git a/verify_v11.py b/开发文档/6、测试/scripts/legacy/verify_v11.py similarity index 100% rename from verify_v11.py rename to 开发文档/6、测试/scripts/legacy/verify_v11.py diff --git a/verify_v12.py b/开发文档/6、测试/scripts/legacy/verify_v12.py similarity index 100% rename from verify_v12.py rename to 开发文档/6、测试/scripts/legacy/verify_v12.py diff --git a/verify_v4.py b/开发文档/6、测试/scripts/legacy/verify_v4.py similarity index 100% rename from verify_v4.py rename to 开发文档/6、测试/scripts/legacy/verify_v4.py diff --git a/verify_v5.py b/开发文档/6、测试/scripts/legacy/verify_v5.py similarity index 100% rename from verify_v5.py rename to 开发文档/6、测试/scripts/legacy/verify_v5.py diff --git a/verify_v8.py b/开发文档/6、测试/scripts/legacy/verify_v8.py similarity index 100% rename from verify_v8.py rename to 开发文档/6、测试/scripts/legacy/verify_v8.py diff --git a/verify_v8_fix.py b/开发文档/6、测试/scripts/legacy/verify_v8_fix.py similarity index 100% rename from verify_v8_fix.py rename to 开发文档/6、测试/scripts/legacy/verify_v8_fix.py diff --git a/verify_v9_final.py b/开发文档/6、测试/scripts/legacy/verify_v9_final.py similarity index 100% rename from verify_v9_final.py rename to 开发文档/6、测试/scripts/legacy/verify_v9_final.py diff --git a/verify_v9_fixed.py b/开发文档/6、测试/scripts/legacy/verify_v9_fixed.py similarity index 100% rename from verify_v9_fixed.py rename to 开发文档/6、测试/scripts/legacy/verify_v9_fixed.py diff --git a/tools/live_phone_verify.py b/开发文档/6、测试/scripts/live_phone_verify.py similarity index 99% rename from tools/live_phone_verify.py rename to 开发文档/6、测试/scripts/live_phone_verify.py index 681445c63a..930e275ecc 100644 --- a/tools/live_phone_verify.py +++ b/开发文档/6、测试/scripts/live_phone_verify.py @@ -6,6 +6,7 @@ 对工作手机 SDK 路由与 Mac->ADB->Flyme/Android 真机控制链路进行可重复验证。 """ from __future__ import annotations +from _repo_root import repo_root import argparse import json @@ -18,7 +19,7 @@ from datetime import datetime from pathlib import Path from typing import Any -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() OUT_DIR = ROOT / "开发文档" / "6、测试" / "live_verify_20260518" SCREEN_DIR = OUT_DIR / "screenshots" OUT_DIR.mkdir(parents=True, exist_ok=True) diff --git a/tools/quick_visible_capture_test.py b/开发文档/6、测试/scripts/quick_visible_capture_test.py similarity index 97% rename from tools/quick_visible_capture_test.py rename to 开发文档/6、测试/scripts/quick_visible_capture_test.py index 4091d30347..3706e91f30 100644 --- a/tools/quick_visible_capture_test.py +++ b/开发文档/6、测试/scripts/quick_visible_capture_test.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- """快速验证脱线无线手机是否可亮屏并采集非黑屏截图。""" from __future__ import annotations +from _repo_root import repo_root import subprocess import time @@ -14,7 +15,7 @@ except Exception: Image = None ImageStat = None -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() OUT = ROOT / "开发文档" / "6、测试" / "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" diff --git a/tools/real_device_110_effect_verify.py b/开发文档/6、测试/scripts/real_device_110_effect_verify.py similarity index 99% rename from tools/real_device_110_effect_verify.py rename to 开发文档/6、测试/scripts/real_device_110_effect_verify.py index 18ae368281..f7e22822c2 100644 --- a/tools/real_device_110_effect_verify.py +++ b/开发文档/6、测试/scripts/real_device_110_effect_verify.py @@ -12,6 +12,7 @@ 默认全部拦截,仅验证接口存在、参数校验和安全闸,不对真实对象执行。 """ from __future__ import annotations +from _repo_root import repo_root import argparse import json @@ -33,7 +34,7 @@ except Exception as exc: # pragma: no cover else: FRIDA_IMPORT_ERROR = "" -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() MATRIX = ROOT / "开发文档" / "6、测试" / "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") diff --git a/tools/scan_110_evidence_quality_append_doc.py b/开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py similarity index 99% rename from tools/scan_110_evidence_quality_append_doc.py rename to 开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py index 861204dcca..239b70e85a 100644 --- a/tools/scan_110_evidence_quality_append_doc.py +++ b/开发文档/6、测试/scripts/scan_110_evidence_quality_append_doc.py @@ -6,6 +6,7 @@ 原则:只新增输出文件,不覆盖旧文档;如同名文件存在则追加时间戳后缀。 """ from __future__ import annotations +from _repo_root import repo_root import csv import hashlib @@ -19,7 +20,7 @@ from typing import Any, Dict, Iterable, List, Tuple from PIL import Image, ImageStat -ROOT = Path.cwd() +ROOT = repo_root() TEST_DIR = ROOT / "开发文档" / "6、测试" OUT_DIR = TEST_DIR / "110项功能逐项确认" / "2026-05-18" OUT_DIR.mkdir(parents=True, exist_ok=True) diff --git a/tools/wireless_frida_wechat_batch_verify.py b/开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py similarity index 99% rename from tools/wireless_frida_wechat_batch_verify.py rename to 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py index 9713ffe267..17adab6ea0 100644 --- a/tools/wireless_frida_wechat_batch_verify.py +++ b/开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py @@ -8,6 +8,7 @@ 3. 添加好友、获取手机号、反馈/举报、发朋友圈、群发、解封、支付、删除、资料改写等动作只做接口/风控标记,不触发真实外发或真实改写。 """ from __future__ import annotations +from _repo_root import repo_root import argparse import json @@ -30,7 +31,7 @@ except Exception as exc: # pragma: no cover else: FRIDA_IMPORT_ERROR = "" -ROOT = Path(__file__).resolve().parents[1] +ROOT = repo_root() OUT_DIR = ROOT / "开发文档" / "6、测试" / "wireless_frida_20260518" SCREEN_DIR = OUT_DIR / "screenshots" OUT_DIR.mkdir(parents=True, exist_ok=True) diff --git a/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md b/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md index 6c7c5aff58..32a8cffbd8 100644 --- a/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md +++ b/开发文档/8、部署/02-设备Hook/微信Frida无线部署与验证说明.md @@ -11,4 +11,4 @@ | 无线路由 | `sdk/app/routers/frida_wireless.py` | | 手机 Agent | `sdk/agent/wireless_agent.py` | | Frida | `sdk/agent/hook/frida_manager.py` | -| 验证 | `tools/wireless_frida_wechat_batch_verify.py` | +| 验证 | `开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py` | diff --git a/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md b/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md index c782fa8eb7..c1c6436892 100644 --- a/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md +++ b/开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md @@ -3,7 +3,7 @@ > **时间**:2026-05-18 19:13 CST > **作者**:Manus AI > **适用项目**:工作手机项目(私域银行) -> **关联Skill**:[[local-mount-sync/SKILL.md]] +> **关联Skill**:[[机擎/阿服/local-mount-sync/SKILL.md]] > **原则**:只追加不覆盖;本地挂载与GitHub双同步;超过20分钟阶段性同步。 ## 一、规则结论 @@ -26,7 +26,7 @@ | 内容类型 | 保存位置 | 说明 | |---|---|---| -| 项目级同步规范 | `local-mount-sync/SKILL.md` | 已新建,后续可作为固定执行规则读取 | +| 项目级同步规范 | `机擎/阿服/local-mount-sync/SKILL.md` | 已新建,后续可作为固定执行规则读取 | | 阶段性同步说明 | `开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md` | 本文件 | | 每轮执行记录 | `开发文档/10、项目管理/03-计划与专项/项目落地执行表.md` | 只追加,不覆盖旧记录 | | 真机验收报告 | `开发文档/6、测试/110项功能逐项确认/2026-05-18/` | 按日期目录追加 | @@ -60,7 +60,7 @@ cd "/Users/karuo/Documents/开发/2、私域银行/工作手机" | 文件 | 动作 | 状态 | |---|---|---| -| `local-mount-sync/SKILL.md` | 新增同步Skill规则 | 已保存到本地挂载目录 | +| `机擎/阿服/local-mount-sync/SKILL.md` | 新增同步Skill规则 | 已保存到本地挂载目录 | | `开发文档/8、部署/03-运维同步/本地挂载与GitHub阶段性同步规则_追加版_20260518_1913.md` | 新增部署/同步说明 | 已保存到开发文档 | | `开发文档/10、项目管理/03-计划与专项/项目落地执行表.md` | 追加本次对话规则记录 | 待本次追加后统一Git同步 | diff --git a/开发文档/8、部署/04-Gitea门户/README.md b/开发文档/8、部署/04-Gitea门户/README.md new file mode 100644 index 0000000000..c5ecd5db7f --- /dev/null +++ b/开发文档/8、部署/04-Gitea门户/README.md @@ -0,0 +1,16 @@ +--- +obsidian-color: "#558B2F" +--- + +# 04 · Gitea 门户 + +| 子目录 | 说明 | +|--------|------| +| [gitea/](gitea/) | Release/Package/Project 说明 + `publish_wiki.py` + `sync_when_online.sh` | +| [wiki-gitea/](wiki-gitea/) | Gitea Wiki Markdown 源 | +| [api/](api/) | OpenAPI 快照 | + +```bash +python3 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py +bash 开发文档/8、部署/04-Gitea门户/gitea/sync_when_online.sh +``` diff --git a/docs/api/openapi.yaml b/开发文档/8、部署/04-Gitea门户/api/openapi.yaml similarity index 100% rename from docs/api/openapi.yaml rename to 开发文档/8、部署/04-Gitea门户/api/openapi.yaml diff --git a/docs/gitea/PACKAGES.md b/开发文档/8、部署/04-Gitea门户/gitea/PACKAGES.md similarity index 100% rename from docs/gitea/PACKAGES.md rename to 开发文档/8、部署/04-Gitea门户/gitea/PACKAGES.md diff --git a/docs/gitea/PROJECTS.md b/开发文档/8、部署/04-Gitea门户/gitea/PROJECTS.md similarity index 100% rename from docs/gitea/PROJECTS.md rename to 开发文档/8、部署/04-Gitea门户/gitea/PROJECTS.md diff --git a/docs/gitea/README.md b/开发文档/8、部署/04-Gitea门户/gitea/README.md similarity index 100% rename from docs/gitea/README.md rename to 开发文档/8、部署/04-Gitea门户/gitea/README.md diff --git a/docs/gitea/RELEASES.md b/开发文档/8、部署/04-Gitea门户/gitea/RELEASES.md similarity index 100% rename from docs/gitea/RELEASES.md rename to 开发文档/8、部署/04-Gitea门户/gitea/RELEASES.md diff --git a/docs/gitea/WIKI_SYNC.md b/开发文档/8、部署/04-Gitea门户/gitea/WIKI_SYNC.md similarity index 100% rename from docs/gitea/WIKI_SYNC.md rename to 开发文档/8、部署/04-Gitea门户/gitea/WIKI_SYNC.md diff --git a/docs/gitea/publish_wiki.py b/开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py similarity index 93% rename from docs/gitea/publish_wiki.py rename to 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py index 5f4c8a73ef..4b46d4c1b9 100755 --- a/docs/gitea/publish_wiki.py +++ b/开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py @@ -19,8 +19,12 @@ from pathlib import Path def _repo_root() -> Path: - # 本文件位于 docs/gitea/publish_wiki.py - return Path(__file__).resolve().parents[2] + # 本文件位于 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py + return Path(__file__).resolve().parents[4] + + +def _wiki_dir(root: Path) -> Path: + return root / "开发文档" / "8、部署" / "04-Gitea门户" / "wiki-gitea" def _creds_from_git(remote_name: str = "gitea") -> tuple[str | None, str | None]: @@ -49,7 +53,7 @@ def _auth_headers(user: str, secret: str) -> dict[str, str]: def main() -> int: root = _repo_root() - wiki = root / "docs" / "wiki-gitea" + wiki = _wiki_dir(root) if not wiki.is_dir(): print("缺少目录:", wiki, file=sys.stderr) return 1 diff --git a/docs/gitea/sync_when_online.sh b/开发文档/8、部署/04-Gitea门户/gitea/sync_when_online.sh similarity index 60% rename from docs/gitea/sync_when_online.sh rename to 开发文档/8、部署/04-Gitea门户/gitea/sync_when_online.sh index 0f4f235ded..203e541f15 100755 --- a/docs/gitea/sync_when_online.sh +++ b/开发文档/8、部署/04-Gitea门户/gitea/sync_when_online.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash # NAS/Gitea 恢复后:补推 main + 同步 Wiki set -euo pipefail -ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +ROOT="$(cd "$(dirname "$0")/../../../.." && pwd)" cd "$ROOT" echo "==> git push gitea main" git push gitea main echo "==> publish wiki" -python3 docs/gitea/publish_wiki.py +python3 "开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py" echo "Done." diff --git a/docs/wiki-gitea/Home.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md similarity index 100% rename from docs/wiki-gitea/Home.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/Home.md diff --git a/docs/wiki-gitea/Hook与Frida.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/Hook与Frida.md similarity index 100% rename from docs/wiki-gitea/Hook与Frida.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/Hook与Frida.md diff --git a/docs/wiki-gitea/下载中心.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/下载中心.md similarity index 100% rename from docs/wiki-gitea/下载中心.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/下载中心.md diff --git a/docs/wiki-gitea/完整整合手册.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/完整整合手册.md similarity index 100% rename from docs/wiki-gitea/完整整合手册.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/完整整合手册.md diff --git a/docs/wiki-gitea/快速开始.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/快速开始.md similarity index 100% rename from docs/wiki-gitea/快速开始.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/快速开始.md diff --git a/docs/wiki-gitea/更新动态.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md similarity index 100% rename from docs/wiki-gitea/更新动态.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/更新动态.md diff --git a/docs/wiki-gitea/架构一览.md b/开发文档/8、部署/04-Gitea门户/wiki-gitea/架构一览.md similarity index 100% rename from docs/wiki-gitea/架构一览.md rename to 开发文档/8、部署/04-Gitea门户/wiki-gitea/架构一览.md diff --git a/开发文档/8、部署/README.md b/开发文档/8、部署/README.md index aadb79e0c2..54ede48d4b 100644 --- a/开发文档/8、部署/README.md +++ b/开发文档/8、部署/README.md @@ -43,7 +43,7 @@ cssclasses: **仓库地址**:http://192.168.1.201:3000/fnvtk/workphone-sdk -**门户配套**:`docs/gitea/`、`docs/wiki-gitea/`、`python3 docs/gitea/publish_wiki.py` +**门户配套**:`开发文档/8、部署/04-Gitea门户/gitea/`、`开发文档/8、部署/04-Gitea门户/wiki-gitea/`、`python3 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py` --- diff --git a/开发文档/9、手册/工作手机·五图总览与使用手册.md b/开发文档/9、手册/工作手机·五图总览与使用手册.md index 6ff30ed368..891e0bf35d 100644 --- a/开发文档/9、手册/工作手机·五图总览与使用手册.md +++ b/开发文档/9、手册/工作手机·五图总览与使用手册.md @@ -1,7 +1,7 @@ # 工作手机 · 完整整合手册(补全包并入版) -> **版本**:v2.1 · **更新**:2026-05-24 -> **一句话**:把 `补全包/` 与 `工作手机SDK补全包_微信Frida/` 里散落的 Frida 闭环,**全部收编进开发文档这一份**——五图看全局,正文只补图中没有的命令、路径与验收数字。 +> **版本**:v2.2 · **更新**:2026-05-24 +> **一句话**:2026-05-18 补全包 Frida 闭环 **已全部收编进 `sdk/`**;五图看全局,正文只补图中没有的命令、路径与验收数字。 > **进度真源**:[开发进度总表.md](../10、项目管理/开发进度总表.md)(**99.5%**) > **图形风格**:[架构图风格标准.md](../2、架构/05-规范/架构图风格标准.md) @@ -63,11 +63,11 @@ JSON 回执 / 控制台 / 验收报告 | F04 | Hook 执行器 | 业务 action → RPC | `sdk/agent/hook/hook_executor.py` | ✅ | | 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` · bridge 模板见补全包 `hooks/` | ✅ | -| F08 | 自动验证 | 批量验证 + JSON/Markdown 报告 | `tools/wireless_frida_wechat_batch_verify.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/` | ✅ | -> **补全包源码仍保留**于项目根 `补全包/`、`工作手机SDK补全包_微信Frida/` 供 diff 对照;**日常开发只认 `sdk/` + 本手册**。 +> **2026-05-24 已收编**:根目录补全包目录已移除;代码与文档真源为 `sdk/` + 本手册;历史 ZIP 见 `资料/archive/`。 ### 1.2 补全包落地时间线(精华,不重复长表) @@ -76,7 +76,7 @@ JSON 回执 / 控制台 / 验收报告 | 2026-05-18 | 补全包重建 FastAPI + WS Agent + FridaManager + 验证脚本;RPC 方法名四层兼容 | | 2026-05-18~19 | 无线 Frida 真机批量验证、110 矩阵 V5 纠偏 | | 2026-05-23 | 红米真机 `xgfe65eimrrofyws` 实测,进度推至 **99.5%** | -| 2026-05-24 | 补全包文档 **全部并入本手册**,开发文档为唯一叙述入口 | +| 2026-05-24 | 补全包文档 **全部并入本手册**;根目录补全包目录 **移除**,代码收编 `sdk/` | --- @@ -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 tools/wireless_frida_wechat_batch_verify.py +python3 开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py ``` 危险动作(发消息、加好友、建群)默认跳过;需完整验收取 `--include-dangerous` 并确认测试号。 @@ -290,7 +290,7 @@ python3 tools/wireless_frida_wechat_batch_verify.py | 一键打开手册 | `开发文档/9、手册/open_handbook.sh`(HTML 优先) | | **本手册(唯一主入口)** | `开发文档/9、手册/工作手机·五图总览与使用手册.md` | | 主线代码 | `sdk/app` · `sdk/agent` · `sdk/php-sdk` | -| 补全包归档(只读对照) | `补全包/微信Frida_SDK_20260518/` · `工作手机SDK补全包_微信Frida/` | +| 历史归档 ZIP | `资料/archive/微信Frida_SDK_20260518_补全包.zip` | | 五图 + 附图原文件 | `images/workphone_fig01~09.png`(01~05 五图;06~07 无线真机;08~09 架构附) | | 架构详文 | [系统架构.md](../2、架构/01-总览/系统架构.md) | | 命令速查 | [SDK操作手册.md](02-操作指南/SDK操作手册.md) | @@ -310,7 +310,7 @@ python3 tools/wireless_frida_wechat_batch_verify.py | 日期 | 版本 | 说明 | |------|------|------| -| 2026-05-24 | **v2.1.1** | 附录:`/api/v3/frida/discover` 导入修复(`frida_wireless.py` → `sdk/agent/hook`) | +| 2026-05-24 | **v2.2** | **根目录补全包目录移除**;`wechat_hook_bridge.js` 收编 `sdk/agent/hook/`;CodeGraph 索引初始化 | | 2026-05-24 | **v2.1** | 附图本地化 fig06~09;机擎/开发文档总入口对齐 | | 2026-05-24 | **v2.0** | **补全包 + 微信Frida 补全包全文并入**;九模块路径对齐 `sdk/`;RPC 兼容 §七;无线部署 §八;架构/真机附图;去重原型 API | | 2026-05-24 | v1.2 | 五图为主、正文只补 API/命令/数字 | diff --git a/机擎/阿服/SKILL.md b/机擎/阿服/SKILL.md index cd07dedb52..93821c3333 100644 --- a/机擎/阿服/SKILL.md +++ b/机擎/阿服/SKILL.md @@ -31,6 +31,8 @@ | 数据库规范 | 开发文档/7、数据库/02-规范/数据库管理规范.md | | 数据库设计 | 开发文档/7、数据库/01-设计/数据库设计文档.md | | 一键启动脚本 | sdk/scripts/start_sdk.sh | +| 本地挂载同步 Skill | [机擎/阿服/local-mount-sync/SKILL.md](../local-mount-sync/SKILL.md) | +| Gitea Wiki 发布 | 开发文档/8、部署/04-Gitea门户/gitea/publish_wiki.py | | 检查脚本 | sdk/scripts/check_sdk.sh、机擎/scripts/check_system.sh | | Docker 编排 | sdk/docker-compose*.yml | | 应用配置 | sdk/app/config.py | diff --git a/local-mount-sync/SKILL.md b/机擎/阿服/local-mount-sync/SKILL.md similarity index 100% rename from local-mount-sync/SKILL.md rename to 机擎/阿服/local-mount-sync/SKILL.md diff --git a/机擎/阿表/开发文档结构规范/SKILL.md b/机擎/阿表/开发文档结构规范/SKILL.md index ba8984e5db..7316c69ef3 100644 --- a/机擎/阿表/开发文档结构规范/SKILL.md +++ b/机擎/阿表/开发文档结构规范/SKILL.md @@ -204,6 +204,23 @@ curl -s http://127.0.0.1:8899/api/workbench/architecture-assets | python3 -m jso --- +## 九、2026-05-24 根目录非 SDK 迁入速查 + +| 旧路径(根目录) | 新路径 | +|------------------|--------| +| `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/` | +| `local-mount-sync/SKILL.md` | `机擎/阿服/local-mount-sync/SKILL.md` | + +**Obsidian 入口**:[开发文档/00-项目总览/README.md](../../../开发文档/00-项目总览/README.md) + +**脚本 ROOT**:`开发文档/6、测试/scripts/_repo_root.py` → `repo_root()` + +--- + ## 七、触发词 ``` diff --git a/资料/archive/README.md b/资料/archive/README.md new file mode 100644 index 0000000000..afcc6c7c55 --- /dev/null +++ b/资料/archive/README.md @@ -0,0 +1,17 @@ +# 工作手机 · 历史归档 + +> **2026-05-24**:根目录 `补全包/`、`工作手机SDK补全包_微信Frida/` 已收编进主线 `sdk/` 并移除。 +> 日常开发只认 `sdk/` + [开发文档/9、手册/工作手机·五图总览与使用手册.md](../../开发文档/9、手册/工作手机·五图总览与使用手册.md)。 + +| 文件 | 说明 | +|------|------| +| `微信Frida_SDK_20260518_补全包.zip` | 2026-05-18 补全包原始 ZIP(只读对照,勿解压到根目录) | + +主线对照路径: + +- Frida 管理:`sdk/agent/hook/frida_manager.py` +- Hook 执行器:`sdk/agent/hook/hook_executor.py` +- 桥接模板:`sdk/agent/hook/wechat_hook_bridge.js` +- 无线 Agent:`sdk/agent/wireless_agent.py` +- 统一 API:`sdk/app/routers/unified.py` → `POST /api/v3/hook/execute` +- 批量验证:`开发文档/6、测试/scripts/wireless_frida_wechat_batch_verify.py`