Files
office_translator/_bmad-output/implementation-artifacts/deferred-work.md
sepehr b3b5454f6f
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m46s
docs(travaux-deferres): evaluation des trois chantiers lourds de rendu PDF/Word
Ordre recommande : PDF RTL copiable (insert_htmlbox), puis RTL des
graphiques Word (mecanisme reutilisable), puis gras intra-bloc PDF
(chantier architectural). Chacun merite une session dediee avec
verification visuelle.
2026-09-01 20:59:33 +02:00

46 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Deferred Work
Entrées ajoutées lors du cadrage de `spec-rendu-fidele-langues-rtl.md` (2026-09-01) :
améliorations de qualité identifiées pendant l'audit du pipeline de traduction,
volontairement hors du périmètre de la spec RTL pour garder un objectif unique.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Fusionner les runs adjacents de même style dans PowerPoint (et les notes Word traduites run par run) pour traduire des phrases complètes au lieu de fragments.
evidence: Word fusionne déjà les runs par signature rPr (word_translator.py l.1368-1475) ; PowerPoint traduit chaque run isolément (pptx_translator.py l.810-834) et les footnotes Word aussi (l.836-846, 909-919, 961-971) — une phrase coupée en plusieurs runs produit des traductions incohérentes. Interdit par la spec RTL (« Never : pas de refonte de la collecte des runs »).
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Rendre les contrôles qualité actionnables : retenter automatiquement les lots dont le script livré ne correspond pas à la langue cible (ex. arabe livré au lieu du persan).
evidence: services/quality/ détecte déjà le mauvais script et la confusion arabe/persan (script_detector.py l.89-171, l.236-256) mais tous les contrôles sont en log-only (routes/translate_routes.py l.1644-1779) — aucune traduction n'est jamais corrigée ni retentée.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Étendre le mode batch JSON (~15 textes par requête) aux providers DeepSeek et MiniMax, comme le fait déjà le provider OpenAI.
evidence: openai_provider.py l.511-625 batch via JSON numéroté ; deepseek_provider.py et minimax_provider.py traduisent texte par texte (base.py l.60-74) — coût et latence plus élevés pour ces moteurs.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Conserver le formatage intra-bloc des PDF (un mot en gras au milieu d'une phrase applique aujourd'hui le gras à tout le bloc).
evidence: pdf_translator.py _extract_text_blocks l.541-734 calcule des flags gras/italique globaux par bloc et la réécriture utilise une police unique par bloc (l.905-922).
Entrées ajoutées après la revue croisée de `spec-rendu-fidele-langues-rtl.md` (2026-09-01) :
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Utiliser insert_htmlbox (PyMuPDF) pour le texte RTL des PDF afin de garder un texte copiable et cherchable (ordre logique), au lieu du façonnage en formes de présentation.
evidence: arabic_reshaper + python-bidi écrivent les lettres arabes en formes de présentation (U+FB50U+FEFF) en ordre visuel : un copier-coller depuis le PDF donne un texte inversé et la recherche ne fonctionne plus ; PyMuPDF ≥ 1.22 (déjà dépendance) propose insert_htmlbox qui gère nativement la direction bidi.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Passer en droite-à-gauche les textes des graphiques et SmartArt Word (parties chart réinjectées après traduction).
evidence: les textes de graphiques/diagrammes sont traduits et réinjectés (word_translator.py l.1030-1186, l.1229-1356) mais aucune marque de direction n'est posée sur ces parties — étiquettes arabes affichées gauche-à-droite dans un document RTL. Exclu volontairement par la spec (« Never : pas d'inversion des graphiques »).
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Résoudre l'alignement hérité des masques/dispositions PowerPoint pour ne pas forcer à droite un titre centré par le modèle (sans algn explicite).
evidence: _set_pptx_paragraph_rtl pose algn="r" quand algn est absent — or l'alignement réel peut venir du masque ; détecter l'héritage exige de remonter au layout/master (chantier de résolution de placeholder dédié).
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Harmoniser RTL_LOCALES du frontend (frontend/src/lib/i18n.tsx, liste ["ar","fa"]) avec la liste serveur à onze langues.
evidence: la liste d'affichage RTL de l'interface est indépendante de core/languages.RTL_LANGUAGES ; toute nouvelle langue d'interface RTL (hébreu, ourdou) devra être ajoutée aux deux endroits sans qu'aucun contrôle ne le signale.
Évaluation des trois chantiers lourds (2026-09-01, après la vague d'améliorations ffbd85a..e5e09f0) — confirmés différés, dans l'ordre recommandé :
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: PDF RTL copiable (insert_htmlbox) : à traiter en premier des trois chantiers lourds, dans une session dédiée avec vérification visuelle du rendu sur de vrais documents.
evidence: le mode mise en page PDF repose sur six niveaux d'ajustement (rectangle élargi, shrink, plafond par bloc suivant) construits autour d'insert_textbox et de son code de débordement ; insert_htmlbox a une sémantique différente et exige de revoir tout ce mécanisme — trop risqué à empiler sur la vague du jour sans contrôle visuel.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: RTL des graphiques et SmartArt Word : mécanisme réutilisable (poser rtl="1" sur les a:p des parts chart pendant la réécriture ZIP existante), à traiter en deuxième.
evidence: les parts chart contiennent les mêmes paragraphes DrawingML (a:p/a:pPr) que PowerPoint ; la réécriture ZIP par element_path (word_translator.py l.1030-1186) est le point d'insertion naturel — chantier moyen, un seul fichier, mais à valider visuellement dans Word.
- source_spec: spec-rendu-fidele-langues-rtl.md
summary: Gras/italique au milieu d'une phrase dans le PDF (intra-bloc) : à traiter en dernier, c'est le plus grand chantier des trois.
evidence: exige de découper la réécriture par blocs en écriture par fragments (spans) avec positionnement propre — changement architectural du mode mise en page PDF.