github-issue-tower-defence-management 1.36.1 → 1.36.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.36.3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.36.2...v1.36.3) (2026-04-17)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **core:** make removeLabel idempotent and add error context in UpdateIssueStatusByLabelUseCase ([cee85d1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/cee85d165d59de44d1a7d2f7f36338a1b9b2ca1d)), closes [#403](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/403) [HiromiShikata/secretary#566](https://github.com/HiromiShikata/secretary/issues/566)
7
+
8
+ ## [1.36.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.36.1...v1.36.2) (2026-04-17)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **core:** map all story:* labels to regular stories and remove label after processing ([9ef50a8](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/9ef50a858660fc80cd775a689775533daf42bc8e))
14
+
1
15
  ## [1.36.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.36.0...v1.36.1) (2026-04-09)
2
16
 
3
17
 
@@ -1,10 +1,40 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
5
35
  Object.defineProperty(exports, "__esModule", { value: true });
6
36
  exports.RestIssueRepository = void 0;
7
- const ky_1 = __importDefault(require("ky"));
37
+ const ky_1 = __importStar(require("ky"));
8
38
  const BaseGitHubRepository_1 = require("../BaseGitHubRepository");
9
39
  class RestIssueRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
10
40
  constructor() {
@@ -68,13 +98,20 @@ class RestIssueRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
68
98
  return;
69
99
  };
70
100
  this.removeLabel = async (issue, label) => {
71
- await ky_1.default.delete(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`, {
72
- headers: {
73
- Authorization: `token ${this.ghToken}`,
74
- Accept: 'application/vnd.github.v3+json',
75
- },
76
- });
77
- return;
101
+ try {
102
+ await ky_1.default.delete(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`, {
103
+ headers: {
104
+ Authorization: `token ${this.ghToken}`,
105
+ Accept: 'application/vnd.github.v3+json',
106
+ },
107
+ });
108
+ }
109
+ catch (e) {
110
+ if (e instanceof ky_1.HTTPError && e.response.status === 404) {
111
+ return;
112
+ }
113
+ throw e;
114
+ }
78
115
  };
