fix(M-AI-08): correct Prisma field names in snapshot builder
Some checks failed
Deploy API Server / build-and-unit (push) Successful in 38s
Deploy API Server / current-integration (push) Successful in 2m7s
Deploy API Server / backward-compat (push) Successful in 0s
Deploy API Server / deploy (push) Failing after 49s

- DailyLearningActivity.date -> activityDate
- ReviewLog.rating is String, not Int (use parseInt)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
wangdl 2026-06-22 22:06:18 +08:00
parent fe277b4667
commit fa1262cb93

View File

@ -183,7 +183,7 @@ export class LearningAnalysisSnapshotBuilder {
private async aggregateStudyMetrics(userId: string, start: Date, end: Date) {
try {
const activities = await this.prisma.dailyLearningActivity.findMany({
where: { userId, date: { gte: start, lte: end } },
where: { userId, activityDate: { gte: start, lte: end } },
select: { durationSeconds: true, activeRecallCount: true, reviewCount: true, readingSeconds: true },
});
const totalDuration = activities.reduce((s, a) => s + (a.durationSeconds || 0), 0);
@ -208,7 +208,7 @@ export class LearningAnalysisSnapshotBuilder {
take: 200,
}),
]);
const ratings = reviews.filter(r => typeof r.rating === 'number').map(r => r.rating as number);
const ratings = reviews.map(r => parseInt(r.rating, 10)).filter(n => !isNaN(n));
const accuracy = ratings.length > 0 ? ratings.filter(r => r >= 3).length / ratings.length : 0;
return {
reviewDueCount: dueCount,