376bbcd99a99e92b7e1581fea13eb1fe6464ffbd
- 新增calculateReward边界条件测试(null/empty tiers, 无达成层级) - 新增calculateMultiLevelReward的null规则测试 - 新增generateLeaderboardCsv的topN边界条件测试 - 新增getActivityGraph的maxDepth和limit边界条件测试 - 新增API密钥验证异常路径测试(revoked, invalid hash, missing) - 新增文件上传null contentType测试 - 新增活动访问权限额外场景测试 覆盖率提升: - 分支覆盖率: 57.8% → 61% (+3.2%) - Service包: 74% → 83% (+9%) - 指令覆盖率: 84% → 85% (+1%) - 行覆盖率: 90.56% → 92% (+1.44%) 距离70%目标还需55个分支,完成度87%
mosquito
Spring Boot 3 (Java 17) 应用,用于活动传播、邀请奖励与运营分析。
快速开始
- 构建与测试:
mvn -B -DskipTests=false clean verify(将触发 Flyway 迁移与覆盖率门禁) - 运行(开发):
mvn spring-boot:run(默认dev配置)
关键端点
-
所有 JSON 响应统一为
ApiResponse,业务数据位于data字段。 -
/api/**需要X-API-Key;/api/v1/me/**、/api/v1/activities/**、/api/v1/api-keys/**、/api/v1/share/**还需要Authorization: Bearer <token>。 -
API 密钥
- 创建:
POST /api/v1/api-keys - 吊销:
DELETE /api/v1/api-keys/{id} - 使用(按 ID 校验并打点):
POST /api/v1/api-keys/{id}/use - 使用(仅凭明文密钥,无需 ID):
POST /api/v1/api-keys/validate
- 创建:
-
用户端体验
- 邀请信息:
GET /api/v1/me/invitation-info - 邀请好友分页:
GET /api/v1/me/invited-friends - 海报图片:
GET /api/v1/me/poster/image - 海报 HTML:
GET /api/v1/me/poster/html - 海报配置:
GET /api/v1/me/poster/config
- 邀请信息:
-
缓存管理(需要管理令牌)
- 清空缓存:
DELETE /api/v1/cache/{cacheName} - 失效键:
DELETE /api/v1/cache/{cacheName}/{key}
- 清空缓存:
运维与安全
- 配置管理令牌:
app.cache.admin-token(通过环境变量或配置文件注入) - 缓存失效限流:
app.cache.rate-limit-per-minute(默认 60) - Redis 缓存分组 TTL(可在
CacheConfig中调整):leaderboards5m、activities1m、activity_stats2m、activity_graph10m
- 生产环境必须设置
app.security.encryption-key(例如环境变量APP_SECURITY_ENCRYPTION_KEY) - 覆盖率门禁:
pom.xml中启用 JaCoCo,阈值 80%,在verify阶段校验
更多接口与错误码见 docs/api.md。
Description
Languages
Java
60.6%
Shell
39.4%