feat(reports): report table cleanup — shared footnotes, deposit labels, claim metadata, total-only summary, usage area (#1923) - #1924
Conversation
…a removal, total-only summary, area in usage column Fixes #1923 Co-Authored-By: Claude dev-team-lead (Sonnet 4.6) <noreply@anthropic.com> Co-Authored-By: Claude backend-developer (Haiku 4.5) <noreply@anthropic.com> Co-Authored-By: Claude frontend-developer (Haiku 4.5) <noreply@anthropic.com> Co-Authored-By: Claude qa-integration-tester (Sonnet 4.5) <noreply@anthropic.com> Co-Authored-By: Claude e2e-test-engineer (Sonnet 4.5) <noreply@anthropic.com> Co-Authored-By: Claude translator (Sonnet 4.5) <noreply@anthropic.com>
…update realRender deposit assertions Co-Authored-By: Claude dev-team-lead (Sonnet 4.6) <noreply@anthropic.com> Co-Authored-By: Claude qa-integration-tester (Sonnet 4.5) <noreply@anthropic.com>
|
[ux-designer] Verdict: APPROVED Reviewed against the visual spec posted on issue #1923 (HEAD 86e5c72). Implementation matches the spec point-for-point:
Token compliance: all new CSS values are No findings, blocking or otherwise. |
|
[product-owner] Product Owner review — PR #1924 vs. Story #1923 (27 AC)Reviewed at Verdict: COMMENT — 1 MUST FIX before merge26 of 27 acceptance criteria are met, with genuinely good test evidence — the unit tests are AC-tagged, the E2E specs cover all three viewports, and the "no regression" counter-cases (non-claim metadata block, non-split reports, non-deposit rows, rows without an area) are all explicitly asserted rather than assumed. One non-functional display gap must be fixed before merge; it does not block the review loop. MUST FIX — the inline Deposit label renders in the UI language, not the report languageAC2.1, and the spirit of AC1.4 ("appears identically in the HTML preview and the PDF export"). The two renderers get two different
Net effect: with UI language This is the first piece of artifact content in the preview to be rendered with the UI Suggested resolution (product-level; exact shape is the architect's call): resolve the label once in AC coverage
Non-blocking notes (not MUST FIX)
Re-request my review once the deposit label resolves through the report-language |
|
[product-architect]
Architecture review — PR #1924 (story #1923)Verified against the wiki Architecture / API-Contract / Schema pages, the What checks out
Blocking finding[High] The inline deposit label is resolved with the UI-language
With UI = English and report language = German (a first-class scenario since #1903), the preview shows This also breaks the Fix (small):
Non-blocking (address in refinement or ignore)
Everything else is spec-compliant and consistent with the established architecture. Happy to re-review as soon as the deposit label is moved onto |
…ed content model Co-Authored-By: Claude dev-team-lead (Sonnet 4.6) <noreply@anthropic.com> Co-Authored-By: Claude frontend-developer (Haiku 4.5) <noreply@anthropic.com> Co-Authored-By: Claude qa-integration-tester (Sonnet 4.5) <noreply@anthropic.com>
|
[product-architect]
Re-review of
|
|
[product-owner] Product Owner review — PR #1924, round 2Re-reviewed at Verdict: APPROVEDThe round-1 MUST FIX is resolved, in the exact shape I asked for and then some. MUST FIX verification — deposit label now resolves in the report language
The regression test is the right one.
That last assertion is what makes this durable — it closes the loop end-to-end rather than only at the content-model boundary. Bonus: the editor unit tests were strengthened as a side effect. They now assert the sentinel Round-1 non-blocking note 1 also fixed: Regression surface
AC status: 27/27AC1–AC6 all met. AC2.1 is now fully met including the report-language requirement. AC5.6 remains an accepted documented deviation (Schema.md untouched because no DB column was added; Follow-up (out of scope for #1923 — do NOT expand this PR)While verifying the
This predates #1923 and is not a regression, so it stays out of this PR per scope discipline. It doesn't fit the #1917 bucket either (that one is LLM-boundary scoped). Recommend a small standalone bug issue — say the word and I'll file it with acceptance criteria. Remaining nit from round 1, still open and still not blocking: Approved for merge. |
|
🎉 This PR is included in version 2.13.0-beta.38 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary
†marker; the footnote list has exactly one entry (no per-invoice numbering, no vendor/invoice-number prefix).Badgeinstead of a footnote marker; reduced-deposit rows keep a single shared, unnumbered‡footnote. ThedepositConstitutedFootnotekey is removed (en+de).claim-type reports;budget-overview/proof-of-fundsare unaffected.Totalrow remains. Thesubtotalkey is removed (en+de).SourceReportLinkedItemgainsareaId/areaName, populated server-side via aLEFT JOIN areasonwork_items.area_id/household_items.area_id(leaf area name only, no parent-path expansion). Rendered as a distinct, non-editable line below the Usage field (desktop table, mobile card, and PDF) — never baked into the editableusageText, so it survives AI-generated usage descriptions.Fixes #1923
Test plan
sourceReportService.test.tsextended with 5 new AC5 area-join tests)Co-Authored-By: Claude dev-team-lead (Sonnet 4.6) noreply@anthropic.com
Co-Authored-By: Claude backend-developer (Haiku 4.5) noreply@anthropic.com
Co-Authored-By: Claude frontend-developer (Haiku 4.5) noreply@anthropic.com
Co-Authored-By: Claude qa-integration-tester (Sonnet 4.5) noreply@anthropic.com
Co-Authored-By: Claude e2e-test-engineer (Sonnet 4.5) noreply@anthropic.com
Co-Authored-By: Claude translator (Sonnet 4.5) noreply@anthropic.com