Add CSV imports and granular competition data cleanup

This commit is contained in:
larssand
2026-08-27 17:56:50 +02:00
parent a87c64a47c
commit e5af42ce2d
9 changed files with 504 additions and 8 deletions

View File

@@ -71,7 +71,7 @@ Rekommenderad deploy:
- Lagring/import:
- full export/import av race-data för backup eller flytt till annan maskin
- register-export/import för bara klasser, förare och bilar
- CSV-export för förare och bilar när du vill ha enkla listor i kalkylark
- CSV-export och säker sammanslagande CSV-import för förare och bilar via Excel eller LibreOffice
- export/import av ett enskilt racepaket via `Race Setup -> Hantera -> Race actions`
- `Race Setup` innehåller nu även:
- `Snabbstart Open Practice`: ange bara ett namn, skapa en otidsstyrd session för alla transpondrar och fortsätt direkt till Tidtagning
@@ -251,11 +251,16 @@ Integrationstestet startar en egen backend på en temporär localhost-port och l
- `Inställningar -> Lagring` stöder nu:
- full JSON-export/import för hela tävlingsdatabasen
- register-JSON för bara klasser, förare och bilar
- CSV-export för förare och bilar
- CSV-export och sammanslagande CSV-import för förare och bilar; komma, semikolon och tabb stöds
- separat rensning av förare, bilar, klasser, race/sessioner eller träningsstatistik
- `Rensa all tävlingsdata` behåller decoder-, tema-, branding- och serverinställningar
- `Race Setup -> Hantera -> Race actions` stöder nu enskilda racepaket:
- exportera ett race med dess sessioner, resultat och refererade klasser/förare/bilar
- importera paketet på en annan installation som ett nytt race
- JSON-exporter innehåller nu även exportmetadata och ett schema-/versionsfält för säkrare import framåt.
- CSV-import från systemets egen export bevarar ID:n. Externa listor utan ID matchas först på transponder och därefter på namn + klass. Tomma fält skriver inte över befintlig information, och nya klassnamn skapas automatiskt.
- Ta en JSON-backup före rensning. Varje rensningsknapp kräver en separat bekräftelse och åtgärden kan inte ångras.
- Webbrensningen tömmer kanonisk appdata men behåller den separata råa `passings`-tabellen i SQLite som revisionslogg. En fysisk fabriksrensning av databasen ska göras lokalt på servern när processen är stoppad, inte via en oautentiserad LAN-route.
## Nya racefunktioner