From f17c94ccd6ab0fbdd786c7b0c15346b6cd0aaa16 Mon Sep 17 00:00:00 2001 From: Yamen Ahmad Date: Sun, 12 Apr 2026 01:35:50 +0400 Subject: [PATCH] fix: resolve all QA/UAT report issues (P0-P3) Made-with: Cursor --- .dockerignore | 10 -- .gitignore | 31 +++- bun.lockb | Bin 0 -> 245395 bytes src/App.tsx | 3 + src/components/ErrorBoundary.tsx | 62 +++++++ src/pages/GenerationPage.tsx | 37 +++-- src/pages/Register.tsx | 66 +++++++- src/pages/admin/CustomExamCreate.tsx | 25 ++- src/pages/admin/ScoreApprovalQueue.tsx | 4 +- src/pages/student/ExamResults.tsx | 187 ++++++++++++++++------ src/pages/student/ExamSession.tsx | 151 +++++++++++++++-- src/pages/student/PlacementTest.tsx | 109 +++++++++++-- src/pages/teacher/AiWorkbench.tsx | 21 ++- src/services/adaptive-engine.service.ts | 12 +- src/services/entity-onboarding.service.ts | 8 +- src/services/exam-session.service.ts | 3 + src/services/report.service.ts | 16 +- 17 files changed, 624 insertions(+), 121 deletions(-) delete mode 100644 .dockerignore create mode 100755 bun.lockb create mode 100644 src/components/ErrorBoundary.tsx diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index b5b764aa9..000000000 --- a/.dockerignore +++ /dev/null @@ -1,10 +0,0 @@ -node_modules -dist -.git -.env -.env.local -.env.production -*.md -docs/ -.vscode/ -coverage/ diff --git a/.gitignore b/.gitignore index f7f99e40f..4899f06f6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,33 @@ +# Dependencies node_modules/ + +# Build output dist/ -.vite/ -*.local +build/ +.next/ +out/ + +# Environment / secrets — never commit .env +.env.* +!.env.example +.env.local +.env.production +.env.*.local + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS .DS_Store +Thumbs.db + +# Logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..5d9d33a3bf4f45fa099e2aa3014149e034981149 GIT binary patch literal 245395 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 aG(|+$-_n1#f877;&wmep ( + @@ -340,6 +342,7 @@ const App = () => ( + ); export default App; diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx new file mode 100644 index 000000000..5bb833276 --- /dev/null +++ b/src/components/ErrorBoundary.tsx @@ -0,0 +1,62 @@ +import { Component, type ErrorInfo, type ReactNode } from "react"; + +interface Props { + children: ReactNode; + fallback?: ReactNode; +} + +interface State { + hasError: boolean; + error: Error | null; +} + +export class ErrorBoundary extends Component { + constructor(props: Props) { + super(props); + this.state = { hasError: false, error: null }; + } + + static getDerivedStateFromError(error: Error): State { + return { hasError: true, error }; + } + + componentDidCatch(error: Error, errorInfo: ErrorInfo) { + console.error("ErrorBoundary caught:", error, errorInfo); + } + + render() { + if (this.state.hasError) { + if (this.props.fallback) return this.props.fallback; + + return ( +
+
+
+ + + +
+

Something went wrong

+

+ An unexpected error occurred. Please try refreshing the page. +

