Commit Graph
17 Commits
Author SHA1 Message Date
kacerrandClaude Opus 4.6 3ad4a21f5b feat: Pass build metadata args in Gitea CI pipeline
Deploy to K8s / deploy (push) Failing after 6s
Build and Push / build (push) Successful in 5s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 16:34:34 +01:00
kacerrandClaude Opus 4.6 3c1604c7af feat: Bake build metadata (git tag, commit, date) into OCI image and display in web UI
Build and Push / build (push) Successful in 6s
Deploy to K8s / deploy (push) Failing after 10s
Store git tag, commit hash, and build date as OCI-standard labels and a
build_meta.json file inside the Docker image. The Flask app reads this at
startup and displays version info in all page footers. Adds /version JSON
endpoint for programmatic access. Falls back to dev@local outside Docker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 16:30:20 +01:00
kacerrandClaude Opus 4.6 8b3223f865 feat: Add POST /flush-cache endpoint to clear all cached data and reset timers
Deploy to K8s / deploy (push) Failing after 7s
Build and Push / build (push) Successful in 6s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 10:45:47 +01:00
kacerrandClaude Opus 4.6 276e18a9c8 feat: Show attendance breakdown for single-visit junior fees
Build and Push / build (push) Successful in 8s
When a junior attended only once in a month (fee = "?"), the dashboard
cells now display the attendance details (e.g., "? (1:1J)") instead of
a bare "?". Applied to both /juniors and /reconcile-juniors routes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 10:41:45 +01:00
kacerrandAntigravity 61f2126c1b feat: Change default redirect to Adults dashboard
Build and Push / build (push) Successful in 8s
Deploy to K8s / deploy (push) Successful in 12s
Co-authored-by: Antigravity <antigravity@google.com>
2026-03-11 13:13:05 +01:00
kacerrandAntigravity 3377092a3f feat: Add Adults and Juniors dashboards with concise layout, totals, tooltips and unified navigation
Build and Push / build (push) Successful in 8s
Deploy to K8s / deploy (push) Successful in 8s
Co-authored-by: Antigravity <antigravity@google.com>
2026-03-11 13:01:18 +01:00
kacerrandClaude Opus 4.6 dca0c6c933 feat: warm up cache on app startup for fast first page load
Build and Push / build (push) Successful in 8s
Pre-fetches all 4 cached datasets (attendance, juniors, payments,
exceptions) at module load time so the first request doesn't block
on Google API calls.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:59:53 +01:00
kacerr 9b99f6d33b docs: experiment with generated documentation, let's keep it in git for
Deploy to K8s / deploy (push) Successful in 8s
now
2026-03-11 11:57:30 +01:00
kacerr e83d6af1f5 prompts: trying to record discussions with agents, it probably won't
Deploy to K8s / deploy (push) Successful in 11s
work for me anyway
2026-03-11 11:56:21 +01:00
kacerr 7d51f9ca77 Merge pull request 'refactor: code quality improvements across the backend' (#3) from claude-suggested-fixes into main
Deploy to K8s / deploy (push) Successful in 7s
Reviewed-on: #3
2026-03-11 10:55:52 +00:00
kacerrandClaude Opus 4.6 033349cafa refactor: code quality improvements across the backend
Deploy to K8s / deploy (push) Successful in 13s
Build and Push / build (push) Successful in 32s
- 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>
2026-03-11 11:40:32 +01:00
kacerr 0d0c2af778 Merge pull request 'google-documents-read-caching' (#2) from google-documents-read-caching into main
Deploy to K8s / deploy (push) Successful in 10s
Reviewed-on: #2
2026-03-11 10:13:18 +00:00
kacerrandClaude Opus 4.6 7170cd4d27 refactor: unify get_cached_exceptions into get_cached_data
Deploy to K8s / deploy (push) Successful in 12s
Build and Push / build (push) Successful in 8s
Add optional serialize/deserialize hooks to get_cached_data() so it
can handle the exceptions dict (tuple keys → JSON-safe lists) without
needing a separate function.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:10:16 +01:00
kacerrandClaude Opus 4.6 251d7ba6b5 fix: properly debounce Drive API metadata checks in cache
Remove the file mtime check from the API debounce tier in
get_sheet_modified_time(). Previously, the debounce was defeated when
CACHE_TTL_SECONDS differed from CACHE_API_CHECK_TTL_SECONDS because
the file age check would fail even though the API was checked recently.

Also fix cache key mappings (attendance_juniors sheet ID,
payments_transactions rename) and add tmp/ to .gitignore.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:01:41 +01:00
kacerr 76cdcba424 docs: add caching outcomes summary to prompts directory 2026-03-11 01:18:00 +01:00
kacerr 8662cb4592 feat: implement caching for google sheets data
- Add cache_utils.py with JSON caching for Google Sheets
- Authenticate and cache Drive/Sheets API services globally to reuse tokens
- Use CACHE_SHEET_MAP dict to resolve cache names securely to Sheet IDs
- Change app.py data fetching to skip downloads if modifiedTime matches cache
- Replace global socket timeout with httplib2 to fix Werkzeug timeouts
- Add VS Code attach debugpy configurations to launch.json and Makefile
2026-03-11 01:16:00 +01:00
kacerr c8c145486f Merge pull request 'calculate-finance-for-juniors' (#1) from calculate-finance-for-juniors into main
Deploy to K8s / deploy (push) Successful in 12s
Reviewed-on: #1
2026-03-10 22:12:32 +00:00