@steedos-labs/content-compliance 0.7.14 → 0.7.16

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.
@@ -24,3 +24,4 @@ export * from './fixStuckPersonnelReview';
24
24
  export * from './postponeReview';
25
25
  export * from './urgentApproval';
26
26
  export * from './initUrgentQuota';
27
+ export * from './initCollaborator';
@@ -27,4 +27,5 @@ tslib_1.__exportStar(require("./fixStuckPersonnelReview"), exports);
27
27
  tslib_1.__exportStar(require("./postponeReview"), exports);
28
28
  tslib_1.__exportStar(require("./urgentApproval"), exports);
29
29
  tslib_1.__exportStar(require("./initUrgentQuota"), exports);
30
+ tslib_1.__exportStar(require("./initCollaborator"), exports);
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":";;;AAOA,mDAAyB;AAEzB,sDAA4B;AAE5B,6DAAmC;AAEnC,2DAAiC;AAEjC,8DAAoC;AAEpC,+DAAqC;AAErC,uDAA6B;AAE7B,4DAAkC;AAElC,oEAA0C;AAE1C,iDAAuB;AAEvB,kEAAwC;AAExC,qDAA2B;AAE3B,uDAA6B;AAE7B,gEAAsC;AAEtC,6DAAmC;AAEnC,8DAAoC;AAEpC,iEAAuC;AACvC,2DAAiC;AAEjC,2DAAiC;AAEjC,4DAAkC;AAElC,uEAA6C;AAE7C,wEAA8C;AAE9C,oEAA0C;AAE1C,2DAAiC;AAEjC,2DAAiC;AAEjC,4DAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":";;;AAOA,mDAAyB;AAEzB,sDAA4B;AAE5B,6DAAmC;AAEnC,2DAAiC;AAEjC,8DAAoC;AAEpC,+DAAqC;AAErC,uDAA6B;AAE7B,4DAAkC;AAElC,oEAA0C;AAE1C,iDAAuB;AAEvB,kEAAwC;AAExC,qDAA2B;AAE3B,uDAA6B;AAE7B,gEAAsC;AAEtC,6DAAmC;AAEnC,8DAAoC;AAEpC,iEAAuC;AACvC,2DAAiC;AAEjC,2DAAiC;AAEjC,4DAAkC;AAElC,uEAA6C;AAE7C,wEAA8C;AAE9C,oEAA0C;AAE1C,2DAAiC;AAEjC,2DAAiC;AAEjC,4DAAkC;AAElC,6DAAmC"}
@@ -0,0 +1,13 @@
1
+ export declare const initCollaborator: {
2
+ rest: {
3
+ method: string;
4
+ fullPath: string;
5
+ };
6
+ handler(ctx: any): Promise<{
7
+ message: string;
8
+ total: any;
9
+ updated: number;
10
+ collaborators: number;
11
+ internalUsers: number;
12
+ }>;
13
+ };
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initCollaborator = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var isPepsicoEmail = function (email) {
6
+ return typeof email === 'string' && email.toLowerCase().endsWith('@pepsico.com');
7
+ };
8
+ exports.initCollaborator = {
9
+ rest: {
10
+ method: 'GET',
11
+ fullPath: '/api/pepsico-content/space-users/init-collaborator'
12
+ },
13
+ handler: function (ctx) {
14
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
15
+ var user, space, spaceUsers, updated, collaborators, internalUsers, spaceUsers_1, spaceUsers_1_1, spaceUser, isCollaborator, e_1_1;
16
+ var e_1, _a;
17
+ return tslib_1.__generator(this, function (_b) {
18
+ switch (_b.label) {
19
+ case 0:
20
+ ctx.getObject = this.getObject;
21
+ user = ctx.meta.user;
22
+ space = user === null || user === void 0 ? void 0 : user.spaceId;
23
+ if (!user || !user.is_space_admin) {
24
+ throw new Error('无权限!');
25
+ }
26
+ if (!space) {
27
+ throw new Error('无法获取当前工作区');
28
+ }
29
+ return [4, ctx.getObject('space_users').directFind({
30
+ filters: [['space', '=', space]],
31
+ fields: ['_id', 'email', 'is_collaborator']
32
+ })];
33
+ case 1:
34
+ spaceUsers = _b.sent();
35
+ updated = 0;
36
+ collaborators = 0;
37
+ internalUsers = 0;
38
+ _b.label = 2;
39
+ case 2:
40
+ _b.trys.push([2, 7, 8, 9]);
41
+ spaceUsers_1 = tslib_1.__values(spaceUsers), spaceUsers_1_1 = spaceUsers_1.next();
42
+ _b.label = 3;
43
+ case 3:
44
+ if (!!spaceUsers_1_1.done) return [3, 6];
45
+ spaceUser = spaceUsers_1_1.value;
46
+ isCollaborator = !isPepsicoEmail(spaceUser.email);
47
+ if (isCollaborator) {
48
+ collaborators++;
49
+ }
50
+ else {
51
+ internalUsers++;
52
+ }
53
+ if (!(spaceUser.is_collaborator !== isCollaborator)) return [3, 5];
54
+ return [4, ctx.getObject('space_users').directUpdate(spaceUser._id, {
55
+ is_collaborator: isCollaborator
56
+ })];
57
+ case 4:
58
+ _b.sent();
59
+ updated++;
60
+ _b.label = 5;
61
+ case 5:
62
+ spaceUsers_1_1 = spaceUsers_1.next();
63
+ return [3, 3];
64
+ case 6: return [3, 9];
65
+ case 7:
66
+ e_1_1 = _b.sent();
67
+ e_1 = { error: e_1_1 };
68
+ return [3, 9];
69
+ case 8:
70
+ try {
71
+ if (spaceUsers_1_1 && !spaceUsers_1_1.done && (_a = spaceUsers_1.return)) _a.call(spaceUsers_1);
72
+ }
73
+ finally { if (e_1) throw e_1.error; }
74
+ return [7];
75
+ case 9: return [2, {
76
+ message: "\u521D\u59CB\u5316\u5B8C\u6210\uFF1A\u66F4\u65B0 ".concat(updated, " \u4E2A\u7528\u6237"),
77
+ total: spaceUsers.length,
78
+ updated: updated,
79
+ collaborators: collaborators,
80
+ internalUsers: internalUsers
81
+ }];
82
+ }
83
+ });
84
+ });
85
+ }
86
+ };
87
+ //# sourceMappingURL=initCollaborator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initCollaborator.js","sourceRoot":"","sources":["../../src/actions/initCollaborator.ts"],"names":[],"mappings":";;;;AAIA,IAAM,cAAc,GAAG,UAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrF,CAAC,CAAC;AAGW,QAAA,gBAAgB,GAAG;IAC5B,IAAI,EAAE;QACF,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,oDAAoD;KACjE;IACK,OAAO,YAAC,GAAG;;;;;;;wBACb,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBACzB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;wBACrB,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC;wBAE5B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;4BAC/B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;yBAC3B;wBAED,IAAI,CAAC,KAAK,EAAE;4BACR,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;yBAChC;wBAEkB,WAAM,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC;gCAC7D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gCAChC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC;6BAC9C,CAAC,EAAA;;wBAHI,UAAU,GAAG,SAGjB;wBAEE,OAAO,GAAG,CAAC,CAAC;wBACZ,aAAa,GAAG,CAAC,CAAC;wBAClB,aAAa,GAAG,CAAC,CAAC;;;;wBAEE,eAAA,iBAAA,UAAU,CAAA;;;;wBAAvB,SAAS;wBACV,cAAc,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBAExD,IAAI,cAAc,EAAE;4BAChB,aAAa,EAAE,CAAC;yBACnB;6BAAM;4BACH,aAAa,EAAE,CAAC;yBACnB;6BAEG,CAAA,SAAS,CAAC,eAAe,KAAK,cAAc,CAAA,EAA5C,cAA4C;wBAC5C,WAAM,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;gCAC3D,eAAe,EAAE,cAAc;6BAClC,CAAC,EAAA;;wBAFF,SAEE,CAAC;wBACH,OAAO,EAAE,CAAC;;;;;;;;;;;;;;;;4BAIlB,WAAO;4BACH,OAAO,EAAE,2DAAY,OAAO,wBAAM;4BAClC,KAAK,EAAE,UAAU,CAAC,MAAM;4BACxB,OAAO,SAAA;4BACP,aAAa,eAAA;4BACb,aAAa,eAAA;yBAChB,EAAC;;;;KACL;CACJ,CAAC"}
@@ -27,14 +27,14 @@ exports.initUrgentQuota = {
27
27
  h1 = typeof h1_used === 'number' ? h1_used : 0;
28
28
  h2 = typeof h2_used === 'number' ? h2_used : 0;
29
29
  return [4, ctx.getObject('space_users').directFind({
30
- filters: [['space', '=', space], ['user_accepted', '=', true], ['email', 'endsWith', '@pepsico.com']],
30
+ filters: [['space', '=', space], ['user_accepted', '=', true], ['is_collaborator', '!=', true]],
31
31
  fields: ['user']
32
32
  })];
33
33
  case 1:
34
34
  spaceUsers = _c.sent();
35
35
  ownerIds = tslib_1.__spreadArray([], tslib_1.__read(new Set(spaceUsers.map(function (u) { return u.user; }).filter(Boolean))), false);
36
36
  if (ownerIds.length === 0) {
37
- return [2, { message: '未找到任何百事内部用户', created: 0, updated: 0 }];
37
+ return [2, { message: '未找到任何内部用户', created: 0, updated: 0 }];
38
38
  }
39
39
  created = 0;
40
40
  updated = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"initUrgentQuota.js","sourceRoot":"","sources":["../../src/actions/initUrgentQuota.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initUrgentQuota.js","sourceRoot":"","sources":["../../src/actions/initUrgentQuota.ts"],"names":[],"mappings":"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"}
@@ -36,4 +36,67 @@ describe('postpone review department resolution', function () {
36
36
  expect(departmentType).toBe(consts_1.ProcessApprovalType.CA);
37
37
  });
38
38
  });
