timed revision
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 3m58s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 37s
Mindforge Web Build and Deploy (internal) / Build Mindforge Web Image (push) Successful in 5m19s
Mindforge Web Build and Deploy (internal) / Deploy Mindforge Web (internal) (push) Successful in 11s
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 3m58s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 37s
Mindforge Web Build and Deploy (internal) / Build Mindforge Web Image (push) Successful in 5m19s
Mindforge Web Build and Deploy (internal) / Deploy Mindforge Web (internal) (push) Successful in 11s
This commit is contained in:
@@ -40,7 +40,10 @@ export interface FlashcardCard {
|
||||
front: string;
|
||||
back: string;
|
||||
position: number;
|
||||
correctCount: number;
|
||||
incorrectCount: number;
|
||||
createdAt: string;
|
||||
lastReviewedAt?: string | null;
|
||||
}
|
||||
|
||||
export interface FlashcardLibrarySummary {
|
||||
@@ -70,6 +73,56 @@ export interface FlashcardReviewSessionResponse {
|
||||
cards: FlashcardCard[];
|
||||
}
|
||||
|
||||
export interface FlashcardReviewAnswerRequest {
|
||||
cardId: number;
|
||||
correct: boolean;
|
||||
}
|
||||
|
||||
export type FlashcardRagStatus = 'Grey' | 'Red' | 'Amber' | 'Green';
|
||||
|
||||
export interface FlashcardRagCard {
|
||||
cardId: number;
|
||||
libraryId: number;
|
||||
fileName: string;
|
||||
subject: string;
|
||||
subSubject: string;
|
||||
front: string;
|
||||
back: string;
|
||||
correctCount: number;
|
||||
incorrectCount: number;
|
||||
totalAnswers: number;
|
||||
performanceRate: number;
|
||||
lastReviewedAt?: string | null;
|
||||
ragStatus: FlashcardRagStatus;
|
||||
}
|
||||
|
||||
export interface FlashcardRagSummary {
|
||||
greenCount: number;
|
||||
amberCount: number;
|
||||
redCount: number;
|
||||
greyCount: number;
|
||||
activeCount: number;
|
||||
greenPercentage: number;
|
||||
attentionPercentage: number;
|
||||
}
|
||||
|
||||
export interface FlashcardRagSubSubjectGroup {
|
||||
subSubject: string;
|
||||
summary: FlashcardRagSummary;
|
||||
cards: FlashcardRagCard[];
|
||||
}
|
||||
|
||||
export interface FlashcardRagSubjectGroup {
|
||||
subject: string;
|
||||
summary: FlashcardRagSummary;
|
||||
subSubjects: FlashcardRagSubSubjectGroup[];
|
||||
}
|
||||
|
||||
export interface FlashcardRagDashboardResponse {
|
||||
generatedAt: string;
|
||||
subjects: FlashcardRagSubjectGroup[];
|
||||
}
|
||||
|
||||
async function throwIfNotOk(response: Response, fallback: string) {
|
||||
if (response.ok) {
|
||||
return;
|
||||
@@ -140,6 +193,24 @@ export const MindforgeApiService = {
|
||||
return response.json();
|
||||
},
|
||||
|
||||
async recordFlashcardReviewAnswer(data: FlashcardReviewAnswerRequest): Promise<void> {
|
||||
const response = await fetch(`${BASE_URL}/api/v1/flashcard/review-answer`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
|
||||
await throwIfNotOk(response, `Erro ao registrar resposta da revisao: ${response.statusText}`);
|
||||
},
|
||||
|
||||
async getFlashcardRagStatus(): Promise<FlashcardRagDashboardResponse> {
|
||||
const response = await fetch(`${BASE_URL}/api/v1/flashcard/rag-status`);
|
||||
await throwIfNotOk(response, `Erro ao buscar status RAG de revisao: ${response.statusText}`);
|
||||
return response.json();
|
||||
},
|
||||
|
||||
async getRepositoryInfo(): Promise<RepositoryInfo> {
|
||||
const response = await fetch(`${BASE_URL}/api/v1/repository/info`);
|
||||
await throwIfNotOk(response, `Erro ao buscar info do repositorio: ${response.statusText}`);
|
||||
|
||||
Reference in New Issue
Block a user