Files
fuj-management/docs/by-gemini/scripts.md
Jan Novak 9b99f6d33b
All checks were successful
Deploy to K8s / deploy (push) Successful in 8s
docs: experiment with generated documentation, let's keep it in git for
now
2026-03-11 11:57:30 +01:00

2.5 KiB

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.