Skip to content

Commit ee5fa13

Browse files
committed
Merge branch 'feature/knowledge-retention'
2 parents 0394ea3 + 8bac971 commit ee5fa13

3 files changed

Lines changed: 368 additions & 133 deletions

File tree

apps/server/src/services/review.service.ts

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export class ReviewService {
7373
order: i,
7474
});
7575

76-
items.push({ itemId, sessionId, memoId: memo.memoId, question, order: i });
76+
items.push({ itemId, sessionId, memoId: memo.memoId, memoContent: memo.content, question, order: i });
7777
}
7878

7979
return { sessionId, uid, scope: dto.scope, scopeValue: dto.scopeValue, status: 'active', items, createdAt: new Date().toISOString() };
@@ -89,7 +89,7 @@ export class ReviewService {
8989
.where(eq(reviewItems.sessionId, sessionId))
9090
.orderBy(reviewItems.order);
9191

92-
return this.toSessionDto(session, items);
92+
return await this.toSessionDto(session, items);
9393
}
9494

9595
async submitAnswer(uid: string, sessionId: string, dto: SubmitAnswerDto): Promise<SubmitAnswerResponseDto> {
@@ -121,12 +121,24 @@ export class ReviewService {
121121
.set({ status: 'completed', score, completedAt: new Date() })
122122
.where(eq(reviewSessions.sessionId, sessionId));
123123

124-
const itemDtos = items.map((i) => ({
125-
itemId: i.itemId, sessionId: i.sessionId, memoId: i.memoId,
126-
question: i.question, userAnswer: i.userAnswer ?? undefined,
127-
aiFeedback: i.aiFeedback ?? undefined, mastery: i.mastery ?? undefined,
128-
order: i.order,
129-
}));
124+
// Fetch memo content for each item
125+
const itemDtos = await Promise.all(
126+
items.map(async (i) => {
127+
const [memo] = await db.select({ content: memos.content })
128+
.from(memos).where(eq(memos.memoId, i.memoId));
129+
return {
130+
itemId: i.itemId,
131+
sessionId: i.sessionId,
132+
memoId: i.memoId,
133+
memoContent: memo?.content,
134+
question: i.question,
135+
userAnswer: i.userAnswer ?? undefined,
136+
aiFeedback: i.aiFeedback ?? undefined,
137+
mastery: i.mastery ?? undefined,
138+
order: i.order,
139+
};
140+
})
141+
);
130142

131143
return { sessionId, score, items: itemDtos };
132144
}
@@ -204,17 +216,34 @@ export class ReviewService {
204216
return `笔记内容:${content}`;
205217
}
206218

207-
private toSessionDto(session: any, items: any[]): ReviewSessionDto {
219+
private async toSessionDto(session: any, items: any[]): Promise<ReviewSessionDto> {
220+
const db = getDatabase();
221+
// Fetch memo content for each item
222+
const itemsWithContent = await Promise.all(
223+
items.map(async (i) => {
224+
const [memo] = await db.select({ content: memos.content })
225+
.from(memos).where(eq(memos.memoId, i.memoId));
226+
return {
227+
itemId: i.itemId,
228+
sessionId: i.sessionId,
229+
memoId: i.memoId,
230+
memoContent: memo?.content,
231+
question: i.question,
232+
userAnswer: i.userAnswer ?? undefined,
233+
aiFeedback: i.aiFeedback ?? undefined,
234+
mastery: i.mastery ?? undefined,
235+
order: i.order,
236+
};
237+
})
238+
);
208239
return {
209-
sessionId: session.sessionId, uid: session.uid, scope: session.scope,
210-
scopeValue: session.scopeValue ?? undefined, status: session.status,
240+
sessionId: session.sessionId,
241+
uid: session.uid,
242+
scope: session.scope,
243+
scopeValue: session.scopeValue ?? undefined,
244+
status: session.status,
211245
score: session.score ?? undefined,
212-
items: items.map((i) => ({
213-
itemId: i.itemId, sessionId: i.sessionId, memoId: i.memoId,
214-
question: i.question, userAnswer: i.userAnswer ?? undefined,
215-
aiFeedback: i.aiFeedback ?? undefined, mastery: i.mastery ?? undefined,
216-
order: i.order,
217-
})),
246+
items: itemsWithContent,
218247
createdAt: session.createdAt.toISOString(),
219248
completedAt: session.completedAt?.toISOString(),
220249
};

0 commit comments

Comments
 (0)