@steedos-labs/content-compliance 0.8.8 → 0.8.9

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.
Files changed (178) hide show
  1. package/dist/index.js +1 -1
  2. package/lib/actions/bypassApproval.js +18 -0
  3. package/lib/actions/bypassApproval.js.map +1 -1
  4. package/lib/actions/bypassMaterial.js +12 -0
  5. package/lib/actions/bypassMaterial.js.map +1 -1
  6. package/lib/index.js +128 -0
  7. package/lib/index.js.map +1 -1
  8. package/lib/methods/AI.d.ts +6 -0
  9. package/lib/methods/AI.js +116 -15
  10. package/lib/methods/AI.js.map +1 -1
  11. package/lib/methods/__tests__/plsReview.test.d.ts +1 -0
  12. package/lib/methods/__tests__/plsReview.test.js +428 -0
  13. package/lib/methods/__tests__/plsReview.test.js.map +1 -0
  14. package/lib/methods/__tests__/postponeReview.test.js +21 -0
  15. package/lib/methods/__tests__/postponeReview.test.js.map +1 -1
  16. package/lib/methods/__tests__/qcParallelReview.test.d.ts +1 -0
  17. package/lib/methods/__tests__/qcParallelReview.test.js +53 -0
  18. package/lib/methods/__tests__/qcParallelReview.test.js.map +1 -0
  19. package/lib/methods/__tests__/qcPreReview.test.d.ts +1 -0
  20. package/lib/methods/__tests__/qcPreReview.test.js +65 -0
  21. package/lib/methods/__tests__/qcPreReview.test.js.map +1 -0
  22. package/lib/methods/approval_engine.d.ts +4 -0
  23. package/lib/methods/approval_engine.js +388 -221
  24. package/lib/methods/approval_engine.js.map +1 -1
  25. package/lib/methods/consts.d.ts +35 -0
  26. package/lib/methods/consts.js +2 -0
  27. package/lib/methods/consts.js.map +1 -1
  28. package/lib/methods/material.js +13 -0
  29. package/lib/methods/material.js.map +1 -1
  30. package/lib/methods/pls.d.ts +31 -0
  31. package/lib/methods/pls.js +429 -130
  32. package/lib/methods/pls.js.map +1 -1
  33. package/lib/pages/__tests__/aiReviewCardStyles.test.d.ts +1 -0
  34. package/lib/pages/__tests__/aiReviewCardStyles.test.js +29 -0
  35. package/lib/pages/__tests__/aiReviewCardStyles.test.js.map +1 -0
  36. package/lib/pages/__tests__/aiReviewChineseColons.test.d.ts +1 -0
  37. package/lib/pages/__tests__/aiReviewChineseColons.test.js +132 -0
  38. package/lib/pages/__tests__/aiReviewChineseColons.test.js.map +1 -0
  39. package/lib/pages/__tests__/clientCssCacheVersion.test.d.ts +1 -0
  40. package/lib/pages/__tests__/clientCssCacheVersion.test.js +31 -0
  41. package/lib/pages/__tests__/clientCssCacheVersion.test.js.map +1 -0
  42. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.d.ts +1 -0
  43. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js +51 -0
  44. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js.map +1 -0
  45. package/lib/pages/__tests__/plsReviewCardStyles.test.d.ts +1 -0
  46. package/lib/pages/__tests__/plsReviewCardStyles.test.js +98 -0
  47. package/lib/pages/__tests__/plsReviewCardStyles.test.js.map +1 -0
  48. package/lib/pages/__tests__/plsReviewPage.test.d.ts +1 -0
  49. package/lib/pages/__tests__/plsReviewPage.test.js +249 -0
  50. package/lib/pages/__tests__/plsReviewPage.test.js.map +1 -0
  51. package/main/default/applications/pepsico_content_setting.app.yml +4 -0
  52. package/main/default/client/pepsico_content.client.js +8 -3
  53. package/main/default/objects/ai_process_detail/ai_process_detail.object.yml +1 -0
  54. package/main/default/objects/ai_process_detail/fields/pls_extracted_data.field.yml +9 -0
  55. package/main/default/objects/ai_process_detail/fields/pls_file_ids.field.yml +9 -0
  56. package/main/default/objects/ai_process_detail/fields/pls_product_name_matched.field.yml +9 -0
  57. package/main/default/objects/ai_process_detail/fields/pls_rule_unique_matched.field.yml +9 -0
  58. package/main/default/objects/pepesio_ch__c/fields/company_id.field.yml +14 -0
  59. package/main/default/objects/pepesio_ch__c/fields/company_ids.field.yml +16 -0
  60. package/main/default/objects/pepesio_ch__c/fields/created.field.yml +10 -0
  61. package/main/default/objects/pepesio_ch__c/fields/created_by.field.yml +9 -0
  62. package/main/default/objects/pepesio_ch__c/fields/file_name.field.yml +8 -0
  63. package/main/default/objects/pepesio_ch__c/fields/instance_state.field.yml +25 -0
  64. package/main/default/objects/pepesio_ch__c/fields/locked.field.yml +12 -0
  65. package/main/default/objects/pepesio_ch__c/fields/material_type.field.yml +10 -0
  66. package/main/default/objects/pepesio_ch__c/fields/media_type.field.yml +13 -0
  67. package/main/default/objects/pepesio_ch__c/fields/modified.field.yml +10 -0
  68. package/main/default/objects/pepesio_ch__c/fields/modified_by.field.yml +9 -0
  69. package/main/default/objects/pepesio_ch__c/fields/name.field.yml +11 -0
  70. package/main/default/objects/pepesio_ch__c/fields/owner.field.yml +12 -0
  71. package/main/default/objects/pepesio_ch__c/fields/product.field.yml +10 -0
  72. package/main/default/objects/pepesio_ch__c/fields/time.field.yml +8 -0
  73. package/main/default/objects/pepesio_ch__c/fields/type.field.yml +22 -0
  74. package/main/default/objects/pepesio_ch__c/listviews/all.listview.yml +21 -0
  75. package/main/default/objects/pepesio_ch__c/listviews/recent.listview.yml +11 -0
  76. package/main/default/objects/pepesio_ch__c/pepesio_ch__c.object.yml +31 -0
  77. package/main/default/objects/pepesio_ch__c/permissions/admin.permission.yml +9 -0
  78. package/main/default/objects/pepesio_ch__c/permissions/user.permission.yml +9 -0
  79. package/main/default/objects/pepsico_ai_review/buttons/pepsico_adopt.button.yml +3 -3
  80. package/main/default/objects/pepsico_ai_review/fields/is_active.field.yml +7 -0
  81. package/main/default/objects/pepsico_ai_review/fields/pepsico_material_approval.field.yml +7 -0
  82. package/main/default/objects/pepsico_ai_review/fields/pls_file.field.yml +7 -0
  83. package/main/default/objects/pepsico_ai_review/fields/review_type.field.yml +12 -0
  84. package/main/default/objects/pepsico_approval_process/fields/type.field.yml +5 -1
  85. package/main/default/objects/pepsico_km_pls/fields/allergen_statement.field.yml +9 -0
  86. package/main/default/objects/pepsico_km_pls/fields/ingredient_list.field.yml +9 -0
  87. package/main/default/objects/pepsico_km_pls/listviews/all.listview.yml +6 -0
  88. package/main/default/objects/pepsico_km_pls_file/listviews/lookup.listview.yml +19 -0
  89. package/main/default/objects/pepsico_km_pls_file/permissions/user.permission.yml +2 -2
  90. package/main/default/objects/pepsico_material/fields/pre_qc_approval_status.field.yml +16 -0
  91. package/main/default/objects/pepsico_material/fields/qc_approval_status.field.yml +16 -0
  92. package/main/default/objects/pepsico_material/fields/qc_bypass_reason.field.yml +11 -0
  93. package/main/default/objects/pepsico_material/fields/qc_bypassed.field.yml +12 -0
  94. package/main/default/objects/pepsico_material/fields/qc_bypassed_at.field.yml +11 -0
  95. package/main/default/objects/pepsico_material/fields/qc_bypassed_by.field.yml +12 -0
  96. package/main/default/objects/pepsico_material/listviews/all.listview.yml +2 -0
  97. package/main/default/objects/pepsico_material_approval/buttons/pepsico_modify_pls.button.yml +70 -0
  98. package/main/default/objects/pepsico_material_approval/buttons/pepsico_postpone_review.button.yml +62 -37
  99. package/main/default/objects/pepsico_material_approval/buttons/pre_review_approve.button.yml +1 -1
  100. package/main/default/objects/pepsico_material_approval/buttons/pre_review_reject.button.yml +1 -1
  101. package/main/default/objects/pepsico_material_approval/fields/approved_flows.field.yml +2 -2
  102. package/main/default/objects/pepsico_material_approval/fields/assistance.field.yml +1 -1
  103. package/main/default/objects/pepsico_material_approval/fields/ca_assistance.field.yml +1 -1
  104. package/main/default/objects/pepsico_material_approval/fields/classification.field.yml +15 -0
  105. package/main/default/objects/pepsico_material_approval/fields/ec_check_food_name.field.yml +18 -0
  106. package/main/default/objects/pepsico_material_approval/fields/ec_check_ingredients.field.yml +18 -0
  107. package/main/default/objects/pepsico_material_approval/fields/ec_check_net_content.field.yml +18 -0
  108. package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_address.field.yml +18 -0
  109. package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_name.field.yml +18 -0
  110. package/main/default/objects/pepsico_material_approval/fields/ec_check_shelf_life.field.yml +18 -0
  111. package/main/default/objects/pepsico_material_approval/fields/ec_check_standard_code.field.yml +18 -0
  112. package/main/default/objects/pepsico_material_approval/fields/ec_check_storage_condition.field.yml +18 -0
  113. package/main/default/objects/pepsico_material_approval/fields/ec_has_detail_page.field.yml +18 -0
  114. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.field.yml +5 -0
  115. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_address.field.yml +7 -0
  116. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_name.field.yml +7 -0
  117. package/main/default/objects/pepsico_material_approval/fields/ec_producers.field.yml +16 -0
  118. package/main/default/objects/pepsico_material_approval/fields/ec_qc_production_email.field.yml +16 -0
  119. package/main/default/objects/pepsico_material_approval/fields/ec_related_approval.field.yml +9 -0
  120. package/main/default/objects/pepsico_material_approval/fields/form_version.field.yml +10 -0
  121. package/main/default/objects/pepsico_material_approval/fields/handler_preca.field.yml +1 -1
  122. package/main/default/objects/pepsico_material_approval/fields/handler_preguding.field.yml +1 -1
  123. package/main/default/objects/pepsico_material_approval/fields/handler_prens.field.yml +1 -1
  124. package/main/default/objects/pepsico_material_approval/fields/handler_preqc.field.yml +22 -0
  125. package/main/default/objects/pepsico_material_approval/fields/handler_presra.field.yml +1 -1
  126. package/main/default/objects/pepsico_material_approval/fields/handler_qc.field.yml +20 -0
  127. package/main/default/objects/pepsico_material_approval/fields/has_nutrition_table.field.yml +18 -0
  128. package/main/default/objects/pepsico_material_approval/fields/legal_assistance.field.yml +1 -1
  129. package/main/default/objects/pepsico_material_approval/fields/ns_assistance.field.yml +1 -1
  130. package/main/default/objects/pepsico_material_approval/fields/pls_file.field.yml +2 -2
  131. package/main/default/objects/pepsico_material_approval/fields/pls_km_files.field.yml +28 -0
  132. package/main/default/objects/pepsico_material_approval/fields/pls_upload_files.field.yml +21 -0
  133. package/main/default/objects/pepsico_material_approval/fields/pre_ca_reviewer.field.yml +1 -1
  134. package/main/default/objects/pepsico_material_approval/fields/pre_ns_reviewer.field.yml +1 -1
  135. package/main/default/objects/pepsico_material_approval/fields/pre_qc_approval_status.field.yml +17 -0
  136. package/main/default/objects/pepsico_material_approval/fields/pre_qc_materials_quantity.field.yml +21 -0
  137. package/main/default/objects/pepsico_material_approval/fields/pre_qc_reviewer.field.yml +19 -0
  138. package/main/default/objects/pepsico_material_approval/fields/pre_reviewer.field.yml +1 -1
  139. package/main/default/objects/pepsico_material_approval/fields/pre_sra_reviewer.field.yml +1 -1
  140. package/main/default/objects/pepsico_material_approval/fields/product.field.yml +15 -0
  141. package/main/default/objects/pepsico_material_approval/fields/qc_approval_status.field.yml +18 -0
  142. package/main/default/objects/pepsico_material_approval/fields/qc_assistance.field.yml +22 -0
  143. package/main/default/objects/pepsico_material_approval/fields/qc_bypass_reason.field.yml +8 -0
  144. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed.field.yml +12 -0
  145. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_at.field.yml +8 -0
  146. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_by.field.yml +8 -0
  147. package/main/default/objects/pepsico_material_approval/fields/qc_materials_quantity.field.yml +21 -0
  148. package/main/default/objects/pepsico_material_approval/fields/qc_reviewer.field.yml +22 -0
  149. package/main/default/objects/pepsico_material_approval/fields/sra_assistance.field.yml +1 -1
  150. package/main/default/objects/pepsico_material_approval/listviews/all.listview.yml +2 -0
  151. package/main/default/objects/pepsico_material_approval/pepsico_material_approval.object.yml +4 -0
  152. package/main/default/objects/pepsico_pls_change_log/fields/after_pls_files.field.yml +9 -0
  153. package/main/default/objects/pepsico_pls_change_log/fields/after_pls_names.field.yml +7 -0
  154. package/main/default/objects/pepsico_pls_change_log/fields/approval.field.yml +7 -0
  155. package/main/default/objects/pepsico_pls_change_log/fields/approval_name.field.yml +6 -0
  156. package/main/default/objects/pepsico_pls_change_log/fields/before_pls_files.field.yml +9 -0
  157. package/main/default/objects/pepsico_pls_change_log/fields/before_pls_names.field.yml +7 -0
  158. package/main/default/objects/pepsico_pls_change_log/fields/material.field.yml +8 -0
  159. package/main/default/objects/pepsico_pls_change_log/fields/operator.field.yml +7 -0
  160. package/main/default/objects/pepsico_pls_change_log/fields/scene.field.yml +13 -0
  161. package/main/default/objects/pepsico_pls_change_log/fields/source.field.yml +14 -0
  162. package/main/default/objects/pepsico_pls_change_log/fields/space.field.yml +6 -0
  163. package/main/default/objects/pepsico_pls_change_log/listviews/all.listview.yml +25 -0
  164. package/main/default/objects/pepsico_pls_change_log/pepsico_pls_change_log.object.yml +16 -0
  165. package/main/default/objects/pepsico_pls_change_log/permissions/admin.permission.yml +15 -0
  166. package/main/default/objects/pepsico_pls_change_log/permissions/user.permission.yml +14 -0
  167. package/main/default/objects/pepsico_review_postpone/fields/department_type.field.yml +4 -0
  168. package/main/default/objects/pepsico_reviewer/fields/pre_qc_reviewer.field.yml +10 -0
  169. package/main/default/objects/pepsico_reviewer/fields/qc_assistance.field.yml +14 -0
  170. package/main/default/objects/pepsico_reviewer/fields/qc_reviewer.field.yml +12 -0
  171. package/main/default/objects/pepsico_reviewer/listviews/all.listview.yml +4 -0
  172. package/main/default/pages/pepsico_content_review_detail.page.amis.json +19 -1
  173. package/main/default/pages/pepsico_material_detail.page.amis.json +623 -41
  174. package/main/default/pages/pepsico_material_detail_mobile.page.amis.json +307 -3
  175. package/main/default/tabs/object_pepsico_pls_change_log.tab.yml +14 -0
  176. package/main/default/triggers/pepsico_material_approval_change.trigger.yml +3 -0
  177. package/package.json +1 -1
  178. package/public/content-review/amis.css +338 -8
