REFACE
fiche portrait-robot → reproduction → re-confrontation
Déposez un visage
de face, de trois quarts ou de profil — un seul visage par image
UPLOAD
CAMERA
↻
✕
{{ currentStepLabel }}
{{ jobStatus?.current_step || jobStatus?.message || '' }}
{{ error }}
RETRY
NEW
RETRY
{{ isComparing ? 'IMPROVING…' : (result.comparison_pending ? 'RE-CONFRONTATION…' : 'IMPROVE') }}
USE
DOWNLOAD
SHARE
{{ promptCopied ? 'COPIED!' : 'COPY' }}
{{ result.generated_prompt }}
FICHE PORTRAIT-ROBOT
{{ result.sheet_coverage.features_covered }}/{{ result.sheet_coverage.features_total }} régions
{{ result.sheet_coverage.marks_covered }}/{{ result.sheet_coverage.marks_total }} marques
{{ result.sheet.anchor }}
Point de vue :
{{ result.sheet.viewpoint }}
Âge :
{{ result.sheet.apparent_age }}
Médium :
{{ result.sheet.medium }}
Masqué :
{{ result.sheet.hidden }}
Asymétrie :
{{ result.sheet.asymmetries }}
Régions
{{ item.label || item.key }}
{{ pretty(term) }}
· {{ pretty(item.scale) }}
{{ item.detail }}
none visible
Signes particuliers
none visible — cherchés à la naissance des cheveux, sur la mâchoire, autour des yeux, au cou
{{ pretty(mark.what) }}
— {{ mark.where }}
{{ mark.detail }}
⚠ absent du prompt réécrit
Prompt et couverture
✔ taux de couverture {{ Math.round((result.sheet_coverage.weighted_ratio || 0) * 100) }} % — impression d'ensemble, régions structurantes et signes particuliers écrits
⚠ couverture {{ Math.round((result.sheet_coverage.weighted_ratio || 0) * 100) }} % — régions non écrites : {{ missingFeatures.map(r => r.label).join(', ') }}
Re-confrontation région par région en cours (l'image est déjà disponible)…
RE-CONFRONTATION
ressemblance {{ result.comparison.score }}/100
reconnaissabilité {{ result.comparison.recognizability }}/100
{{ result.comparison.verdict }}
D'ensemble
{{ result.comparison.holistic.verdict }}
:
{{ result.comparison.holistic.why }}
Point de vue
{{ result.comparison.viewpoint.verdict }}
:
{{ result.comparison.viewpoint.original }} → {{ result.comparison.viewpoint.generated }}
Correction :
{{ result.comparison.viewpoint.fix }}
Signes particuliers
{{ pretty(mark.what) }}
— {{ mark.where }}
{{ mark.verdict }}
original :
{{ mark.original }}
généré :
{{ mark.generated }}
Correction :
{{ mark.fix }}
Régions à corriger
{{ item.label || item.key }}
{{ item.verdict }}
{{ item.original }} → {{ item.generated }}
({{ pretty(item.direction) }})
Correction :
{{ item.fix }}
Régions sans preuve (non retenues comme correctifs)
{{ item.label || item.key }}
sans preuve
la seconde image n'a pas été décrite : {{ item.original }}
Différences et cause dans le prompt
{{ pretty(diff.axis || 'écart') }}
Original :
{{ diff.original }}
Généré :
{{ diff.generated }}
Cause :
{{ diff.prompt_cause }}
Correction :
{{ diff.fix }}
Axes
{{ pretty(name) }}
{{ axis.score }}
{{ axis.note }}
Mesures objectives (sans modèle)
{{ row.value }}
{{ row.label }}
Prompt amélioré
testable avec le bouton IMPROVE
✔ {{ result.comparison.fixes_coverage.applied.length }}/{{ result.comparison.fixes_coverage.total }} correctifs repris dans le prompt réécrit
⚠ {{ result.comparison.fixes_coverage.applied.length }}/{{ result.comparison.fixes_coverage.total }} correctifs repris — non appliqué(s) : {{ result.comparison.fixes_coverage.missing.map(m => 'n°' + m.index + ' ' + m.fix).join(' ; ') }}
{{ improvedCopied ? 'COPIED!' : 'COPY' }}
{{ result.comparison.improved_prompt }}