Skip to content

Commit 65afc9b

Browse files
docs: align MinAn 2.0 repository documentation
1 parent 79bd071 commit 65afc9b

11 files changed

Lines changed: 640 additions & 164 deletions

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ Desktop.ini
4141
# Local assistant config
4242
.claude/
4343

44+
# Local app/service scaffolding not used by this desktop project
45+
.funcignore
46+
host.json
47+
local.settings.json
48+
49+
# Local scratch/output files
50+
generated-image.png
51+
plan.md
52+
4453
# Generic temporary files
4554
*.log
4655
*.tmp
56+
57+
.python_packages

CHANGELOG.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,28 @@
22

33
All notable changes to this project are documented in this file.
44

5+
## [v2.0.0] - 2026-05-17
6+
7+
### Added
8+
9+
- new compact KPI strip and dedicated "Fehlwerte" tile on the overview dashboard
10+
- read-only column type-hint chips on the overview
11+
- "Typ-Assistent" dialog with per-column type suggestions and bulk apply
12+
- explicit, opt-in NaN normalization tool in the Edit tab (placeholders, whitespace-like cells, user-selected sentinels) with undo support
13+
- SQL `CREATE TABLE` schema preview and export (clipboard / `.sql` file) in the Export tab
14+
15+
### Changed
16+
17+
- visible product line bumped to `MinAn 2.0` across UI, packaging metadata, batch banners, and documentation
18+
- refined desktop theme with a calmer blue-gray palette and stronger contrast
19+
- detail tiles use a white surface with a 4 px accent bar instead of full pastel fills
20+
21+
### Notes
22+
23+
- internal `REPORT_TITLE` remains `MinAn 1.4 - Analysebericht` to preserve the existing report-service test contract
24+
- default `pd.read_csv` behavior is unchanged; NaN normalization is a post-import, user-triggered transformation
25+
- current repository test baseline: `167 passed`
26+
527
## [v1.4.0] - 2026-04-17
628

729
### Added
@@ -17,12 +39,11 @@ All notable changes to this project are documented in this file.
1739

1840
- root and repository framing hardened for public/product presentation
1941
- build pipeline hardened (`build_release.bat`) with fail-fast checks and deterministic cleanup
20-
- packaging/docs alignment fixed for one bundled release sample (`test_csv_deutsch_200x15.csv`)
21-
- status and guidance docs aligned to real build/test/CI behavior
42+
- status and guidance docs aligned to real build/test/CI behavior for the then-current release baseline
2243

2344
### Verified
2445

25-
- baseline tests green: `pytest -q` (`155 passed` reference run)
46+
- baseline tests were green for the historical `v1.4.0` repository baseline
2647
- full local quality gate supports compile + tests + build + EXE smoke
2748

2849
### Not Included

README.md

Lines changed: 96 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,148 @@
1-
# MinAn V1
1+
# MinAn 2.0 - CSV-Schnellanalyse-App fuer Windows
22