@@ -1,48 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.callExtractPLSRules = exports.setPLSFileActive = exports.batchCreatePLSFiles = exports.resetPLSFileAIExtract = exports.backfillPLSFileTitles = exports.scanPLSFiles = void 0;
3
+ exports.getPLSReviewGroups = exports.getActivePLSOptions = exports.replaceApprovalPLSSource = exports.invalidatePLSReviews = exports.isApprovalReviewer = exports.callExtractPLSRulesPriority = exports.callExtractPLSRules = exports.writeSystemLog = exports.logPLSChange = exports.setPLSFileActive = exports.createApplicationPLSFiles = exports.batchCreatePLSFiles = exports.resetPLSFileAIExtract = exports.backfillPLSFileTitles = exports.scanPLSFiles = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var _ = require('lodash');
6
6
  var axios = require('axios');
7
7
  var AI_HOST = process.env.PEPSICO_AI_HOST;
8
8
  var AI_API_KEY = process.env.PEPSICO_AI_API_KEY;
9
+ var PLS_REVIEW_OBJECT = 'pepsico_ai_review';
10
+ var isNotExplicitlyInactive = function (record) { return !!record && record.is_active !== false; };
9
11
  var getPLSFileTitle = function (fileRecord) {
10
12
  var fileName = (fileRecord && fileRecord.original && fileRecord.original.name) || '';
11
13
  return fileName.replace(/\.pdf$/i, '');
12
14
  };
