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

100 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<id>、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),不影响运行时。