github-issue-tower-defence-management 1.52.1 → 1.54.0
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 +19 -0
- package/README.md +2 -2
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +45 -31
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/domain/entities/WorkflowStatus.js +5 -7
- package/bin/domain/entities/WorkflowStatus.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +8 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/IssueRejectionEvaluator.js +80 -0
- package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -0
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +4 -67
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.js +42 -0
- package/bin/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.js.map +1 -0
- package/bin/domain/usecases/SetupTowerDefenceProjectUseCase.js +19 -3
- package/bin/domain/usecases/SetupTowerDefenceProjectUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +8 -0
- package/src/domain/entities/WorkflowStatus.ts +5 -6
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +58 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +11 -0
- package/src/domain/usecases/IssueRejectionEvaluator.ts +114 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +15 -89
- package/src/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.test.ts +376 -0
- package/src/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.ts +88 -0
- package/src/domain/usecases/SetupTowerDefenceProjectUseCase.test.ts +177 -9
- package/src/domain/usecases/SetupTowerDefenceProjectUseCase.ts +34 -2
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/domain/entities/WorkflowStatus.d.ts +4 -2
- package/types/domain/entities/WorkflowStatus.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +6 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/IssueRejectionEvaluator.d.ts +20 -0
- package/types/domain/usecases/IssueRejectionEvaluator.d.ts.map +1 -0
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.d.ts +15 -0
- package/types/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.d.ts.map +1 -0
- package/types/domain/usecases/SetupTowerDefenceProjectUseCase.d.ts +2 -0
- package/types/domain/usecases/SetupTowerDefenceProjectUseCase.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RevertNotReadyAwaitingQualityCheckUseCase = void 0;
|
|
4
|
+
const IssueRejectionEvaluator_1 = require("./IssueRejectionEvaluator");
|
|
5
|
+
const WorkflowStatus_1 = require("../entities/WorkflowStatus");
|
|
6
|
+
class RevertNotReadyAwaitingQualityCheckUseCase {
|
|
7
|
+
constructor(projectRepository, issueRepository, issueCommentRepository) {
|
|
8
|
+
this.projectRepository = projectRepository;
|
|
9
|
+
this.issueRepository = issueRepository;
|
|
10
|
+
this.issueCommentRepository = issueCommentRepository;
|
|
11
|
+
this.run = async (params) => {
|
|
12
|
+
const projectId = await this.projectRepository.findProjectIdByUrl(params.projectUrl);
|
|
13
|
+
if (!projectId) {
|
|
14
|
+
throw new Error(`Project not found. projectUrl: ${params.projectUrl}`);
|
|
15
|
+
}
|
|
16
|
+
const project = await this.projectRepository.getProject(projectId);
|
|
17
|
+
if (!project) {
|
|
18
|
+
throw new Error(`Project not found. projectId: ${projectId} projectUrl: ${params.projectUrl}`);
|
|
19
|
+
}
|
|
20
|
+
const awaitingWorkspaceStatusOption = project.status.statuses.find((s) => s.name === WorkflowStatus_1.AWAITING_WORKSPACE_STATUS_NAME);
|
|
21
|
+
if (!awaitingWorkspaceStatusOption) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const { issues } = await this.issueRepository.getAllIssues(projectId, params.allowIssueCacheMinutes);
|
|
25
|
+
const awaitingQualityCheckIssues = issues.filter((issue) => issue.status === WorkflowStatus_1.AWAITING_QUALITY_CHECK_STATUS_NAME);
|
|
26
|
+
for (const issue of awaitingQualityCheckIssues) {
|
|
27
|
+
const hasLlmAgentLabel = issue.labels.some((l) => l === 'llm-agent' || l.startsWith('llm-agent:'));
|
|
28
|
+
if (hasLlmAgentLabel) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const { rejections } = await this.issueRejectionEvaluator.evaluate(issue);
|
|
32
|
+
if (rejections.length > 0) {
|
|
33
|
+
await this.issueRepository.updateStatus(project, issue, awaitingWorkspaceStatusOption.id);
|
|
34
|
+
await this.issueCommentRepository.createComment(issue, `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
this.issueRejectionEvaluator = new IssueRejectionEvaluator_1.IssueRejectionEvaluator(issueRepository);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.RevertNotReadyAwaitingQualityCheckUseCase = RevertNotReadyAwaitingQualityCheckUseCase;
|
|
42
|
+
//# sourceMappingURL=RevertNotReadyAwaitingQualityCheckUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevertNotReadyAwaitingQualityCheckUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.ts"],"names":[],"mappings":";;;AAGA,uEAAoE;AACpE,+DAGoC;AAEpC,MAAa,yCAAyC;IAGpD,YACmB,iBAGhB,EACgB,eAMhB,EACgB,sBAGhB;QAdgB,sBAAiB,GAAjB,iBAAiB,CAGjC;QACgB,oBAAe,GAAf,eAAe,CAM/B;QACgB,2BAAsB,GAAtB,sBAAsB,CAGtC;QAKH,QAAG,GAAG,KAAK,EAAE,MAGZ,EAAiB,EAAE;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC/D,MAAM,CAAC,UAAU,CAClB,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAC9E,CAAC;YACJ,CAAC;YAED,MAAM,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,+CAA8B,CACjD,CAAC;YACF,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACxD,SAAS,EACT,MAAM,CAAC,sBAAsB,CAC9B,CAAC;YAEF,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,mDAAkC,CAC/D,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,0BAA0B,EAAE,CAAC;gBAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,SAAS;gBACX,CAAC;gBAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,OAAO,EACP,KAAK,EACL,6BAA6B,CAAC,EAAE,CACjC,CAAC;oBACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAC7C,KAAK,EACL,gCAAgC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAzDA,IAAI,CAAC,uBAAuB,GAAG,IAAI,iDAAuB,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;CAyDF;AA9ED,8FA8EC"}
|
|
@@ -8,14 +8,21 @@ class SetupTowerDefenceProjectUseCase {
|
|
|
8
8
|
this.run = async (params) => {
|
|
9
9
|
const project = await this.projectRepository.getByUrl(params.projectUrl);
|
|
10
10
|
const existing = project.status.statuses;
|
|
11
|
-
|
|
11
|
+
const hasMigratedFromName = existing.some((s) => SetupTowerDefenceProjectUseCase.MIGRATED_FROM_NAMES.has(s.name));
|
|
12
|
+
if (!hasMigratedFromName &&
|
|
13
|
+
SetupTowerDefenceProjectUseCase.hasRequiredStatusesInCanonicalOrder(existing)) {
|
|
12
14
|
return;
|
|
13
15
|
}
|
|
14
16
|
const requiredNames = new Set(WorkflowStatus_1.REQUIRED_WORKFLOW_STATUSES.map((s) => s.name));
|
|
15
|
-
const others = existing.filter((status) => !requiredNames.has(status.name)
|
|
17
|
+
const others = existing.filter((status) => !requiredNames.has(status.name) &&
|
|
18
|
+
!SetupTowerDefenceProjectUseCase.MIGRATED_FROM_NAMES.has(status.name));
|
|
16
19
|
const newStatusList = [
|
|
17
20
|
...WorkflowStatus_1.REQUIRED_WORKFLOW_STATUSES.map((required) => {
|
|
18
|
-
const
|
|
21
|
+
const legacyName = SetupTowerDefenceProjectUseCase.LEGACY_STATUS_NAMES[required.name];
|
|
22
|
+
const found = existing.find((status) => status.name === required.name) ??
|
|
23
|
+
(legacyName !== undefined
|
|
24
|
+
? existing.find((status) => status.name === legacyName)
|
|
25
|
+
: undefined);
|
|
19
26
|
return {
|
|
20
27
|
id: found ? found.id : null,
|
|
21
28
|
name: required.name,
|
|
@@ -35,6 +42,15 @@ class SetupTowerDefenceProjectUseCase {
|
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
44
|
exports.SetupTowerDefenceProjectUseCase = SetupTowerDefenceProjectUseCase;
|
|
45
|
+
SetupTowerDefenceProjectUseCase.LEGACY_STATUS_NAMES = {
|
|
46
|
+
[WorkflowStatus_1.TODO_STATUS_NAME]: WorkflowStatus_1.LEGACY_TODO_STATUS_NAME,
|
|
47
|
+
[WorkflowStatus_1.IN_TMUX_STATUS_NAME]: WorkflowStatus_1.LEGACY_IN_TMUX_STATUS_NAME,
|
|
48
|
+
};
|
|
49
|
+
SetupTowerDefenceProjectUseCase.MIGRATED_FROM_NAMES = new Set([
|
|
50
|
+
WorkflowStatus_1.LEGACY_TODO_STATUS_NAME,
|
|
51
|
+
WorkflowStatus_1.LEGACY_IN_TMUX_STATUS_NAME,
|
|
52
|
+
WorkflowStatus_1.PC_TODO_STATUS_NAME,
|
|
53
|
+
]);
|
|
38
54
|
SetupTowerDefenceProjectUseCase.hasRequiredStatusesInCanonicalOrder = (existing) => {
|
|
39
55
|
if (existing.length < WorkflowStatus_1.REQUIRED_WORKFLOW_STATUSES.length) {
|
|
40
56
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupTowerDefenceProjectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetupTowerDefenceProjectUseCase.ts"],"names":[],"mappings":";;;AAEA,+
|
|
1
|
+
{"version":3,"file":"SetupTowerDefenceProjectUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetupTowerDefenceProjectUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -36,6 +36,7 @@ import { StartPreparationUseCase } from '../../../domain/usecases/StartPreparati
|
|
|
36
36
|
import { NodeLocalCommandRunner } from '../../repositories/NodeLocalCommandRunner';
|
|
37
37
|
import { OauthAPIProxyClaudeRepository } from '../../repositories/OauthAPIProxyClaudeRepository';
|
|
38
38
|
import { RevertOrphanedPreparationUseCase } from '../../../domain/usecases/RevertOrphanedPreparationUseCase';
|
|
39
|
+
import { RevertNotReadyAwaitingQualityCheckUseCase } from '../../../domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase';
|
|
39
40
|
import { GitHubIssueCommentRepository } from '../../repositories/GitHubIssueCommentRepository';
|
|
40
41
|
import { SetupTowerDefenceProjectUseCase } from '../../../domain/usecases/SetupTowerDefenceProjectUseCase';
|
|
41
42
|
import {
|
|
@@ -232,6 +233,12 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
232
233
|
issueCommentRepository,
|
|
233
234
|
nodeLocalCommandRunner,
|
|
234
235
|
);
|
|
236
|
+
const revertNotReadyAwaitingQualityCheckUseCase =
|
|
237
|
+
new RevertNotReadyAwaitingQualityCheckUseCase(
|
|
238
|
+
projectRepository,
|
|
239
|
+
issueRepository,
|
|
240
|
+
issueCommentRepository,
|
|
241
|
+
);
|
|
235
242
|
|
|
236
243
|
const handleScheduledEventUseCase = new HandleScheduledEventUseCase(
|
|
237
244
|
setupTowerDefenceProjectUseCase,
|
|
@@ -250,6 +257,7 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
250
257
|
updateIssueStatusByLabelUseCase,
|
|
251
258
|
startPreparationUseCase,
|
|
252
259
|
revertOrphanedPreparationUseCase,
|
|
260
|
+
revertNotReadyAwaitingQualityCheckUseCase,
|
|
253
261
|
systemDateRepository,
|
|
254
262
|
googleSpreadsheetRepository,
|
|
255
263
|
projectRepository,
|
|
@@ -6,12 +6,15 @@ export const AWAITING_WORKSPACE_STATUS_NAME = 'Awaiting Workspace';
|
|
|
6
6
|
export const PREPARATION_STATUS_NAME = 'Preparation';
|
|
7
7
|
export const FAILED_PREPARATION_STATUS_NAME = 'Failed Preparation';
|
|
8
8
|
export const AWAITING_QUALITY_CHECK_STATUS_NAME = 'Awaiting Quality Check';
|
|
9
|
-
export const TODO_STATUS_NAME = 'Todo';
|
|
9
|
+
export const TODO_STATUS_NAME = 'Todo by human';
|
|
10
10
|
export const PC_TODO_STATUS_NAME = 'PC Todo';
|
|
11
|
-
export const IN_TMUX_STATUS_NAME = 'In Tmux';
|
|
11
|
+
export const IN_TMUX_STATUS_NAME = 'In Tmux by human';
|
|
12
12
|
export const DONE_STATUS_NAME = 'Done';
|
|
13
13
|
export const ICEBOX_STATUS_NAME = 'Icebox';
|
|
14
14
|
|
|
15
|
+
export const LEGACY_TODO_STATUS_NAME = 'Todo';
|
|
16
|
+
export const LEGACY_IN_TMUX_STATUS_NAME = 'In Tmux';
|
|
17
|
+
|
|
15
18
|
export type WorkflowStatusDefinition = {
|
|
16
19
|
name: string;
|
|
17
20
|
color: FieldOption['color'];
|
|
@@ -46,10 +49,6 @@ export const REQUIRED_WORKFLOW_STATUSES: WorkflowStatusDefinition[] = [
|
|
|
46
49
|
name: TODO_STATUS_NAME,
|
|
47
50
|
color: 'PINK',
|
|
48
51
|
},
|
|
49
|
-
{
|
|
50
|
-
name: PC_TODO_STATUS_NAME,
|
|
51
|
-
color: 'PINK',
|
|
52
|
-
},
|
|
53
52
|
{
|
|
54
53
|
name: IN_TMUX_STATUS_NAME,
|
|
55
54
|
color: 'RED',
|
|
@@ -21,6 +21,7 @@ import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueTo
|
|
|
21
21
|
import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
|
|
22
22
|
import { StartPreparationUseCase } from './StartPreparationUseCase';
|
|
23
23
|
import { RevertOrphanedPreparationUseCase } from './RevertOrphanedPreparationUseCase';
|
|
24
|
+
import { RevertNotReadyAwaitingQualityCheckUseCase } from './RevertNotReadyAwaitingQualityCheckUseCase';
|
|
24
25
|
import { SetupTowerDefenceProjectUseCase } from './SetupTowerDefenceProjectUseCase';
|
|
25
26
|
|
|
26
27
|
describe('HandleScheduledEventUseCase', () => {
|
|
@@ -109,6 +110,8 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
109
110
|
const mockStartPreparationUseCase = mock<StartPreparationUseCase>();
|
|
110
111
|
const mockRevertOrphanedPreparationUseCase =
|
|
111
112
|
mock<RevertOrphanedPreparationUseCase>();
|
|
113
|
+
const mockRevertNotReadyAwaitingQualityCheckUseCase =
|
|
114
|
+
mock<RevertNotReadyAwaitingQualityCheckUseCase>();
|
|
112
115
|
const mockDateRepository = mock<DateRepository>();
|
|
113
116
|
const mockSpreadsheetRepository = mock<SpreadsheetRepository>();
|
|
114
117
|
const mockProjectRepository = mock<ProjectRepository>();
|
|
@@ -131,6 +134,7 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
131
134
|
mockUpdateIssueStatusByLabelUseCase,
|
|
132
135
|
mockStartPreparationUseCase,
|
|
133
136
|
mockRevertOrphanedPreparationUseCase,
|
|
137
|
+
mockRevertNotReadyAwaitingQualityCheckUseCase,
|
|
134
138
|
mockDateRepository,
|
|
135
139
|
mockSpreadsheetRepository,
|
|
136
140
|
mockProjectRepository,
|
|
@@ -309,6 +313,60 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
309
313
|
);
|
|
310
314
|
});
|
|
311
315
|
|
|
316
|
+
it('should invoke revertNotReadyAwaitingQualityCheckUseCase when notifyFinishedPreparation is configured', async () => {
|
|
317
|
+
const input = {
|
|
318
|
+
projectName: 'test-project',
|
|
319
|
+
org: 'test-org',
|
|
320
|
+
projectUrl: 'https://github.com/test-org/test-project',
|
|
321
|
+
manager: 'test-manager',
|
|
322
|
+
workingReport: {
|
|
323
|
+
repo: 'test-repo',
|
|
324
|
+
members: ['member1'],
|
|
325
|
+
spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
|
|
326
|
+
},
|
|
327
|
+
urlOfStoryView: 'https://github.com/test-org/test-project/issues',
|
|
328
|
+
disabled: false,
|
|
329
|
+
allowIssueCacheMinutes: 60,
|
|
330
|
+
notifyFinishedPreparation: {},
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
mockProjectRepository.getProject.mockResolvedValue(mock<Project>());
|
|
334
|
+
await useCase.run(input);
|
|
335
|
+
|
|
336
|
+
expect(
|
|
337
|
+
mockRevertNotReadyAwaitingQualityCheckUseCase.run,
|
|
338
|
+
).toHaveBeenCalledWith(
|
|
339
|
+
expect.objectContaining({
|
|
340
|
+
projectUrl: 'https://github.com/test-org/test-project',
|
|
341
|
+
allowIssueCacheMinutes: 60,
|
|
342
|
+
}),
|
|
343
|
+
);
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
it('should not invoke revertNotReadyAwaitingQualityCheckUseCase when notifyFinishedPreparation is absent', async () => {
|
|
347
|
+
const input = {
|
|
348
|
+
projectName: 'test-project',
|
|
349
|
+
org: 'test-org',
|
|
350
|
+
projectUrl: 'https://github.com/test-org/test-project',
|
|
351
|
+
manager: 'test-manager',
|
|
352
|
+
workingReport: {
|
|
353
|
+
repo: 'test-repo',
|
|
354
|
+
members: ['member1'],
|
|
355
|
+
spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
|
|
356
|
+
},
|
|
357
|
+
urlOfStoryView: 'https://github.com/test-org/test-project/issues',
|
|
358
|
+
disabled: false,
|
|
359
|
+
allowIssueCacheMinutes: 60,
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
mockProjectRepository.getProject.mockResolvedValue(mock<Project>());
|
|
363
|
+
await useCase.run(input);
|
|
364
|
+
|
|
365
|
+
expect(
|
|
366
|
+
mockRevertNotReadyAwaitingQualityCheckUseCase.run,
|
|
367
|
+
).not.toHaveBeenCalled();
|
|
368
|
+
});
|
|
369
|
+
|
|
312
370
|
describe('story issue creation progress logs', () => {
|
|
313
371
|
const storyInput = {
|
|
314
372
|
projectName: 'test-project',
|
|
@@ -21,6 +21,7 @@ import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueTo
|
|
|
21
21
|
import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
|
|
22
22
|
import { StartPreparationUseCase } from './StartPreparationUseCase';
|
|
23
23
|
import { RevertOrphanedPreparationUseCase } from './RevertOrphanedPreparationUseCase';
|
|
24
|
+
import { RevertNotReadyAwaitingQualityCheckUseCase } from './RevertNotReadyAwaitingQualityCheckUseCase';
|
|
24
25
|
import { SetupTowerDefenceProjectUseCase } from './SetupTowerDefenceProjectUseCase';
|
|
25
26
|
|
|
26
27
|
export class ProjectNotFoundError extends Error {
|
|
@@ -50,6 +51,7 @@ export class HandleScheduledEventUseCase {
|
|
|
50
51
|
readonly updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase,
|
|
51
52
|
readonly startPreparationUseCase: StartPreparationUseCase,
|
|
52
53
|
readonly revertOrphanedPreparationUseCase: RevertOrphanedPreparationUseCase,
|
|
54
|
+
readonly revertNotReadyAwaitingQualityCheckUseCase: RevertNotReadyAwaitingQualityCheckUseCase,
|
|
53
55
|
readonly dateRepository: DateRepository,
|
|
54
56
|
readonly spreadsheetRepository: SpreadsheetRepository,
|
|
55
57
|
readonly projectRepository: ProjectRepository,
|
|
@@ -83,6 +85,9 @@ export class HandleScheduledEventUseCase {
|
|
|
83
85
|
awLogStaleThresholdMinutes?: number;
|
|
84
86
|
awaitingQualityCheckStatus?: string | null;
|
|
85
87
|
} | null;
|
|
88
|
+
notifyFinishedPreparation?: {
|
|
89
|
+
awaitingQualityCheckStatusName?: string | null;
|
|
90
|
+
} | null;
|
|
86
91
|
}): Promise<{
|
|
87
92
|
project: Project;
|
|
88
93
|
issues: Issue[];
|
|
@@ -252,6 +257,12 @@ ${JSON.stringify(e)}
|
|
|
252
257
|
storyObjectMap,
|
|
253
258
|
);
|
|
254
259
|
}
|
|
260
|
+
if (input.notifyFinishedPreparation) {
|
|
261
|
+
await this.revertNotReadyAwaitingQualityCheckUseCase.run({
|
|
262
|
+
projectUrl: input.projectUrl,
|
|
263
|
+
allowIssueCacheMinutes: input.allowIssueCacheMinutes,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
255
266
|
if (input.startPreparation) {
|
|
256
267
|
if (input.startPreparation.preparationProcessCheckCommand) {
|
|
257
268
|
await this.revertOrphanedPreparationUseCase.run({
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IssueRepository,
|
|
3
|
+
RelatedPullRequest,
|
|
4
|
+
} from './adapter-interfaces/IssueRepository';
|
|
5
|
+
|
|
6
|
+
export type PrRejectedReasonType =
|
|
7
|
+
| 'PULL_REQUEST_NOT_FOUND'
|
|
8
|
+
| 'MULTIPLE_PULL_REQUESTS_FOUND'
|
|
9
|
+
| 'PULL_REQUEST_CONFLICTED'
|
|
10
|
+
| 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS'
|
|
11
|
+
| 'REQUIRED_CI_JOB_NEVER_STARTED'
|
|
12
|
+
| 'ANY_REVIEW_COMMENT_NOT_RESOLVED';
|
|
13
|
+
|
|
14
|
+
export type PrRejectionResult = {
|
|
15
|
+
rejections: { type: PrRejectedReasonType; detail: string }[];
|
|
16
|
+
approvedPrUrl: string | null;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export class IssueRejectionEvaluator {
|
|
20
|
+
constructor(
|
|
21
|
+
private readonly issueRepository: Pick<
|
|
22
|
+
IssueRepository,
|
|
23
|
+
'findRelatedOpenPRs' | 'getOpenPullRequest'
|
|
24
|
+
>,
|
|
25
|
+
) {}
|
|
26
|
+
|
|
27
|
+
evaluate = async (issue: {
|
|
28
|
+
url: string;
|
|
29
|
+
labels: string[];
|
|
30
|
+
isPr: boolean;
|
|
31
|
+
}): Promise<PrRejectionResult> => {
|
|
32
|
+
const rejections: { type: PrRejectedReasonType; detail: string }[] = [];
|
|
33
|
+
let approvedPrUrl: string | null = null;
|
|
34
|
+
|
|
35
|
+
const categoryLabels = issue.labels.filter((label) =>
|
|
36
|
+
label.startsWith('category:'),
|
|
37
|
+
);
|
|
38
|
+
const hasLlmAgentLabel = issue.labels.some(
|
|
39
|
+
(l) => l === 'llm-agent' || l.startsWith('llm-agent:'),
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (
|
|
43
|
+
!hasLlmAgentLabel &&
|
|
44
|
+
(categoryLabels.length <= 0 || categoryLabels.includes('category:e2e'))
|
|
45
|
+
) {
|
|
46
|
+
const prsToCheck = issue.isPr
|
|
47
|
+
? await this.resolveOpenPrsForPrItem(issue.url)
|
|
48
|
+
: await this.issueRepository.findRelatedOpenPRs(issue.url);
|
|
49
|
+
|
|
50
|
+
if (prsToCheck.length <= 0) {
|
|
51
|
+
rejections.push({
|
|
52
|
+
type: 'PULL_REQUEST_NOT_FOUND',
|
|
53
|
+
detail: 'PULL_REQUEST_NOT_FOUND',
|
|
54
|
+
});
|
|
55
|
+
} else if (prsToCheck.length > 1) {
|
|
56
|
+
rejections.push({
|
|
57
|
+
type: 'MULTIPLE_PULL_REQUESTS_FOUND',
|
|
58
|
+
detail: `MULTIPLE_PULL_REQUESTS_FOUND: ${prsToCheck.map((pr) => pr.url).join(', ')}`,
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
const pr = prsToCheck[0];
|
|
62
|
+
if (pr.isConflicted) {
|
|
63
|
+
rejections.push({
|
|
64
|
+
type: 'PULL_REQUEST_CONFLICTED',
|
|
65
|
+
detail: `PULL_REQUEST_CONFLICTED: ${pr.url}`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (!pr.isPassedAllCiJob) {
|
|
69
|
+
const missingChecks = pr.missingRequiredCheckNames;
|
|
70
|
+
const missingSuffix =
|
|
71
|
+
missingChecks.length > 0
|
|
72
|
+
? ` (missing: ${missingChecks.join(', ')})`
|
|
73
|
+
: '';
|
|
74
|
+
if (pr.isCiStateSuccess && missingChecks.length > 0) {
|
|
75
|
+
rejections.push({
|
|
76
|
+
type: 'REQUIRED_CI_JOB_NEVER_STARTED',
|
|
77
|
+
detail: `REQUIRED_CI_JOB_NEVER_STARTED: ${pr.url}${missingSuffix}`,
|
|
78
|
+
});
|
|
79
|
+
} else {
|
|
80
|
+
rejections.push({
|
|
81
|
+
type: 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS',
|
|
82
|
+
detail: `ANY_CI_JOB_FAILED_OR_IN_PROGRESS: ${pr.url}${missingSuffix}`,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (!pr.isResolvedAllReviewComments) {
|
|
87
|
+
rejections.push({
|
|
88
|
+
type: 'ANY_REVIEW_COMMENT_NOT_RESOLVED',
|
|
89
|
+
detail: `ANY_REVIEW_COMMENT_NOT_RESOLVED: ${pr.url}`,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (
|
|
93
|
+
!pr.isConflicted &&
|
|
94
|
+
pr.isPassedAllCiJob &&
|
|
95
|
+
pr.isResolvedAllReviewComments
|
|
96
|
+
) {
|
|
97
|
+
approvedPrUrl = pr.url;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return { rejections, approvedPrUrl };
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
private resolveOpenPrsForPrItem = async (
|
|
106
|
+
prUrl: string,
|
|
107
|
+
): Promise<RelatedPullRequest[]> => {
|
|
108
|
+
const pr = await this.issueRepository.getOpenPullRequest(prUrl);
|
|
109
|
+
if (pr === null) {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
return [pr];
|
|
113
|
+
};
|
|
114
|
+
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IssueRepository,
|
|
3
|
-
RelatedPullRequest,
|
|
4
|
-
} from './adapter-interfaces/IssueRepository';
|
|
1
|
+
import { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
5
2
|
import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
|
|
6
3
|
import { IssueCommentRepository } from './adapter-interfaces/IssueCommentRepository';
|
|
7
4
|
import { WebhookRepository } from './adapter-interfaces/WebhookRepository';
|
|
@@ -11,6 +8,10 @@ import {
|
|
|
11
8
|
FAILED_PREPARATION_STATUS_NAME,
|
|
12
9
|
PREPARATION_STATUS_NAME,
|
|
13
10
|
} from '../entities/WorkflowStatus';
|
|
11
|
+
import {
|
|
12
|
+
IssueRejectionEvaluator,
|
|
13
|
+
PrRejectedReasonType,
|
|
14
|
+
} from './IssueRejectionEvaluator';
|
|
14
15
|
|
|
15
16
|
export class IssueNotFoundError extends Error {
|
|
16
17
|
constructor(issueUrl: string) {
|
|
@@ -33,14 +34,11 @@ export class IllegalIssueStatusError extends Error {
|
|
|
33
34
|
type RejectedReasonType =
|
|
34
35
|
| 'NO_REPORT_FROM_AGENT_BOT'
|
|
35
36
|
| 'REPORT_HAS_NEXT_STEP'
|
|
36
|
-
|
|
|
37
|
-
| 'MULTIPLE_PULL_REQUESTS_FOUND'
|
|
38
|
-
| 'PULL_REQUEST_CONFLICTED'
|
|
39
|
-
| 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS'
|
|
40
|
-
| 'REQUIRED_CI_JOB_NEVER_STARTED'
|
|
41
|
-
| 'ANY_REVIEW_COMMENT_NOT_RESOLVED';
|
|
37
|
+
| PrRejectedReasonType;
|
|
42
38
|
|
|
43
39
|
export class NotifyFinishedIssuePreparationUseCase {
|
|
40
|
+
private readonly issueRejectionEvaluator: IssueRejectionEvaluator;
|
|
41
|
+
|
|
44
42
|
constructor(
|
|
45
43
|
private readonly projectRepository: Pick<ProjectRepository, 'getByUrl'>,
|
|
46
44
|
private readonly issueRepository: Pick<
|
|
@@ -61,7 +59,9 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
61
59
|
WebhookRepository,
|
|
62
60
|
'sendGetRequest'
|
|
63
61
|
>,
|
|
64
|
-
) {
|
|
62
|
+
) {
|
|
63
|
+
this.issueRejectionEvaluator = new IssueRejectionEvaluator(issueRepository);
|
|
64
|
+
}
|
|
65
65
|
|
|
66
66
|
run = async (params: {
|
|
67
67
|
projectUrl: string;
|
|
@@ -257,7 +257,7 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
257
257
|
approvedPrUrl: string | null;
|
|
258
258
|
}> => {
|
|
259
259
|
const rejections: { type: RejectedReasonType; detail: string }[] = [];
|
|
260
|
-
|
|
260
|
+
|
|
261
261
|
const lastComment = comments[comments.length - 1];
|
|
262
262
|
if (!lastComment || !lastComment.content.startsWith('From:')) {
|
|
263
263
|
rejections.push({
|
|
@@ -271,83 +271,9 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
271
271
|
});
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const hasLlmAgentLabel = issue.labels.some(
|
|
278
|
-
(l) => l === 'llm-agent' || l.startsWith('llm-agent:'),
|
|
279
|
-
);
|
|
280
|
-
if (
|
|
281
|
-
!hasLlmAgentLabel &&
|
|
282
|
-
(categoryLabels.length <= 0 || categoryLabels.includes('category:e2e'))
|
|
283
|
-
) {
|
|
284
|
-
const prsToCheck = issue.isPr
|
|
285
|
-
? await this.resolveOpenPrsForPrItem(issue.url)
|
|
286
|
-
: await this.issueRepository.findRelatedOpenPRs(issue.url);
|
|
287
|
-
|
|
288
|
-
if (prsToCheck.length <= 0) {
|
|
289
|
-
rejections.push({
|
|
290
|
-
type: 'PULL_REQUEST_NOT_FOUND',
|
|
291
|
-
detail: 'PULL_REQUEST_NOT_FOUND',
|
|
292
|
-
});
|
|
293
|
-
} else if (prsToCheck.length > 1) {
|
|
294
|
-
rejections.push({
|
|
295
|
-
type: 'MULTIPLE_PULL_REQUESTS_FOUND',
|
|
296
|
-
detail: `MULTIPLE_PULL_REQUESTS_FOUND: ${prsToCheck.map((pr) => pr.url).join(', ')}`,
|
|
297
|
-
});
|
|
298
|
-
} else {
|
|
299
|
-
const pr = prsToCheck[0];
|
|
300
|
-
if (pr.isConflicted) {
|
|
301
|
-
rejections.push({
|
|
302
|
-
type: 'PULL_REQUEST_CONFLICTED',
|
|
303
|
-
detail: `PULL_REQUEST_CONFLICTED: ${pr.url}`,
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
if (!pr.isPassedAllCiJob) {
|
|
307
|
-
const missingChecks = pr.missingRequiredCheckNames;
|
|
308
|
-
const missingSuffix =
|
|
309
|
-
missingChecks.length > 0
|
|
310
|
-
? ` (missing: ${missingChecks.join(', ')})`
|
|
311
|
-
: '';
|
|
312
|
-
if (pr.isCiStateSuccess && missingChecks.length > 0) {
|
|
313
|
-
rejections.push({
|
|
314
|
-
type: 'REQUIRED_CI_JOB_NEVER_STARTED',
|
|
315
|
-
detail: `REQUIRED_CI_JOB_NEVER_STARTED: ${pr.url}${missingSuffix}`,
|
|
316
|
-
});
|
|
317
|
-
} else {
|
|
318
|
-
rejections.push({
|
|
319
|
-
type: 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS',
|
|
320
|
-
detail: `ANY_CI_JOB_FAILED_OR_IN_PROGRESS: ${pr.url}${missingSuffix}`,
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
if (!pr.isResolvedAllReviewComments) {
|
|
325
|
-
rejections.push({
|
|
326
|
-
type: 'ANY_REVIEW_COMMENT_NOT_RESOLVED',
|
|
327
|
-
detail: `ANY_REVIEW_COMMENT_NOT_RESOLVED: ${pr.url}`,
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
if (
|
|
331
|
-
!pr.isConflicted &&
|
|
332
|
-
pr.isPassedAllCiJob &&
|
|
333
|
-
pr.isResolvedAllReviewComments
|
|
334
|
-
) {
|
|
335
|
-
approvedPrUrl = pr.url;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
return { rejections, approvedPrUrl };
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
private resolveOpenPrsForPrItem = async (
|
|
344
|
-
prUrl: string,
|
|
345
|
-
): Promise<RelatedPullRequest[]> => {
|
|
346
|
-
const pr = await this.issueRepository.getOpenPullRequest(prUrl);
|
|
347
|
-
if (pr === null) {
|
|
348
|
-
return [];
|
|
349
|
-
}
|
|
350
|
-
return [pr];
|
|
274
|
+
const { rejections: prRejections, approvedPrUrl } =
|
|
275
|
+
await this.issueRejectionEvaluator.evaluate(issue);
|
|
276
|
+
return { rejections: [...rejections, ...prRejections], approvedPrUrl };
|
|
351
277
|
};
|
|
352
278
|
|
|
353
279
|
private reportBodyHasNextStep = (body: string): boolean => {
|