fix(relecture): un travail vide ou oublie restait affiche et impossible a retirer
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m29s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m29s
Un travail echoue ou expire cote serveur restait dans « Traductions
recentes » : sa page de relecture n'affichait rien (0 segments) avec une
erreur brute non traduite, et aucune suppression n'existait.
- serveur : nouvelle route DELETE /api/v1/translations/{job_id} —
retire le travail de la memoire et de Redis, supprime ses segments de
relecture ; idempotente (200 meme si le serveur avait deja oublie le
travail) ; refuse les travaux en cours (annuler d'abord) ; proprietaire
seul (404 pour le travail d'autrui, sans reveler son existence)
- interface : bouton corbeille sur chaque ligne des traductions recentes
(deux clics pour confirmer) qui nettoie la liste locale ET le serveur ;
l'historique serveur ne liste plus les travaux non termines
- page de relecture : message d'erreur traduit (fini le message brut) et
etat « rien a relire » explicite avec explication
- libelles ajoutes dans les 13 langues de l'interface
- 5 tests backend nouveaux (tests/test_delete_translation_history.py)
This commit is contained in:
@@ -106,7 +106,13 @@ export default function ReviewPage() {
|
||||
setSegments(res.data.segments);
|
||||
setFileName(res.data.file_name);
|
||||
} catch (err) {
|
||||
setLoadError(err instanceof Error ? err.message : t('reviews.error.load'));
|
||||
setLoadError(
|
||||
friendlyReviewError(
|
||||
err instanceof Error ? err.message : undefined,
|
||||
t,
|
||||
'reviews.error.load'
|
||||
) ?? t('reviews.error.load')
|
||||
);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
@@ -406,6 +412,15 @@ export default function ReviewPage() {
|
||||
<div className="flex items-center justify-center py-16">
|
||||
<Loader2 className="size-6 animate-spin text-muted-foreground" />
|
||||
</div>
|
||||
) : segments.length === 0 && !loadError ? (
|
||||
<div className="rounded-xl border border-black/10 dark:border-white/10 bg-white dark:bg-[#141414] px-6 py-14 text-center shadow-sm">
|
||||
<p className="text-sm font-semibold text-brand-dark dark:text-white">
|
||||
{t('reviews.empty.title')}
|
||||
</p>
|
||||
<p className="mx-auto mt-2 max-w-md text-xs leading-relaxed text-brand-dark/60 dark:text-white/60">
|
||||
{t('reviews.empty.desc')}
|
||||
</p>
|
||||
</div>
|
||||
) : (
|
||||
<div className="overflow-hidden rounded-xl border border-black/10 dark:border-white/10 bg-white dark:bg-[#141414] shadow-sm">
|
||||
<table className="w-full text-sm">
|
||||
|
||||
Reference in New Issue
Block a user