feat: 首次推送到Gitea - 完整项目代码 + 安全加固 + 知识库

This commit is contained in:
ZhuiGuangAI Dev
2026-10-02 18:52:49 +08:00
parent b44601bb66
commit 8205ae709c
1185 changed files with 49841 additions and 12802 deletions
+174
View File
@@ -0,0 +1,174 @@
# 测试体系模块
## 概述
追光AI使用 Vitest 作为测试框架,已建立 5 个测试套件覆盖 132 个测试,目标覆盖率 80%+。测试文件位于 `src/__tests__/` 目录。
---
## 基础设施
### vitest.config.ts
```typescript
import { defineConfig } from "vitest/config";
import path from "path";
export default defineConfig({
test: {
globals: true,
environment: "node",
setupFiles: ["./vitest.setup.ts"],
include: ["src/__tests__/**/*.test.ts"],
coverage: {
provider: "v8",
reporter: ["text", "json", "html"],
thresholds: {
lines: 80,
branches: 80,
functions: 80,
statements: 80,
},
},
},
resolve: {
alias: { "@": path.resolve(__dirname, "./src") },
},
});
```
### vitest.setup.ts
- 全局 mock 配置
- Prisma mock 初始化
- 测试环境清理
### tsconfig 配置
```json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}
```
---
## 测试套件
### 1. level-config.test.ts
- **测试数量**: 28
- **覆盖**: `src/lib/level-config.ts`
- **测试内容**:
- 20个等级边界值检查
- 等级徽章映射
- 每日限额表
- 积分→等级转换
- 下一级积分计算
### 2. elo.test.ts
- **测试数量**: 24
- **覆盖**: ELO 评分计算逻辑
- **测试内容**:
- 基础 ELO 计算
- K因子变化
- 平局处理
- 极端分差
### 3. forum-hot.test.ts
- **测试数量**: 30
- **覆盖**: 论坛热度排序算法
- **测试内容**:
- 热度公式计算
- 时间衰减
- 回复加权
- 点赞加权
- 置顶优先
### 4. achievements.test.ts
- **测试数量**: 26
- **覆盖**: 成就系统逻辑
- **测试内容**:
- 成就解锁条件
- 进度计算
- 徽章授予
- 边界条件
### 5. points-reward.test.ts
- **测试数量**: 24
- **覆盖**: `src/lib/points-reward.ts`
- **测试内容**:
- 各操作积分奖励
- 每日上限检查
- Streak freeze 逻辑
- 商店购买消耗
- 等级升级触发
---
## 运行命令
```bash
# 运行所有测试
npx vitest run
# 监听模式
npx vitest
# 生成覆盖率报告
npx vitest run --coverage
# 运行特定测试文件
npx vitest run src/__tests__/level-config.test.ts
# UI 模式
npx vitest --ui
```
---
## 测试规范
### 文件命名
- 测试文件: `*.test.ts`
- 目录: `src/__tests__/`
### 测试结构
```typescript
import { describe, it, expect, beforeEach, vi } from "vitest";
describe("模块名", () => {
beforeEach(() => {
// setup
});
describe("功能点", () => {
it("应该满足某条件", () => {
// arrange
// act
// assert
});
it("应该处理边界情况", () => {
// ...
});
it("应该优雅处理错误", () => {
// ...
});
});
});
```
### 测试原则
- 每个 `it` 测试单一行为
- 使用 `describe` 组织相关测试
- Arrange → Act → Assert 三段式
- 覆盖正常路径 + 边界条件 + 错误路径
- 禁止 `.skip` 除非有明确 TODO 注释
- Mock 外部依赖(Prisma、外部 API)
### 覆盖率目标
| 指标 | 目标 |
|------|------|
| 行覆盖率 | ≥ 80% |
| 分支覆盖率 | ≥ 80% |
| 函数覆盖率 | ≥ 80% |
| 语句覆盖率 | ≥ 80% |