Init
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# engineer — Jira statusDurations + movements + chart #17
|
||||
|
||||
**Date:** 2026-08-27 · v2.3.0
|
||||
|
||||
## Built
|
||||
- **Seed**: `dump-to-archives.mjs` enriches the jira map with `statusDurations` (ms) from
|
||||
`jira_board_state.colIssues[*]._statusDurations` (keyed to RITM via customfield_26001), and
|
||||
adds `jiraColumns` (workflow order) to config. 95 jira entries / 73 DB tickets get durations.
|
||||
- **Types**: `JiraInfo` += `statusDurations: Record<string,number>`, `movements:{at,who?,from?,to?}[]`.
|
||||
`ForgeConfig` += `jiraColumns`.
|
||||
- **Server**: `analytics.getJiraDurations()` averages `jira.statusDurations` per status (ms→days),
|
||||
in `jiraColumns` order, min-2 tickets. `GET /api/analytics/jira-durations` (requireRole pm).
|
||||
- **Client**: Active-stats page fetches it and renders a "Jira status durations (avg days)" BarList.
|
||||
- **Extension**: `collectFromJira` adds `expand=changelog`; `jiraFromChangelog(issue)` reconstructs
|
||||
time-per-status (created → transitions → now) and movements, sent inside `jira`.
|
||||
|
||||
## Verified (live)
|
||||
- `/api/analytics/jira-durations` → 18 statuses, workflow-ordered (Analysis…Closed) then extras;
|
||||
e.g. UAT 16.1d/21, Closed 23.5d/16, In-Progress 4.9d/37. server+client tsc clean; build OK; 9/9 tests.
|
||||
|
||||
## Not yet: live changelog untested (no Jira instance); movements only stored (chart #19 later).
|
||||
## Next: done.
|
||||
Reference in New Issue
Block a user