13
- var getProductName = function (ctx, productId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
14
- var products, pLists, pRecords_1, pNames_1;
15
- return tslib_1.__generator(this, function (_a) {
16
- switch (_a.label) {
17
- case 0:
18
- products = _.split(productId, '-');
19
- return [4, ctx.getObject('picklists').directFind({ filters: ["code", "=",
20
- "223321001114213"] })];
21
- case 1:
22
- pLists = _a.sent();
23
- if (!(products.length > 0 && pLists.length > 0)) return [3, 3];
24
- return [4, ctx.getObject('picklist_options').directFind({
25
- filters: [
26
- ["picklist", "=", pLists[0]._id],
27
- ["value", "in", products]
28
- ]
29
- })];
30
- case 2:
31
- pRecords_1 = _a.sent();
32
- pNames_1 = [];
33
- _.each(products, function (pId) {
34
- var pRecord = _.find(pRecords_1, { value: pId });
35
- if (pRecord) {
36
- pNames_1.push(pRecord.name);
37
- }
38
- });
39
- return [2, _.join(pNames_1, '-')];
40
- case 3: return [2, ''];
41
- }
42
- });
43
- }); };
44
15
  var scanPLSFiles = function (ctx) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
45
- var approvalId, approvals, addPLSCount, approvals_1, approvals_1_1, approval, productId, productName, materials, materials_1, materials_1_1, material, filters, files, files_1, files_1_1, file, e_1_1, e_2_1, _a, _b, fileId, plsFiles, e_3_1, error_1, e_4_1;
16
+ var approvalId, approvals, addPLSCount, approvals_1, approvals_1_1, approval, materials, materials_1, materials_1_1, material, filters, files, files_1, files_1_1, file, e_1_1, e_2_1, _a, _b, fileId, plsFiles, e_3_1, error_1, e_4_1;
46
17
  var e_4, _c, e_2, _d, e_1, _e, e_3, _f;