79
116
  this.updateAssigneeList = async (issue, assigneeList) => {
80
117
  await ky_1.default.patch(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"RestIssueRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RestIssueRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,12 @@ ${JSON.stringify(e)}
108
108
  return { project, issues, cacheUsed, targetDateTimes, storyIssues };
109
109
  };
110
110
  this.runEachUseCases = async (input, project, issues, cacheUsed, targetDateTimes, storyObjectMap) => {
111
+ await this.setWorkflowManagementIssueToStoryUseCase.run({
112
+ targetDates: targetDateTimes,
113
+ project,
114
+ issues,
115
+ cacheUsed,
116
+ });
111
117
  await this.setNoStoryIssueToStoryUseCase.run({
112
118
  targetDates: targetDateTimes,
113
119
  project,
@@ -127,12 +133,6 @@ ${JSON.stringify(e)}
127
133
  members: input.workingReport.members,
128
134
  manager: input.manager,
129
135
  });
130
- await this.setWorkflowManagementIssueToStoryUseCase.run({
131
- targetDates: targetDateTimes,
132
- project,
133
- issues,
134
- cacheUsed,
135
- });
136
136
  await this.clearNextActionHourUseCase.run({
137
137
  targetDates: targetDateTimes,
138
138
  project,
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
@@ -11,25 +11,66 @@ class SetWorkflowManagementIssueToStoryUseCase {
11
11
  !input.targetDates.find((targetDate) => targetDate.getMinutes() === 0)) {
12
12
  return;
13
13
  }
14
- const isTargetIssue = (issue) => {
15
- return ((issue.labels.includes('story:workflow-management') ||
16
- issue.labels.includes('daily-routine') ||
17
- issue.isPr) &&
18
- (issue.nextActionDate === null ||
19
- issue.nextActionDate.getTime() <= input.targetDates[0].getTime()) &&
20
- issue.nextActionHour === null &&
21
- issue.state === 'OPEN' &&
22
- issue.story === null);
23
- };
24
14
  for (const issue of input.issues) {
25
- if (!isTargetIssue(issue)) {
15
+ if (!this.isEligibleIssue(issue, input.targetDates)) {
26
16
  continue;
27
17
  }
28
- await this.issueRepository.updateStory({ ...input.project, story }, issue, story.workflowManagementStory.id);
18
+ const isWorkflowManagementIssue = issue.labels.includes(SetWorkflowManagementIssueToStoryUseCase.WORKFLOW_MANAGEMENT_LABEL) ||
19
+ issue.labels.includes(SetWorkflowManagementIssueToStoryUseCase.DAILY_ROUTINE_LABEL) ||
20
+ issue.isPr;
21
+ if (isWorkflowManagementIssue) {
22
+ await this.issueRepository.updateStory({ ...input.project, story }, issue, story.workflowManagementStory.id);
23
+ const workflowLabel = issue.labels.find((label) => label.toLowerCase() ===
24
+ SetWorkflowManagementIssueToStoryUseCase.WORKFLOW_MANAGEMENT_LABEL);
25
+ if (workflowLabel) {
26
+ await this.issueRepository.removeLabel(issue, workflowLabel);
27
+ }
28
+ await new Promise((resolve) => setTimeout(resolve, 5000));
29
+ continue;
30
+ }
31
+ const storyLabel = issue.labels.find((label) => label
32
+ .toLowerCase()
33
+ .startsWith(SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX));
34
+ if (!storyLabel) {
35
+ continue;
36
+ }
37
+ const labelSuffix = storyLabel.slice(SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX.length);
38
+ const normalizedLabel = SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate(labelSuffix);
39
+ const matchingStory = story.stories.find((s) => {
40
+ if (!s.name.startsWith(SetWorkflowManagementIssueToStoryUseCase.REGULAR_STORY_PREFIX)) {
41
+ return false;
42
+ }
43
+ const storySuffix = s.name.slice(SetWorkflowManagementIssueToStoryUseCase.REGULAR_STORY_PREFIX.length);
44
+ return (normalizedLabel ===
45
+ SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate(storySuffix));
46
+ });
47
+ if (!matchingStory) {
48
+ throw new Error(`No matching story found for label: ${storyLabel}`);
49
+ }
50
+ await this.issueRepository.updateStory({ ...input.project, story }, issue, matchingStory.id);
51
+ await this.issueRepository.removeLabel(issue, storyLabel);
29
52
  await new Promise((resolve) => setTimeout(resolve, 5000));
30
53
  }
31
54
  };
55
+ this.isEligibleIssue = (issue, targetDates) => {
56
+ const hasStoryOrWorkflowTrigger = issue.labels.some((label) => label
57
+ .toLowerCase()
58
+ .startsWith(SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX)) ||
59
+ issue.labels.includes(SetWorkflowManagementIssueToStoryUseCase.DAILY_ROUTINE_LABEL) ||
60
+ issue.isPr;
61
+ return (hasStoryOrWorkflowTrigger &&
62
+ (issue.nextActionDate === null ||
63
+ issue.nextActionDate.getTime() <= targetDates[0].getTime()) &&
64
+ issue.nextActionHour === null &&
65
+ issue.state === 'OPEN' &&
66
+ issue.story === null);
67
+ };
32
68
  }
33
69
  }
34
70
  exports.SetWorkflowManagementIssueToStoryUseCase = SetWorkflowManagementIssueToStoryUseCase;
71
+ SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX = 'story:';
72
+ SetWorkflowManagementIssueToStoryUseCase.WORKFLOW_MANAGEMENT_LABEL = 'story:workflow-management';
73
+ SetWorkflowManagementIssueToStoryUseCase.DAILY_ROUTINE_LABEL = 'daily-routine';
74
+ SetWorkflowManagementIssueToStoryUseCase.REGULAR_STORY_PREFIX = 'regular / ';
75
+ SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate = (candidate) => candidate.toLowerCase().replace(/[\s/_-]/g, '');
35
76
  //# sourceMappingURL=SetWorkflowManagementIssueToStoryUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,wCAAwC;IACnD,YAAqB,eAAqD;QAArD,oBAAe,GAAf,eAAe,CAAsC;QAE1E,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,IACE,CAAC,KAAK;gBACN,KAAK,CAAC,SAAS;gBACf,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EACtE,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAG,CAAC,KAAY,EAAW,EAAE;gBAC9C,OAAO,CACL,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC;oBACjD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC;oBACb,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;wBAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnE,KAAK,CAAC,cAAc,KAAK,IAAI;oBAC7B,KAAK,CAAC,KAAK,KAAK,MAAM;oBACtB,KAAK,CAAC,KAAK,KAAK,IAAI,CACrB,CAAC;YACJ,CAAC,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CACpC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAC3B,KAAK,EACL,KAAK,CAAC,uBAAuB,CAAC,EAAE,CACjC,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;IAvC2E,CAAC;CAwC/E;AAzCD,4FAyCC"}
1
+ {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,15 @@ class UpdateIssueStatusByLabelUseCase {
25
25
  if (currentStatusNormalized !== targetStatusNormalized) {
26
26
  await this.issueRepository.updateStatus(input.project, issue, targetStatus.id);
27
27
  }
28
- await this.issueRepository.removeLabel(issue, statusLabel);
28
+ try {
29
+ await this.issueRepository.removeLabel(issue, statusLabel);
30
+ }
31
+ catch (e) {
32
+ if (!(e instanceof Error)) {
33
+ throw e;
34
+ }
35
+ throw new Error(`Failed to remove label ${statusLabel} from issue ${issue.url}: ${e.message}`);
36
+ }
29
37
  }
30
38
  };
31
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateIssueStatusByLabelUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,YACW,eAGR;QAHQ,oBAAe,GAAf,eAAe,CAGvB;QAQH,QAAG,GAAG,KAAK,EAAE,KAIZ,EAAiB,EAAE;YAClB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK;qBACF,WAAW,EAAE;qBACb,UAAU,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CACnE,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CACxC,+BAA+B,CAAC,mBAAmB,CAAC,MAAM,CAC3D,CAAC;gBACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CACJ,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvD,+BAA+B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACpE,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM;oBAC1C,CAAC,CAAC,+BAA+B,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/D,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM,sBAAsB,GAC1B,+BAA+B,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,uBAAuB,KAAK,sBAAsB,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,KAAK,CAAC,OAAO,EACb,KAAK,EACL,YAAY,CAAC,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;IA9CC,CAAC;;AANN,0EAqDC;AA7CiB,mDAAmB,GAAG,SAAS,AAAZ,CAAa;AAEzC,+CAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CAClD,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,AADxB,CACyB"}
1
+ {"version":3,"file":"UpdateIssueStatusByLabelUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,YACW,eAGR;QAHQ,oBAAe,GAAf,eAAe,CAGvB;QAQH,QAAG,GAAG,KAAK,EAAE,KAIZ,EAAiB,EAAE;YAClB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK;qBACF,WAAW,EAAE;qBACb,UAAU,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CACnE,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CACxC,+BAA+B,CAAC,mBAAmB,CAAC,MAAM,CAC3D,CAAC;gBACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CACJ,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvD,+BAA+B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACpE,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM;oBAC1C,CAAC,CAAC,+BAA+B,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/D,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM,sBAAsB,GAC1B,+BAA+B,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,uBAAuB,KAAK,sBAAsB,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,KAAK,CAAC,OAAO,EACb,KAAK,EACL,YAAY,CAAC,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,CAAC,CAAC;oBACV,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,eAAe,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAC9E,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;IAvDC,CAAC;;AANN,0EA8DC;AAtDiB,mDAAmB,GAAG,SAAS,AAAZ,CAAa;AAEzC,+CAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CAClD,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,AADxB,CACyB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.36.1",
3
+ "version": "1.36.3",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -1,4 +1,4 @@
1
- import ky from 'ky';
1
+ import ky, { HTTPError } from 'ky';
2
2
  import { BaseGitHubRepository } from '../BaseGitHubRepository';
3
3
  import { Issue } from '../../../domain/entities/Issue';
4
4
  import { IssueRepository } from '../../../domain/usecases/adapter-interfaces/IssueRepository';
@@ -109,16 +109,22 @@ export class RestIssueRepository
109
109
  };
110
110
 
111
111
  removeLabel = async (issue: Issue, label: string): Promise<void> => {
112
- await ky.delete(
113
- `https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`,
114
- {
115
- headers: {
116
- Authorization: `token ${this.ghToken}`,
117
- Accept: 'application/vnd.github.v3+json',
112
+ try {
113
+ await ky.delete(
114
+ `https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`,
115
+ {
116
+ headers: {
117
+ Authorization: `token ${this.ghToken}`,
118
+ Accept: 'application/vnd.github.v3+json',
119
+ },
118
120
  },
119
- },
120
- );
121
- return;
121
+ );
122
+ } catch (e) {
123
+ if (e instanceof HTTPError && e.response.status === 404) {
124
+ return;
125
+ }
126
+ throw e;
127
+ }
122
128
  };
123
129
 
124
130
  updateAssigneeList = async (
@@ -216,6 +216,12 @@ ${JSON.stringify(e)}
216
216
  targetDateTimes: Date[],
217
217
  storyObjectMap: StoryObjectMap,
218
218
  ): Promise<void> => {
219
+ await this.setWorkflowManagementIssueToStoryUseCase.run({
220
+ targetDates: targetDateTimes,
221
+ project,
222
+ issues,
223
+ cacheUsed,
224
+ });
219
225
  await this.setNoStoryIssueToStoryUseCase.run({
220
226
  targetDates: targetDateTimes,
221
227
  project,
@@ -235,12 +241,6 @@ ${JSON.stringify(e)}
235
241
  members: input.workingReport.members,
236
242
  manager: input.manager,
237
243
  });
238
- await this.setWorkflowManagementIssueToStoryUseCase.run({
239
- targetDates: targetDateTimes,
240
- project,
241
- issues,
242
- cacheUsed,
243
- });
244
244
  await this.clearNextActionHourUseCase.run({
245
245
  targetDates: targetDateTimes,
246
246
  project,
@@ -0,0 +1,537 @@
1
+ import { mock } from 'jest-mock-extended';
2
+ import { SetWorkflowManagementIssueToStoryUseCase } from './SetWorkflowManagementIssueToStoryUseCase';
3
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
4
+ import { Issue } from '../entities/Issue';
5
+ import { Project } from '../entities/Project';
6
+
7
+ describe('SetWorkflowManagementIssueToStoryUseCase', () => {
8
+ const mockIssueRepository = mock<IssueRepository>();
9
+
10
+ const basicProject: Project = {
11
+ ...mock<Project>(),
12
+ story: {
13
+ name: 'Story Field',
14
+ fieldId: 'storyFieldId',
15
+ databaseId: 123,
16
+ stories: [
17
+ {
18
+ id: 'noStoryId',
19
+ name: 'regular / NO STORY',
20
+ color: 'GRAY',
21
+ description: '',
22
+ },
23
+ {
24
+ id: 'highPriorityId',
25
+ name: 'regular / high priority',
26
+ color: 'RED',
27
+ description: '',
28
+ },
29
+ {
30
+ id: 'middleBugId',
31
+ name: 'regular / middle bug',
32
+ color: 'ORANGE',
33
+ description: '',
34
+ },
35
+ {
36
+ id: 'workflowBoardId',
37
+ name: 'workflow board',
38
+ color: 'BLUE',
39
+ description: '',
40
+ },
41
+ ],
42
+ workflowManagementStory: {
43
+ id: 'workflowManagementStoryId',
44
+ name: 'workflow management',
45
+ },
46
+ },
47
+ };
48
+
49
+ const targetDate = new Date('2000-01-01T01:00:00Z');
50
+
51
+ let useCase: SetWorkflowManagementIssueToStoryUseCase;
52
+
53
+ beforeEach(() => {
54
+ jest.clearAllMocks();
55
+ jest.useFakeTimers();
56
+ useCase = new SetWorkflowManagementIssueToStoryUseCase(mockIssueRepository);
57
+ });
58
+
59
+ afterEach(() => {
60
+ jest.useRealTimers();
61
+ });
62
+
63
+ describe('normalizeCandidate', () => {
64
+ const testCases: { name: string; input: string; expected: string }[] = [
65
+ {
66
+ name: 'should lowercase and remove spaces',
67
+ input: 'high priority',
68
+ expected: 'highpriority',
69
+ },
70
+ {
71
+ name: 'should remove hyphens',
72
+ input: 'high-priority',
73
+ expected: 'highpriority',
74
+ },
75
+ {
76
+ name: 'should remove underscores',
77
+ input: 'high_priority',
78
+ expected: 'highpriority',
79
+ },
80
+ {
81
+ name: 'should remove slashes',
82
+ input: 'high/priority',
83
+ expected: 'highpriority',
84
+ },
85
+ {
86
+ name: 'should handle mixed separators',
87
+ input: 'High-Priority_Now',
88
+ expected: 'highprioritynow',
89
+ },
90
+ ];
91
+
92
+ testCases.forEach(({ name, input, expected }) => {
93
+ it(name, () => {
94
+ expect(
95
+ SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate(input),
96
+ ).toEqual(expected);
97
+ });
98
+ });
99
+ });
100
+
101
+ describe('run', () => {
102
+ it('should do nothing when project has no story field', async () => {
103
+ const projectWithoutStory: Project = { ...basicProject, story: null };
104
+
105
+ await useCase.run({
106
+ targetDates: [targetDate],
107
+ project: projectWithoutStory,
108
+ issues: [
109
+ {
110
+ ...mock<Issue>(),
111
+ labels: ['story:high-priority'],
112
+ story: null,
113
+ state: 'OPEN',
114
+ nextActionDate: null,
115
+ nextActionHour: null,
116
+ isPr: false,
117
+ },
118
+ ],
119
+ cacheUsed: false,
120
+ });
121
+
122
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
123
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
124
+ });
125
+
126
+ it('should do nothing when cacheUsed is true', async () => {
127
+ await useCase.run({
128
+ targetDates: [targetDate],
129
+ project: basicProject,
130
+ issues: [
131
+ {
132
+ ...mock<Issue>(),
133
+ labels: ['story:high-priority'],
134
+ story: null,
135
+ state: 'OPEN',
136
+ nextActionDate: null,
137
+ nextActionHour: null,
138
+ isPr: false,
139
+ },
140
+ ],
141
+ cacheUsed: true,
142
+ });
143
+
144
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
145
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
146
+ });
147
+
148
+ it('should do nothing when no target date has minutes === 0', async () => {
149
+ const nonHourDate = new Date('2000-01-01T01:30:00Z');
150
+
151
+ await useCase.run({
152
+ targetDates: [nonHourDate],
153
+ project: basicProject,
154
+ issues: [
155
+ {
156
+ ...mock<Issue>(),
157
+ labels: ['story:high-priority'],
158
+ story: null,
159
+ state: 'OPEN',
160
+ nextActionDate: null,
161
+ nextActionHour: null,
162
+ isPr: false,
163
+ },
164
+ ],
165
+ cacheUsed: false,
166
+ });
167
+
168
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
169
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
170
+ });
171
+
172
+ it('should map story:workflow-management label to workflow management story and remove label', async () => {
173
+ const issue: Issue = {
174
+ ...mock<Issue>(),
175
+ labels: ['story:workflow-management', 'other'],
176
+ story: null,
177
+ state: 'OPEN',
178
+ nextActionDate: null,
179
+ nextActionHour: null,
180
+ isPr: false,
181
+ };
182
+
183
+ const promise = useCase.run({
184
+ targetDates: [targetDate],
185
+ project: basicProject,
186
+ issues: [issue],
187
+ cacheUsed: false,
188
+ });
189
+ await jest.runAllTimersAsync();
190
+ await promise;
191
+
192
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
193
+ [
194
+ { ...basicProject, story: basicProject.story },
195
+ issue,
196
+ 'workflowManagementStoryId',
197
+ ],
198
+ ]);
199
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
200
+ [issue, 'story:workflow-management'],
201
+ ]);
202
+ });
203
+
204
+ it('should map daily-routine label to workflow management story without removing label', async () => {
205
+ const issue: Issue = {
206
+ ...mock<Issue>(),
207
+ labels: ['daily-routine', 'other'],
208
+ story: null,
209
+ state: 'OPEN',
210
+ nextActionDate: null,
211
+ nextActionHour: null,
212
+ isPr: false,
213
+ };
214
+
215
+ const promise = useCase.run({
216
+ targetDates: [targetDate],
217
+ project: basicProject,
218
+ issues: [issue],
219
+ cacheUsed: false,
220
+ });
221
+ await jest.runAllTimersAsync();
222
+ await promise;
223
+
224
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
225
+ [
226
+ { ...basicProject, story: basicProject.story },
227
+ issue,
228
+ 'workflowManagementStoryId',
229
+ ],
230
+ ]);
231
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
232
+ });
233
+
234
+ it('should map isPr issue to workflow management story without removing label', async () => {
235
+ const issue: Issue = {
236
+ ...mock<Issue>(),
237
+ labels: ['other'],
238
+ story: null,
239
+ state: 'OPEN',
240
+ nextActionDate: null,
241
+ nextActionHour: null,
242
+ isPr: true,
243
+ };
244
+
245
+ const promise = useCase.run({
246
+ targetDates: [targetDate],
247
+ project: basicProject,
248
+ issues: [issue],
249
+ cacheUsed: false,
250
+ });
251
+ await jest.runAllTimersAsync();
252
+ await promise;
253
+
254
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
255
+ [
256
+ { ...basicProject, story: basicProject.story },
257
+ issue,
258
+ 'workflowManagementStoryId',
259
+ ],
260
+ ]);
261
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
262
+ });
263
+
264
+ it('should map story:high-priority label to regular / high priority story and remove label', async () => {
265
+ const issue: Issue = {
266
+ ...mock<Issue>(),
267
+ labels: ['story:high-priority'],
268
+ story: null,
269
+ state: 'OPEN',
270
+ nextActionDate: null,
271
+ nextActionHour: null,
272
+ isPr: false,
273
+ };
274
+
275
+ const promise = useCase.run({
276
+ targetDates: [targetDate],
277
+ project: basicProject,
278
+ issues: [issue],
279
+ cacheUsed: false,
280
+ });
281
+ await jest.runAllTimersAsync();
282
+ await promise;
283
+
284
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
285
+ [
286
+ { ...basicProject, story: basicProject.story },
287
+ issue,
288
+ 'highPriorityId',
289
+ ],
290
+ ]);
291
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
292
+ [issue, 'story:high-priority'],
293
+ ]);
294
+ });
295
+
296
+ it('should normalize label by removing underscores to match story option', async () => {
297
+ const issue: Issue = {
298
+ ...mock<Issue>(),
299
+ labels: ['story:high_priority'],
300
+ story: null,
301
+ state: 'OPEN',
302
+ nextActionDate: null,
303
+ nextActionHour: null,
304
+ isPr: false,
305
+ };
306
+
307
+ const promise = useCase.run({
308
+ targetDates: [targetDate],
309
+ project: basicProject,
310
+ issues: [issue],
311
+ cacheUsed: false,
312
+ });
313
+ await jest.runAllTimersAsync();
314
+ await promise;
315
+
316
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
317
+ [
318
+ { ...basicProject, story: basicProject.story },
319
+ issue,
320
+ 'highPriorityId',
321
+ ],
322
+ ]);
323
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
324
+ [issue, 'story:high_priority'],
325
+ ]);
326
+ });
327
+
328
+ it('should normalize label by removing hyphens to match story option with spaces', async () => {
329
+ const issue: Issue = {
330
+ ...mock<Issue>(),
331
+ labels: ['story:middle-bug'],
332
+ story: null,
333
+ state: 'OPEN',
334
+ nextActionDate: null,
335
+ nextActionHour: null,
336
+ isPr: false,
337
+ };
338
+
339
+ const promise = useCase.run({
340
+ targetDates: [targetDate],
341
+ project: basicProject,
342
+ issues: [issue],
343
+ cacheUsed: false,
344
+ });
345
+ await jest.runAllTimersAsync();
346
+ await promise;
347
+
348
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
349
+ [{ ...basicProject, story: basicProject.story }, issue, 'middleBugId'],
350
+ ]);
351
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
352
+ [issue, 'story:middle-bug'],
353
+ ]);
354
+ });
355
+
356
+ it('should throw error when story:* label has no matching regular / ... option', async () => {
357
+ const issue: Issue = {
358
+ ...mock<Issue>(),
359
+ labels: ['story:routine-management'],
360
+ story: null,
361
+ state: 'OPEN',
362
+ nextActionDate: null,
363
+ nextActionHour: null,
364
+ isPr: false,
365
+ };
366
+
367
+ await expect(
368
+ useCase.run({
369
+ targetDates: [targetDate],
370
+ project: basicProject,
371
+ issues: [issue],
372
+ cacheUsed: false,
373
+ }),
374
+ ).rejects.toThrow(
375
+ 'No matching story found for label: story:routine-management',
376
+ );
377
+
378
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
379
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
380
+ });
381
+
382
+ it('should not match story option that does not start with regular / ', async () => {
383
+ const issue: Issue = {
384
+ ...mock<Issue>(),
385
+ labels: ['story:workflow-board'],
386
+ story: null,
387
+ state: 'OPEN',
388
+ nextActionDate: null,
389
+ nextActionHour: null,
390
+ isPr: false,
391
+ };
392
+
393
+ await expect(
394
+ useCase.run({
395
+ targetDates: [targetDate],
396
+ project: basicProject,
397
+ issues: [issue],
398
+ cacheUsed: false,
399
+ }),
400
+ ).rejects.toThrow(
401
+ 'No matching story found for label: story:workflow-board',
402
+ );
403
+ });
404
+
405
+ it('should skip issue that already has a story assigned', async () => {
406
+ const issue: Issue = {
407
+ ...mock<Issue>(),
408
+ labels: ['story:high-priority'],
409
+ story: 'regular / NO STORY',
410
+ state: 'OPEN',
411
+ nextActionDate: null,
412
+ nextActionHour: null,
413
+ isPr: false,
414
+ };
415
+
416
+ await useCase.run({
417
+ targetDates: [targetDate],
418
+ project: basicProject,
419
+ issues: [issue],
420
+ cacheUsed: false,
421
+ });
422
+
423
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
424
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
425
+ });
426
+
427
+ it('should skip CLOSED issue', async () => {
428
+ const issue: Issue = {
429
+ ...mock<Issue>(),
430
+ labels: ['story:high-priority'],
431
+ story: null,
432
+ state: 'CLOSED',
433
+ nextActionDate: null,
434
+ nextActionHour: null,
435
+ isPr: false,
436
+ };
437
+
438
+ await useCase.run({
439
+ targetDates: [targetDate],
440
+ project: basicProject,
441
+ issues: [issue],
442
+ cacheUsed: false,
443
+ });
444
+
445
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
446
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
447
+ });
448
+
449
+ it('should skip issue with nextActionDate in the future', async () => {
450
+ const futureDate = new Date('2000-01-02T00:00:00Z');
451
+ const issue: Issue = {
452
+ ...mock<Issue>(),
453
+ labels: ['story:high-priority'],
454
+ story: null,
455
+ state: 'OPEN',
456
+ nextActionDate: futureDate,
457
+ nextActionHour: null,
458
+ isPr: false,
459
+ };
460
+
461
+ await useCase.run({
462
+ targetDates: [targetDate],
463
+ project: basicProject,
464
+ issues: [issue],
465
+ cacheUsed: false,
466
+ });
467
+
468
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
469
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
470
+ });
471
+
472
+ it('should skip issue with nextActionHour set', async () => {
473
+ const issue: Issue = {
474
+ ...mock<Issue>(),
475
+ labels: ['story:high-priority'],
476
+ story: null,
477
+ state: 'OPEN',
478
+ nextActionDate: null,
479
+ nextActionHour: 9,
480
+ isPr: false,
481
+ };
482
+
483
+ await useCase.run({
484
+ targetDates: [targetDate],
485
+ project: basicProject,
486
+ issues: [issue],
487
+ cacheUsed: false,
488
+ });
489
+
490
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
491
+ expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
492
+ });
493
+
494
+ it('should process multiple eligible issues', async () => {
495
+ const issue1: Issue = {
496
+ ...mock<Issue>(),
497
+ labels: ['story:high-priority'],
498
+ story: null,
499
+ state: 'OPEN',
500
+ nextActionDate: null,
501
+ nextActionHour: null,
502
+ isPr: false,
503
+ };
504
+ const issue2: Issue = {
505
+ ...mock<Issue>(),
506
+ labels: ['story:middle-bug'],
507
+ story: null,
508
+ state: 'OPEN',
509
+ nextActionDate: null,
510
+ nextActionHour: null,
511
+ isPr: false,
512
+ };
513
+
514
+ const promise = useCase.run({
515
+ targetDates: [targetDate],
516
+ project: basicProject,
517
+ issues: [issue1, issue2],
518
+ cacheUsed: false,
519
+ });
520
+ await jest.runAllTimersAsync();
521
+ await promise;
522
+
523
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
524
+ [
525
+ { ...basicProject, story: basicProject.story },
526
+ issue1,
527
+ 'highPriorityId',
528
+ ],
529
+ [{ ...basicProject, story: basicProject.story }, issue2, 'middleBugId'],
530
+ ]);
531
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
532
+ [issue1, 'story:high-priority'],
533
+ [issue2, 'story:middle-bug'],
534
+ ]);
535
+ });
536
+ });
537
+ });
@@ -3,7 +3,20 @@ import { IssueRepository } from './adapter-interfaces/IssueRepository';
3
3
  import { Project } from '../entities/Project';
