1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00

feat: milestone transition condition (#10757)

This commit is contained in:
Mateusz Kwasniewski 2025-10-08 11:30:04 +02:00 committed by GitHub
parent 9948e577ee
commit 43fa239e72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 0 deletions

View File

@ -6,5 +6,6 @@ export interface ReleasePlanMilestone {
sortOrder: number; sortOrder: number;
releasePlanDefinitionId: string; releasePlanDefinitionId: string;
startedAt?: Date; startedAt?: Date;
transitionCondition?: object;
strategies?: ReleasePlanMilestoneStrategy[]; strategies?: ReleasePlanMilestoneStrategy[];
} }

View File

@ -18,6 +18,8 @@ const selectColumns = [
'mi.id AS milestoneId', 'mi.id AS milestoneId',
'mi.name AS milestoneName', 'mi.name AS milestoneName',
'mi.sort_order AS milestoneSortOrder', 'mi.sort_order AS milestoneSortOrder',
'mi.started_at AS milestoneStartedAt',
'mp.transition_condition AS milestoneTransitionCondition',
'ms.id AS strategyId', 'ms.id AS strategyId',
'ms.sort_order AS strategySortOrder', 'ms.sort_order AS strategySortOrder',
'ms.title AS strategyTitle', 'ms.title AS strategyTitle',
@ -46,6 +48,8 @@ const processReleasePlanRows = (templateRows): ReleasePlan[] =>
milestoneId, milestoneId,
milestoneName, milestoneName,
milestoneSortOrder, milestoneSortOrder,
milestoneStartedAt,
milestoneTransitionCondition,
strategyId, strategyId,
strategySortOrder, strategySortOrder,
strategyTitle, strategyTitle,
@ -87,6 +91,8 @@ const processReleasePlanRows = (templateRows): ReleasePlan[] =>
id: milestoneId, id: milestoneId,
name: milestoneName, name: milestoneName,
sortOrder: milestoneSortOrder, sortOrder: milestoneSortOrder,
startedAt: milestoneStartedAt,
transitionCondition: milestoneTransitionCondition,
strategies: [], strategies: [],
releasePlanDefinitionId: planId, releasePlanDefinitionId: planId,
}; };
@ -152,6 +158,11 @@ export class ReleasePlanReadModel implements IReleasePlanReadModel {
'mi.release_plan_definition_id', 'mi.release_plan_definition_id',
'rpd.id', 'rpd.id',
) )
.leftJoin(
'milestone_progressions AS mp',
'mp.source_milestone',
'mi.id',
)
.leftJoin('milestone_strategies AS ms', 'ms.milestone_id', 'mi.id') .leftJoin('milestone_strategies AS ms', 'ms.milestone_id', 'mi.id')
.leftJoin( .leftJoin(
'milestone_strategy_segments AS mss', 'milestone_strategy_segments AS mss',

View File

@ -35,6 +35,20 @@ export const releasePlanMilestoneSchema = {
'The ID of the release plan/template that this milestone belongs to.', 'The ID of the release plan/template that this milestone belongs to.',
example: '01JB9GGTGQYEQ9D40R17T3YVW2', example: '01JB9GGTGQYEQ9D40R17T3YVW2',
}, },
startedAt: {
type: 'string',
format: 'date-time',
description: 'The date and time when the milestone was started.',
example: '2024-01-01T00:00:00.000Z',
nullable: true,
},
transitionCondition: {
type: 'object',
description:
'The transition condition for the next automated milestone progression.',
additionalProperties: true,
nullable: true,
},
strategies: { strategies: {
type: 'array', type: 'array',
description: description: