CSV-Import überschreibt nur noch die Spalten der Datei, mit Vorschau #9

Open
thiel wants to merge 1 commit from fix/import-sicherheit into fix/loeschschutz
Owner

Behebt Befund 3 des externen Checks.

Fehlende Spalten wurden als leere Werte übernommen. Eine Datei mit nur Inventarnummer und Bezeichnung löschte Seriennummer, Modell, Standort, Lieferant und Beschaffungsdaten — und ersetzte, wenn die Spalte name fehlte, die Bezeichnung durch die Inventarnummer (der ?: $tag-Fallback griff auch beim Aktualisieren). Derselbe Fehler steckte im Ausleiher-Import.

Der Dienst baut jetzt zuerst einen Plan (planAssets / planHolders): je Zeile neu, geändert, unverändert oder übersprungen, mit betroffenen Feldern und alt/neu. Geschrieben wird nur, was als Spalte in der Kopfzeile steht; eine vorhandene, leere Zelle leert das Feld weiterhin bewusst und wird in der Vorschau eigens ausgewiesen. Der Import führt diesen Plan aus, die Vorschau zeigt ihn — eine Quelle für beides.

Vorschau im Import-Dialog: Zeile für Zeile, was passieren würde, plus Warnungen bei unbekannten Spalten und fehlender Schlüsselspalte. Die Vorschau legt keine Standorte an (der Standort wird über den Namen verglichen statt über die ID, sonst erschiene ein noch nicht angelegter Standort als geleertes Feld).

12 neue Tests. Volle Suite grün (170 Tests), Pint sauber.

Setzt auf #8 auf — bitte nach #8 mergen.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QKiq6LV8Lk1vst5CQW15ar

Behebt Befund 3 des externen Checks. Fehlende Spalten wurden als leere Werte übernommen. Eine Datei mit nur Inventarnummer und Bezeichnung löschte Seriennummer, Modell, Standort, Lieferant und Beschaffungsdaten — und ersetzte, wenn die Spalte `name` fehlte, die Bezeichnung durch die Inventarnummer (der `?: $tag`-Fallback griff auch beim Aktualisieren). Derselbe Fehler steckte im Ausleiher-Import. Der Dienst baut jetzt zuerst einen **Plan** (`planAssets` / `planHolders`): je Zeile neu, geändert, unverändert oder übersprungen, mit betroffenen Feldern und alt/neu. Geschrieben wird nur, was als Spalte in der Kopfzeile steht; eine vorhandene, leere Zelle leert das Feld weiterhin bewusst und wird in der Vorschau eigens ausgewiesen. Der Import führt diesen Plan aus, die Vorschau zeigt ihn — eine Quelle für beides. **Vorschau im Import-Dialog**: Zeile für Zeile, was passieren würde, plus Warnungen bei unbekannten Spalten und fehlender Schlüsselspalte. Die Vorschau legt keine Standorte an (der Standort wird über den Namen verglichen statt über die ID, sonst erschiene ein noch nicht angelegter Standort als geleertes Feld). 12 neue Tests. Volle Suite grün (170 Tests), Pint sauber. **Setzt auf #8 auf** — bitte nach #8 mergen. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01QKiq6LV8Lk1vst5CQW15ar
CSV-Import überschreibt nur noch die Spalten der Datei, mit Vorschau
All checks were successful
Tests / phpunit (pull_request) Successful in 1m34s
382b1b5eaf
Fehlende Spalten wurden als leere Werte übernommen: Eine Datei mit nur
Inventarnummer und Bezeichnung löschte Seriennummer, Modell, Standort,
Lieferant und Beschaffungsdaten - und ersetzte ohne name-Spalte die
Bezeichnung durch die Inventarnummer, weil der Fallback auch beim
Aktualisieren griff.

Der Dienst baut jetzt zuerst einen Plan: je Zeile neu, geändert,
unverändert oder übersprungen, mit den betroffenen Feldern und alt/neu.
Geschrieben werden nur Spalten, die in der Kopfzeile stehen; der
name-Fallback greift nur noch bei einer Neuanlage. Der Import führt
diesen Plan aus, die Vorschau zeigt ihn.

Der Standort wird über den Namen verglichen statt über die ID, damit ein
noch nicht angelegter Standort als Änderung erscheint und nicht als
geleertes Feld. Die Vorschau legt keine Standorte an.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKiq6LV8Lk1vst5CQW15ar
All checks were successful
Tests / phpunit (pull_request) Successful in 1m34s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/import-sicherheit:fix/import-sicherheit
git switch fix/import-sicherheit

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch fix/loeschschutz
git merge --no-ff fix/import-sicherheit
git switch fix/import-sicherheit
git rebase fix/loeschschutz
git switch fix/loeschschutz
git merge --ff-only fix/import-sicherheit
git switch fix/import-sicherheit
git rebase fix/loeschschutz
git switch fix/loeschschutz
git merge --no-ff fix/import-sicherheit
git switch fix/loeschschutz
git merge --squash fix/import-sicherheit
git switch fix/loeschschutz
git merge --ff-only fix/import-sicherheit
git switch fix/loeschschutz
git merge fix/import-sicherheit
git push origin fix/loeschschutz
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thiel/natec-inventar!9
No description provided.