diff --git a/apps/web/src/pages/catalog-page.tsx b/apps/web/src/pages/catalog-page.tsx index e9ff9e0..41a08a8 100644 --- a/apps/web/src/pages/catalog-page.tsx +++ b/apps/web/src/pages/catalog-page.tsx @@ -44,8 +44,10 @@ export function CatalogPage() {
-

Edukasi Penyakit

-

Katalog Penyakit

+

Pustaka Penyakit

+

+ Referensi lengkap penyakit dan kondisi daun jagung yang dapat dideteksi oleh sistem AI ZeaVis Edu +

diff --git a/apps/web/src/pages/diagnoses-page.tsx b/apps/web/src/pages/diagnoses-page.tsx index 86f9ffc..af5e87f 100644 --- a/apps/web/src/pages/diagnoses-page.tsx +++ b/apps/web/src/pages/diagnoses-page.tsx @@ -75,10 +75,10 @@ export function DiagnosesPage() {
-

- Manajemen Diagnosis +

Diagnosa Tanaman

+

+ Lihat hasil diagnosa dari scan yang telah dilakukan

-

Daftar Diagnosis

- - -
- - +
+ + - - + + -
- Total: {filtered.length} -
-
+
+ Total: {filtered.length} +
+
- {query.isLoading ? ( -
- Memuat diagnosis... -
- ) : query.isError ? ( -
- Gagal memuat diagnosis -
- ) : filtered.length === 0 ? ( -
-

- Tidak ada diagnosis sesuai filter -

- {diagnoses.length === 0 && ( -

- Mulai dengan{" "} - - melakukan scan daun - - . -

- )} -
- ) : ( -
- {filtered.map((d) => ( - - + {query.isLoading ? ( +
+ Memuat diagnosis... +
+ ) : query.isError ? ( +
+ Gagal memuat diagnosis +
+ ) : filtered.length === 0 ? ( +
+

+ Tidak ada diagnosis sesuai filter +

+ {diagnoses.length === 0 && ( +

+ Mulai dengan{" "} + + melakukan scan daun + + . +

+ )} +
+ ) : ( +
+ {filtered.map((d) => ( + + Daun )} - -
); } diff --git a/apps/web/src/pages/expert-reviews-page.tsx b/apps/web/src/pages/expert-reviews-page.tsx index a2f8117..74498a1 100644 --- a/apps/web/src/pages/expert-reviews-page.tsx +++ b/apps/web/src/pages/expert-reviews-page.tsx @@ -1,24 +1,35 @@ -import { FormEvent, useMemo, useState } from 'react'; -import { useSearchParams } from 'react-router-dom'; -import { useMutation, useQueries, useQueryClient } from '@tanstack/react-query'; -import type { DiseaseSlug } from '@zeavis/shared'; -import { Button } from '@/components/ui/button'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; -import { DiagnosisStatusBadge } from '@/components/diagnosis-status-badge'; -import { apiClient } from '@/lib/api-client'; +import { FormEvent, useMemo, useState } from "react"; +import { useSearchParams } from "react-router-dom"; +import { useMutation, useQueries, useQueryClient } from "@tanstack/react-query"; +import type { DiseaseSlug } from "@zeavis/shared"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { DiagnosisStatusBadge } from "@/components/diagnosis-status-badge"; +import { apiClient } from "@/lib/api-client"; export function ExpertReviewsPage() { const [searchParams, setSearchParams] = useSearchParams(); - const selectedId = searchParams.get('diagnosis'); - const [verdict, setVerdict] = useState<'verified' | 'corrected'>('verified'); - const [correctedDiseaseSlug, setCorrectedDiseaseSlug] = useState(''); - const [notes, setNotes] = useState(''); + const selectedId = searchParams.get("diagnosis"); + const [verdict, setVerdict] = useState<"verified" | "corrected">("verified"); + const [correctedDiseaseSlug, setCorrectedDiseaseSlug] = useState< + DiseaseSlug | "" + >(""); + const [notes, setNotes] = useState(""); const queryClient = useQueryClient(); const [reviewsQuery, diseasesQuery] = useQueries({ queries: [ - { queryKey: ['expert-reviews'], queryFn: () => apiClient.getExpertReviews() }, - { queryKey: ['diseases'], queryFn: () => apiClient.getDiseases() }, + { + queryKey: ["expert-reviews"], + queryFn: () => apiClient.getExpertReviews(), + }, + { queryKey: ["diseases"], queryFn: () => apiClient.getDiseases() }, ], }); @@ -33,15 +44,18 @@ export function ExpertReviewsPage() { mutationFn: () => apiClient.reviewDiagnosis(selected!.id, { verdict, - correctedDiseaseSlug: verdict === 'corrected' ? correctedDiseaseSlug || undefined : undefined, + correctedDiseaseSlug: + verdict === "corrected" + ? correctedDiseaseSlug || undefined + : undefined, notes, }), onSuccess: () => { - setNotes(''); - setVerdict('verified'); - setCorrectedDiseaseSlug(''); - queryClient.invalidateQueries({ queryKey: ['expert-reviews'] }); - queryClient.invalidateQueries({ queryKey: ['dashboard-summary'] }); + setNotes(""); + setVerdict("verified"); + setCorrectedDiseaseSlug(""); + queryClient.invalidateQueries({ queryKey: ["expert-reviews"] }); + queryClient.invalidateQueries({ queryKey: ["dashboard-summary"] }); }, }); @@ -57,8 +71,11 @@ export function ExpertReviewsPage() {
-

Review Pakar

-

Diagnosis Menunggu Review

+

Review Pakar

+

+ Tinjau hasil diagnosa dari scan yang telah dilakukan dan berikan + feedback untuk meningkatkan akurasi sistem AI ZeaVis Edu +

@@ -67,14 +84,20 @@ export function ExpertReviewsPage() {

Daftar Diagnosis

- {reviews.length} + + {reviews.length} +
{isLoading ? ( -

Memuat diagnosis...

+

+ Memuat diagnosis... +

) : reviews.length === 0 ? ( -

Tidak ada diagnosis yang menunggu review

+

+ Tidak ada diagnosis yang menunggu review +

) : ( reviews.map((review) => (
@@ -155,9 +191,16 @@ export function ExpertReviewsPage() {

Prediksi Teratas

{selected.predictions.map((pred) => ( -
- {pred.modelLabel} - {(pred.confidence * 100).toFixed(1)}% +
+ + {pred.modelLabel} + + + {(pred.confidence * 100).toFixed(1)}% +
))}
@@ -176,29 +219,41 @@ export function ExpertReviewsPage() {
-
- {verdict === 'corrected' && ( + {verdict === "corrected" && (
-