docs: Update README with validation and record count features

- Add --validate command documentation with examples
- Add --record-counts command documentation
- Document new CLI arguments: --change-threshold, --no-adaptive, --gap-threshold
- Add comprehensive JSON schema examples for validation features
- Include trading days validation and record count examples
- Update features list to include data validation capabilities
- Add examples for adaptive threshold usage
- Document multi-currency validation options

Documentation now covers:
- Complete validation command usage
- Record count analysis by time periods
- JSON output schemas for all new features
- Adaptive learning configuration
- Threshold customization options
- Data quality scoring explanation

All new functionality is now properly documented with examples and JSON schemas.
This commit is contained in:
kdusek
2026-01-12 23:31:56 +01:00
parent 8be7f745b1
commit d126c5d59d

View File

@@ -18,6 +18,9 @@ Tento projekt je určen pro stahování a správu kurzů cizích měn vůči če
- **Generování reportů**: Lze vygenerovat report kurzů pro zadaný rok, měsíc nebo časové období včetně dopočítaných kurzů pro dny, kdy ve vstupních datech neexistovali.
- **Správné dopočítání kurzů**: Program správně aplikuje pravidla ČNB pro dopočítání kurzů pro víkendy a svátky jak při vyhledávání (`--get-rate`), tak při generování reportů.
- **Výpočet Jednotného kurzu**: Lze vypočítat 'Jednotný kurz' pro daňové účely podle metodiky ČNB jako aritmetický průměr kurzů k posledním dnům každého měsíce v roce.
- **Validace dat**: Program umí validovat data pro konzistenci, detekovat změny kurzů přesahující prahové hodnoty, kontrolovat počet obchodních dnů a analyzovat časové mezery v datech.
- **Analýza počtu záznamů**: Lze zobrazit počty záznamů podle různých časových období (týden, měsíc, čtvrtletí, pololetí, rok).
- **Adaptivní prahy**: Systém se učí z historických dat a automaticky upravuje prahy pro detekci anomálií.
- **JSON výstup**: Všechny příkazy podporují JSON formát pro programové zpracování pomocí přepínače `--json`.
## Požadavky
@@ -65,6 +68,11 @@ Při každém spuštění programu:
- `--report-year ROK [--report-month MESIC]`: Vygeneruje report kurzů pro zadaný rok (a případně měsíc). Vyžaduje `-c` nebo `--currency`.
- `--report-period ZACATEK KONEC`: Vygeneruje report kurzů pro zadané časové období. Vyžaduje `-c` nebo `--currency`.
- `--stats [ROK]`: Vypočítá 'Jednotný kurz' pro daňové účely podle metodiky ČNB. Pokud je zadán rok, vytvoří kurz pro konkrétní rok. Pokud není rok zadán, vytvoří kurzy pro všechny roky s dostupnými daty. Vyžaduje `-c` nebo `--currency`.
- `--validate`: Validuje data pro měnu nebo všechny měny. Zkontroluje konzistenci kurzů, počet obchodních dnů a detekuje možné chyby.
- `--record-counts`: Zobrazí počet záznamů podle časových období (týden, měsíc, čtvrtletí, pololetí, rok). Vyžaduje `-c` nebo `--currency`.
- `--change-threshold PRAH`: Práh pro detekci změn kurzů v procentech (výchozí: 1.0).
- `--no-adaptive`: Vypne adaptivní učení prahů na základě historických dat.
- `--gap-threshold DNY`: Maximální přijatelná mezera v pracovních dnech (výchozí: 3).
- `--json`: Výstup ve formátu JSON místo prostého textu pro programové zpracování.
### Příklady
@@ -125,19 +133,34 @@ Při každém spuštění programu:
python src/cli.py --stats -c USD
```
12. **Získání posledního dostupného kurzu USD**:
12. **Validace dat pro měnu USD za rok 2025**:
```bash
python src/cli.py --validate --currency USD --year 2025
```
13. **Validace všech měn s vlastními prahy**:
```bash
python src/cli.py --validate --change-threshold 0.5 --gap-threshold 2
```
14. **Zobrazení počtu záznamů podle časových období pro USD**:
```bash
python src/cli.py --record-counts --currency USD --year 2025
```
15. **Získání posledního dostupného kurzu USD**:
```bash
python src/cli.py -c USD
```
13. **JSON výstup pro vyhledání kurzu**:
16. **JSON výstup pro vyhledání kurzu**:
```bash
python src/cli.py --get-rate 01.01.2025 -c USD --json
```
14. **JSON výstup pro výpočet Jednotného kurzu**:
17. **JSON výstup pro validaci dat**:
```bash
python src/cli.py --stats 2025 -c USD --json
python src/cli.py --validate --currency USD --year 2025 --json
```
## JSON formát
@@ -196,6 +219,60 @@ Při použití přepínače `--json` program vrací strukturovaná data ve form
}
```
### Validace dat
```json
{
"currency": "USD",
"validation_year": 2025,
"adaptive_analysis": {
"adaptive_threshold": 1.5,
"base_threshold": 1.0,
"volatility_percent": 0.24,
"data_points": 62
},
"price_change_violations": [
{
"date": "06.01.2025",
"change_percent": 1.19,
"severity": "minor"
}
],
"temporal_gaps": [],
"trading_days_validation": {
"expected_trading_days": 251,
"actual_data_points": 251,
"discrepancy_days": 0,
"data_completeness_percent": 100.0
},
"record_counts_by_period": {
"2025": {
"year": 251,
"half_year": {"H1": 124, "H2": 127},
"quarter": {"Q1": 63, "Q2": 61, "Q3": 66, "Q4": 61},
"month": {"01": 22, "02": 20, "03": 21},
"week": {"W01": 5, "W02": 5}
}
},
"data_quality_score": 95
}
```
### Počty záznamů podle období
```json
{
"currency": "USD",
"record_counts": {
"2025": {
"year": 251,
"half_year": {"H1": 124, "H2": 127},
"quarter": {"Q1": 63, "Q2": 61, "Q3": 66, "Q4": 61},
"month": {"01": 22, "02": 20, "03": 21, "04": 20},
"week": {"W01": 5, "W02": 5, "W03": 5}
}
}
}
```
## Chování při různých časech a datumech
- **Budoucí datum**: Program vrátí chybu, protože kurzy pro budoucí data ještě nebyly vydány.