Skip to content

Latest commit

 

History

History
35 lines (31 loc) · 1.19 KB

File metadata and controls

35 lines (31 loc) · 1.19 KB
sequenceDiagram
    participant User
    participant React as React Frontend
    participant API as Express API
    participant QS as QuizService
    participant VDB as Supabase Database
    participant LLM as Gemini / Groq LLM

    User->>React: Click "Generate Quiz"
    React->>API: POST /api/quizzes/generate {documentId, difficulty}
    API->>QS: generateQuiz(documentId, options)
    
    rect rgb(40, 40, 80)
        note over QS, LLM: RAG Generation Phase
        QS->>VDB: Prisma: queryRaw(ORDER BY embedding <-> query)
        VDB-->>QS: relevant pgvector Chunks[]
        QS->>QS: buildPrompt(chunks, difficulty)
        QS->>LLM: generateContent(prompt)
        LLM-->>QS: JSON response (MCQs)
        QS->>QS: parseResponse(raw) → QuizResult
    end

    QS->>VDB: Prisma: Store Quiz + Questions
    QS-->>API: {quizId, quiz: QuizResult}
    API-->>React: JSON Response
    React-->>User: Display Interactive Quiz UI
    
    User->>React: Select answers & Submit
    React->>API: POST /api/quizzes/:id/submit {answers}
    API->>QS: submitQuiz(quizId, answers)
    QS-->>API: {score, percentage, results}
    API-->>React: Score + Explanations
    React-->>User: Display Score & Review
Loading