Files
forge/claude_artifacts/engineer-20260827-190753.md
T

23 lines
1.3 KiB
Markdown
Raw Normal View History

2026-08-29 12:55:39 +03:00
# 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.