Deploy to K8s / deploy (push) Successful in 20s
Go (go/) becomes the primary implementation. The original Python version moves to legacy/ and is kept runnable; new features are still built in both (see the Dual implementation rule in CLAUDE.md). - git mv app.py, scripts/, templates/, tests/, pyproject.toml, uv.lock and build/ into legacy/ - Makefile: Python targets point at legacy/, venv in legacy/.venv, CREDENTIALS_PATH exported for the root .secret/ file - CI and make image build the Python image with legacy/ as context; the Makefile is no longer copied into the image - legacy/.dockerignore moved to the context root so it takes effect - CLAUDE.md, docs/README.md, Go comments, fixture README, capture script and VS Code launch config updated to the new layout Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package fees
|
|
|
|
const JuniorFeeDefault = 500 // CZK fallback for 2+ practices when month not in JuniorFeeMonthlyRate
|
|
|
|
// JuniorFeeMonthlyRate mirrors JUNIOR_MONTHLY_RATE in legacy/scripts/attendance.py.
|
|
// Months absent from this map fall back to JuniorFeeDefault.
|
|
var JuniorFeeMonthlyRate = map[string]int{
|
|
"2025-09": 250,
|
|
"2026-03": 250,
|
|
}
|
|
|
|
// Expected is the result of a junior fee calculation.
|
|
// When Unknown is true the fee requires manual review (Python returns "?");
|
|
// in that case Value is meaningless — always check Unknown first.
|
|
type Expected struct {
|
|
Value int
|
|
Unknown bool
|
|
}
|
|
|
|
// CalculateJuniorFee returns the junior fee for attendanceCount practices in
|
|
// the given monthKey (format "YYYY-MM").
|
|
//
|
|
// 0 practices → Expected{Value: 0}
|
|
// 1 practice → Expected{Unknown: true} (manual review; Python sentinel "?")
|
|
// 2+ → Expected{Value: JuniorFeeMonthlyRate[monthKey] or JuniorFeeDefault}
|
|
func CalculateJuniorFee(attendanceCount int, monthKey string) Expected {
|
|
if attendanceCount == 0 {
|
|
return Expected{Value: 0}
|
|
}
|
|
if attendanceCount == 1 {
|
|
return Expected{Unknown: true}
|
|
}
|
|
if rate, ok := JuniorFeeMonthlyRate[monthKey]; ok {
|
|
return Expected{Value: rate}
|
|
}
|
|
return Expected{Value: JuniorFeeDefault}
|
|
}
|