Your Name 5880b4dbb2 feat: 完成仪表盘和导出功能
- DashboardController: 实现完整的后端API
  - /api/dashboard - 仪表盘数据
  - /api/dashboard/kpis - KPI统计
  - /api/dashboard/activities - 活动摘要
  - /api/dashboard/todos - 待办事项
  - /api/dashboard/export - 导出CSV
  - /api/dashboard/kpis/export - KPI导出
  - /api/dashboard/activities/export - 活动导出

- dashboard.ts: 前端服务
  - 完整的API调用封装
  - 导出功能支持
  - 下载工具函数

- 更新任务状态:
  - TASK-401-405: 仪表盘模块100%
  - TASK-501-502: 单元测试

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-05 21:55:47 +08:00
2026-03-05 21:55:47 +08:00
2026-03-05 21:55:47 +08:00

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
    • 使用(仅凭明文密钥,无需 IDPOST /api/v1/api-keys/validate
  • 用户端体验

    • 邀请信息:GET /api/v1/me/invitation-info
    • 邀请好友分页:GET /api/v1/me/invited-friends
    • 海报图片:GET /api/v1/me/poster/image
    • 海报 HTMLGET /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

Description
蚊子项目 - Mosquito Project
Readme 5.8 MiB
Languages
Java 60.6%
Shell 39.4%