39
+ describe('postponeReview', function () {
40
+ it('marks the next review round without immediate activation during an active rejected review step', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
41
+ var directUpdateApproval, insertPostpone, directFindApprovalProcess, record, ctx;
42
+ return tslib_1.__generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ directUpdateApproval = jest.fn();
46
+ insertPostpone = jest.fn();
47
+ directFindApprovalProcess = jest.fn()
48
+ .mockResolvedValueOnce([])
49
+ .mockResolvedValueOnce([{ type: consts_1.ProcessApprovalType.CA }]);
50
+ record = tslib_1.__assign(tslib_1.__assign({}, baseApproval), { person_approved: ['reviewer-1'], person_pending_approve: [], postpone_marker_users: [], review_postponed_users: [] });
51
+ ctx = {
52
+ meta: {
53
+ user: {
54
+ userId: 'reviewer-1'
55
+ }
56
+ },
57
+ getObject: jest.fn(function (objectName) {
58
+ if (objectName === 'pepsico_material_approval') {
59
+ return {
60
+ findOne: jest.fn().mockResolvedValue(record),
61
+ directUpdate: directUpdateApproval
62
+ };
63
+ }
64
+ if (objectName === 'pepsico_approval_process') {
65
+ return {
66
+ directFind: directFindApprovalProcess
67
+ };
68
+ }
69
+ if (objectName === 'pepsico_review_postpone') {
70
+ return {
71
+ directFind: jest.fn().mockResolvedValue([]),
72
+ insert: insertPostpone
73
+ };
74
+ }
75
+ throw new Error("Unexpected object: ".concat(objectName));
76
+ })
77
+ };
78
+ return [4, (0, approval_engine_1.postponeReview)(ctx, 'approval-1', { postpone_reason: '本轮已驳回,下轮延后' })];
79
+ case 1:
80
+ _a.sent();
81
+ expect(insertPostpone).toHaveBeenCalledWith(expect.objectContaining({
82
+ pepsico_material_approval: 'approval-1',
83
+ department_type: consts_1.ProcessApprovalType.CA,
84
+ postpone_by: 'reviewer-1',
85
+ postpone_reason: '本轮已驳回,下轮延后',
86
+ is_marker: true,
87
+ notification_sent: false,
88
+ postponed_user_ids: 'reviewer-1'
89
+ }));
90
+ expect(insertPostpone.mock.calls[0][0]).not.toHaveProperty('visible_after');
91
+ expect(directUpdateApproval).toHaveBeenCalledWith('approval-1', {
92
+ postpone_marker_users: ['reviewer-1']
93
+ });
94
+ expect(directUpdateApproval).not.toHaveBeenCalledWith('approval-1', expect.objectContaining({
95
+ review_postponed_users: expect.any(Array)
96
+ }));
97
+ return [2];
98
+ }
99
+ });
100
+ }); });
101
+ });
39
102
  //# sourceMappingURL=postponeReview.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postponeReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/postponeReview.test.ts"],"names":[],"mappings":";;;AAAA,sDAAqE;AACrE,oCAAsD;AAEtD,IAAM,YAAY,GAAQ;IACtB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,aAAI,CAAC,mBAAmB;IACtC,WAAW,EAAE,CAAC,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,YAAY,EAAE,CAAC,YAAY,CAAC;IAC5B,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;CAC9B,CAAC;AAEF,QAAQ,CAAC,uCAAuC,EAAE;IAC9C,EAAE,CAAC,+EAA+E,EAAE;QAChF,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;YAClC,EAAE,IAAI,EAAE,4BAAmB,CAAC,EAAE,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE;QACxD,MAAM,CAAC,cAAM,OAAA,IAAA,iDAA+B,wCACrC,YAAY,KACf,kBAAkB,EAAE,EAAE,EACtB,UAAU,EAAE,EAAE,KACf;YACC,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,EANH,CAMG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE;QACtE,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"postponeReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/postponeReview.test.ts"],"names":[],"mappings":";;;AAAA,sDAAqF;AACrF,oCAAsD;AAEtD,IAAM,YAAY,GAAQ;IACtB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,aAAI,CAAC,mBAAmB;IACtC,WAAW,EAAE,CAAC,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,YAAY,EAAE,CAAC,YAAY,CAAC;IAC5B,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;CAC9B,CAAC;AAEF,QAAQ,CAAC,uCAAuC,EAAE;IAC9C,EAAE,CAAC,+EAA+E,EAAE;QAChF,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;YAClC,EAAE,IAAI,EAAE,4BAAmB,CAAC,EAAE,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE;QACxD,MAAM,CAAC,cAAM,OAAA,IAAA,iDAA+B,wCACrC,YAAY,KACf,kBAAkB,EAAE,EAAE,EACtB,UAAU,EAAE,EAAE,KACf;YACC,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,EANH,CAMG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE;QACtE,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE;IACvB,EAAE,CAAC,gGAAgG,EAAE;;;;;oBAC3F,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBACjC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC3B,yBAAyB,GAAG,IAAI,CAAC,EAAE,EAAE;yBACtC,qBAAqB,CAAC,EAAE,CAAC;yBACzB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,4BAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACzD,MAAM,yCACL,YAAY,KACf,eAAe,EAAE,CAAC,YAAY,CAAC,EAC/B,sBAAsB,EAAE,EAAE,EAC1B,qBAAqB,EAAE,EAAE,EACzB,sBAAsB,EAAE,EAAE,GAC7B,CAAC;oBAEI,GAAG,GAAQ;wBACb,IAAI,EAAE;4BACF,IAAI,EAAE;gCACF,MAAM,EAAE,YAAY;6BACvB;yBACJ;wBACD,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAC,UAAkB;4BAClC,IAAI,UAAU,KAAK,2BAA2B,EAAE;gCAC5C,OAAO;oCACH,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;oCAC5C,YAAY,EAAE,oBAAoB;iCACrC,CAAC;6BACL;4BACD,IAAI,UAAU,KAAK,0BAA0B,EAAE;gCAC3C,OAAO;oCACH,UAAU,EAAE,yBAAyB;iCACxC,CAAC;6BACL;4BACD,IAAI,UAAU,KAAK,yBAAyB,EAAE;gCAC1C,OAAO;oCACH,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;oCAC3C,MAAM,EAAE,cAAc;iCACzB,CAAC;6BACL;4BACD,MAAM,IAAI,KAAK,CAAC,6BAAsB,UAAU,CAAE,CAAC,CAAC;wBACxD,CAAC,CAAC;qBACL,CAAC;oBAEF,WAAM,IAAA,gCAAc,EAAC,GAAG,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,EAAA;;oBAA1E,SAA0E,CAAC;oBAE3E,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;wBAChE,yBAAyB,EAAE,YAAY;wBACvC,eAAe,EAAE,4BAAmB,CAAC,EAAE;wBACvC,WAAW,EAAE,YAAY;wBACzB,eAAe,EAAE,YAAY;wBAC7B,SAAS,EAAE,IAAI;wBACf,iBAAiB,EAAE,KAAK;wBACxB,kBAAkB,EAAE,YAAY;qBACnC,CAAC,CAAC,CAAC;oBACJ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;oBAC5E,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE;wBAC5D,qBAAqB,EAAE,CAAC,YAAY,CAAC;qBACxC,CAAC,CAAC;oBACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBACxF,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;qBAC5C,CAAC,CAAC,CAAC;;;;SACP,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -2142,15 +2142,15 @@ var getPostponeReviewDepartmentType = function (record, userProcessRecords, user