+ {this.state.error && ( +
+ Error details +
{this.state.error.message}
+
+ )} + +
+
+ ); + } + + return this.props.children; + } +} diff --git a/src/pages/GenerationPage.tsx b/src/pages/GenerationPage.tsx index 6cf514cda..02875f13b 100644 --- a/src/pages/GenerationPage.tsx +++ b/src/pages/GenerationPage.tsx @@ -482,12 +482,21 @@ export default function GenerationPage() { - - + { + const p = [...st.passages]; p[pi] = { ...p[pi], category: e.target.value }; + updateModuleState("reading", { passages: p }); + }} /> + { + const p = [...st.passages]; p[pi] = { ...p[pi], divider: e.target.value }; + updateModuleState("reading", { passages: p }); + }} /> - diff --git a/src/pages/student/ExamResults.tsx b/src/pages/student/ExamResults.tsx index e81a7fcbb..adf56a7b8 100644 --- a/src/pages/student/ExamResults.tsx +++ b/src/pages/student/ExamResults.tsx @@ -1,4 +1,5 @@ import { Link, useParams, useSearchParams } from "react-router-dom"; +import { useQuery } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; @@ -19,25 +20,107 @@ import { PolarRadiusAxis, ResponsiveContainer, } from "recharts"; -import { Award, BookOpen, Download, RefreshCw } from "lucide-react"; +import { Award, BookOpen, Download, RefreshCw, Loader2 } from "lucide-react"; +import { examSessionService } from "@/services/exam-session.service"; +import { reportService } from "@/services/report.service"; +import { useState } from "react"; -const SKILLS = [ - { skill: "Listening", band: 7.5, cefr: "C1", gap: 0.5, target: 8 }, - { skill: "Reading", band: 8, cefr: "C1", gap: 0, target: 8 }, - { skill: "Writing", band: 6.5, cefr: "B2", gap: 1.5, target: 8 }, - { skill: "Speaking", band: 7, cefr: "C1", gap: 1, target: 8 }, -]; +interface ScoreEntry { + skill: string; + band_score: number; + raw_score: number; + max_score: number; + cefr_level: string; +} -const RADAR_DATA = SKILLS.map((s) => ({ skill: s.skill, band: s.band })); +interface FeedbackEntry { + question_id: number | null; + feedback_text: string; + source: string; +} + +interface ExamResultsData { + attempt_id: number; + exam_id: number | null; + status: string; + completed_at: string; + released_at: string; + listening_band: number; + reading_band: number; + writing_band: number; + speaking_band: number; + overall_band: number; + cefr_level: string; + scores: ScoreEntry[]; + feedback: FeedbackEntry[]; +} export default function ExamResults() { const { examId } = useParams(); const [searchParams] = useSearchParams(); const practice = searchParams.get("mode") === "practice"; - const overall = 7.5; - const cefr = "C1"; + const [downloading, setDownloading] = useState(false); + + const { data: results, isLoading, isError } = useQuery({ + queryKey: ["exam-results", examId], + queryFn: () => examSessionService.getResults(Number(examId)), + enabled: !!examId, + }); + + const handleDownloadPdf = async () => { + if (!results?.attempt_id) return; + setDownloading(true); + try { + await reportService.downloadPdf(results.attempt_id); + } catch { + // error handled silently + } finally { + setDownloading(false); + } + }; + + if (isLoading) { + return ( +
+ +
+ ); + } + + if (isError || !results) { + return ( +
+

Results not yet available

+

Your results may still be pending approval or grading.

+ +
+ ); + } + + const overall = results.overall_band; + const cefr = results.cefr_level?.toUpperCase() || "N/A"; const passed = overall >= 7; + const skillScores = results.scores.filter((s) => s.skill !== "overall"); + const SKILLS = skillScores.map((s) => ({ + skill: s.skill.charAt(0).toUpperCase() + s.skill.slice(1), + band: s.band_score, + cefr: s.cefr_level?.toUpperCase() || "N/A", + gap: Math.max(0, 8 - s.band_score), + target: 8, + })); + + const RADAR_DATA = SKILLS.map((s) => ({ skill: s.skill, band: s.band })); + + const feedbackBySkill: Record = {}; + for (const fb of results.feedback) { + const key = "General"; + if (!feedbackBySkill[key]) feedbackBySkill[key] = []; + feedbackBySkill[key].push(fb); + } + return (
@@ -53,24 +136,26 @@ export default function ExamResults() { {practice ? Practice mode : null}
- - - Skill profile - Per-skill performance vs maximum scale - - -
- - - - - - - - -
-
-
+ {RADAR_DATA.length > 0 && ( + + + Skill profile + Per-skill performance vs maximum scale + + +
+ + + + + + + + +
+
+
+ )} @@ -100,19 +185,24 @@ export default function ExamResults() { -
-

Section feedback

- - {["Listening", "Reading", "Writing", "Speaking"].map((name) => ( - - {name} - - Detailed feedback for {name} will appear here once released by your instructor. - - - ))} - -
+ {results.feedback.length > 0 && ( +
+

Feedback

+ + {results.feedback.map((fb, i) => ( + + + {fb.source === "ai" ? "AI Feedback" : fb.source === "teacher" ? "Teacher Feedback" : "Feedback"}{" "} + {fb.question_id ? `(Q${fb.question_id})` : ""} + + + {fb.feedback_text || "No detailed feedback available."} + + + ))} + +
+ )} @@ -121,16 +211,21 @@ export default function ExamResults() {
    -
  • Strengthen task response structure in Writing Task 2.
  • -
  • Extend range of cohesive devices in argumentative essays.
  • -
  • Maintain fluency while reducing hesitation in Speaking Part 2.
  • + {SKILLS.filter((s) => s.gap > 0) + .sort((a, b) => b.gap - a.gap) + .map((s) => ( +
  • + Focus on {s.skill} — current band {s.band}, target {s.target} (gap: {s.gap}). +
  • + ))} + {SKILLS.every((s) => s.gap === 0) &&
  • Excellent performance across all skills!
  • }
- -
-
-
- 0:00 / 3:42 -
+ {q.options?.length ? ( - Recording interface will appear here. -
+ { + const url = URL.createObjectURL(blob); + updateAnswer(q.id, { answer: url }); + }} + /> ); } @@ -481,3 +478,131 @@ export default function ExamSession() {
); } + +function ListeningPlayer({ audioUrl, audioBase64 }: { audioUrl?: string; audioBase64?: string }) { + const audioRef = useRef(null); + const [isPlaying, setIsPlaying] = useState(false); + const [currentTime, setCurrentTime] = useState(0); + const [duration, setDuration] = useState(0); + + const src = audioUrl || (audioBase64 ? `data:audio/mpeg;base64,${audioBase64}` : ""); + + const formatTime = (sec: number) => { + const m = Math.floor(sec / 60); + const s = Math.floor(sec % 60); + return `${m}:${s.toString().padStart(2, "0")}`; + }; + + return ( +
+ {src ? ( + <> +