4
4
 
5
5
  export class SetWorkflowManagementIssueToStoryUseCase {
6
- constructor(readonly issueRepository: Pick<IssueRepository, 'updateStory'>) {}
6
+ constructor(
7
+ readonly issueRepository: Pick<
8
+ IssueRepository,
9
+ 'updateStory' | 'removeLabel'
10
+ >,
11
+ ) {}
12
+
13
+ static readonly STORY_LABEL_PREFIX = 'story:';
14
+ static readonly WORKFLOW_MANAGEMENT_LABEL = 'story:workflow-management';
15
+ static readonly DAILY_ROUTINE_LABEL = 'daily-routine';
16
+ static readonly REGULAR_STORY_PREFIX = 'regular / ';
17
+
18
+ static normalizeCandidate = (candidate: string): string =>
19
+ candidate.toLowerCase().replace(/[\s/_-]/g, '');
7
20
 
8
21
  run = async (input: {
9
22
  targetDates: Date[];
@@ -19,28 +32,111 @@ export class SetWorkflowManagementIssueToStoryUseCase {
19
32
  ) {
20
33
  return;
21
34
  }
22
- const isTargetIssue = (issue: Issue): boolean => {
23
- return (
24
- (issue.labels.includes('story:workflow-management') ||
25
- issue.labels.includes('daily-routine') ||
26
- issue.isPr) &&
27
- (issue.nextActionDate === null ||
28
- issue.nextActionDate.getTime() <= input.targetDates[0].getTime()) &&
29
- issue.nextActionHour === null &&
30
- issue.state === 'OPEN' &&
31
- issue.story === null
32
- );
33
- };
34
35
  for (const issue of input.issues) {
35
- if (!isTargetIssue(issue)) {
36
+ if (!this.isEligibleIssue(issue, input.targetDates)) {
37
+ continue;
38
+ }
39
+
40
+ const isWorkflowManagementIssue =
41
+ issue.labels.includes(
42
+ SetWorkflowManagementIssueToStoryUseCase.WORKFLOW_MANAGEMENT_LABEL,
43
+ ) ||
44
+ issue.labels.includes(
45
+ SetWorkflowManagementIssueToStoryUseCase.DAILY_ROUTINE_LABEL,
46
+ ) ||
47
+ issue.isPr;
48
+
49
+ if (isWorkflowManagementIssue) {
50
+ await this.issueRepository.updateStory(
51
+ { ...input.project, story },
52
+ issue,
53
+ story.workflowManagementStory.id,
54
+ );
55
+ const workflowLabel = issue.labels.find(
56
+ (label) =>
57
+ label.toLowerCase() ===
58
+ SetWorkflowManagementIssueToStoryUseCase.WORKFLOW_MANAGEMENT_LABEL,
59
+ );
60
+ if (workflowLabel) {
61
+ await this.issueRepository.removeLabel(issue, workflowLabel);
62
+ }
63
+ await new Promise((resolve) => setTimeout(resolve, 5000));
64
+ continue;
65
+ }
66
+
67
+ const storyLabel = issue.labels.find((label) =>
68
+ label
69
+ .toLowerCase()
70
+ .startsWith(
71
+ SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX,
72
+ ),
73
+ );
74
+ if (!storyLabel) {
36
75
  continue;
37
76
  }
77
+
78
+ const labelSuffix = storyLabel.slice(
79
+ SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX.length,
80
+ );
81
+ const normalizedLabel =
82
+ SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate(
83
+ labelSuffix,
84
+ );
85
+
86
+ const matchingStory = story.stories.find((s) => {
87
+ if (
88
+ !s.name.startsWith(
89
+ SetWorkflowManagementIssueToStoryUseCase.REGULAR_STORY_PREFIX,
90
+ )
91
+ ) {
92
+ return false;
93
+ }
94
+ const storySuffix = s.name.slice(
95
+ SetWorkflowManagementIssueToStoryUseCase.REGULAR_STORY_PREFIX.length,
96
+ );
97
+ return (
98
+ normalizedLabel ===
99
+ SetWorkflowManagementIssueToStoryUseCase.normalizeCandidate(
100
+ storySuffix,
101
+ )
102
+ );
103
+ });
104
+
105
+ if (!matchingStory) {
106
+ throw new Error(`No matching story found for label: ${storyLabel}`);
107
+ }
108
+
38
109
  await this.issueRepository.updateStory(
39
110
  { ...input.project, story },
40
111
  issue,
41
- story.workflowManagementStory.id,
112
+ matchingStory.id,
42
113
  );
114
+ await this.issueRepository.removeLabel(issue, storyLabel);
43
115
  await new Promise((resolve) => setTimeout(resolve, 5000));
44
116
  }
45
117
  };
118
+
119
+ private isEligibleIssue = (issue: Issue, targetDates: Date[]): boolean => {
120
+ const hasStoryOrWorkflowTrigger =
121
+ issue.labels.some((label) =>
122
+ label
123
+ .toLowerCase()
124
+ .startsWith(
125
+ SetWorkflowManagementIssueToStoryUseCase.STORY_LABEL_PREFIX,
126
+ ),
127
+ ) ||
128
+ issue.labels.includes(
129
+ SetWorkflowManagementIssueToStoryUseCase.DAILY_ROUTINE_LABEL,
130
+ ) ||
131
+ issue.isPr;
132
+
133
+ return (
134
+ hasStoryOrWorkflowTrigger &&
135
+ (issue.nextActionDate === null ||
136
+ issue.nextActionDate.getTime() <= targetDates[0].getTime()) &&
137
+ issue.nextActionHour === null &&
138
+ issue.state === 'OPEN' &&
139
+ issue.story === null
140
+ );
141
+ };
46
142
  }
@@ -325,5 +325,27 @@ describe('UpdateIssueStatusByLabelUseCase', () => {
325
325
  );
326
326
  });
327
327
  });
