import { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { getRepairReports, type RepairReport, getProjects } from '../api'; export default function RepairList() { const [reports, setReports] = useState([]); const [loading, setLoading] = useState(true); const [projects, setProjects] = useState([]); const [filters, setFilters] = useState({ project_id: '', page: 1, }); const [totalPages, setTotalPages] = useState(1); useEffect(() => { const fetchProjects = async () => { try { const res = await getProjects(); setProjects(res.data.projects); } catch (err) { console.error(err); } }; fetchProjects(); }, []); useEffect(() => { const fetchReports = async () => { setLoading(true); try { const res = await getRepairReports({ page: filters.page, project_id: filters.project_id || undefined, }); setReports(res.data.items); setTotalPages(res.data.total_pages); } catch (err) { console.error(err); } finally { setLoading(false); } }; fetchReports(); }, [filters]); const handleFilterChange = (key: string, value: string) => { setFilters((prev) => ({ ...prev, [key]: value, page: 1 })); }; return (

Repair Reports

AI-powered bug repair attempts and their results

{loading ? (
) : reports.length === 0 ? (
No reports found
) : ( {reports.map((report) => ( ))}
ID Project Bug ID Modified Files Test Result Status Date Actions
#{report.id} {report.project_id} #{report.error_log_id} {report.modified_files.length} files {report.test_passed ? 'PASS' : 'FAIL'} {report.status} {new Date(report.created_at).toLocaleString()} View
)}
{totalPages > 1 && (
Page {filters.page} of {totalPages}
)}
); }