2142
2142
  exports.getPostponeReviewDepartmentType = getPostponeReviewDepartmentType;
2143
2143
  var postponeReview = function (ctx, recordId, data) {
2144
2144
  return tslib_1.__awaiter(this, void 0, void 0, function () {
2145
- var user, record, reviewSteps, progessRecords, userProcessRecords, departmentType, statusField, reviewerField, handlerField, deptUserIds, now, unactivatedMarkers, latestMarker, _a, _b, marker, e_13_1, currentMarkerUsers, newMarkerUsers, visibleAfter, markersToActivate, markersToActivate_1, markersToActivate_1_1, marker, e_14_1, currentRecord, currentPostponed, newPostponed;
2146
- var e_13, _c, e_14, _d;
2147
- return tslib_1.__generator(this, function (_e) {
2148
- switch (_e.label) {
2145
+ var user, record, reviewSteps, progessRecords, userProcessRecords, departmentType, statusField, reviewerField, handlerField, deptUserIds, now, unactivatedMarkers, latestMarker, _a, _b, marker, e_13_1, currentMarkerUsers, newMarkerUsers;
2146
+ var e_13, _c;
2147
+ return tslib_1.__generator(this, function (_d) {
2148
+ switch (_d.label) {
2149
2149
  case 0:
2150
2150
  user = ctx.meta.user;
2151
2151
  return [4, ctx.getObject('pepsico_material_approval').findOne(recordId)];
2152
2152
  case 1:
2153
- record = _e.sent();
2153
+ record = _d.sent();
2154
2154
  reviewSteps = [consts_1.Step.departmental_review, consts_1.Step.personnel_review];
2155
2155
  if (!reviewSteps.includes(record.current_step) && record.current_step !== consts_1.Step.submitter_revisions) {
2156
2156
  throw new Error('当前步骤不支持延后审核操作');
@@ -2170,7 +2170,7 @@ var postponeReview = function (ctx, recordId, data) {
2170
2170
  ]
2171
2171
  })];
2172
2172
  case 2:
2173
- progessRecords = _e.sent();
2173
+ progessRecords = _d.sent();
2174
2174
  if (progessRecords.length > 0) {
2175
2175
  throw new Error('您还有待处理的审批任务,无法执行延后审核');
2176
2176
  }
@@ -2183,7 +2183,7 @@ var postponeReview = function (ctx, recordId, data) {
2183
2183
  sort: 'created desc',
2184
2184
  })];
2185
2185
  case 3:
2186
- userProcessRecords = _e.sent();
2186
+ userProcessRecords = _d.sent();
2187
2187
  if (!userProcessRecords || userProcessRecords.length === 0) {
2188
2188
  throw new Error('未找到您的审核记录');
2189
2189
  }
@@ -2218,7 +2218,7 @@ var postponeReview = function (ctx, recordId, data) {
2218
2218
  sort: 'created desc'
2219
2219
  })];
2220
2220
  case 4:
2221
- unactivatedMarkers = _e.sent();
2221
+ unactivatedMarkers = _d.sent();
2222
2222
  if (!(unactivatedMarkers && unactivatedMarkers.length > 0)) return [3, 14];
2223
2223
  latestMarker = unactivatedMarkers[0];
2224
2224
  return [4, ctx.getObject('pepsico_review_postpone').directUpdate(latestMarker._id, {
@@ -2232,12 +2232,12 @@ var postponeReview = function (ctx, recordId, data) {
2232
2232
  name: "".concat(departmentType, " \u5EF6\u540E\u5BA1\u6838\u6807\u8BB0 ").concat(now.toISOString())
2233
2233
  })];
2234
2234
  case 5:
2235
- _e.sent();
2236
- _e.label = 6;
2235
+ _d.sent();
2236
+ _d.label = 6;
2237
2237
  case 6:
2238
- _e.trys.push([6, 11, 12, 13]);
2238
+ _d.trys.push([6, 11, 12, 13]);
2239
2239
  _a = tslib_1.__values(unactivatedMarkers.slice(1)), _b = _a.next();
2240
- _e.label = 7;
2240
+ _d.label = 7;
2241
2241
  case 7:
2242
2242
  if (!!_b.done) return [3, 10];
2243
2243
  marker = _b.value;
@@ -2248,14 +2248,14 @@ var postponeReview = function (ctx, recordId, data) {
2248
2248
  modified_by: user.userId
2249
2249
  })];
2250
2250
  case 8:
2251
- _e.sent();
2252
- _e.label = 9;
2251
+ _d.sent();
2252
+ _d.label = 9;
2253
2253
  case 9:
2254
2254
  _b = _a.next();
2255
2255
  return [3, 7];
2256
2256
  case 10: return [3, 13];
2257
2257
  case 11:
2258
- e_13_1 = _e.sent();
2258
+ e_13_1 = _d.sent();
2259
2259
  e_13 = { error: e_13_1 };
2260
2260
  return [3, 13];
2261
2261
  case 12:
@@ -2282,75 +2282,17 @@ var postponeReview = function (ctx, recordId, data) {
2282
2282
  name: "".concat(departmentType, " \u5EF6\u540E\u5BA1\u6838\u6807\u8BB0 ").concat(now.toISOString())
2283
2283
  })];
