- Add dual-sheet architecture to pull attendance from both adult and junior spreadsheets. - Introduce parsing rules to isolate juniors (e.g. above '# Treneri', tier 'J'). - Add new endpoints `/fees-juniors` and `/reconcile-juniors` to track junior attendances and match bank payments. - Display granular attendance components showing adult vs. junior practices. - Add fee rule configuration supporting custom pricing exceptions for specific months (e.g. Sep 2025) and merging billing periods. - Add `make sync-2025` target to the Makefile for convenience. - Document junior fees implementation logic and rules in prompts/outcomes. Co-authored-by: Antigravity <antigravity@google.com>
2.2 KiB
2.2 KiB
Junior Fees Implementation Summary
Based on the recent updates, we have introduced a dedicated system for tracking, displaying, and reconciling junior team attendances and payments.
1. Implemented Features
- Dual-Sheet Architecture: The system now pulls attendance from two separate Google Sheet tabs—one for adult practices and another for junior practices.
- New Views:
/fees-juniors: A dedicated dashboard showing junior attendances and calculated fees./reconcile-juniors: A dedicated page matching Fio bank transactions against expected junior fees.
- Granular Attendance Display: The UI clearly separates and tallies adult (
A) and junior (J) practice counts for each member (e.g.,4 (2A+2J)or2 (J)).
2. Membership Rules
- Identification: A member is processed as a junior if they appear in the Junior Sheet, UNLESS:
- They are listed below the separator line
# Treneri(or# Trenéři). - Their tier is explicitly marked as
X.
- They are listed below the separator line
- Adult Sheet Fallback: Members from the Adult Sheet whose tier is marked as
Jare also tracked as juniors. - Merging Identities: If a member has the identical name in both the Adult Sheet and the Junior Sheet, their attendance records are merged together into a single profile.
3. Fee Calculation Rules
The base fee calculation for juniors relies on the total combined attendance across both adult and junior practices for a given month:
- 0 attendances: 0 CZK
- Exactly 1 attendance:
?(Flags the month for manual review/decision) - 2 or more attendances: 500 CZK (Default base rate)
4. Exceptions & Overrides
We have hardcoded specific timeline and pricing exceptions directly into the logic:
-
Modified Monthly Rates:
- September 2025 (
2025-09) is explicitly configured to have a fee of 250 CZK for 2+ attendances instead of the default 500 CZK.
- September 2025 (
-
Merged Billing Months: To handle holidays and off-seasons, certain subsequent months are merged and billed as a single period. Their attendances are summed up before the fee rule is applied. The current active merges are:
- December 2025 is merged into January 2026
- September 2025 is merged into October 2025