Files
forge/claude_artifacts/engineer-20260827-190753.md
T
Dmytro Tkachenko 9868b18818 Agents
2026-08-29 12:55:39 +03:00

1.3 KiB

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.