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