docs: experiment with generated documentation, let's keep it in git for
All checks were successful
Deploy to K8s / deploy (push) Successful in 8s

now
This commit is contained in:
2026-03-11 11:57:30 +01:00
parent e83d6af1f5
commit 9b99f6d33b
17 changed files with 2367 additions and 0 deletions

66
docs/by-gemini/scripts.md Normal file
View File

@@ -0,0 +1,66 @@
# Support Scripts Reference
The project includes several CLI utilities located in the `scripts/` directory. Most are accessible via `make` targets.
## 🚀 Primary Scripts
### `sync_fio_to_sheets.py`
**Target**: `make sync` | `make sync-2026`
- **Purpose**: Downloads transactions from Fio bank via API and appends new ones to the Google Sheet.
- **Key Logic**: Uses a `Sync ID` (SHA-256 hash of transaction details) to ensure that even if the sync is run multiple times, no duplicate rows are created.
- **Arguments**:
- `--days`: How many days back to look (default 30).
- `--from/--to`: Specific date range.
- `--sort-by-date`: Re-sorts the spreadsheet after appending.
### `infer_payments.py`
**Target**: `make infer`
- **Purpose**: Processes the "Transactions" sheet to fill in `Person`, `Purpose`, and `Inferred Amount`.
- **Logic**:
- Analyzes the `Sender` and `Message` fields.
- Uses `match_payments.py` heuristics to find members.
- If confidence is low, prefixes the name with `[?]` to flag it for manual review.
- Won't overwrite cells that already have data (respecting your manual fixes).
### `match_payments.py`
**Target**: `make match` | `make reconcile`
- **Purpose**: The core "Reconciliation Engine".
- **Logic**:
- Fetches attendance fees (from `attendance.py`).
- Fetches transaction data.
- Correlates them based on inferred `Person` and `Purpose`.
- Handles "rollover" balances—extra money from one month is tracked as a credit for the next.
---
## 🛠 Utility Modules
### `attendance.py`
- Handles the connection to the Google Attendance sheet (exported as CSV).
- Implements the club's fee rules:
- 0 practices = 0 CZK
- 1 practice = 200 CZK
- 2+ practices = 750 CZK
- *Note*: Fee calculation only applies to members in Tier "A" (Adults).
### `czech_utils.py`
- **Normalization**: Strips diacritics and lowercases text (e.g., `František` -> `frantisek`).
- **Month Parsing**: Advanced regex to detect month references in Czech (e.g., "leden-brezen", "11+12/25", "na únor").
### `fio_utils.py`
- Low-level wrapper for the Fio Bank API.
- Handles HTTP requests and JSON parsing for transaction lists.
---
## ⚙️ Makefile Summary
| Command | Action |
| :--- | :--- |
| `make fees` | Preview calculated fees based on attendance. |
| `make sync` | Sync last 30 days of bank data. |
| `make infer` | Run smart tagging on the sheet. |
| `make reconcile` | Run a text-based reconciliation report in terminal. |
| `make web` | Start the Flask dashboard. |
| `make test` | Run the test suite. |
```