pf_app
A slice carries every value as a string -- built from filters the grid reports, and shaped to survive JSON on the way to the API. Perspective matches on type, and a string '2027' against an integer column is not a filter that matches nothing, it is a filter that is dropped. So the pivot's own season filter never reached the ledger: with the grid scoped to sseas_e = 2027 the ledger totalled 956,485.13 against a cell reading 921,225.71, the difference being eleven rows of a baseline segment whose shipments fall in the next season. Only dates were being coerced, and only because someone had hit this before with them. Values are now typed against the loaded table's schema rather than against col_meta's role, which is the thing that actually decides the match. The server side was already right -- Postgres casts the literal -- and returns 921,225.71 for the same slice. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| lib | ||
| public | ||
| routes | ||
| setup_sql | ||
| ui | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| install.sh | ||
| package-lock.json | ||
| package.json | ||
| PERSPECTIVE.md | ||
| pf_perspective_options.md | ||
| pf_spec.md | ||
| pf.sh | ||
| server.js | ||