Skip to content

Commit 9a79208

Browse files
authored
Merge pull request #52 from topcoder-platform/pm-2540_3
feat(PM-2540): added ai workflow id to default reviewer
2 parents 38c74bd + d8c7eef commit 9a79208

File tree

4 files changed

+29
-18
lines changed

4 files changed

+29
-18
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
Warnings:
3+
4+
- You are about to drop the column `isAIReviewer` on the `DefaultChallengeReviewer` table. All the data in the column will be lost.
5+
6+
*/
7+
-- AlterTable
8+
ALTER TABLE "DefaultChallengeReviewer" DROP COLUMN "isAIReviewer",
9+
ADD COLUMN "aiWorkflowId" VARCHAR(14),
10+
ALTER COLUMN "scorecardId" DROP NOT NULL;

prisma/schema.prisma

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ model DefaultChallengeReviewer {
649649
trackId String
650650
timelineTemplateId String?
651651
// Reviewer configuration (mirrors ChallengeReviewer)
652-
scorecardId String
652+
scorecardId String?
653653
isMemberReview Boolean
654654
memberReviewerCount Int?
655655
phaseName String
@@ -659,7 +659,7 @@ model DefaultChallengeReviewer {
659659
baseCoefficient Float?
660660
incrementalCoefficient Float?
661661
opportunityType ReviewOpportunityTypeEnum?
662-
isAIReviewer Boolean?
662+
aiWorkflowId String? @db.VarChar(14)
663663
shouldOpenOpportunity Boolean @default(true)
664664
665665
// Relations
@@ -724,4 +724,4 @@ model TimelineTemplatePhase {
724724
725725
@@index([timelineTemplateId])
726726
@@index([timelineTemplateId, phaseId])
727-
}
727+
}

src/services/ChallengeService.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,6 @@ async function getDefaultReviewers(currentUser, criteria) {
300300
incrementalCoefficient: r.incrementalCoefficient,
301301
type: r.opportunityType,
302302
aiWorkflowId: r.aiWorkflowId,
303-
isAIReviewer: r.isAIReviewer,
304303
shouldOpenOpportunity: _.isBoolean(r.shouldOpenOpportunity) ? r.shouldOpenOpportunity : true,
305304
}));
306305
}
@@ -322,7 +321,6 @@ async function setDefaultReviewers(currentUser, data) {
322321
Joi.object().keys({
323322
scorecardId: Joi.string().required(),
324323
isMemberReview: Joi.boolean().required(),
325-
isAIReviewer: Joi.boolean().default(false),
326324
shouldOpenOpportunity: Joi.boolean().default(true),
327325
memberReviewerCount: Joi.when("isMemberReview", {
328326
is: true,
@@ -403,7 +401,7 @@ async function setDefaultReviewers(currentUser, data) {
403401
timelineTemplateId: _.isNil(value.timelineTemplateId) ? null : value.timelineTemplateId,
404402
scorecardId: String(r.scorecardId),
405403
isMemberReview: !!r.isMemberReview,
406-
isAIReviewer: !!r.isAIReviewer,
404+
aiWorkflowId:_.isNil(r.aiWorkflowId) ? null : r.aiWorkflowId,
407405
memberReviewerCount: _.isNil(r.memberReviewerCount)
408406
? null
409407
: Number(r.memberReviewerCount),
@@ -414,7 +412,6 @@ async function setDefaultReviewers(currentUser, data) {
414412
? null
415413
: Number(r.incrementalCoefficient),
416414
opportunityType: r.type ? _.toUpper(r.type) : null,
417-
aiWorkflowId: r.aiWorkflowId,
418415
shouldOpenOpportunity: _.isNil(r.shouldOpenOpportunity)
419416
? true
420417
: !!r.shouldOpenOpportunity,
@@ -1712,7 +1709,6 @@ async function createChallenge(currentUser, challenge, userToken) {
17121709
incrementalCoefficient: r.incrementalCoefficient,
17131710
type: r.opportunityType,
17141711
aiWorkflowId: r.aiWorkflowId,
1715-
isAIReviewer: r.isAIReviewer ?? false,
17161712
shouldOpenOpportunity: _.isBoolean(r.shouldOpenOpportunity)
17171713
? r.shouldOpenOpportunity
17181714
: true,
@@ -1880,7 +1876,6 @@ createChallenge.schema = {
18801876
Joi.object().keys({
18811877
scorecardId: Joi.string().required(),
18821878
isMemberReview: Joi.boolean().required(),
1883-
isAIReviewer: Joi.boolean().default(false),
18841879
shouldOpenOpportunity: Joi.boolean().default(true),
18851880
memberReviewerCount: Joi.when("isMemberReview", {
18861881
is: true,
@@ -3075,7 +3070,6 @@ updateChallenge.schema = {
30753070
Joi.object().keys({
30763071
scorecardId: Joi.string().required(),
30773072
isMemberReview: Joi.boolean().required(),
3078-
isAIReviewer: Joi.boolean().default(false),
30793073
shouldOpenOpportunity: Joi.boolean().default(true),
30803074
memberReviewerCount: Joi.when("isMemberReview", {
30813075
is: true,
@@ -3555,7 +3549,6 @@ function sanitizeChallenge(challenge) {
35553549
_.pick(rv, [
35563550
"scorecardId",
35573551
"isMemberReview",
3558-
"isAIReviewer",
35593552
"memberReviewerCount",
35603553
"phaseId",
35613554
"fixedAmount",

src/services/DefaultChallengeReviewerService.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ function normalizePayload(data = {}, isPartial = false) {
262262
} else if (!isPartial && _.isNil(data.opportunityType)) {
263263
normalized.opportunityType = null;
264264
}
265-
if (shouldAssign(data.isAIReviewer)) {
266-
normalized.isAIReviewer = data.isAIReviewer;
265+
if (shouldAssign(data.aiWorkflowId)) {
266+
normalized.aiWorkflowId = data.aiWorkflowId;
267267
}
268268
if (shouldAssign(data.shouldOpenOpportunity)) {
269269
normalized.shouldOpenOpportunity = data.shouldOpenOpportunity;
@@ -325,7 +325,7 @@ createDefaultChallengeReviewer.schema = {
325325
typeId: Joi.id().required(),
326326
trackId: Joi.id().required(),
327327
timelineTemplateId: Joi.optionalId().allow(null),
328-
scorecardId: Joi.string().required(),
328+
scorecardId: Joi.string().optional(),
329329
isMemberReview: Joi.boolean().required(),
330330
memberReviewerCount: Joi.when("isMemberReview", {
331331
is: true,
@@ -338,7 +338,11 @@ createDefaultChallengeReviewer.schema = {
338338
baseCoefficient: Joi.number().min(0).max(1).allow(null),
339339
incrementalCoefficient: Joi.number().min(0).max(1).allow(null),
340340
opportunityType: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(),
341-
isAIReviewer: Joi.boolean().required(),
341+
aiWorkflowId: Joi.when("isMemberReview", {
342+
is: false,
343+
then: Joi.string().required(),
344+
otherwise: Joi.valid(null),
345+
}),
342346
shouldOpenOpportunity: Joi.boolean().required(),
343347
})
344348
.required(),
@@ -404,7 +408,7 @@ fullyUpdateDefaultChallengeReviewer.schema = {
404408
typeId: Joi.id().required(),
405409
trackId: Joi.id().required(),
406410
timelineTemplateId: Joi.optionalId().allow(null),
407-
scorecardId: Joi.string().required(),
411+
scorecardId: Joi.string().optional(),
408412
isMemberReview: Joi.boolean().required(),
409413
memberReviewerCount: Joi.when("isMemberReview", {
410414
is: true,
@@ -417,7 +421,11 @@ fullyUpdateDefaultChallengeReviewer.schema = {
417421
baseCoefficient: Joi.number().min(0).max(1).allow(null),
418422
incrementalCoefficient: Joi.number().min(0).max(1).allow(null),
419423
opportunityType: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(),
420-
isAIReviewer: Joi.boolean().required(),
424+
aiWorkflowId: Joi.when("isMemberReview", {
425+
is: false,
426+
then: Joi.string().required(),
427+
otherwise: Joi.valid(null),
428+
}),
421429
shouldOpenOpportunity: Joi.boolean().required(),
422430
})
423431
.required(),
@@ -516,7 +524,7 @@ partiallyUpdateDefaultChallengeReviewer.schema = {
516524
.valid(..._.values(ReviewOpportunityTypeEnum))
517525
.insensitive()
518526
.allow(null),
519-
isAIReviewer: Joi.boolean(),
527+
aiWorkflowId: Joi.string(),
520528
shouldOpenOpportunity: Joi.boolean(),
521529
})
522530
.required(),

0 commit comments

Comments
 (0)