328
+
329
+ it('should include issue url and label in error message when removeLabel fails', async () => {
330
+ const issueWithUrl = {
331
+ ...mock<Issue>(),
332
+ labels: ['status:In Progress'],
333
+ status: 'In Progress',
334
+ url: 'https://github.com/testOrg/testRepo/issues/42',
335
+ };
336
+ mockIssueRepository.removeLabel.mockRejectedValueOnce(
337
+ new Error('Request failed with status code 403 Forbidden'),
338
+ );
339
+
340
+ await expect(
341
+ useCase.run({
342
+ project: basicProject,
343
+ issues: [issueWithUrl],
344
+ defaultStatus: null,
345
+ }),
346
+ ).rejects.toThrow(
347
+ 'Failed to remove label status:In Progress from issue https://github.com/testOrg/testRepo/issues/42: Request failed with status code 403 Forbidden',
348
+ );
349
+ });
328
350
  });
329
351
  });
@@ -52,7 +52,16 @@ export class UpdateIssueStatusByLabelUseCase {
52
52
  targetStatus.id,
53
53
  );
54
54
  }
55
- await this.issueRepository.removeLabel(issue, statusLabel);
55
+ try {
56
+ await this.issueRepository.removeLabel(issue, statusLabel);
57
+ } catch (e) {
58
+ if (!(e instanceof Error)) {
59
+ throw e;
60
+ }
61
+ throw new Error(
62
+ `Failed to remove label ${statusLabel} from issue ${issue.url}: ${e.message}`,
63
+ );
64
+ }
56
65
  }