47
18
  return tslib_1.__generator(this, function (_g) {
48
19
  switch (_g.label) {
@@ -56,35 +27,31 @@ var scanPLSFiles = function (ctx) { return tslib_1.__awaiter(void 0, void 0, voi
56
27
  addPLSCount = 0;
57
28
  _g.label = 2;
58
29
  case 2:
59
- _g.trys.push([2, 36, 37, 38]);
30
+ _g.trys.push([2, 35, 36, 37]);
60
31
  approvals_1 = tslib_1.__values(approvals), approvals_1_1 = approvals_1.next();
61
32
  _g.label = 3;
62
33
  case 3:
63
- if (!!approvals_1_1.done) return [3, 35];
34
+ if (!!approvals_1_1.done) return [3, 34];
64
35
  approval = approvals_1_1.value;
65
36
  _g.label = 4;
66
37
  case 4:
67
- _g.trys.push([4, 32, , 34]);
38
+ _g.trys.push([4, 31, , 33]);
68
39
  approvalId = approval._id;
69
- productId = approval.product;
70
- return [4, getProductName(ctx, productId)];
71
- case 5:
72
- productName = _g.sent();
73
40
  return [4, ctx.getObject('pepsico_material').directFind({
74
41
  filters: [
75
42
  ['pepsico_material_approval', '=', approvalId]
76
43
  ]
77
44
  })];
78
- case 6:
45
+ case 5:
79
46
  materials = _g.sent();
80
47
  console.error("[scan pls files]: approvalId", approvalId);
48
+ _g.label = 6;
49
+ case 6:
50
+ _g.trys.push([6, 18, 19, 20]);
51
+ materials_1 = (e_2 = void 0, tslib_1.__values(materials)), materials_1_1 = materials_1.next();
81
52
  _g.label = 7;
82
53
  case 7:
83
- _g.trys.push([7, 19, 20, 21]);
84
- materials_1 = (e_2 = void 0, tslib_1.__values(materials)), materials_1_1 = materials_1.next();
85
- _g.label = 8;
86
- case 8:
87
- if (!!materials_1_1.done) return [3, 18];
54
+ if (!!materials_1_1.done) return [3, 17];
88
55
  material = materials_1_1.value;
89
56
  filters = [
90
57
  ['metadata/record_id', '=', "objects:pepsico_material:".concat(material._id)],
@@ -96,132 +63,128 @@ var scanPLSFiles = function (ctx) { return tslib_1.__awaiter(void 0, void 0, voi
96
63
  return [4, ctx.getObject('cfs_files_filerecord').directFind({
97
64
  filters: filters
98
65
  })];
99
- case 9:
66
+ case 8:
100
67
  files = _g.sent();
101
68
  console.error("[scan pls files]: approvalId", approvalId, "material-".concat(material._id), 'files.length: ', files.length);
69
+ _g.label = 9;
70
+ case 9:
71
+ _g.trys.push([9, 14, 15, 16]);
72
+ files_1 = (e_1 = void 0, tslib_1.__values(files)), files_1_1 = files_1.next();
102
73
  _g.label = 10;
103
74
  case 10:
104
- _g.trys.push([10, 15, 16, 17]);
105
- files_1 = (e_1 = void 0, tslib_1.__values(files)), files_1_1 = files_1.next();
106
- _g.label = 11;
107
- case 11:
108
- if (!!files_1_1.done) return [3, 14];
75
+ if (!!files_1_1.done) return [3, 13];
109
76
  file = files_1_1.value;
110
77
  return [4, ctx.getObject('pepsico_km_pls_file').directInsert({
111
78
  name: getPLSFileTitle(file),
112
- brand: productName,
113
79
  ai_extract: false,
114
80
  pls_file: file._id,
115
81
  pepsico_material: material._id,
116
- product: productId,
117
82
  pepsico_material_approval: approvalId,
118
83
  space: approval.space,
119
84
  created: new Date(),
120
85
  modified: new Date()
121
86
  })];
122
- case 12:
87
+ case 11:
123
88
  _g.sent();
124
89
  addPLSCount++;
125
- _g.label = 13;
126
- case 13:
90
+ _g.label = 12;
91
+ case 12:
127
92
  files_1_1 = files_1.next();
128
- return [3, 11];
129
- case 14: return [3, 17];
130
- case 15:
93
+ return [3, 10];
94
+ case 13: return [3, 16];
95
+ case 14:
131
96
  e_1_1 = _g.sent();
132
97
  e_1 = { error: e_1_1 };
133
- return [3, 17];
134
- case 16:
98
+ return [3, 16];
99
+ case 15:
135
100
  try {
136
101
  if (files_1_1 && !files_1_1.done && (_e = files_1.return)) _e.call(files_1);
137
102
  }
138
103
  finally { if (e_1) throw e_1.error; }
139
104
  return [7];
140
- case 17:
105
+ case 16:
141
106
  materials_1_1 = materials_1.next();
142
- return [3, 8];
143
- case 18: return [3, 21];
144
- case 19:
107
+ return [3, 7];
108
+ case 17: return [3, 20];
109
+ case 18:
145
110
  e_2_1 = _g.sent();
146
111
  e_2 = { error: e_2_1 };
147
- return [3, 21];
148
- case 20:
112
+ return [3, 20];
113
+ case 19:
149
114
  try {
150
115
  if (materials_1_1 && !materials_1_1.done && (_d = materials_1.return)) _d.call(materials_1);
151
116
  }
152
117
  finally { if (e_2) throw e_2.error; }
153
118
  return [7];
119
+ case 20:
120
+ if (!(approval.pls_file && approval.pls_file.length > 0)) return [3, 29];
121
+ _g.label = 21;
154
122
  case 21:
155
- if (!(approval.pls_file && approval.pls_file.length > 0)) return [3, 30];
123
+ _g.trys.push([21, 27, 28, 29]);
124
+ _a = (e_3 = void 0, tslib_1.__values(approval.pls_file)), _b = _a.next();
156
125
  _g.label = 22;
157
126
  case 22:
158
- _g.trys.push([22, 28, 29, 30]);
159
- _a = (e_3 = void 0, tslib_1.__values(approval.pls_file)), _b = _a.next();
160
- _g.label = 23;
161
- case 23:
162
- if (!!_b.done) return [3, 27];
127
+ if (!!_b.done) return [3, 26];
163
128
  fileId = _b.value;
164
129
  return [4, ctx.getObject('cfs_files_filerecord').directFind({ filters: [['_id', '=', fileId]], fields: ['original'] })];
165
- case 24:
130
+ case 23:
166
131
  plsFiles = _g.sent();
167
132
  return [4, ctx.getObject('pepsico_km_pls_file').directInsert({
168
133
  name: getPLSFileTitle(plsFiles && plsFiles[0]),
169
- brand: productName,
170
134
  ai_extract: false,
171
135
  pls_file: fileId,
172
- product: productId,
173
136
  pepsico_material_approval: approvalId,
174
137
  space: approval.space,
175
138
  created_by: approval.created_by,
176
139
  created: new Date(),
177
140
  modified: new Date()
178
141
  })];
179
- case 25:
142
+ case 24:
180
143
  _g.sent();
181
- _g.label = 26;
182
- case 26:
144
+ _g.label = 25;
145
+ case 25:
183
146
  _b = _a.next();
184
- return [3, 23];
185
- case 27: return [3, 30];
186
- case 28:
147
+ return [3, 22];
148
+ case 26: return [3, 29];
149
+ case 27:
187
150
  e_3_1 = _g.sent();
188
151
  e_3 = { error: e_3_1 };
189
- return [3, 30];
190
- case 29:
152
+ return [3, 29];
153
+ case 28:
191
154
  try {
192
155
  if (_b && !_b.done && (_f = _a.return)) _f.call(_a);
193
156
  }
194
157
  finally { if (e_3) throw e_3.error; }
195
158
  return [7];
196
- case 30: return [4, ctx.getObject('pepsico_material_approval').directUpdate(approvalId, {
159
+ case 29: return [4, ctx.getObject('pepsico_material_approval').directUpdate(approvalId, {
197
160
  scanned_pls: true,
198
161
  scanned_pls_date: new Date()
199
162
  })];
200
- case 31:
163
+ case 30:
201
164
  _g.sent();
202
- return [3, 34];
203
- case 32:
165
+ return [3, 33];
166
+ case 31:
204
167
  error_1 = _g.sent();
205
168
  console.error("[scan pls files]-".concat(approvalId), error_1, new Date());
206
169
  return [4, ctx.logger.error("[scan pls files]-".concat(approvalId), error_1.message)];
207
- case 33:
170
+ case 32:
208
171
  _g.sent();
209
- return [3, 34];
210
- case 34:
172
+ return [3, 33];
173
+ case 33:
211
174
  approvals_1_1 = approvals_1.next();
212
175
  return [3, 3];
213
- case 35: return [3, 38];
214
- case 36:
176
+ case 34: return [3, 37];
177
+ case 35:
215
178
  e_4_1 = _g.sent();
216
179
  e_4 = { error: e_4_1 };
217
- return [3, 38];
218
- case 37:
180
+ return [3, 37];
181
+ case 36:
219
182
  try {
220
183
  if (approvals_1_1 && !approvals_1_1.done && (_c = approvals_1.return)) _c.call(approvals_1);
221
184
  }
222
185
  finally { if (e_4) throw e_4.error; }
223
186
  return [7];
224
- case 38: return [2, addPLSCount];
187
+ case 37: return [2, addPLSCount];
225
188
  }
226
189
  });
227
190
  }); };
@@ -327,7 +290,7 @@ var resetPLSFileAIExtract = function (ctx) { return tslib_1.__awaiter(void 0, vo
327
290
  }); };
328
291
  exports.resetPLSFileAIExtract = resetPLSFileAIExtract;
329
292
  var batchCreatePLSFiles = function (ctx, fileIds) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
330
- var user, space, ids, objFile, objPls, created, skipped, ids_1, ids_1_1, fileId, files, fileRecord, fileName, fileType, isPdf, now, e_6_1;
293
+ var user, space, ids, objFile, objPls, records, skipped, ids_1, ids_1_1, fileId, files, fileRecord, fileName, fileType, isPdf, now, record, e_6_1;
331
294
  var e_6, _a;
332
295
  return tslib_1.__generator(this, function (_b) {
333
296
  switch (_b.label) {
@@ -339,11 +302,11 @@ var batchCreatePLSFiles = function (ctx, fileIds) { return tslib_1.__awaiter(voi
339
302
  }
340
303
  ids = _.uniq(_.compact(fileIds || []));
341
304
  if (ids.length === 0) {
342
- return [2, { created: 0, skipped: 0 }];
305
+ return [2, { created: 0, skipped: 0, records: [] }];
343
306
  }
344
307
  objFile = ctx.getObject('cfs_files_filerecord');
345
308
  objPls = ctx.getObject('pepsico_km_pls_file');
346
- created = 0;
309
+ records = [];
347
310
  skipped = [];
348
311
  _b.label = 1;
349
312
  case 1:
@@ -368,7 +331,6 @@ var batchCreatePLSFiles = function (ctx, fileIds) { return tslib_1.__awaiter(voi
368
331
  return [4, objPls.directInsert({
369
332
  name: fileName.replace(/\.pdf$/i, ''),
370
333
  ai_extract: false,
371
- is_active: false,
372
334
  pls_file: fileId,
373
335
  space: space,
374
336
  owner: user.userId,
@@ -378,8 +340,8 @@ var batchCreatePLSFiles = function (ctx, fileIds) { return tslib_1.__awaiter(voi
378
340
  modified_by: user.userId
379
341
  })];
380
342
  case 4:
381
- _b.sent();
382
- created++;
343
+ record = _b.sent();
344
+ records.push({ id: record._id, name: record.name || fileName.replace(/\.pdf$/i, '') });
383
345
  _b.label = 5;
384
346
  case 5:
385
347
  ids_1_1 = ids_1.next();
@@ -395,11 +357,57 @@ var batchCreatePLSFiles = function (ctx, fileIds) { return tslib_1.__awaiter(voi
395
357
  }
396
358
  finally { if (e_6) throw e_6.error; }
397
359
  return [7];
398
- case 9: return [2, { created: created, skipped: skipped.length }];
360
+ case 9: return [2, { created: records.length, skipped: skipped.length, records: records }];
399
361
  }
400
362
  });
401
363
  }); };
402
364
  exports.batchCreatePLSFiles = batchCreatePLSFiles;
365
+ var createApplicationPLSFiles = function (ctx, fileIds, approval) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
366
+ var result, _a, _b, record, e_7_1;
367
+ var e_7, _c;
368
+ return tslib_1.__generator(this, function (_d) {
369
+ switch (_d.label) {
370
+ case 0: return [4, (0, exports.batchCreatePLSFiles)(ctx, fileIds)];
371
+ case 1:
372
+ result = _d.sent();
373
+ _d.label = 2;
374
+ case 2:
375
+ _d.trys.push([2, 8, 9, 10]);
376
+ _a = tslib_1.__values(result.records), _b = _a.next();
377
+ _d.label = 3;
378
+ case 3:
379
+ if (!!_b.done) return [3, 7];
380
+ record = _b.value;
381
+ if (!approval) return [3, 5];
382
+ return [4, ctx.getObject('pepsico_km_pls_file').directUpdate(record.id, {
383
+ pepsico_material_approval: approval._id,
384
+ modified: new Date()
385
+ })];
386
+ case 4:
387
+ _d.sent();
388
+ _d.label = 5;
389
+ case 5:
390
+ (0, exports.callExtractPLSRulesPriority)(ctx, record.id).catch(function () { });
391
+ _d.label = 6;
392
+ case 6:
393
+ _b = _a.next();
394
+ return [3, 3];
395
+ case 7: return [3, 10];
396
+ case 8:
397
+ e_7_1 = _d.sent();
398
+ e_7 = { error: e_7_1 };
399
+ return [3, 10];
400
+ case 9:
401
+ try {
402
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
403
+ }
404
+ finally { if (e_7) throw e_7.error; }
405
+ return [7];
406
+ case 10: return [2, result];
407
+ }
408
+ });
409
+ }); };
410
+ exports.createApplicationPLSFiles = createApplicationPLSFiles;
403
411
  var setPLSFileActive = function (ctx, fileId, active) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
404
412
  var now, objPls, objRule, rules;
405
413
  return tslib_1.__generator(this, function (_a) {
@@ -430,30 +438,89 @@ var setPLSFileActive = function (ctx, fileId, active) { return tslib_1.__awaiter
430
438
  });
431
439
  }); };
432
440
  exports.setPLSFileActive = setPLSFileActive;
433
- var writeSystemLog = function (ctx, level, data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
434
- var e_7;
435
- return tslib_1.__generator(this, function (_a) {
436
- switch (_a.label) {
437
- case 0:
438
- _a.trys.push([0, 2, , 3]);
439
- return [4, ctx.getObject('logs').directInsert({
440
- name: 'PLS规则提取',
441
- level: level,
442
- data: JSON.stringify(data)
443
- })];
444
- case 1:
445
- _a.sent();
446
- return [3, 3];
447
- case 2:
448
- e_7 = _a.sent();
449
- console.error('[写系统日志失败]', e_7 && e_7.message);
450
- return [3, 3];
451
- case 3: return [2];
452
- }
441
+ var logPLSChange = function (ctx, _a) {
442
+ var approval = _a.approval, scene = _a.scene, _b = _a.materialId, materialId = _b === void 0 ? null : _b, _c = _a.beforeIds, beforeIds = _c === void 0 ? [] : _c, _d = _a.afterIds, afterIds = _d === void 0 ? [] : _d, _e = _a.source, source = _e === void 0 ? null : _e;
443
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
444
+ var beforeList, afterList, allIds, files, nameById_1, toNames, e_8;
445
+ return tslib_1.__generator(this, function (_f) {
446
+ switch (_f.label) {
447
+ case 0:
448
+ _f.trys.push([0, 3, , 6]);
449
+ beforeList = _.uniq(_.compact(beforeIds));
450
+ afterList = _.uniq(_.compact(afterIds));
451
+ if (beforeList.length === 0 && afterList.length === 0) {
452
+ return [2];
453
+ }
454
+ allIds = _.uniq(beforeList.concat(afterList));
455
+ return [4, ctx.getObject('pepsico_km_pls_file').directFind({
456
+ filters: [['_id', 'in', allIds]],
457
+ fields: ['_id', 'name']
458
+ })];
459
+ case 1:
460
+ files = _f.sent();
461
+ nameById_1 = _.keyBy(files, '_id');
462
+ toNames = function (ids) { return ids.map(function (id) { return (nameById_1[id] && nameById_1[id].name) || id; }).join('、'); };
463
+ return [4, ctx.getObject('pepsico_pls_change_log').directInsert({
464
+ approval: approval._id,
465
+ approval_name: approval.name,
466
+ material: materialId,
467
+ scene: scene,
468
+ source: source,
469
+ before_pls_files: beforeList,
470
+ before_pls_names: toNames(beforeList),
471
+ after_pls_files: afterList,
472
+ after_pls_names: toNames(afterList),
473
+ operator: ctx.meta && ctx.meta.user && ctx.meta.user.userId,
474
+ space: approval.space,
475
+ created: new Date(),
476
+ modified: new Date()
477
+ })];
478
+ case 2:
479
+ _f.sent();
480
+ return [3, 6];
481
+ case 3:
482
+ e_8 = _f.sent();
483
+ console.error('[写PLS变更日志失败]', e_8 && e_8.message);
484
+ if (!ctx.logger) return [3, 5];
485
+ return [4, ctx.logger.error('[写PLS变更日志失败]', e_8 && e_8.message)];
486
+ case 4:
487
+ _f.sent();
488
+ _f.label = 5;
489
+ case 5: return [3, 6];
490
+ case 6: return [2];
491
+ }
492
+ });
453
493
  });
454
- }); };
494
+ };
495
+ exports.logPLSChange = logPLSChange;
496
+ var writeSystemLog = function (ctx, level, data, name) {
497
+ if (name === void 0) { name = 'PLS规则提取'; }
498
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
499
+ var e_9;
500
+ return tslib_1.__generator(this, function (_a) {
501
+ switch (_a.label) {
502
+ case 0:
503
+ _a.trys.push([0, 2, , 3]);
504
+ return [4, ctx.getObject('logs').directInsert({
505
+ name: name,
506
+ level: level,
507
+ data: JSON.stringify(data)
508
+ })];
509
+ case 1:
510
+ _a.sent();
511
+ return [3, 3];
512
+ case 2:
513
+ e_9 = _a.sent();
514
+ console.error('[写系统日志失败]', e_9 && e_9.message);
515
+ return [3, 3];
516
+ case 3: return [2];
517
+ }
518
+ });
519
+ });
520
+ };
521
+ exports.writeSystemLog = writeSystemLog;
455
522
  var callExtractPLSRules = function (ctx, fileId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
456
- var userId, start, result, data, cost, e_8, error_3, cost;
523
+ var userId, start, result, data, cost, e_10, error_3, cost;
457
524
  return tslib_1.__generator(this, function (_a) {
458
525
  switch (_a.label) {
459
526
  case 0:
@@ -492,10 +559,10 @@ var callExtractPLSRules = function (ctx, fileId) { return tslib_1.__awaiter(void
492
559
  _a.sent();
493
560
  return [3, 7];
494
561
  case 6:
495
- e_8 = _a.sent();
496
- console.error("[\u8C03\u7528 execute-pls API] \u6807\u8BB0 extracting \u5931\u8D25-".concat(fileId), e_8 && e_8.message);
562
+ e_10 = _a.sent();
563
+ console.error("[\u8C03\u7528 execute-pls API] \u6807\u8BB0 extracting \u5931\u8D25-".concat(fileId), e_10 && e_10.message);
497
564
  return [3, 7];
498
- case 7: return [4, writeSystemLog(ctx, 'info', {
565
+ case 7: return [4, (0, exports.writeSystemLog)(ctx, 'info', {
499
566
  action: 'execute-pls',
500
567
  id: fileId,
501
568
  operator: userId,
@@ -514,7 +581,7 @@ var callExtractPLSRules = function (ctx, fileId) { return tslib_1.__awaiter(void
514
581
  return [4, ctx.logger.error("[\u8C03\u7528 execute-pls API]-".concat(fileId), error_3 && error_3.message)];
515
582
  case 10:
516
583
  _a.sent();
517
- return [4, writeSystemLog(ctx, 'error', {
584
+ return [4, (0, exports.writeSystemLog)(ctx, 'error', {
518
585
  action: 'execute-pls',
519
586
  id: fileId,
520
587
  operator: userId,
@@ -531,4 +598,236 @@ var callExtractPLSRules = function (ctx, fileId) { return tslib_1.__awaiter(void
531
598
  });
532
599
  }); };
533
600
  exports.callExtractPLSRules = callExtractPLSRules;
601
+ var callExtractPLSRulesPriority = function (ctx, fileId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
602
+ var userId, start, url, result, data, cost, error_4, cost;
603
+ return tslib_1.__generator(this, function (_a) {
604
+ switch (_a.label) {
605
+ case 0:
606
+ if (!fileId) {
607
+ throw new Error('缺少记录ID');
608
+ }
609
+ userId = ctx.meta && ctx.meta.user && ctx.meta.user.userId;
610
+ start = new Date().getTime();
611
+ url = "".concat(AI_HOST, "/execute-pls-priority");
612
+ _a.label = 1;
613
+ case 1:
614
+ _a.trys.push([1, 5, , 8]);
615
+ return [4, axios.post(url, { id: fileId }, {
616
+ headers: { 'Content-Type': 'application/json' }
617
+ })];
618
+ case 2:
619
+ result = _a.sent();
620
+ data = result.data;
621
+ cost = new Date().getTime() - start;
622
+ return [4, ctx.logger.info("[\u8C03\u7528 PLS\u4F18\u5148\u63D0\u53D6\u89C4\u5219 API]-".concat(fileId), data)];
623
+ case 3:
624
+ _a.sent();
625
+ return [4, (0, exports.writeSystemLog)(ctx, 'info', {
626
+ action: 'extract-pls-priority',
627
+ id: fileId,
628
+ operator: userId,
629
+ url: url,
630
+ status: 'success',
631
+ cost: cost,
632
+ response: data
633
+ })];
634
+ case 4:
635
+ _a.sent();
636
+ return [2, data];
637
+ case 5:
638
+ error_4 = _a.sent();
639
+ cost = new Date().getTime() - start;
640
+ return [4, ctx.logger.error("[\u8C03\u7528 PLS\u4F18\u5148\u63D0\u53D6\u89C4\u5219 API]-".concat(fileId), error_4 && error_4.message)];
641
+ case 6:
642
+ _a.sent();
643
+ return [4, (0, exports.writeSystemLog)(ctx, 'error', {
644
+ action: 'extract-pls-priority',
645
+ id: fileId,
646
+ operator: userId,
647
+ url: url,
648
+ status: 'fail',
649
+ cost: cost,
650
+ error: error_4 && error_4.message
651
+ })];
652
+ case 7:
653
+ _a.sent();
654
+ throw error_4;
655
+ case 8: return [2];
656
+ }
657
+ });
658
+ }); };
659
+ exports.callExtractPLSRulesPriority = callExtractPLSRulesPriority;
660
+ var getReviewerIds = function (approval) { return _.compact(_.flatten([
661
+ approval.reviewer,
662
+ approval.ns_reviewer,
663
+ approval.legal_reviewer,
664
+ approval.sra_reviewer,
665
+ approval.ca_reviewer,
666
+ approval.qc_reviewer,
667
+ approval.kids_reviewer,
668
+ approval.pre_reviewer,
669
+ approval.pre_ns_reviewer,
670
+ approval.pre_legal_reviewer,
671
+ approval.pre_sra_reviewer,
672
+ approval.pre_ca_reviewer,
673
+ approval.pre_qc_reviewer
674
+ ])); };
675
+ var isApprovalReviewer = function (approval, userId) {
676
+ return !!userId && _.includes(getReviewerIds(approval), userId);
677
+ };
678
+ exports.isApprovalReviewer = isApprovalReviewer;
679
+ var invalidatePLSReviews = function (ctx, approvalId, plsFileId, materialId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
680
+ var filters, candidates, records;
681
+ return tslib_1.__generator(this, function (_a) {
682
+ switch (_a.label) {
683
+ case 0:
684
+ filters = [
685
+ ['pepsico_material_approval', '=', approvalId],
686
+ ['review_type', '=', 'pls']
687
+ ];
688
+ if (plsFileId) {
689
+ filters.push(['pls_file', '=', plsFileId]);
690
+ }
691
+ if (materialId) {
692
+ filters.push(['pepsico_material', '=', materialId]);
693
+ }
694
+ return [4, ctx.getObject(PLS_REVIEW_OBJECT).directFind({
695
+ filters: filters,
696
+ fields: ['_id', 'is_active']
697
+ })];
698
+ case 1:
699
+ candidates = _a.sent();
700
+ records = candidates.filter(isNotExplicitlyInactive);
701
+ if (!(records.length > 0)) return [3, 3];
702
+ return [4, ctx.getObject(PLS_REVIEW_OBJECT).directUpdateMany(['_id', 'in', records.map(function (item) { return item._id; })], { is_active: false, modified: new Date() })];
703
+ case 2:
704
+ _a.sent();
705
+ _a.label = 3;
706
+ case 3: return [2, records.length];
707
+ }
708
+ });
709
+ }); };
710
+ exports.invalidatePLSReviews = invalidatePLSReviews;
711
+ var replaceApprovalPLSSource = function (ctx, approvalId, oldPlsFileId, newPlsFileId, materialId, source) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
712
+ var userId, approval, currentIds, nextIds, invalidated;
713
+ return tslib_1.__generator(this, function (_a) {
714
+ switch (_a.label) {
715
+ case 0:
716
+ userId = ctx.meta && ctx.meta.user && ctx.meta.user.userId;
717
+ return [4, ctx.getObject('pepsico_material_approval').findOne(approvalId)];
718
+ case 1:
719
+ approval = _a.sent();
720
+ if (!approval) {
721
+ throw new Error('审批单不存在');
722
+ }
723
+ if (!(0, exports.isApprovalReviewer)(approval, userId)) {
724
+ throw new Error('只有审核人可以应用新的PLS规则');
725
+ }
726
+ currentIds = _.uniq(_.compact(approval.pls_km_files || []));
727
+ if (!_.includes(currentIds, oldPlsFileId)) {
728
+ throw new Error('当前PLS来源未关联到审批单');
729
+ }
730
+ nextIds = _.uniq(currentIds.map(function (id) { return id === oldPlsFileId ? newPlsFileId : id; }));
731
+ return [4, ctx.getObject('pepsico_material_approval').directUpdate(approvalId, {
732
+ pls_km_files: nextIds,
733
+ modified: new Date(),
734
+ modified_by: userId
735
+ })];
736
+ case 2:
737
+ _a.sent();
738
+ return [4, (0, exports.invalidatePLSReviews)(ctx, approvalId, oldPlsFileId, materialId)];
739
+ case 3:
740
+ invalidated = _a.sent();
741
+ return [4, (0, exports.logPLSChange)(ctx, {
742
+ approval: approval,
743
+ scene: 'reviewer_change',
744
+ materialId: materialId,
745
+ beforeIds: [oldPlsFileId],
746
+ afterIds: [newPlsFileId],
747
+ source: source
748
+ })];
749
+ case 4:
750
+ _a.sent();
751
+ return [2, { approvalId: approvalId, materialId: materialId, oldPlsFileId: oldPlsFileId, newPlsFileId: newPlsFileId, pls_km_files: nextIds, invalidated: invalidated }];
752
+ }
753
+ });
754
+ }); };
755
+ exports.replaceApprovalPLSSource = replaceApprovalPLSSource;
756
+ var getActivePLSOptions = function (ctx) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
757
+ var records;
758
+ return tslib_1.__generator(this, function (_a) {
759
+ switch (_a.label) {
760
+ case 0: return [4, ctx.getObject('pepsico_km_pls_file').find({
761
+ fields: ['_id', 'name', 'brand', 'version', 'is_active'],
762
+ sort: 'modified desc',
763
+ top: 500
764
+ })];
765
+ case 1:
766
+ records = _a.sent();
767
+ return [2, records.filter(isNotExplicitlyInactive).map(function (record) { return ({
768
+ label: _.compact([record.name, record.brand, record.version]).join(' · '),
769
+ value: record._id
770
+ }); })];
771
+ }
772
+ });
773
+ }); };
774
+ exports.getActivePLSOptions = getActivePLSOptions;
775
+ var getPLSReviewGroups = function (ctx, materialId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
776
+ var material, approval, reviewCandidates, reviews, plsIds, plsFiles, _a, plsById, canManage, groups;
777
+ return tslib_1.__generator(this, function (_b) {
778
+ switch (_b.label) {
779
+ case 0: return [4, ctx.getObject('pepsico_material').findOne(materialId)];
780
+ case 1:
781
+ material = _b.sent();
782
+ if (!material) {
783
+ throw new Error('素材不存在');
784
+ }
785
+ return [4, ctx.getObject('pepsico_material_approval').findOne(material.pepsico_material_approval)];
786
+ case 2:
787
+ approval = _b.sent();
788
+ return [4, ctx.getObject(PLS_REVIEW_OBJECT).find({
789
+ filters: [
790
+ ['pepsico_material', '=', materialId],
791
+ ['review_type', '=', 'pls']
792
+ ],
793
+ fields: ['_id', 'name', 'rule_category', 'reason', 'rule_content', 'evidence_image', 'evidence_image_file', 'is_adoption', 'pls_file', 'is_active'],
794
+ sort: 'created desc',
795
+ top: 500
796
+ })];
797
+ case 3:
798
+ reviewCandidates = _b.sent();
799
+ reviews = reviewCandidates.filter(isNotExplicitlyInactive);
800
+ plsIds = _.uniq(_.compact(reviews.map(function (review) { return review.pls_file; })));
801
+ if (!(plsIds.length > 0)) return [3, 5];
802
+ return [4, ctx.getObject('pepsico_km_pls_file').directFind({
803
+ filters: [['_id', 'in', plsIds]],
804
+ fields: ['_id', 'name', 'brand', 'version', 'is_active']
805
+ })];
806
+ case 4:
807
+ _a = _b.sent();
808
+ return [3, 6];
809
+ case 5:
810
+ _a = [];
811
+ _b.label = 6;
812
+ case 6:
813
+ plsFiles = _a;
814
+ plsById = _.keyBy(plsFiles, '_id');
815
+ canManage = (0, exports.isApprovalReviewer)(approval, ctx.meta && ctx.meta.user && ctx.meta.user.userId);
816
+ groups = _.map(_.groupBy(reviews, 'pls_file'), function (items, plsFileId) { return ({
817
+ plsFileId: plsFileId,
818
+ plsName: (plsById[plsFileId] && plsById[plsFileId].name) || 'PLS文件',
819
+ plsActive: isNotExplicitlyInactive(plsById[plsFileId]),
820
+ approvalId: approval._id,
821
+ materialId: materialId,
822
+ canManage: canManage,
823
+ reviews: items
824
+ }); });
825
+ return [2, {
826
+ groups: groups,
827
+ canManage: canManage
828
+ }];
829
+ }
830
+ });
831
+ }); };
832
+ exports.getPLSReviewGroups = getPLSReviewGroups;
534
833
  //# sourceMappingURL=pls.js.map