fix(M-AI-08): correct Prisma field names in snapshot builder
- DailyLearningActivity.date -> activityDate - ReviewLog.rating is String, not Int (use parseInt) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
fe277b4667
commit
fa1262cb93
@ -183,7 +183,7 @@ export class LearningAnalysisSnapshotBuilder {
|
|||||||
private async aggregateStudyMetrics(userId: string, start: Date, end: Date) {
|
private async aggregateStudyMetrics(userId: string, start: Date, end: Date) {
|
||||||
try {
|
try {
|
||||||
const activities = await this.prisma.dailyLearningActivity.findMany({
|
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 },
|
select: { durationSeconds: true, activeRecallCount: true, reviewCount: true, readingSeconds: true },
|
||||||
});
|
});
|
||||||
const totalDuration = activities.reduce((s, a) => s + (a.durationSeconds || 0), 0);
|
const totalDuration = activities.reduce((s, a) => s + (a.durationSeconds || 0), 0);
|
||||||
@ -208,7 +208,7 @@ export class LearningAnalysisSnapshotBuilder {
|
|||||||
take: 200,
|
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;
|
const accuracy = ratings.length > 0 ? ratings.filter(r => r >= 3).length / ratings.length : 0;
|
||||||
return {
|
return {
|
||||||
reviewDueCount: dueCount,
|
reviewDueCount: dueCount,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user