33
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
44
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
55
[![Tests](https://github.com/mickhornung-oss/minan-csv-analyse/actions/workflows/python-tests.yml/badge.svg)](https://github.com/mickhornung-oss/minan-csv-analyse/actions/workflows/python-tests.yml)
66

7-
Stable release (`v1.4.0`) of a production-ready Windows desktop mini-tool for fast CSV analysis.
7+
MinAn 2.0 ist eine lokale Windows-Desktop-App fuer schnelle CSV-Analyse ohne Installation, ohne Adminrechte und ohne Serververbindung.
88

9-
## Product Overview
10-
11-
MinAn loads CSV files, analyzes structure and data quality, and lets users filter/edit an active view before exporting CSV or HTML reports. The source CSV is never overwritten.
12-
13-
Target users: analysts, QA teams, and developers who need fast local CSV sanity checks without cloud dependencies.
9+
Autor und GitHub-Owner: `Michael Hornung / mickhornung-oss`
1410

1511
![MinAn main analysis view](assets/screenshots/minan_v1_main.png)
1612
![MinAn metrics analysis view](assets/screenshots/minan_v1_analysis.png)
1713

18-
## Status and Scope
14+
## Produktueberblick
15+
16+
MinAn laedt CSV-Dateien, analysiert Struktur und Datenqualitaet und stellt eine aktive Arbeitsansicht fuer Pruefung, Vergleich und Export bereit. Die Quelldatei wird dabei nie ueberschrieben.
17+
18+
Der aktuelle Produktstand ist:
19+
20+
- Produktlinie: `MinAn 2.0`
21+
- Release-Identitaet: `v2.0.0`
22+
- Zielplattform: Windows 10/11
23+
- Auslieferung: portable One-Folder-EXE unter `dist/MinAn_2_0/`
24+
- Teststand: `167 automatisierte Tests`
25+
- Belastungstest: `5.000 Zeilen x 19 Spalten`
26+
27+
## Funktionsumfang
28+
29+
- Lokale CSV-Schnellanalyse ohne Cloud, SaaS oder Serveranbindung
30+
- 6 Tabs: `Ueberblick`, `Daten`, `Kennzahlen`, `Diagramme`, `Vergleich`, `Export`
31+
- Datenqualitaetspruefung, Kennzahlen und Visualisierungen
32+
- 6 Diagrammtypen:
33+
- Fehlwerte
34+
- Histogramm
35+
- Boxplot
36+
- Top-Kategorien
37+
- Streudiagramm
38+
- Korrelation
39+
- SQL-Schema-Vorschau und Export fuer `SQLite`, `PostgreSQL` und `MySQL`
40+
- Aktive Arbeitsansicht mit Filtern, Quick-Views und Vergleich zum Original
41+
- Gebuendelter Beispieldatensatz fuer den Schnellstart
1942

20-
- Product line: `MinAn 1.4`
21-
- Release identity: `v1.4.0`
22-
- Scope: local/offline desktop usage (Windows)
23-
- Delivery model: portable one-folder build (`dist/MinAn_1_4/`)
24-
- Public hosted demo: not provided
25-
- Reference test run (2026-04-17): `155 passed` via `pytest -q`
43+
## Exportformate
2644

27-
## Core Features
45+
MinAn 2.0 unterstuetzt fuenf Export- bzw. Ausgabeformate:
2846

29-
- CSV import with automatic encoding and separator detection
30-
- Dataset overview with profile, quality findings, and summary
31-
- Active-view workflow with filters and quick views (missing values, duplicates, outlier candidates)
32-
- Tab-based desktop UI (Overview, Table, Metrics, Charts, Edit, Export)
33-
- CSV export of the active view
34-
- HTML report export of the active view
35-
- Bundled sample dataset for quick local evaluation
47+
- `CSV`: aktive Sicht als neue CSV-Datei
48+
- `HTML-Bericht`: lokaler Analysebericht mit eingebetteten Diagrammen
49+
- `JSON-Metadaten`: strukturierter Export der Analyse- und View-Metadaten
50+
- `SQL-Schema`: `CREATE TABLE`-Statement als `.sql`
51+
- `PNG-Diagramme`: gespeicherte Diagramm-Snapshots aus dem Diagramm-Tab
52+
53+
Nicht Teil des Produkts sind Excel-Import, KI-Funktionen, Cloud-Workflows oder automatische Datenbereinigung als stiller Hintergrundprozess.
3654

3755
## Tech Stack
3856

3957
- Python 3.10+
40-
- PySide6 (desktop UI)
41-
- pandas + numpy (data processing)
42-
- matplotlib (charts/report snapshots)
43-
- pytest (automated tests)
44-
- PyInstaller (portable packaging)
58+
- PySide6
59+
- pandas
60+
- matplotlib
61+
- PyInstaller
62+
- Git / GitHub
4563

46-
## Quickstart
64+
## Schnellstart
4765

48-
### End user (portable build)
66+
### Endnutzer
4967

50-
1. Build a release (or use an already built one):
68+
1. Release bauen oder vorhandenen Build verwenden:
5169
`build_release.bat`
52-
2. Run:
53-
`dist\\MinAn_1_4\\MinAn.exe`
70+
2. Anwendung starten:
71+
`dist\\MinAn_2_0\\MinAn.exe`
5472

55-
### Developer mode
73+
### Entwicklung
5674

57-
1. Install dependencies:
75+
1. Abhaengigkeiten installieren:
5876
`pip install -r requirements.txt`
59-
2. Start app:
77+
2. Anwendung starten:
6078
`run_dev.bat`
6179

62-
## Testing and Quality Gates
80+
Alternativ direkt:
81+
82+
`python src/minan_v1/main.py`
83+
84+
## Tests und Qualitaet
6385

64-
Baseline local gates (compile + tests):
86+
Lokale Baseline-Gates:
6587

6688
`python scripts/quality_gates.py`
6789

68-
Full local gates (compile + tests + release build + EXE smoke):
90+
Volle lokale Gates inklusive Build und EXE-Smoke:
6991

7092
`python scripts/quality_gates.py --with-build --with-exe-smoke`
7193

72-
## Packaging and Build
94+
Aktueller verifizierter Teststand in diesem Repository:
7395

74-
Build command:
96+
- `167 passed` via `python -m pytest tests/ -q`
97+
98+
## Packaging
99+
100+
Build-Einstieg:
75101

76102
`build_release.bat`
77103

78-
Build source of truth:
104+
Massgebliche Packaging-Quellen:
105+
106+
- `packaging/pyinstaller/minan_v1.spec`
107+
- `packaging/pyinstaller/windows_version_info.txt`
79108

80-
- PyInstaller spec: `packaging/pyinstaller/minan_v1.spec`
81-
- Windows version metadata: `packaging/pyinstaller/windows_version_info.txt`
82-
- Bundled release sample: `_internal/sample_data/test_csv_deutsch_200x15.csv`
109+
Generierte Artefakte werden bewusst nicht versioniert:
83110

84-
Generated artifacts are intentionally not versioned (`build/`, `dist/`, `output/`).
111+
- `build/`
112+
- `dist/`
113+
- `output/`
85114

86-
## Documentation
115+
## Dokumentation
87116

88-
Primary docs index: [`docs/README.md`](docs/README.md)
117+
Primarer Doku-Einstieg: [`docs/README.md`](docs/README.md)
89118

90-
- Release notes: [`docs/release.md`](docs/release.md)
91-
- Change history: [`CHANGELOG.md`](CHANGELOG.md)
92-
- Project status: [`docs/status.md`](docs/status.md)
119+
- Release: [`docs/release.md`](docs/release.md)
120+
- Projektstatus: [`docs/status.md`](docs/status.md)
121+
- Packaging: [`docs/packaging.md`](docs/packaging.md)
122+
- Nutzung: [`docs/usage.md`](docs/usage.md)
123+
- Aenderungshistorie: [`CHANGELOG.md`](CHANGELOG.md)
93124

94-
## Repository Structure
125+
## Repository-Struktur
95126

96127
```text
97128
.
98-
|- src/minan_v1/ # app core (domain/services/ui/utils)
99-
|- tests/ # automated tests
100-
|- assets/ # icons, sample CSV, screenshots
101-
|- packaging/pyinstaller/ # versioned build/packaging sources
102-
|- docs/ # public + internal documentation
103-
|- scripts/ # product-check helper scripts
104-
|- run_dev.bat # local developer start
105-
|- build_release.bat # release build entrypoint
129+
|- src/minan_v1/ # App-Kern (domain/services/ui/utils)
130+
|- tests/ # automatisierte Tests
131+
|- assets/ # Icons, Beispieldaten, Screenshots
132+
|- packaging/pyinstaller/ # versionierte Build-Konfiguration
133+
|- docs/ # oeffentliche und interne Dokumentation
134+
|- scripts/ # Qualitaets- und Produktcheck-Skripte
135+
|- run_dev.bat # lokaler Entwicklungsstart
136+
|- build_release.bat # Release-Build
106137
`- requirements.txt
107138
```
108139

109-
## Known Limitations
140+
## Grenzen
110141

111-
- Windows-first desktop target (no cross-platform packaging support documented yet)
112-
- No hosted/web demo; evaluation is local only
113-
- CI remains intentionally minimal (Windows quality gates on push/PR, packaging smoke on manual dispatch)
114-
- No automated GitHub artifact publishing pipeline is defined yet
142+
- Windows-first; kein dokumentierter Cross-Platform-Releasepfad
143+
- Kein gehostetes Web-Frontend, kein Online-Demo-Deployment
144+
- Keine automatisierte GitHub-Release-Pipeline im aktuellen Stand
115145

116-
## License
146+
## Lizenz
117147

118-
Licensed under the MIT License. See [`LICENSE`](LICENSE).
148+
MIT-Lizenz, siehe [`LICENSE`](LICENSE).

docs/packaging.md

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Packaging and Build
22

3-
Release identity: `v1.4.0`
3+
Release identity: `v2.0.0`
44

55
## Build Entry Point
66

@@ -11,11 +11,10 @@ build_release.bat
1111
The script is fail-fast and performs:
1212

1313
1. precondition checks (PyInstaller, spec, version file, sample CSV)
14-
2. cleanup of previous generated `build/` and target `dist/MinAn_1_4/`
14+
2. cleanup of previous generated `build/` and target `dist/MinAn_2_0/`
1515
3. fresh PyInstaller build (`--clean --noconfirm`)
16-
4. post-build validation (`MinAn.exe` must exist)
17-
5. release-root preparation (`output/reports`, `output/csv`)
18-
6. copy of user-facing readme files into release root
16+
4. move of `MinAn.exe` into `dist/MinAn_2_0/`
17+
5. copy of release readme and license files
1918

2019
## Build Source of Truth
2120

@@ -32,40 +31,39 @@ Spec entrypoint:
3231

3332
- Windows 10/11
3433
- Python 3.10+
35-
- install dependencies with `pip install -r requirements.txt`
34+
- dependencies installed via `pip install -r requirements.txt`
3635

3736
## Expected Release Layout
3837

3938
```text
40-
dist/MinAn_1_4/
39+
dist/MinAn_2_0/
4140
|- MinAn.exe
42-
|- _internal/
43-
| `- sample_data/
44-
| `- test_csv_deutsch_200x15.csv
45-
|- output/
46-
| |- reports/
47-
| `- csv/
4841
|- README_Kurzstart.txt
49-
`- README.md
42+
`- LICENSE.txt
5043
```
5144

45+
Runtime output folders are created by the app relative to the release root as needed, for example:
46+
47+
- `output/reports/`
48+
- `output/csv/`
49+
- `output/meta/`
50+
- `output/charts/`
51+
5252
## Release Start Path
5353

5454
End-user start command:
5555

56-
`dist\\MinAn_1_4\\MinAn.exe`
56+
`dist\\MinAn_2_0\\MinAn.exe`
5757

5858
## Release Include/Exclude Policy
5959

6060
Included in release:
6161

6262
- executable (`MinAn.exe`)
63-
- runtime payload (`_internal/`)
64-
- exactly one bundled sample dataset (`_internal/sample_data/test_csv_deutsch_200x15.csv`)
65-
- output folders (`output/reports`, `output/csv`)
66-
- release readmes
63+
- user-facing quickstart readme
64+
- license text
6765

68-
Excluded from release repository tracking:
66+
Excluded from repository tracking:
6967

7068
- `build/` (generated)
7169
- `dist/` (generated)
@@ -74,21 +72,19 @@ Excluded from release repository tracking:
7472
## Artifact Policy
7573

7674
- `build/`, `dist/`, and `output/` are generated and excluded from git.
77-
- Packaging source files are versioned under `packaging/pyinstaller/`.
75+
- Packaging source files remain versioned under `packaging/pyinstaller/`.
7876

7977
## Packaging Scope
8078

8179
This repository documents Windows portable packaging only.
8280
Cross-platform packaging is currently out of scope.
8381

84-
## Minimal Smoke Validation (after build)
85-
86-
1. Verify `dist/MinAn_1_4/MinAn.exe` exists.
87-
2. Launch executable.
88-
3. Confirm app window opens.
89-
4. Confirm `output/reports` and `output/csv` exist under release root.
82+
## Minimal Smoke Validation
9083

91-
For a formal acceptance gate list, use [`release_checklist.md`](release_checklist.md).
84+
1. Verify `dist/MinAn_2_0/MinAn.exe` exists.
85+
2. Launch the executable.
86+
3. Confirm the app window opens.
87+
4. Confirm runtime output folders are created when features are used.
9288

9389
For one-command local execution of compile/test/build/smoke gates, use:
9490

0 commit comments

Comments
 (0)