Commit graph

4 commits

Author SHA1 Message Date
Axelle Abbadie
b74f36e3cc fix: perte de chevauchements entiers à l'import HTML noScribe
Les noms d'ancre ts_ dont le suffixe locuteur contient des caractères
hors \w (ex. "//S01" quand une annotation de chevauchement est tapée
juste avant une coupure de segment) étaient rejetés par TS_NAME_RE,
faisant disparaître silencieusement tout le texte de l'ancre.
2026-07-09 23:41:41 +02:00
Axelle Abbadie
4ceb2a6a4f feat: export EAF (ELAN) depuis Markdown noScribe
- markdownToEaf() — génère un .eaf FORMAT 3.0 avec tiers par locuteur,
  TIME_SLOTs dédupliqués+triés, MEDIA_DESCRIPTOR optionnel, escape XML
- Commande export-as-eaf + exportCurrentFileAsEaf() dans main.ts
- Bouton dans l'onglet Exports (visible format vtt/html uniquement)
- Clés i18n fr/en/es/ru
- extractWordData() : toutes les cues incluses (plus seulement celles avec
  timestamps), wordTimestampRate par cue ; fileSequentialityRate() ajouté
- 15 tests unitaires EafExporter (165 tests total, 0 échec)
2026-06-09 14:33:31 +02:00
Axelle Abbadie
eb62c50373 feat: noScribe import, scan modal candidats, exceptions surlignées
Intégration noScribe (Phase 10)
- VttParser : WebVTT standard avec word timestamps (Whisper)
- NoScribeHtmlParser : HTML Qt Rich Text noScribe, extraction locuteurs S00/S01, audio source
- NoScribeVttParser : VTT noScribe v0.7 (cues splitées, labels SXX:, entités HTML)
- TranscriptConverter : format Markdown noScribe (**S00** [HH:MM:SS] : texte), extractWordData → .words.json
- Import audio automatique depuis meta tag HTML ou dossier source VTT
- Re-export VTT pseudonymisé depuis .md + .words.json (commande "Exporter en VTT")
- Redaction.ts : caviardage par syllabes (🀫)

Scan modal avec candidats
- MappingScanReviewModal : colonne occurrences cliquable → OccurrencesContextModal
- OccurrencesContextModal : cartes ✓/✗/⚠ par occurrence, callback sans application immédiate
- Bouton "Enregistrer les exceptions" séparé d'Appliquer

Exceptions
- IgnoredOccurrence dans types.ts + ignoredOccurrences sur MappingRule
- Persistance dans mapping.json, chargement au démarrage
- Surlignage rouge (pseudobs-exception, sensible à la casse via collectExact)
- Section "Exceptions" dans l'onglet Mappings avec cartes contextuelles et suppression
- Priorité 0 dans le highlighter (gagne sur orange/bleu/vert)

Corrections
- getValidatedFor() : inclut 'partial' comme état actif
- Labels de statut clarifiés : "Actif", "Ignoré", "Partiel", "Suggéré"
- Scan button corrigé dans PseudonymizationView (occurrences manquantes dans MappingRuleResult)
- PseudonymHighlighter : collectExact définie, exceptionRanges orphelin supprimé

Tests : 149 tests, 10 suites
2026-05-17 01:25:20 +02:00
Axelle Abbadie
d216e81fb2 init 2026-05-12 01:55:27 +02:00