Docs: mark Executive Report v2 as shipped (23 Apr 2026)
QA summary: - 42/42 tests pass - manage.py check clean - No pending migrations - Route sanity: /report/, /report/?project=1&project=2, /report/pdf/ all resolve (302 as anon, 200 as admin) - PDF generation verified for populated and empty date ranges Appends a "Shipped" block to the design doc that captures the final QA state, the deferred items, and the notable design decisions made during implementation. Konrad's inline-filter UX improvement (raised during Checkpoint 3) is explicitly flagged for a future brainstorm. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a27da90c58
commit
3dab09cea3
@ -268,3 +268,28 @@ Hand off to `superpowers:writing-plans` to produce the task-by-task implementati
|
||||
4. After PDF template mirrors HTML
|
||||
|
||||
Four natural demo-able pauses. Similar cadence to the 2026-04-22 work-log-payroll-crosslink plan.
|
||||
|
||||
---
|
||||
|
||||
## Shipped — 23 Apr 2026
|
||||
|
||||
**Commits:** 27cdb46 (design) → Task 14 shipped commit.
|
||||
**Plan:** `docs/plans/2026-04-23-executive-report-v2-plan.md`
|
||||
**Tests:** 28 → 42 (14 new — 3 company-cost-velocity, 3 current-outstanding-in-scope, 4 team-project-activity, 1 chapter-one-enrichment, 3 multi-filter).
|
||||
|
||||
**QA outcome:** 42/42 tests pass. `manage.py check` clean. `makemigrations --dry-run` reports no changes. Multi-value filter URLs (`?project=1&project=2`) resolve correctly. PDF rendering verified for populated and empty date ranges.
|
||||
|
||||
**Deferred / out of scope (revisit if requested):**
|
||||
- Charts / sparklines in any chapter (text-and-table only)
|
||||
- Save-as-template feature
|
||||
- Period-over-period comparison
|
||||
- Dead `.hero-*` CSS block in PDF template (~40 lines, not referenced by new body)
|
||||
- Consolidate near-duplicate PDF table classes (`.worker`, `.lifetime`, `.pivot`)
|
||||
- Inline filters on report page (vs modal-popup) — **Konrad flagged this during Checkpoint 3 as the next UX improvement; slated for a separate brainstorm + design + plan after this ships**
|
||||
|
||||
**Notable design decisions made during implementation:**
|
||||
- Task 1 extracted `_compute_outstanding` from `index()` as a pure refactor before any new work — zero behaviour change.
|
||||
- M2M filter pattern from commit `f1e246c` (Apr 22 bug fix) extended cleanly to multi-value via `__in` lookups + `id__in` subqueries.
|
||||
- Choices.js integrated via CDN with SRI hashes, graceful fallback to native `<select multiple>` on CDN failure, and custom CSS theme overrides matching the app's dark/light tokens.
|
||||
- `dictlookup` template filter added to `format_tags.py` — general-purpose utility for dict[var-key] lookups in Django templates.
|
||||
- PDF template swapped xhtml2pdf-era `@frame footer_frame` / `-pdf-*` rules for WeasyPrint-idiomatic plain `.footer` div.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user