Skip to content

feat(sprint4): agile reports β€” burndown, velocity, CFD, PDF export#255

Merged
parth0025 merged 1 commit into
stagingfrom
feat/sprint4-implementation
Jun 18, 2026
Merged

feat(sprint4): agile reports β€” burndown, velocity, CFD, PDF export#255
parth0025 merged 1 commit into
stagingfrom
feat/sprint4-implementation

Conversation

@parth0025

Copy link
Copy Markdown
Collaborator

Sprint 4 β€” Agile Core II (Reports)

Implements all four Sprint 4 tasks (AHE-3706…3709) on a single branch, off staging.

Included

  • S4-01 Β· Burndown β€” Sprints/burndown.js now also computes story points (totalPoints + per-day remainingPoints/idealPoints) alongside the existing count/hours; exposed at GET /api/v1/agile/burndown. Frontend BurndownChart.vue (sprint picker, Points/Tasks toggle, ideal vs remaining).
  • S4-02 Β· Velocity β€” GET /api/v1/agile/velocity (committed vs completed points per sprint + rolling-3 average) + VelocityChart.vue.
  • S4-03 Β· CFD β€” GET /api/v1/agile/cfd (status-band counts/day, 30d) + CFDChart.vue (stacked area).
  • S4-04 Β· PDF export β€” POST /api/v1/export/pdf (pdfmake, lazy-loaded, standard fonts). Export PDF on each Reports chart.
  • Reports view β€” a first-class add/removable view in the + View catalog (burndown / velocity / CFD as sub-tabs).

Architecture note

The plan proposed a daily snapshot cron β†’ SPRINT_SNAPSHOTS. I compute the reports on-the-fly from tasks + Task_Status history instead: crons run production-only here (snapshots would never populate during local/dev testing) and history already records the transitions the planned "backfill" would read. Net: no cron, no new collection, testable immediately, zero schema change.

Scope

  • New: Modules/AgileReports/, Modules/Export/, frontend/.../Projects/Reports/.
  • Modified (additive): Sprints/burndown.js, index.js, package.json(+lock β€” pdfmake), projectTabs/controller.js (catalog injection), ViewsDropdown.vue, commonFunction.js (Reports icon), en.js (labels), Projects.vue (getView + Reports layout).
  • No DB schema change.

Verified

  • 208 backend tests pass (no regression); all touched Vue files compile.
  • Manual: Reports tab add/remove + burndown render confirmed against production data locally.

Notes / caveats

  • npm install required for the PDF endpoint (pdfmake added to deps).
  • CFD bands are status categories (Done is exact from completion dates; active bands use current status β€” history doesn't store per-custom-status transitions).
  • Velocity includes all non-deleted sprints (not only "closed").
  • Reports labels are English-only for now (other locales fall back).

πŸ€– Generated with Claude Code

S4-01 burndown: Sprints/burndown.js now also computes story points (totalPoints + per-day remainingPoints/idealPoints) alongside the existing count/hours, exposed at GET /api/v1/agile/burndown (query-aware, reuses the existing handler).

S4-02 velocity + S4-03 CFD: new Modules/AgileReports/ β€” GET /api/v1/agile/velocity (committed vs completed points per sprint + rolling-3 avg) and /cfd (status-band counts per day). Computed on-the-fly from tasks + Task_Status history instead of a snapshot cron: the cron is production-only (untestable locally) and history already holds the transitions, so no new collection/cron and it works immediately.

S4-04 PDF: new Modules/Export/ β€” POST /api/v1/export/pdf renders a branded PDF from a client payload (table rows + chart dataURI images) via pdfmake (lazy-required so a missing install never breaks startup; standard Helvetica font). Export PDF buttons on each Reports chart.

Frontend: views/Projects/Reports/ (ReportsView + Burndown/Velocity/CFD ApexCharts). Reports added as a first-class add/removable view via the +View catalog (projectTabs response injection + ViewsDropdown preview + projectComponentsIcons + i18n). No DB schema change; backend suite unaffected (208 pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 97660679-b99c-4fa9-9413-7a088f528d11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • πŸ” Trigger review
✨ Finishing Touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/sprint4-implementation

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@parth0025 parth0025 merged commit 4d0289b into staging Jun 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant