import { useState } from "react"; import { useParams } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Textarea } from "@/components/ui/textarea"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { useApproveQuality, useQualityGate, useRejectQuality } from "@/hooks/queries/useAiCourse"; import { CheckCircle2, XCircle } from "lucide-react"; import { toast } from "sonner"; export default function AiEnglishQuality() { const { courseId: cid } = useParams<{ courseId: string }>(); const courseId = Number(cid); const { data, isLoading, refetch } = useQualityGate(Number.isFinite(courseId) ? courseId : undefined); const approve = useApproveQuality(); const reject = useRejectQuality(); const [rejectOpen, setRejectOpen] = useState(false); const [notes, setNotes] = useState(""); const checks = data?.checks ?? []; if (isLoading) { return
Loading quality gate…
; } return (

English course quality

Attempts {data?.attempts ?? 0} / {data?.max_attempts ?? 0}

Quality gate checks Readability, calibration, grammar, and length
Check Status Detail {checks.map((c) => ( {c.name} {c.status === "pass" ? ( ) : ( )} {c.status} {c.detail} ))}
Regeneration notes