2284
2284
  case 15:
2285
- _e.sent();
2286
- _e.label = 16;
2285
+ _d.sent();
2286
+ _d.label = 16;
2287
2287
  case 16:
2288
2288
  console.log("[postponeReview] recordId=".concat(recordId, ", departmentType=").concat(departmentType, ", deptUserIds=").concat(deptUserIds, ", markedForNextRound=true"));
2289
- if (!(record.current_step === consts_1.Step.submitter_revisions)) return [3, 18];
2290
2289
  currentMarkerUsers = record.postpone_marker_users || [];
2291
2290
  newMarkerUsers = (0, lodash_1.compact)((0, lodash_1.uniq)((0, lodash_1.concat)(currentMarkerUsers, deptUserIds)));
2292
2291
  return [4, ctx.getObject('pepsico_material_approval').directUpdate(recordId, {
2293
2292
  postpone_marker_users: newMarkerUsers
2294
2293
  })];
2295
2294
  case 17:
2296
- _e.sent();
2297
- return [2, {}];
2298
- case 18:
2299
- visibleAfter = new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000);
2300
- return [4, ctx.getObject('pepsico_review_postpone').directFind({
2301
- filters: [
2302
- ['pepsico_material_approval', '=', recordId],
2303
- ['postpone_by', '=', user.userId],
2304
- ['is_marker', '=', true],
2305
- ['space', '=', record.space]
2306
- ]
2307
- })];
2308
- case 19:
2309
- markersToActivate = _e.sent();
2310
- _e.label = 20;
2311
- case 20:
2312
- _e.trys.push([20, 25, 26, 27]);
2313
- markersToActivate_1 = tslib_1.__values(markersToActivate), markersToActivate_1_1 = markersToActivate_1.next();
2314
- _e.label = 21;
2315
- case 21:
2316
- if (!!markersToActivate_1_1.done) return [3, 24];
2317
- marker = markersToActivate_1_1.value;
2318
- return [4, ctx.getObject('pepsico_review_postpone').directUpdate(marker._id, {
2319
- is_marker: false,
2320
- visible_after: visibleAfter,
2321
- notification_sent: false,
2322
- postponed_user_ids: deptUserIds.join(','),
2323
- modified: now,
2324
- modified_by: user.userId
2325
- })];
2326
- case 22:
2327
- _e.sent();
2328
- _e.label = 23;
2329
- case 23:
2330
- markersToActivate_1_1 = markersToActivate_1.next();
2331
- return [3, 21];
2332
- case 24: return [3, 27];
2333
- case 25:
2334
- e_14_1 = _e.sent();
2335
- e_14 = { error: e_14_1 };
2336
- return [3, 27];
2337
- case 26:
2338
- try {
2339
- if (markersToActivate_1_1 && !markersToActivate_1_1.done && (_d = markersToActivate_1.return)) _d.call(markersToActivate_1);
2340
- }
2341
- finally { if (e_14) throw e_14.error; }
2342
- return [7];
2343
- case 27: return [4, ctx.getObject('pepsico_material_approval').findOne(recordId)];
2344
- case 28:
2345
- currentRecord = _e.sent();
2346
- currentPostponed = currentRecord.review_postponed_users || [];
2347
- newPostponed = (0, lodash_1.compact)((0, lodash_1.uniq)((0, lodash_1.concat)(currentPostponed, deptUserIds)));
2348
- return [4, ctx.getObject('pepsico_material_approval').directUpdate(recordId, {
2349
- review_postponed_users: newPostponed
2350
- })];
2351
- case 29:
2352
- _e.sent();
2353
- console.log("[postponeReview] \u7ACB\u5373\u6FC0\u6D3B\u5EF6\u540E: recordId=".concat(recordId, ", deptUserIds=").concat(deptUserIds, ", visibleAfter=").concat(visibleAfter));
2295
+ _d.sent();
2354
2296
  return [2, {}];
2355
2297
  }
2356
2298
  });