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 详细记录项目当前状态 - 包含质量指标、已完成功能、待办事项和技术债务
This commit is contained in:
@@ -3,6 +3,8 @@ package com.mosquito.project.job;
|
||||
import com.mosquito.project.domain.Activity;
|
||||
import com.mosquito.project.domain.DailyActivityStats;
|
||||
import com.mosquito.project.service.ActivityService;
|
||||
import com.mosquito.project.persistence.entity.DailyActivityStatsEntity;
|
||||
import com.mosquito.project.persistence.repository.DailyActivityStatsRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
@@ -20,10 +22,12 @@ public class StatisticsAggregationJob {
|
||||
private static final Logger log = LoggerFactory.getLogger(StatisticsAggregationJob.class);
|
||||
|
||||
private final ActivityService activityService;
|
||||
private final DailyActivityStatsRepository dailyStatsRepository;
|
||||
private final Map<Long, DailyActivityStats> dailyStats = new ConcurrentHashMap<>();
|
||||
|
||||
public StatisticsAggregationJob(ActivityService activityService) {
|
||||
public StatisticsAggregationJob(ActivityService activityService, DailyActivityStatsRepository dailyStatsRepository) {
|
||||
this.activityService = activityService;
|
||||
this.dailyStatsRepository = dailyStatsRepository;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
|
||||
@@ -36,6 +40,8 @@ public class StatisticsAggregationJob {
|
||||
// In a real application, you would query raw event data here.
|
||||
// For now, we simulate by calling the helper method.
|
||||
DailyActivityStats stats = aggregateStatsForActivity(activity, yesterday);
|
||||
// Upsert into persistence store for analytics queries
|
||||
upsertDailyStats(stats);
|
||||
log.info("为活动ID {} 聚合了数据: {} 次浏览, {} 次分享", activity.getId(), stats.getViews(), stats.getShares());
|
||||
}
|
||||
log.info("每日活动数据聚合任务执行完成");
|
||||
@@ -52,6 +58,21 @@ public class StatisticsAggregationJob {
|
||||
stats.setNewRegistrations(50 + random.nextInt(50));
|
||||
stats.setConversions(10 + random.nextInt(20));
|
||||
dailyStats.put(activity.getId(), stats);
|
||||
// Persist
|
||||
upsertDailyStats(stats);
|
||||
return stats;
|
||||
}
|
||||
|
||||
private void upsertDailyStats(DailyActivityStats stats) {
|
||||
DailyActivityStatsEntity entity = dailyStatsRepository
|
||||
.findByActivityIdAndStatDate(stats.getActivityId(), stats.getStatDate())
|
||||
.orElseGet(DailyActivityStatsEntity::new);
|
||||
entity.setActivityId(stats.getActivityId());
|
||||
entity.setStatDate(stats.getStatDate());
|
||||
entity.setViews(stats.getViews());
|
||||
entity.setShares(stats.getShares());
|
||||
entity.setNewRegistrations(stats.getNewRegistrations());
|
||||
entity.setConversions(stats.getConversions());
|
||||
dailyStatsRepository.save(entity);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user