- Remove insecure SSL verification bypass in attendance.py - Add gunicorn as production WSGI server (Dockerfile + entrypoint) - Fix silent data loss in reconciliation (log + surface unmatched members) - Add required column validation in payment sheet parsing - Add input validation on /qr route (account format, amount bounds, SPD injection) - Centralize configuration into scripts/config.py - Extract credentials path to env-configurable constant - Hide unmatched transactions from reconcile-juniors page - Fix test mocks to bypass cache layer (all 8 tests now pass reliably) - Add pytest + pytest-cov dev dependencies - Fix typo "Inffering" in infer_payments.py - Update CLAUDE.md to reflect current project state Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Status
Flask-based financial management system for FUJ (Frisbee Ultimate Jablonec). Handles attendance-based fee calculation, Fio bank transaction sync, payment reconciliation, and a web dashboard.
Key Constraints
- PII separation: Member data (names, emails, payment info) must never be committed to git. Enforce config/data separation from day one.
- Configuration: External service IDs, credentials, and tunable parameters are centralized in
scripts/config.py. Domain-specific constants (fees, merged months) stay in their respective modules.
Development Setup
This project uses uv for dependency management.
uv venv # Create virtual environment
uv sync # Install dependencies from pyproject.toml
source .venv/bin/activate
Alternatively, use the Makefile:
make sync- Sync bank transactions to Google Sheetsmake infer- Automatically infer Person/Purpose/Amount in the sheetmake reconcile- Generate balance report from Google Sheets datamake fees- Calculate expected fees from attendancemake match- (Legacy) Match bank data directlymake web- Start dashboardmake image- Build Docker image
Requires .secret/fuj-management-bot-credentials.json for Google Sheets API access (configurable via CREDENTIALS_PATH env var).
Git Commits
When making git commits, always append yourself as co-author trailer to the end of the commit message to indicate AI assistance