chore: 根目录非 SDK 迁入开发文档与机擎,补项目总览图

将 docs/tools/截图/挂载 Skill 等从根目录归位到 8部署/6测试/机擎阿服;
修复 publish_wiki、sync_when_online、run_live_verification 路径;
新增 00-项目总览 与 Obsidian 配色扩展;gitignore 仅忽略根 /scripts/。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Manus AI
2026-05-24 09:15:37 +08:00
parent dc06f18f91
commit 3cd1e99742
131 changed files with 340 additions and 110 deletions

2
.gitignore vendored
View File

@@ -3,7 +3,7 @@
# 不上传的目录
.cursor/
scripts/
/scripts/
*.py[cod]
__pycache__/
.idea/

View File

@@ -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;

View File

@@ -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"
]
}

View File

@@ -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
## GiteaActions / 百科 / 发行版 / 软件包
- **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 解析(本地开发机可用)
```

View File

@@ -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)
# 结果文件

View File

@@ -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
├── 开发文档/ ★ 文档真源110 + 平台分析 + 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)

View File

@@ -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`、各层 READMESkill §九 根目录迁入速查
- [x] Obsidian `workphone-devdoc.css` 扩展00总览/6测试/scripts/机擎/sdkworkspace 去旧路径
- [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
### 执行人:阿端(手册)+ 阿桥(接口收敛)+ 阿表(索引)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -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`

View File

@@ -0,0 +1,6 @@
# screenshots
| 子目录 | 来源 |
|--------|------|
| `verification_110/` | sdk/tests/run_live_verification 与 110 项视觉验收 |
| `test_img/` | 临时测试图 |

View File

Before

Width:  |  Height:  |  Size: 510 KiB

After

Width:  |  Height:  |  Size: 510 KiB

View File

Before

Width:  |  Height:  |  Size: 500 KiB

After

Width:  |  Height:  |  Size: 500 KiB

View File

Before

Width:  |  Height:  |  Size: 501 KiB

After

Width:  |  Height:  |  Size: 501 KiB

View File

@@ -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/`

View File

@@ -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")

View File

@@ -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'

View File

@@ -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)

View File

@@ -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'

View File

@@ -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')

View File

@@ -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')

View File

@@ -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))

View File

@@ -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 符号扫描结果仅作为接口矩阵初稿下一步还必须结合真实调用链和真机证据复核
| 指标 | 数量 |
|---|---:|

View File

@@ -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'

View File

@@ -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'

View File

@@ -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)

Some files were not shown because too many files have changed in this diff Show More