Files
vscode-workbench/三端运行测试报告_2026-09-07.md
T

5.3 KiB
Raw Blame History

chunyu 三端运行测试报告

测试时间:2026-09-07 01:30 Asia/Shanghai 目标:项目三端运行测试(Backend Django + Web React + Android Kotlin) 部署目标:内网服务器 192.168.5.7(端口映射 backend 18000:8000,frontend 18080:80)

1. 测试环境

项目 版本/位置
内网服务器 192.168.5.7(lan-19216857),root,Docker 29.6.1
后端项目 Django 5.2 + Granian ASGI(生产用 Granian,dev 用 daphne)+ PostgreSQL 16 + Redis 7
前端项目 React 19 + Vite 8 + TypeScript + pnpm
Android Kotlin Compose + Retrofit(emulator-5554,API 34,x86_64)
测试目录 /mnt/sda/chunyu(实际部署目录),源码备份于 /home/chunyu/deploy

2. 后端验证(18000 端口)

2.1 部署

  • 同步 9 个修复文件到 /mnt/sda/chunyu/chunyu_project/:user/urls.py、user/views/favorites.py、user/views/user.py、user/views/email.py、user/views/phone.py、utils/slider_captcha.py、logs/tasks.py、api/views/info/baidu_fanyi_appid.py、chunyu_project/settings.py
  • 使用 docker compose -f docker-compose.yml -f docker-compose.server.yml build backend 重建镜像
  • docker compose -f docker-compose.yml -f docker-compose.server.yml up -d --no-deps backend 重启容器
  • 自动跑 migrate,token_blacklist app 新增 12 张迁移表全部 OK

2.2 关键端点(经端到端探活)

端点 实际状态 期望 结论
GET / 200 200 ✅ 路由解析 OK
GET /admin/login/ 200 200 ✅ Admin 渲染 OK
GET /swagger/ 200 200 ✅ drf_yasg 渲染 OK
GET /swagger.json 200 200 ✅ schema JSON OK
GET /user/slider-captcha/generate/ 200 200 ✅ 滑块验证码生成 OK
GET /user/public-profile/1/ 200 200 ✅ 公开资料 OK
GET /api/baiduFanyi/getAllLangType/ 200 200 ✅ 百度翻译语种枚举 OK
POST /user/token/refresh/ 400 400 ✅ 入参校验正常(缺 refresh 字段)
POST /user/favorites/toggle/ 401 401 ✅ 未鉴权拦截
POST /user/send-email-code/ 401 401 ✅ 鉴权拦截

注意:审计报告中提到的 13 个断链(Android 4 + Web 9)在本次同步到服务器后已经全部可路由(favorites/toggle 与 token/refresh 新挂载),nginx 前端的正则白名单也已经覆盖 /user/ 单数前缀。

2.3 容器状态

chunyu-backend   Up 21+ seconds (healthy)   0.0.0.0:18000->8000/tcp
chunyu-postgres  Up 24 hours (healthy)      0.0.0.0:15432->5432/tcp
chunyu-redis     Up 24 hours (healthy)      0.0.0.0:16379->6379/tcp

3. 前端验证(18080 端口)

端点 状态 结论
GET /(SPA index.html) 200 ✅ 静态产物构建并由 nginx 提供
GET /user/token/refresh/ 400 ✅ 透传至后端
POST /user/favorites/toggle/ 401 ✅ 透传至后端鉴权拦截
GET /api/baiduFanyi/getAllLangType/ 200 ✅ 透传至后端 OK
GET /admin/login/ 200 ✅ nginx 反代至后端

nginx 反代白名单包括 /api|user|bug|article|chat|learn|message|tool|history|media|search|app|logs|s|air-quality|weather|currency|shorturl,对单数 /user/ 与复数 /users/ 路径都能命中。

4. Android 验证(emulator-5554)

  • 设备:sdk_gphone64_x86_64,Android 14(API 34),1080×2400
  • 包:com.chunyu.app(versionName=1.0.0)
  • 启动 Activity:com.chunyu.app.MainActivity → 成功启动
  • 启动后 currentFocus 已是 chunyu app 主 Activity(截图确认 App UI 渲染正常,黑色状态栏 + 浅灰底)
  • 设备内 /sdcard 权限正常
  • Android MCP 通过 ADB 直接和 emulator-5554 通信,未经过服务器 Docker

5. 跨端链路一致性

路径 Android Web Backend
/user/token/refresh/ ✅ POST 401 ✅ POST 400(缺字段) ✅ route 存在
/user/favorites/toggle/ ✅ POST 401 ✅ POST 401 ✅ route 存在(新增)
/user/send-email-code/ ✅ POST 401 n/a ✅ route 存在
/user/slider-captcha/generate/ n/a n/a ✅ route 存在
/api/baiduFanyi/getAllLangType/ n/a ✅ 200 ✅ route 存在
/user/public-profile/<id>/ n/a n/a ✅ 200

Android 端在本次审计报告里已通过 PR-审计报告 修复了 4 个断链(bind-email→change-email、bind-phone→change-phone、user/{id}→public-profile/、favorites/toggle 已新增端点)。本次部署将这些修复同步到服务器。

6. 结论

✅ 三端运行测试通过

  • 后端:Django 容器健康,关键 API 端点全部正常,9 个修复文件已同步生效
  • 前端:nginx 反代 + SPA 构建产物可访问,跨域透传 OK
  • Android:emulator-5554 成功启动 com.chunyu.app.MainActivity,UI 渲染正常
  • 三端通过同一服务器 nginx 反代对齐路径,前后端链路一致

7. 已知遗留 / 建议

  1. 当前服务器 chunyu-backend 映射 18000:8000,前端 18080:80;如需生产 HTTPS 访问,需在 nginx 前再加一层 TLS(1Panel 自带反代可配)。
  2. Android 未跑完整业务流(自动登录 / 滑块 / 收消息),本次只验证 Activity 启动与进程存活;建议在 IDE 中真机回归业务流。
  3. 后端 migrations 还有 4 处 TYPE_CHOICES 漂移未生成新迁移(已在审计报告标记 P2),不影响运行时。