57
66
  };
58
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,qBAAa,mBACX,SAAQ,oBACR,YAAW,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAEtE,aAAa,GAAU,UAAU,MAAM,EAAE,SAAS,MAAM,mBAStD;IACF,cAAc,GACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EAAE,EACnB,QAAQ,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAQhB;IACF,QAAQ,GACN,UAAU,MAAM,KACf,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CA8BA;IACF,WAAW,GAAU,OAAO,KAAK,mBAc/B;IAEF,YAAY,GACV,OAAO,KAAK,EACZ,QAAQ,KAAK,CAAC,QAAQ,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAYd;IAEF,WAAW,GAAU,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAW9D;IAEF,kBAAkB,GAChB,OAAO,KAAK,EACZ,cAAc,MAAM,CAAC,MAAM,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAQd;CACH"}
1
+ {"version":3,"file":"RestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,qBAAa,mBACX,SAAQ,oBACR,YAAW,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAEtE,aAAa,GAAU,UAAU,MAAM,EAAE,SAAS,MAAM,mBAStD;IACF,cAAc,GACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EAAE,EACnB,QAAQ,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAQhB;IACF,QAAQ,GACN,UAAU,MAAM,KACf,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CA8BA;IACF,WAAW,GAAU,OAAO,KAAK,mBAc/B;IAEF,YAAY,GACV,OAAO,KAAK,EACZ,QAAQ,KAAK,CAAC,QAAQ,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAYd;IAEF,WAAW,GAAU,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAiB9D;IAEF,kBAAkB,GAChB,OAAO,KAAK,EACZ,cAAc,MAAM,CAAC,MAAM,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAQd;CACH"}
@@ -2,13 +2,19 @@ import { Issue } from '../entities/Issue';
2
2
  import { IssueRepository } from './adapter-interfaces/IssueRepository';
