Plan sprints with dates and a goal, run one at a time per project, and put tickets in them from the ticket page. The Sprints tab follows the one under way with its progress and a burndown in tickets or points against the ideal line. Closing a sprint sends what was left to the next one or back to the backlog; the board can be filtered by sprint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { registerEnumType } from '@nestjs/graphql';
|
|
import { IssueSort } from '@task-stream/api/tracker/application';
|
|
import {
|
|
IssueLinkType,
|
|
IssuePriority,
|
|
NotificationKind,
|
|
ProjectRole,
|
|
ReleaseStatus,
|
|
SprintStatus,
|
|
StatusCategory,
|
|
} from '@task-stream/api/tracker/domain';
|
|
|
|
export enum LinkDirection {
|
|
OUTWARD = 'OUTWARD',
|
|
INWARD = 'INWARD',
|
|
}
|
|
|
|
registerEnumType(IssuePriority, { name: 'IssuePriority' });
|
|
registerEnumType(StatusCategory, {
|
|
name: 'StatusCategory',
|
|
description:
|
|
'What a status means, whatever each project calls it. DONE and CANCELLED are finished.',
|
|
});
|
|
registerEnumType(IssueLinkType, { name: 'IssueLinkType' });
|
|
registerEnumType(ProjectRole, { name: 'ProjectRole' });
|
|
registerEnumType(ReleaseStatus, { name: 'ReleaseStatus' });
|
|
registerEnumType(SprintStatus, {
|
|
name: 'SprintStatus',
|
|
description: 'PLANNED, ACTIVE (one per project at a time) or CLOSED',
|
|
});
|
|
registerEnumType(LinkDirection, { name: 'LinkDirection' });
|
|
registerEnumType(IssueSort, {
|
|
name: 'IssueSort',
|
|
description: 'RECENT: last updated first. RANK: backlog order.',
|
|
});
|
|
registerEnumType(NotificationKind, {
|
|
name: 'NotificationKind',
|
|
description: 'Why someone is told',
|
|
});
|