github-issue-tower-defence-management 1.32.0 → 1.34.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 +20 -0
- package/README.md +92 -6
- package/bin/adapter/entry-points/cli/index.js +422 -5
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +67 -33
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/repositories/FetchWebhookRepository.js +10 -0
- package/bin/adapter/repositories/FetchWebhookRepository.js.map +1 -0
- package/bin/adapter/repositories/GitHubIssueCommentRepository.js +190 -0
- package/bin/adapter/repositories/GitHubIssueCommentRepository.js.map +1 -0
- package/bin/adapter/repositories/OauthAPIClaudeRepository.js +225 -0
- package/bin/adapter/repositories/OauthAPIClaudeRepository.js.map +1 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +17 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +73 -17
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js.map +1 -0
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.test.ts +1315 -15
- package/src/adapter/entry-points/cli/index.ts +648 -5
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +14 -0
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +17 -2
- package/src/adapter/repositories/FetchWebhookRepository.ts +7 -0
- package/src/adapter/repositories/GitHubIssueCommentRepository.ts +291 -0
- package/src/adapter/repositories/OauthAPIClaudeRepository.ts +279 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +28 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +30 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +722 -16
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +117 -20
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +2 -0
- package/src/domain/usecases/adapter-interfaces/WebhookRepository.ts +3 -0
- package/types/adapter/entry-points/cli/index.d.ts +19 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/repositories/FetchWebhookRepository.d.ts +5 -0
- package/types/adapter/repositories/FetchWebhookRepository.d.ts.map +1 -0
- package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts +12 -0
- package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts.map +1 -0
- package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts +13 -0
- package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts.map +1 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +10 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +5 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +2 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/WebhookRepository.d.ts +4 -0
- package/types/domain/usecases/adapter-interfaces/WebhookRepository.d.ts.map +1 -0
|
@@ -20,6 +20,7 @@ import { CreateNewStoryByLabelUseCase } from './CreateNewStoryByLabelUseCase';
|
|
|
20
20
|
import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueToManagerUseCase';
|
|
21
21
|
import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
|
|
22
22
|
import { StartPreparationUseCase } from './StartPreparationUseCase';
|
|
23
|
+
import { NotifyFinishedIssuePreparationUseCase } from './NotifyFinishedIssuePreparationUseCase';
|
|
23
24
|
|
|
24
25
|
export class ProjectNotFoundError extends Error {
|
|
25
26
|
constructor(message: string) {
|
|
@@ -44,6 +45,7 @@ export class HandleScheduledEventUseCase {
|
|
|
44
45
|
readonly assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase,
|
|
45
46
|
readonly updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase,
|
|
46
47
|
readonly startPreparationUseCase: StartPreparationUseCase,
|
|
48
|
+
readonly notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase,
|
|
47
49
|
readonly dateRepository: DateRepository,
|
|
48
50
|
readonly spreadsheetRepository: SpreadsheetRepository,
|
|
49
51
|
readonly projectRepository: ProjectRepository,
|
|
@@ -72,6 +74,13 @@ export class HandleScheduledEventUseCase {
|
|
|
72
74
|
logFilePath?: string;
|
|
73
75
|
maximumPreparingIssuesCount: number | null;
|
|
74
76
|
} | null;
|
|
77
|
+
notifyFinishedPreparation?: {
|
|
78
|
+
preparationStatus: string;
|
|
79
|
+
awaitingWorkspaceStatus: string;
|
|
80
|
+
awaitingQualityCheckStatus: string;
|
|
81
|
+
thresholdForAutoReject: number;
|
|
82
|
+
workflowBlockerResolvedWebhookUrl: string | null;
|
|
83
|
+
} | null;
|
|
75
84
|
}): Promise<{
|
|
76
85
|
project: Project;
|
|
77
86
|
issues: Issue[];
|
|
@@ -313,6 +322,27 @@ ${JSON.stringify(e)}
|
|
|
313
322
|
allowIssueCacheMinutes: input.allowIssueCacheMinutes,
|
|
314
323
|
});
|
|
315
324
|
}
|
|
325
|
+
if (input.notifyFinishedPreparation) {
|
|
326
|
+
const notifyFinishedPreparation = input.notifyFinishedPreparation;
|
|
327
|
+
const preparationIssues = issues.filter(
|
|
328
|
+
(issue) => issue.status === notifyFinishedPreparation.preparationStatus,
|
|
329
|
+
);
|
|
330
|
+
for (const issue of preparationIssues) {
|
|
331
|
+
await this.notifyFinishedIssuePreparationUseCase.run({
|
|
332
|
+
projectUrl: input.projectUrl,
|
|
333
|
+
issueUrl: issue.url,
|
|
334
|
+
preparationStatus: input.notifyFinishedPreparation.preparationStatus,
|
|
335
|
+
awaitingWorkspaceStatus:
|
|
336
|
+
input.notifyFinishedPreparation.awaitingWorkspaceStatus,
|
|
337
|
+
awaitingQualityCheckStatus:
|
|
338
|
+
input.notifyFinishedPreparation.awaitingQualityCheckStatus,
|
|
339
|
+
thresholdForAutoReject:
|
|
340
|
+
input.notifyFinishedPreparation.thresholdForAutoReject,
|
|
341
|
+
workflowBlockerResolvedWebhookUrl:
|
|
342
|
+
input.notifyFinishedPreparation.workflowBlockerResolvedWebhookUrl,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
}
|
|
316
346
|
};
|
|
317
347
|
static createTargetDateTimes = (from: Date, to: Date): Date[] => {
|
|
318
348
|
const targetDateTimes: Date[] = [];
|