3
3
  import { Project } from '../entities/Project';
4
4
  export declare class SetWorkflowManagementIssueToStoryUseCase {
5
- readonly issueRepository: Pick<IssueRepository, 'updateStory'>;
6
- constructor(issueRepository: Pick<IssueRepository, 'updateStory'>);
5
+ readonly issueRepository: Pick<IssueRepository, 'updateStory' | 'removeLabel'>;
6
+ constructor(issueRepository: Pick<IssueRepository, 'updateStory' | 'removeLabel'>);
7
+ static readonly STORY_LABEL_PREFIX = "story:";
8
+ static readonly WORKFLOW_MANAGEMENT_LABEL = "story:workflow-management";
9
+ static readonly DAILY_ROUTINE_LABEL = "daily-routine";
10
+ static readonly REGULAR_STORY_PREFIX = "regular / ";
11
+ static normalizeCandidate: (candidate: string) => string;
7
12
  run: (input: {
8
13
  targetDates: Date[];
9
14
  project: Project;
10
15
  issues: Issue[];
11
16
  cacheUsed: boolean;
12
17
  }) => Promise<void>;
18
+ private isEligibleIssue;
13
19
  }
14
20
  //# sourceMappingURL=SetWorkflowManagementIssueToStoryUseCase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,wCAAwC;IACvC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;gBAArD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;IAE1E,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAgCf;CACH"}
1
+ {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,wCAAwC;IAEjD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,aAAa,GAAG,aAAa,CAC9B;gBAHQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,aAAa,GAAG,aAAa,CAC9B;IAGH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,YAAY;IAC9C,MAAM,CAAC,QAAQ,CAAC,yBAAyB,+BAA+B;IACxE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,mBAAmB;IACtD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,gBAAgB;IAEpD,MAAM,CAAC,kBAAkB,GAAI,WAAW,MAAM,KAAG,MAAM,CACL;IAElD,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CA2Ff;IAEF,OAAO,CAAC,eAAe,CAsBrB;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateIssueStatusByLabelUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;gBAHQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;IAGH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,aAAa;IAEhD,MAAM,CAAC,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,CACF;IAE/C,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,KAAG,OAAO,CAAC,IAAI,CAAC,CAmCf;CACH"}
1
+ {"version":3,"file":"UpdateIssueStatusByLabelUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;gBAHQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;IAGH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,aAAa;IAEhD,MAAM,CAAC,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,CACF;IAE/C,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,KAAG,OAAO,CAAC,IAAI,CAAC,CA4Cf;CACH"}