[Prestaties][P0] Voer presentatievalidatie en parsing buiten de UI-isolate uit #875
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#875
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
PresentationImportService.prepareen de importers hebben een asynchrone API, maar formaatvalidatie, ZIP-decodering, XML-parsing, IWA/Snappy-decompressie, reconstructie en classificatie draaien synchroon op de aanroepende isolate. De UI roept deze route rechtstreeks aan. Voortgangscallbacks veranderen dat niet: tijdens een zware stap krijgt Flutter geen gelegenheid om frames of invoer te verwerken.Risico
Bij middelgrote, complexe of vijandige presentaties reageert de interface secondenlang niet. De gebruiker kan niet betrouwbaar annuleren en kan het verschil tussen lang werk en een vastgelopen import niet zien.
Voorgestelde aanpak
Acceptatiecriteria
ImportFailure-redenen en per-dia-resultaten blijven behouden.Verificatie
Draai
make check, een prestatietest op een groot deck en een widget/integratietest die tijdens import invoer en annulering verwerkt.Herkomst
Verplaatst en tegen de actuele OciDeck-port herijkt vanuit Keiko #2.
Opgepakt. Tak: fix/875-import-off-isolate (schone worktree vanaf main). Reikwijdte: nieuw serialiseerbaar import-taakcontract + gedeelde parse-kern (lib/services/import/pipeline/import_task.dart), platform-gesplitste isolate-runner (import_runner{,_io,_web}.dart, Isolate.spawn+kill op desktop, in-process met coöperatieve annulering + yields op web), herbedrading van PresentationImportService.prepare en de bulk-runner, en een klein annuleerbaar voortgangsvenster voor de enkelvoudige import. Deckbouw blijft op de hoofd-isolate (WebAssetStore + l10n-translate). Tests: responsiviteit op groot deck, voortgang-exact-één, annuleren binnen grens zonder gedeeltelijke uitvoer, expliciet web-pad, regressie op failures en per-dia-resultaten.
Opgelost en op main via PR #902 (merge
b897eef9). De import draait nu buiten de UI-isolate: een serialiseerbaar taakcontract + gedeelde parse-kern, een worker-isolate op desktop (kill bij annuleren) en een in-process pad met yields op web. Alleen de deckbouw blijft op de hoofd-isolate (WebAssetStore + l10n). Annuleren stopt binnen een gedocumenteerde tijd zonder gedeeltelijke uitvoer, met een klein annuleerbaar voortgangsvenster voor de enkelvoudige import en midden-in-bestand-stoppen voor de wachtrij. ImportBudget kreeg de maxDuration-deadline uit #874. make check volledig groen (6720 tests, dekking 86,6%). Alle acceptatiecriteria afgedekt met tests.