ditdash U-G4: the FOCUS/CSV export (the format param lands) #11
Loading…
Reference in a new issue
No description provided.
Delete branch "ditdash-u-g4"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The FOCUS 14-column map + the CSV serializer; the format param rides the I9 branch point; no charge math in ditdash. Critic: PASS-WITH-FINDINGS (2 coverage warnings ruled non-blocking: the invariants are individually pinned).
src/export.rs carries the frozen FOCUS 1.4 profile (the 14-column map as one extractor table; FOCUS_COLUMNS derives from it) and the stable CSV serializer, with the role's shadow filter and the visible-subtotal recompute as pure functions. The statement twin gains format=focus (application/json, the FOCUS row array) and format=csv (text/csv); the API-only periods summary mounts at /api/v1/clients/{c}/statements (dito statement show <client> --json shaped, the role-visible current statement included); the OpenAPI document gains the resource + focusRow schemas generated from the serializer's own frozen tables. tests/exports.rs pins the column-by-column mapping, the frozen export's byte stability, the role boundaries (shadow absent for viewers, tagged for operators), and the named data-absence envelopes; the statement page and client-page digests refresh for the new export links. Assisted-by: worker:synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash