refactor(docs): 开发文档顶层仅保留 1~10 编号目录

将原 6、测试 迁入 8、部署/05-测试验收,接口矩阵与开发日志并入 5、接口/06-验收与矩阵,项目总览与平台分析分别归位至 2、架构与 1、需求;同步 Obsidian、机擎规范与路径校验脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Manus AI
2026-05-24 09:51:14 +08:00
parent 78cfc3e918
commit dc35fb8bbc
350 changed files with 1374 additions and 585 deletions

View File

@@ -2,7 +2,7 @@
> 存客宝的 AI 手机控制引擎 — 替代奥创,统一控制微信/抖音/小红书/闲鱼等
> **完整手册**[开发文档/9、手册/工作手机·五图总览与使用手册.md](../开发文档/9、手册/工作手机·五图总览与使用手册.md)v2.1
> **仓库结构**[开发文档/00-项目总览/README.md](../开发文档/00-项目总览/README.md)
> **仓库结构**[开发文档/2、架构/01-总览/项目目录总览.md](../开发文档/2、架构/01-总览/项目目录总览.md)
## 项目模块结构

View File

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

View File

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

View File

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