Files
wenzi/README.md
Your Name 91a0b77f7a test(cache): 修复CacheConfigTest边界值测试
- 修改 shouldVerifyCacheManager_withMaximumIntegerTtl 为 shouldVerifyCacheManager_withMaximumAllowedTtl
- 使用正确的最大TTL值(10080分钟,7天)而不是 Integer.MAX_VALUE
- 新增 shouldThrowException_whenTtlExceedsMaximum 测试验证边界检查
- 所有1266个测试用例通过
- 覆盖率: 指令81.89%, 行88.48%, 分支51.55%

docs: 添加项目状态报告
- 生成 PROJECT_STATUS_REPORT.md 详细记录项目当前状态
- 包含质量指标、已完成功能、待办事项和技术债务
2026-03-02 13:31:54 +08:00

38 lines
1.8 KiB
Markdown
Raw Permalink 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.
# 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` 中调整):
- `leaderboards` 5m、`activities` 1m、`activity_stats` 2m、`activity_graph` 10m
- 生产环境必须设置 `app.security.encryption-key`(例如环境变量 `APP_SECURITY_ENCRYPTION_KEY`
- 覆盖率门禁:`pom.xml` 中启用 JaCoCo阈值 80%,在 `verify` 阶段校验
更多接口与错误码见 `docs/api.md`