CSV-Export: bestehende Ausgaben und Originaldateien schützen - #1
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ein fehlgeschlagener CSV-Export konnte eine vorhandene Ausgabe bereits geleert haben. GUI und CLI schreiben jetzt zunächst in eine eigene temporäre Datei neben dem Ziel, schließen und synchronisieren sie und ersetzen die Ausgabe erst nach vollständigem Erfolg. Rechnungsoriginale (auch nicht ausgewählte/gefilterte), Konfiguration und Datenbank sind einschließlich Pfad-/Hardlink-Aliassen als Exportziel geschützt.
CSV-Spalten, UTF-8-BOM, Semikolon, Zeilenenden, Auswahl und Filter bleiben erhalten. CLI-Schutz-/Formatfehler liefern das bestehende strukturierte Fehlerergebnis mit Exit 1; programmatischer GUI-Export bleibt ohne modale Meldung. Die Identitätsprüfung wird vor der Veröffentlichung wiederholt; sie ist kein Schutzvertrag gegen gleichzeitige externe Änderungen zwischen Prüfung und Ersetzung.
Der echte CSV-Knopf öffnet den Dateidialog wieder: Sein Qt-Signalwert wird nicht als Dateipfad weitergereicht. Die Schutzmenge umfasst ursprüngliche Pfadwerte vor dem modalen Dialog und danach aktuelle Pfade, damit während des Dialogs entfernte Rechnungen geschützt bleiben.
Validierung: 262 lokale Tests bestanden (Exit 0) in einem isolierten Benutzerprofil, darunter 20 neue Gegenproben für Format-/fsync-/Replace-Fehler, Original-/State-Aliasse, späte Zielkollisionen, Dialog-Reentranz und tatsächlichen Qt-Knopfklick. Ruff, Compile, Diff-Prüfung und actionlint bestanden. Unabhängige Delta-Abnahme: 35 eigene Prüfungen bestanden, beide GUI-Befunde geschlossen, native Windows-Sharing-/Readonly-/Hardlink-/Junctionfälle bestätigt. Finale Plattform-CI am Head 40f0a70: alle sechs Jobs erfolgreich (Windows/Python 3.10/3.11/3.12 Volltests, Linux-Smokes und macOS-Smoke einschließlich CSV-Regressionen); alle drei CodeQL-Jobs erfolgreich.
Der vorhandene Begrüßungsworkflow scheitert separat wegen falscher Aktionsparameter; er wurde nicht wiederholt oder in diesen Fix aufgenommen. Keine Mailzugriffe, Versionsänderung, EXE-/Installations- oder Store-Aktion.