chore: 新增 .gitignore 排除开发文档,同步代码与构建产物

Made-with: Cursor
This commit is contained in:
卡若
2026-03-16 09:21:39 +08:00
parent fa9903d235
commit 85ce2422d1
40 changed files with 2315 additions and 947 deletions

View File

@@ -0,0 +1,44 @@
# 2026-03-15 Soul 创业派对全站深度测试
## 问题背景
对 Soul 创业派对项目进行首次全站深度测试(只检测不修改),覆盖管理端 20+ 页面、35 个 API 端点、25 个小程序页面、25 张数据库表。
## 解决过程
### 测试方法
1. 环境检查:确认后端/前端/数据库运行状态
2. 管理端浏览器测试:逐页逐按钮截图检查
3. API 端点测试curl 逐个测试 35 个端点,含安全边界测试
4. 小程序代码审查25 个页面 + 8 个工具文件全量代码阅读
5. 数据库一致性检查:交叉验证各 API 数据
### 关键发现42 个问题)
- 严重 11 个OSS 密钥泄露、登录守卫缺失、小程序模块混用、废弃 API
- 高 13 个硬编码、API 失败伪装成功、分页缺失
- 中 12 个:调试日志残留、模拟数据未清理
- 低 6 个:版本号未设置等
## 可提炼规则
### 安全测试
1. **密钥脱敏是硬性规则**:任何返回配置的 API密钥类字段必须脱敏
2. **SPA 路由守卫必查**:直接访问后台路径测试
3. **上传接口安全测试**:非图片文件、超大文件、空文件
### API 测试
4. **响应字段名不能假设**:先 print keys() 再解析,不同端点可能用 data/results/orders/records
5. **分页必须翻页验证**:测第一页也测 page=2
6. **交叉验证**stats 的总数 vs list API 的实际条数
### 小程序测试
7. **废弃 API 年检制度**:每年核对微信基础库废弃列表
8. **模块语法统一检查**grep -rn "export default" 快速排查
9. **死代码扫描**utils/ 每个文件是否被 pages/ 引用
### 数据库测试
10. **空表不代表无问题**:空表可能是同步逻辑失效
## 适用角色
- target_roles: ["软件测试", "团队"]

View File

@@ -2,6 +2,7 @@
| 日期 | 摘要 | 文件 |
|------|------|------|
| 2026-03-15 | **全站深度测试42个问题**管理端20+页面截图测试、35个API端点、25个小程序页面代码审查、25张数据库表严重11/高13/中12/低6沉淀安全测试/API测试/小程序测试/数据库测试方法论 | [2026-03-15-全站深度测试42问题.md](./2026-03-15-全站深度测试42问题.md) |
| 2026-03-10 | 管理端迁移 Mycontent-temp菜单一致性、隐藏路由可达性、鉴权与跳转回归 | [2026-03-10.md](./2026-03-10.md) |
| 2026-03-05 | 分支合并后回归清单制定;三端联调验证 | [2026-03-05.md](./2026-03-05.md) |
| 2026-03-05 | 文章详情@某人@ 展示与添加好友用例、联调与回归点 | [2026-03-05.md](./2026-03-05.md) |
| 2026-03-10 | 管理端迁移 Mycontent-temp菜单一致性、隐藏路由可达性、鉴权与跳转回归 | [2026-03-10.md](./2026-03-10.md) |

View File

