Menu ▾ ▴

#538 Work-item sources: aggregate GitHub assignments, then Planner and kanban boards

open
nobody
enhancement (2)
8 hours ago
8 hours ago
Anonymous
No

Originally created by: athanclark

Part of [#533]. OpenChronology as an aggregator of the events that work tools already create: GitHub issue and pull request assignments first, then Microsoft Planner and kanban boards. It mirrors them read-only; it is not a time tracker.

Depends on ongoing durations (#537): an open work item is a duration that ends now.

Model

The same pattern as the syslog receiver, the journald follower and och-import-logs: an API key, routing rules to timelines, and a live path plus a backfill path.

Source event On the timeline
Issue or PR opened A duration from its creation, ongoing
Closed or merged The duration gets a fixed end
Reopened The end becomes ongoing again
Assigned or unassigned A moment, and an assignee tag on the duration
Labels, milestone, repository Tags
Linked issues, "closes #n" Relationships

Each work item keeps a stable ID derived from its source (github:owner/repo#412), so redelivered webhooks and re-runs of the backfill update rather than duplicate.

GitHub, first

  • Live: a webhook receiver (issues, pull_request and issue_comment events if wanted), checking X-Hub-Signature-256, routing by repository.
  • Backfill: an importer that reads a repository's issues and PRs, and their timeline events, through the REST API with a token, with --since and --dry-run like och-import-logs.
  • Gantt view: check that separating by the assignee tag, plus relationships, gives a usable per-person chart before adding any new view.

Later sources, same mapping

  • Microsoft Planner: tasks through Microsoft Graph (created, assigned, percent complete, completed), using change notifications for live updates.
  • Kanban boards: for example GitHub Projects, Trello or Jira. A card's time in each column becomes a duration, and a column move becomes a moment.

Privacy

Assignments name people, so this mirrors personal data from another service. The docs should say what is copied, and deleting or unassigning at the source should be reflected.

Related

Tickets: #533
Tickets: #542
Tickets: #545
Tickets: #546
Tickets: #547

Discussion


Log in to post a comment.