fix(go): pass raw value to FormatDate so numeric serial-day dates format
All checks were successful
Deploy to K8s / deploy (push) Successful in 11s
All checks were successful
Deploy to K8s / deploy (push) Successful in 11s
The transaction-row parser in services/membership/sources.go used a helper (`getVal`) that did `fmt.Sprint(row[i])` before passing to `matching.FormatDate`. The Sheets API returns date-formatted cells as `float64` (Sheets serial-day numbers); pre-stringifying defeated `FormatDate`'s `case float64:` dispatch, so values like 46147 leaked through unchanged as the string "46147" instead of being converted to "2026-05-05". Surfaced by `make parity` (M5.4) — every `transactions[].date` on /api/adults and /api/juniors differed between Python and Go. Python side passes the raw value through directly (`isinstance(val, (int, float))` in scripts/match_payments.py format_date), so it was always correct. Added a `getRaw` helper that returns row[i] without stringifying; only the date column needs it. Extended TestLoadTransactions with a numeric-serial-day row to lock in the regression. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-05-07 23:17 CEST — fix(go): pass raw value to FormatDate so numeric serial-day dates format
|
||||
|
||||
- `go/internal/services/membership/sources.go`: transaction-row parser now passes `row[idxDate]` directly to `matching.FormatDate` (via a new `getRaw` helper) instead of stringifying first via `getVal`. The Sheets API returns numeric serial-day values as `float64` for date-formatted cells; pre-stringifying them defeated `FormatDate`'s `case float64:` dispatch, causing all numeric dates to leak through as `"46147"` style strings instead of `"2026-05-05"`.
|
||||
- Surfaced by `make parity` (M5.4): every `transactions[].date` field on `/api/adults` and `/api/juniors` differed between Python and Go.
|
||||
- `sources_test.go::TestLoadTransactions` extended with a numeric-serial-day row covering the regression.
|
||||
|
||||
## 2026-05-07 23:05 CEST — fix(go): default CacheDir to `tmp/go` to avoid Python collision
|
||||
|
||||
- `go/internal/config/config.go`: `CacheDir` default changed from `tmp` to `tmp/go`. Override via `CACHE_DIR` env var still works.
|
||||
|
||||
Reference in New Issue
Block a user