@@ -1,72 +1,225 @@
---
name: soul-tester
description: Soul 创业派对测试人员。功能测试、回归测试、三端小程序、管理端、API联调验证。Use when 测试, 测试用例, 回归测试, 功能测试, QA.
description: Soul 创业派对测试人员。全站深度测试、功能测试、回归测试、三端联调验证、安全审计。Use when 测试, 测试用例, 回归测试, 功能测试, QA, 全站测试, 深度测试.
version: "2.0"
updated: "2026-03-15"
---
# Soul 创业派对 - 测试人员 Skill
# Soul 创业派对 - 测试 Skill v2.0
当你在**功能测试、回归测试、三端联调验证**时,使用本 Skill。测试人员负责小程序、管理端、API 的功能与集成测试,不参与源码编写
> **定位**Soul 创业派对项目的专业测试规范。基于 2026-03-15 全站深度测试经验沉淀覆盖管理端、小程序、API、数据库四个维度
>
> **核心原则**:逐页逐按钮逐功能,三端隔离验证,数据交叉校验,安全必查。
---
## 1. 职责范围
## 1. 测试范围
| 职责 | 说明 | 产出 |
|------|------|------|
| 功能测试 | 按需求验证功能正确性 | 测试用例、通过/失败记录 |
| 回归测试 | 变更后验证原有功能未破坏 | 回归清单、测试报告 |
| 三端联调 | 小程序↔API、管理端↔API 数据流验证 | 联调记录 |
| Bug 反馈 | 复现步骤、环境、期望 vs 实际 | Bug 列表、复现说明 |
| 端 | 目录 | API 路径 | 数据表 |
|----|------|----------|--------|
| 管理端 | soul-admin/ | /api/admin/*, /api/db/* | 25 张表 |
| 小程序 | miniprogram/ | /api/miniprogram/* | 同上 |
| API 后端 | soul-api/ | 全部 | 同上 |
| 数据库 | MySQL | — | users, chapters, orders 等 25 张 |
---
## 2. 测试范围
## 2. 测试执行检查清单(每次必做)
| 端 | 目录 | API 路径 | 重点 |
|----|------|----------|------|
| 小程序 | miniprogram/ | /api/miniprogram/* | 登录、支付、推荐码、VIP、阅读、分享 |
| 管理端 | soul-admin/ | /api/admin/*、/api/db/* | 内容管理、用户、订单、提现、VIP 角色、推广设置 |
| API 后端 | soul-api/ | 全部 | 接口契约、鉴权、分润、支付回调 |
### 2.1 环境检查Step 0
- [ ] 后端 API 运行(`curl localhost:8080/health`
- [ ] 管理端前端运行(`curl localhost:5174`
- [ ] 数据库连接正常(通过 /api/book/stats 间接验证)
- [ ] OSS 配置状态(/api/admin/settings → ossConfig 有值)
### 2.2 管理端页面检查24 个页面/子Tab
**登录**
- [ ] 登录页 UI 完整(表单、按钮、品牌标识)
- [ ] 错误凭据有明确错误提示
- [ ] 正确凭据登录成功跳转
- [ ] **路由守卫**:未登录直接访问 /dashboard 应跳转 /login
**仪表盘**
- [ ] 4 个统计卡片数据正确(用户数、收入、订单数、转化率)
- [ ] 最近订单列表有数据
- [ ] 新注册用户列表**用户名不应显示为"-"**
- [ ] 分类标签点击统计有数据或合理空状态提示
**内容管理**5 个 Tab
- [ ] 章节管理:树结构完整,篇/章/节层级
- [ ] 内容排行榜:排名、浏览量、付费数、热度完整
- [ ] 内容搜索:搜索框可用
- [ ] 链接人与事AI 列表展示
- [ ] 链接标签:标签 CRUD
**用户管理**2 个 Tab
- [ ] 用户列表:昵称、手机号、付费状态、分销、分页
- [ ] 用户旅程8 阶段漏斗数据
**找伙伴**5 个 Tab
- [ ] 数据统计匹配次数、用户数、AI 获客
- [ ] 匹配记录:列表展示
- [ ] 匹配池设置:来源池、基础设置
- [ ] 导师管理:导师列表和价格
- [ ] 团队招募:招募记录
**推广中心**5 个 Tab
- [ ] 数据概览:今日/本月/累计统计
- [ ] 订单管理:订单列表、搜索、分页
- [ ] 绑定管理:绑定关系列表
- [ ] 提现审核:提现记录和审核功能
- [ ] 推广设置:收益率、提现规则
**系统设置**4 个 Tab
- [ ] 系统设置功能开关、价格、OSS、小程序配置
- [ ] 作者详情:基本信息、统计、亮点
- [ ] 管理员:管理员列表
- [ ] API 文档:接口文档完整
### 2.3 API 端点检查35+ 端点)
**公开 API无需 Token**
- [ ] GET /health → 200
- [ ] GET /api/config → 200配置完整
- [ ] GET /api/book/all-chapters → 200章节数与 DB 一致
- [ ] GET /api/book/hot → 200热度排行有数据
- [ ] GET /api/book/recommended → 200
- [ ] GET /api/book/search?q=创业 → 200有结果注意返回字段是 `results` 不是 `data`
- [ ] GET /api/book/search?q= → 200空结果
- [ ] GET /api/book/stats → 200交叉验证章节数
**小程序 API无需 Token**
- [ ] GET /api/miniprogram/config → 200
- [ ] GET /api/miniprogram/book/hot → 200
- [ ] GET /api/miniprogram/book/stats → 200
- [ ] GET /api/miniprogram/mentors → 200
- [ ] GET /api/miniprogram/vip/members → 200
**管理端 API需 Token**
- [ ] POST /api/admin → 登录获取 token
- [ ] GET /api/admin/dashboard/stats → 200
- [ ] GET /api/admin/chapters → 200
- [ ] GET /api/admin/users → 200
- [ ] GET /api/admin/orders → 200注意返回字段 `orders` 不是 `data`
- [ ] GET /api/admin/track/stats → 200
- [ ] GET /api/admin/settings → 200**检查 OSS 密钥是否脱敏**
- [ ] GET /api/admin/referral-settings → 200
- [ ] GET /api/admin/author-settings → 200
**DB API需 Token**
- [ ] GET /api/db/book?action=list → 200
- [ ] GET /api/db/ckb-leads → 200
- [ ] GET /api/db/ckb-plan-stats → 200
- [ ] GET /api/db/vip-roles → 200
- [ ] GET /api/db/mentors → 200
- [ ] GET /api/db/persons → 200
**安全测试**
- [ ] 无 Token → /api/admin/settings → 401
- [ ] 错误 Token → /api/admin/settings → 401
- [ ] POST /api/admin 空 body → 错误提示
- [ ] POST /api/upload 非图片 → 拒绝
### 2.4 数据库检查
- [ ] 25 张表结构完整AutoMigrate 无报错)
- [ ] 关键数据量核对chapters/users/orders 与 API 一致
- [ ] 无重复订单号
- [ ] stats vs all-chapters 章节数交叉验证
- [ ] orders vs dashboard 收入交叉验证
### 2.5 小程序代码审查25 个页面)
- [ ] 所有页面 API 路径遵循 `/api/miniprogram/*`(不混调 admin/db
- [ ] 无废弃 API 使用wx.getUserProfile / wx.createCanvasContext
- [ ] 模块导入方式统一(不混用 import/require 和 export default/module.exports
- [ ] 无未使用工具文件(检查 utils/ 下每个文件是否被引用)
- [ ] 无硬编码baseUrl/appId/mchId/微信号/日期)
- [ ] 无 mock/test/debug 代码残留
- [ ] 无过多 console.log 调试日志
- [ ] 核心流程完整登录→阅读→购买→VIP→分销→提现→匹配
---
## 3. 测试原则
## 3. 安全必查项(每次必做)
- **路径隔离**:小程序只调 miniprogram管理端只调 admin/db不得混用。
- **鉴权**:需登录接口需带 token401 时正确跳转登录。
- **数据流**下单→支付→回调→分润推荐码绑定→访问记录VIP 资料保存→排行展示。
- **变更检查**:开发完成变更后,可参考 soul-change-checklist 做关联检查,避免遗漏。
| 检查项 | 方法 | 标准 |
|--------|------|------|
| OSS 密钥脱敏 | GET /api/admin/settings 查 ossConfig | accessKeySecret 不应返回明文 |
| 管理端登录守卫 | 直接访问 /dashboard | 应跳转 /login |
| Token 有效性 | 过期/错误 Token 访问管理 API | 返回 401 |
| 上传文件类型限制 | POST /api/upload 上传 .txt | 应拒绝 |
| 支付参数来源 | 审查小程序支付代码 | 参数必须从后端获取 |
| 小程序敏感信息 | 审查 app.js | appId/mchId 不应硬编码 |
---
## 4. 常用测试场景
## 4. 经验库(持续沉淀)
| 场景 | 验证点 |
|------|--------|
| 小程序登录 | 微信登录、手机号、token 持久化 |
| 购买与支付 | 下单、微信支付、回调更新、购买状态 |
| 推荐与分润 | 扫码/分享带 ref、绑定、分润计算 |
| VIP 功能 | 开通、资料填写、头像上传、保存、排行展示 |
| 管理端 CRUD | 列表、搜索、分页、新增、编辑、删除 |
| 提现 | 申请、审核、状态流转、到账确认 |
### 4.1 API 响应字段陷阱
不同端点返回字段名不一致,测试脚本解析前先确认结构:
| 端点 | 数据字段 | 总数字段 |
|------|----------|----------|
| /api/book/search | `results` | `total` |
| /api/admin/orders | `orders` | `total` |
| /api/admin/users | `records` | `total` |
| /api/admin/settings | 直接在根层 | — |
| /api/book/hot | `data` | — |
| /api/book/stats | `data` | — |
### 4.2 OSS 上传测试四步法
1. **配置验证**GET /api/admin/settings → ossConfig 有值
2. **上传测试**POST /api/upload -F file=@test.png → 返回 storage=oss
3. **URL 可访问**curl 返回的 URL → HTTP 200
4. **ACL 策略**:阿里云新账号默认禁止公共访问,需用签名 URL
### 4.3 小程序代码审查 grep 命令
```bash
# 废弃 API 检查
grep -rn "getUserProfile\|createCanvasContext" miniprogram/
# 模块语法混用
grep -rn "export default" miniprogram/utils/
# 硬编码检查
grep -rn "apiBase\|hardcode\|28533368\|2025-01-01" miniprogram/
# mock/test 残留
grep -rn "mock\|Mock\|测试模式\|test mode" miniprogram/pages/
# console.log 统计
grep -rc "console.log" miniprogram/pages/ | grep -v ":0$"
```
### 4.4 通用经验2026-03-15 沉淀)
| 经验 | 详情 |
|------|------|
| 密钥返回前端必须脱敏 | 后端 settings API 返回 ossConfig/apiKey 等时secret 类字段只返回 `****` |
| SPA 管理端必须有路由守卫 | 未登录用户访问任何管理页面必须跳转 /login |
| API 失败绝不伪装成功 | catch 中不可设置 success=true必须真实反馈 |
| 上线前清理 mock/test 代码 | `grep -r "mock\|test mode\|测试模式"` |
| 上线前清理 console.log | `grep -rc "console.log"` |
| 微信 API 每年检查废弃 | wx.getUserProfile(2022)、wx.createCanvasContext(即将) |
| 三端路径隔离是底线 | 小程序只调 miniprogram管理端只调 admin/db |
| 聚合统计必须交叉验证 | stats 的数字要与 list API 返回的实际条数对比 |
| 分页必须实际翻页验证 | 不只测第一页,要测 page=2 和超出范围的 page |
| 签名 URL 有有效期 | OSS 私有 bucket 用签名 URL注意设置足够长的过期时间 |
---
## 5. 产出与协同
| 产出 | 说明 |
| 产出 | 路径 |
|------|------|
| 测试用例 | 场景、步骤、期望结果 |
| 测试报告 | 通过率、失败用例、环境信息 |
| Bug 列表 | 复现步骤、关联端、严重程度 |
| 测试报告 | `开发文档/全站测试报告_YYYYMMDD.md` |
| 截图存档 | 浏览器测试自动截图 |
| 飞书通知 | 测试完成后发飞书开发群 |
| 经验沉淀 | 本文件 §4 + `.cursor/agent/软件测试/evolution/` |
**协同**:发现 Bug 时与对应开发角色(小程序/管理端/后端)对接;验收前完成测试并输出报告。
---
## 6. 何时使用本 Skill
- 编写或执行测试用例时
- 做回归测试、功能验证时
- 三端联调、接口契约验证时
- 说「测试」「测试用例」「回归测试」「功能测试」「QA」时
**协同**:发现 Bug 时与对应角色对接(小程序/管理端/后端)验收前完成测试并输出报告。