@steedos-labs/content-compliance 1.0.6 → 1.0.8

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 (39) hide show
  1. package/dist/index.js +1 -1
  2. package/lib/methods/AI.d.ts +1 -0
  3. package/lib/methods/AI.js +58 -44
  4. package/lib/methods/AI.js.map +1 -1
  5. package/lib/methods/__tests__/aiReviewLog.test.d.ts +1 -0
  6. package/lib/methods/__tests__/aiReviewLog.test.js +101 -0
  7. package/lib/methods/__tests__/aiReviewLog.test.js.map +1 -0
  8. package/lib/methods/__tests__/contentHubMaterialGroup.test.js +46 -0
  9. package/lib/methods/__tests__/contentHubMaterialGroup.test.js.map +1 -1
  10. package/lib/methods/__tests__/contentHubPush.test.js +63 -5
  11. package/lib/methods/__tests__/contentHubPush.test.js.map +1 -1
  12. package/lib/methods/content_hub.js +26 -37
  13. package/lib/methods/content_hub.js.map +1 -1
  14. package/lib/methods/content_hub_material_group.d.ts +2 -0
  15. package/lib/methods/content_hub_material_group.js +44 -14
  16. package/lib/methods/content_hub_material_group.js.map +1 -1
  17. package/lib/methods/content_hub_uploader.d.ts +7 -2
  18. package/lib/methods/content_hub_uploader.js +20 -12
  19. package/lib/methods/content_hub_uploader.js.map +1 -1
  20. package/main/default/applications/pepsico_content_setting.app.yml +115 -83
  21. package/main/default/objects/pepesio_ch__c/pepesio_ch__c.object.yml +1 -1
  22. package/main/default/objects/pepsico_ch_material_group_rule/pepsico_ch_material_group_rule.object.yml +1 -1
  23. package/main/default/objects/pepsico_ch_sync_rule/pepsico_ch_sync_rule.object.yml +1 -1
  24. package/main/default/objects/pepsico_ch_tag_sync_log/pepsico_ch_tag_sync_log.object.yml +1 -1
  25. package/main/default/objects/pepsico_ch_tag_sync_request/pepsico_ch_tag_sync_request.object.yml +1 -1
  26. package/main/default/objects/pepsico_material_approval/fields/ch_sync_enabled.field.yml +1 -1
  27. package/main/default/objects/pepsico_material_approval/fields/ec_related_approval.field.yml +3 -2
  28. package/main/default/objects/pepsico_material_approval/fields/material_editable.field.yml +2 -2
  29. package/main/default/objects/pepsico_material_approval/fields/portrait_auth_doc.field.yml +2 -2
  30. package/main/default/objects/pepsico_material_approval/fields/pre_legal_reviewer.field.yml +1 -1
  31. package/main/default/tabs/object_pepesio_ch.tab.yml +1 -1
  32. package/main/default/tabs/object_pepsico_approval_cc_log.tab.yml +8 -0
  33. package/main/default/tabs/object_pepsico_ch_material_group_rule.tab.yml +1 -1
  34. package/main/default/tabs/object_pepsico_ch_sync_rule.tab.yml +1 -1
  35. package/main/default/tabs/object_pepsico_ch_tag_sync_log.tab.yml +8 -0
  36. package/main/default/tabs/object_pepsico_ch_tag_sync_request.tab.yml +8 -0
  37. package/main/default/tabs/object_pepsico_material_spot_check_record.tab.yml +8 -0
  38. package/package.json +1 -1
  39. package/public/content-review/amis.css +27 -0
@@ -1,3 +1,4 @@
1
+ export declare const AI_REVIEW_LOG_NAME = "AI\u5BA1\u6838\u8C03\u7528";
1
2
  export declare const callAIReview: (ctx: any, approvalId: any) => Promise<any>;
2
3
  export declare const callChangePLSReview: (ctx: any, { approvalId, materialId, plsFileId, newPlsFileIds }: {
3
4
  approvalId: any;
package/lib/methods/AI.js CHANGED
@@ -1,22 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.callChangePLSReview = exports.callAIReview = void 0;
3
+ exports.callChangePLSReview = exports.callAIReview = exports.AI_REVIEW_LOG_NAME = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var axios_1 = require("axios");
6
6
  var pls_1 = require("./pls");
7
7
  var host = process.env.PEPSICO_AI_HOST;
8
8
  var apiKey = process.env.PEPSICO_AI_API_KEY;
9
- var callAIReview = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
10
- var url, userId, start, result, data, cost, error_1, cost;
9
+ exports.AI_REVIEW_LOG_NAME = 'AI审核调用';
10
+ var formVersionTag = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
11
+ var records, e_1;
11
12
  return tslib_1.__generator(this, function (_a) {
12
13
  switch (_a.label) {
14
+ case 0:
15
+ _a.trys.push([0, 2, , 3]);
16
+ return [4, ctx.getObject('pepsico_material_approval').directFind({ filters: [['_id', '=', approvalId]], fields: ['form_version'], top: 1 })];
17
+ case 1:
18
+ records = _a.sent();
19
+ return [2, records && records.length > 0 ? "-".concat(records[0].form_version || '旧版') : ''];
20
+ case 2:
21
+ e_1 = _a.sent();
22
+ return [2, ''];
23
+ case 3: return [2];
24
+ }
25
+ });
26
+ }); };
27
+ var callAIReview = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
28
+ var url, logName, _a, _b, userId, start, result, data, cost, error_1, cost;
29
+ return tslib_1.__generator(this, function (_c) {
30
+ switch (_c.label) {
13
31
  case 0:
14
32
  url = "".concat(host, "/api/v1/review");
33
+ _b = (_a = "".concat(exports.AI_REVIEW_LOG_NAME)).concat;
34
+ return [4, formVersionTag(ctx, approvalId)];
35
+ case 1:
36
+ logName = _b.apply(_a, [_c.sent(), "-"]).concat(approvalId);
15
37
  userId = ctx.meta && ctx.meta.user && ctx.meta.user.userId;
16
38
  start = new Date().getTime();
17
- _a.label = 1;
18
- case 1:
19
- _a.trys.push([1, 5, , 8]);
39
+ _c.label = 2;
40
+ case 2:
41
+ _c.trys.push([2, 5, , 7]);
20
42
  console.log('[调用 AI review API] 开始:', url, {
21
43
  approval_id: approvalId
22
44
  }, new Date());
@@ -27,14 +49,11 @@ var callAIReview = function (ctx, approvalId) { return tslib_1.__awaiter(void 0,
27
49
  'X-API-Key': apiKey
28
50
  }
29
51
  })];
30
- case 2:
31
- result = _a.sent();
52
+ case 3:
53
+ result = _c.sent();
32
54
  data = result.data;
33
55
  cost = new Date().getTime() - start;
34
56
  console.log("[\u8C03\u7528 AI review API]-".concat(approvalId), data, "\u8017\u65F6:", cost);
35
- return [4, ctx.logger.info("[\u8C03\u7528 AI review API]-".concat(approvalId), data)];
36
- case 3:
37
- _a.sent();
38
57
  return [4, (0, pls_1.writeSystemLog)(ctx, 'info', {
39
58
  action: 'ai-review',
40
59
  id: approvalId,
@@ -43,17 +62,14 @@ var callAIReview = function (ctx, approvalId) { return tslib_1.__awaiter(void 0,
43
62
  status: 'success',
44
63
  cost: cost,
45
64
  response: data
46
- }, 'AI审核调用')];
65
+ }, logName)];
47
66
  case 4:
48
- _a.sent();
67
+ _c.sent();
49
68
  return [2, data];
50
69
  case 5:
51
- error_1 = _a.sent();
70
+ error_1 = _c.sent();
52
71
  cost = new Date().getTime() - start;
53
72
  console.error("[\u8C03\u7528 AI review API]-".concat(approvalId), error_1 && error_1.message, new Date());
54
- return [4, ctx.logger.error("[\u8C03\u7528 AI review API]-".concat(approvalId), error_1 && error_1.message)];
55
- case 6:
56
- _a.sent();
57
73
  return [4, (0, pls_1.writeSystemLog)(ctx, 'error', {
58
74
  action: 'ai-review',
59
75
  id: approvalId,
@@ -62,11 +78,11 @@ var callAIReview = function (ctx, approvalId) { return tslib_1.__awaiter(void 0,
62
78
  status: 'fail',
63
79
  cost: cost,
64
80
  error: error_1 && error_1.message
65
- }, 'AI审核调用')];
66
- case 7:
67
- _a.sent();
68
- return [3, 8];
69
- case 8: return [2];
81
+ }, logName)];
82
+ case 6:
83
+ _c.sent();
84
+ return [3, 7];
85
+ case 7: return [2];
70
86
  }
71
87
  });
72
88
  }); };
@@ -74,11 +90,15 @@ exports.callAIReview = callAIReview;
74
90
  var callChangePLSReview = function (ctx, _a) {
75
91
  var approvalId = _a.approvalId, materialId = _a.materialId, plsFileId = _a.plsFileId, newPlsFileIds = _a.newPlsFileIds;
76
92
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
77
- var url, userId, start, ids, payload, result, data, cost, error_2, cost;
78
- return tslib_1.__generator(this, function (_b) {
79
- switch (_b.label) {
93
+ var url, logName, _b, _c, userId, start, ids, payload, result, data, cost, error_2, cost;
94
+ return tslib_1.__generator(this, function (_d) {
95
+ switch (_d.label) {
80
96
  case 0:
81
97
  url = "".concat(host, "/api/v1/change_pls_review");
98
+ _c = (_b = "".concat(exports.AI_REVIEW_LOG_NAME, "(\u66F4\u6362PLS)")).concat;
99
+ return [4, formVersionTag(ctx, approvalId)];
100
+ case 1:
101
+ logName = _c.apply(_b, [_d.sent(), "-"]).concat(approvalId, "-").concat(materialId);
82
102
  userId = ctx.meta && ctx.meta.user && ctx.meta.user.userId;
83
103
  start = new Date().getTime();
84
104
  ids = (Array.isArray(newPlsFileIds) ? newPlsFileIds : [newPlsFileIds]).filter(Boolean);
@@ -88,23 +108,20 @@ var callChangePLSReview = function (ctx, _a) {
88
108
  pls_file_id: plsFileId,
89
109
  new_pls_file_id: ids.filter(function (id, index) { return ids.indexOf(id) === index; })
90
110
  };
91
- _b.label = 1;
92
- case 1:
93
- _b.trys.push([1, 5, , 8]);
111
+ _d.label = 2;
112
+ case 2:
113
+ _d.trys.push([2, 5, , 7]);
94
114
  console.log('[调用 AI change_pls_review API] 开始:', url, payload, new Date());
95
115
  return [4, axios_1.default.post(url, payload, {
96
116
  headers: {
97
117
  'X-API-Key': apiKey
98
118
  }
99
119
  })];
100
- case 2:
101
- result = _b.sent();
120
+ case 3:
121
+ result = _d.sent();
102
122
  data = result.data;
103
123
  cost = new Date().getTime() - start;
104
124
  console.log("[\u8C03\u7528 AI change_pls_review API]-".concat(approvalId), data, "\u8017\u65F6:", cost);
105
- return [4, ctx.logger.info("[\u8C03\u7528 AI change_pls_review API]-".concat(approvalId), data)];
106
- case 3:
107
- _b.sent();
108
125
  return [4, (0, pls_1.writeSystemLog)(ctx, 'info', {
109
126
  action: 'change-pls-review',
110
127
  id: approvalId,
@@ -114,17 +131,14 @@ var callChangePLSReview = function (ctx, _a) {
114
131
  status: 'success',
115
132
  cost: cost,
116
133
  response: data
117
- }, 'AI审核调用')];
134
+ }, logName)];
118
135
  case 4:
119
- _b.sent();
136
+ _d.sent();
120
137
  return [2, data];
121
138
  case 5:
122
- error_2 = _b.sent();
139
+ error_2 = _d.sent();
123
140
  cost = new Date().getTime() - start;
124
141
  console.error("[\u8C03\u7528 AI change_pls_review API]-".concat(approvalId), error_2 && error_2.message, new Date());
125
- return [4, ctx.logger.error("[\u8C03\u7528 AI change_pls_review API]-".concat(approvalId), error_2 && error_2.message)];
126
- case 6:
127
- _b.sent();
128
142
  return [4, (0, pls_1.writeSystemLog)(ctx, 'error', {
129
143
  action: 'change-pls-review',
130
144
  id: approvalId,
@@ -134,11 +148,11 @@ var callChangePLSReview = function (ctx, _a) {
134
148
  status: 'fail',
135
149
  cost: cost,
136
150
  error: error_2 && error_2.message
137
- }, 'AI审核调用')];
138
- case 7:
139
- _b.sent();
140
- return [3, 8];
141
- case 8: return [2];
151
+ }, logName)];
152
+ case 6:
153
+ _d.sent();
154
+ return [3, 7];
155
+ case 7: return [2];
142
156
  }
143
157
  });
144
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AI.js","sourceRoot":"","sources":["../../src/methods/AI.ts"],"names":[],"mappings":";;;;AAAA,+BAAyB;AACzB,6BAAsC;AAEtC,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;AACxC,IAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;AAGtC,IAAM,YAAY,GAAG,UAAO,GAAG,EAAE,UAAU;;;;;gBACxC,GAAG,GAAG,UAAG,IAAI,mBAAgB,CAAC;gBAC9B,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3D,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;;;;gBAE/B,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACvC,WAAW,EAAE,UAAU;iBAC1B,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;gBACA,WAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;wBACjC,WAAW,EAAE,UAAU;qBAC1B,EAAE;wBACC,OAAO,EAAE;4BACL,WAAW,EAAE,MAAM;yBACtB;qBACJ,CAAC,EAAA;;gBANI,MAAM,GAAG,SAMb;gBACI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;gBAClB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,uCAAsB,UAAU,CAAE,EAAE,IAAI,EAAE,eAAK,EAAE,IAAI,CAAC,CAAA;gBAClE,WAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAsB,UAAU,CAAE,EAAE,IAAI,CAAC,EAAA;;gBAA/D,SAA+D,CAAA;gBAG/D,WAAM,IAAA,oBAAc,EAAC,GAAG,EAAE,MAAM,EAAE;wBAC9B,MAAM,EAAE,WAAW;wBACnB,EAAE,EAAE,UAAU;wBACd,QAAQ,EAAE,MAAM;wBAChB,GAAG,KAAA;wBACH,MAAM,EAAE,SAAS;wBACjB,IAAI,MAAA;wBACJ,QAAQ,EAAE,IAAI;qBACjB,EAAE,QAAQ,CAAC,EAAA;;gBARZ,SAQY,CAAC;gBAEb,WAAO,IAAI,EAAC;;;gBAEN,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,uCAAsB,UAAU,CAAE,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBACrF,WAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAsB,UAAU,CAAE,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO,CAAC,EAAA;;gBAAlF,SAAkF,CAAA;gBAGlF,WAAM,IAAA,oBAAc,EAAC,GAAG,EAAE,OAAO,EAAE;wBAC/B,MAAM,EAAE,WAAW;wBACnB,EAAE,EAAE,UAAU;wBACd,QAAQ,EAAE,MAAM;wBAChB,GAAG,KAAA;wBACH,MAAM,EAAE,MAAM;wBACd,IAAI,MAAA;wBACJ,KAAK,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO;qBAChC,EAAE,QAAQ,CAAC,EAAA;;gBARZ,SAQY,CAAC;;;;;KAEpB,CAAA;AAhDY,QAAA,YAAY,gBAgDxB;AAOM,IAAM,mBAAmB,GAAG,UAAO,GAAG,EAAE,EAAoD;QAAlD,UAAU,gBAAA,EAAE,UAAU,gBAAA,EAAE,SAAS,eAAA,EAAE,aAAa,mBAAA;;;;;;oBACvF,GAAG,GAAG,UAAG,IAAI,8BAA2B,CAAC;oBACzC,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC3D,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC7B,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACvF,OAAO,GAAG;wBACZ,WAAW,EAAE,UAAU;wBACvB,WAAW,EAAE,UAAU;wBACvB,WAAW,EAAE,SAAS;wBACtB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,UAAC,EAAE,EAAE,KAAK,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,EAAzB,CAAyB,CAAC;qBACxE,CAAC;;;;oBAEE,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;oBAC5D,WAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;4BAC1C,OAAO,EAAE;gCACL,WAAW,EAAE,MAAM;6BACtB;yBACJ,CAAC,EAAA;;oBAJI,MAAM,GAAG,SAIb;oBACI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;oBAClB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,kDAAiC,UAAU,CAAE,EAAE,IAAI,EAAE,eAAK,EAAE,IAAI,CAAC,CAAA;oBAC7E,WAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAiC,UAAU,CAAE,EAAE,IAAI,CAAC,EAAA;;oBAA1E,SAA0E,CAAA;oBAG1E,WAAM,IAAA,oBAAc,EAAC,GAAG,EAAE,MAAM,EAAE;4BAC9B,MAAM,EAAE,mBAAmB;4BAC3B,EAAE,EAAE,UAAU;4BACd,QAAQ,EAAE,MAAM;4BAChB,GAAG,KAAA;4BACH,OAAO,EAAE,OAAO;4BAChB,MAAM,EAAE,SAAS;4BACjB,IAAI,MAAA;4BACJ,QAAQ,EAAE,IAAI;yBACjB,EAAE,QAAQ,CAAC,EAAA;;oBATZ,SASY,CAAC;oBAEb,WAAO,IAAI,EAAC;;;oBAEN,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;oBAC1C,OAAO,CAAC,KAAK,CAAC,kDAAiC,UAAU,CAAE,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;oBAChG,WAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAiC,UAAU,CAAE,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO,CAAC,EAAA;;oBAA7F,SAA6F,CAAA;oBAG7F,WAAM,IAAA,oBAAc,EAAC,GAAG,EAAE,OAAO,EAAE;4BAC/B,MAAM,EAAE,mBAAmB;4BAC3B,EAAE,EAAE,UAAU;4BACd,QAAQ,EAAE,MAAM;4BAChB,GAAG,KAAA;4BACH,OAAO,EAAE,OAAO;4BAChB,MAAM,EAAE,MAAM;4BACd,IAAI,MAAA;4BACJ,KAAK,EAAE,OAAK,IAAI,OAAK,CAAC,OAAO;yBAChC,EAAE,QAAQ,CAAC,EAAA;;oBATZ,SASY,CAAC;;;;;;CAEpB,CAAA;AArDY,QAAA,mBAAmB,uBAqD/B"}
1
+ {"version":3,"file":"AI.js","sourceRoot":"","sources":["../../src/methods/AI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var axios_1 = require("axios");
5
+ var AI_1 = require("../AI");
6
+ var post = jest.fn();
7
+ axios_1.default.post = post;
8
+ var logs = [];
9
+ var createCtx = function (approvals) {
10
+ if (approvals === void 0) { approvals = { a1: { _id: 'a1', form_version: 'v3' } }; }
11
+ return ({
12
+ meta: { user: { userId: 'u1', spaceId: 'space-1' } },
13
+ logger: { info: jest.fn(), error: jest.fn() },
14
+ getObject: function (name) { return name === 'pepsico_material_approval'
15
+ ? { directFind: function (_a) {
16
+ var filters = _a.filters;
17
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_b) {
18
+ return [2, approvals[filters[0][2]] ? [approvals[filters[0][2]]] : []];
19
+ }); });
20
+ } }
21
+ : { directInsert: function (doc) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
22
+ logs.push(doc);
23
+ return [2];
24
+ }); }); } }; }
25
+ });
26
+ };
27
+ beforeEach(function () {
28
+ logs = [];
29
+ post.mockReset();
30
+ jest.spyOn(console, 'log').mockImplementation(function () { return undefined; });
31
+ jest.spyOn(console, 'error').mockImplementation(function () { return undefined; });
32
+ });
33
+ describe('AI 调用只记一条系统日志, 标题带审批单 / 素材 ID', function () {
34
+ it('AI 审核成功: 一条 info, 不再另记 [调用 AI review API]', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
35
+ var ctx;
36
+ return tslib_1.__generator(this, function (_a) {
37
+ switch (_a.label) {
38
+ case 0:
39
+ post.mockResolvedValue({ data: { ok: true } });
40
+ ctx = createCtx();
41
+ return [4, (0, AI_1.callAIReview)(ctx, 'a1')];
42
+ case 1:
43
+ _a.sent();
44
+ expect(logs).toHaveLength(1);
45
+ expect(logs[0]).toMatchObject({ name: 'AI审核调用-v3-a1', level: 'info' });
46
+ expect(JSON.parse(logs[0].data)).toMatchObject({ action: 'ai-review', status: 'success', response: { ok: true } });
47
+ expect(ctx.logger.info).not.toHaveBeenCalled();
48
+ return [2];
49
+ }
50
+ });
51
+ }); });
52
+ it('AI 审核失败: 一条 error', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
53
+ var ctx;
54
+ return tslib_1.__generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0:
57
+ post.mockRejectedValue(new Error('timeout'));
58
+ ctx = createCtx();
59
+ return [4, (0, AI_1.callAIReview)(ctx, 'a1')];
60
+ case 1:
61
+ _a.sent();
62
+ expect(logs).toHaveLength(1);
63
+ expect(logs[0]).toMatchObject({ name: 'AI审核调用-v3-a1', level: 'error' });
64
+ expect(JSON.parse(logs[0].data)).toMatchObject({ status: 'fail', error: 'timeout' });
65
+ expect(ctx.logger.error).not.toHaveBeenCalled();
66
+ return [2];
67
+ }
68
+ });
69
+ }); });
70
+ it('更换 PLS 重出意见: 标题标出更换PLS并带素材 ID', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
71
+ return tslib_1.__generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0:
74
+ post.mockResolvedValue({ data: { ok: true } });
75
+ return [4, (0, AI_1.callChangePLSReview)(createCtx(), { approvalId: 'a1', materialId: 'm1', plsFileId: 'p1', newPlsFileIds: ['p2'] })];
76
+ case 1:
77
+ _a.sent();
78
+ expect(logs).toHaveLength(1);
79
+ expect(logs[0]).toMatchObject({ name: 'AI审核调用(更换PLS)-v3-a1-m1', level: 'info' });
80
+ return [2];
81
+ }
82
+ });
83
+ }); });
84
+ it('没有 form_version 的存量单据记为旧版, 审批单查不到时不带版本', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
85
+ return tslib_1.__generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ post.mockResolvedValue({ data: {} });
89
+ return [4, (0, AI_1.callAIReview)(createCtx({ a1: { _id: 'a1' } }), 'a1')];
90
+ case 1:
91
+ _a.sent();
92
+ return [4, (0, AI_1.callAIReview)(createCtx({}), 'a1')];
93
+ case 2:
94
+ _a.sent();
95
+ expect(logs.map(function (l) { return l.name; })).toEqual(['AI审核调用-旧版-a1', 'AI审核调用-a1']);
96
+ return [2];
97
+ }
98
+ });
99
+ }); });
100
+ });
101
+ //# sourceMappingURL=aiReviewLog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiReviewLog.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/aiReviewLog.test.ts"],"names":[],"mappings":";;;AAAA,+BAA0B;AAC1B,4BAA0D;AAG1D,IAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACtB,eAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAE3B,IAAI,IAAI,GAAU,EAAE,CAAC;AAErB,IAAM,SAAS,GAAG,UAAC,SAA0E;IAA1E,0BAAA,EAAA,cAAmC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;IAAK,OAAA,CAAC;QAC/F,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QACpD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;QAC7C,SAAS,EAAE,UAAC,IAAI,IAAK,OAAA,IAAI,KAAK,2BAA2B;YACrD,CAAC,CAAC,EAAE,UAAU,EAAE,UAAO,EAAW;wBAAT,OAAO,aAAA;;wBAAO,WAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAA;;iBAAA,EAAE;YACnG,CAAC,CAAC,EAAE,YAAY,EAAE,UAAO,GAAG;oBAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;yBAAE,EAAE,EAFrC,CAEqC;KAC7D,CAAC;AANgG,CAMhG,CAAC;AAEH,UAAU,CAAC;IACP,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE;IACtC,EAAE,CAAC,2CAA2C,EAAE;;;;;oBAC5C,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzC,GAAG,GAAG,SAAS,EAAE,CAAC;oBACxB,WAAM,IAAA,iBAAY,EAAC,GAAG,EAAE,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBACvE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;;;;SAClD,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE;;;;;oBACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvC,GAAG,GAAG,SAAS,EAAE,CAAC;oBACxB,WAAM,IAAA,iBAAY,EAAC,GAAG,EAAE,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;oBACxE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBACrF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;;;;SACnD,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE;;;;oBAChC,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC/C,WAAM,IAAA,wBAAmB,EAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA;;oBAAtH,SAAsH,CAAC;oBACvH,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;;;;SACpF,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE;;;;oBACzC,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBACrC,WAAM,IAAA,iBAAY,EAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAA;;oBAA1D,SAA0D,CAAC;oBAC3D,WAAM,IAAA,iBAAY,EAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAA;;oBAAvC,SAAuC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;;;;SAC1E,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -29,6 +29,52 @@ describe('buildMaterialGroupTree', function () {
29
29
  expect(tree[0].children[0]).toMatchObject({ value: '2', disabled: true });
30
30
  });
31
31
  });
32
+ describe('buildMaterialGroupTree: children 嵌套格式', function () {
33
+ var nested = [{
34
+ materialGroupId: '2300610101667139', materialGroupName: '大波浪', parentMaterialGroupId: '2300610101667032', level: 3,
35
+ materialGroupIdPath: ['2300508141650054', '2300610101667032', '2300610101667139'],
36
+ materialGroupPath: 'Salty|乐事|大波浪', leaf: false, selectable: true,
37
+ children: [{
38
+ materialGroupId: '2300610211674057', materialGroupName: '2027-CNY-O2O', parentMaterialGroupId: '2300610101667139', level: 4,
39
+ materialGroupIdPath: [], materialGroupPath: 'Salty|乐事|大波浪|2027-CNY-O2O', leaf: false, selectable: true,
40
+ children: [
41
+ { materialGroupId: '2300610211674075', materialGroupName: 'campaign design content', parentMaterialGroupId: '2300610211674057', level: 5,
42
+ materialGroupIdPath: [], materialGroupPath: 'Salty|乐事|大波浪|2027-CNY-O2O|campaign design content', leaf: true, selectable: true, children: [] },
43
+ { materialGroupId: '2300610211674089', materialGroupName: 'Social material', parentMaterialGroupId: '2300610211674057', level: 5,
44
+ materialGroupIdPath: [], materialGroupPath: 'Salty|乐事|大波浪|2027-CNY-O2O|Social material', leaf: true, selectable: false, children: [] }
45
+ ]
46
+ }]
47
+ }];
48
+ it('按 children 拼出同样的树, 路径、禁用照接口', function () {
49
+ var tree = (0, content_hub_material_group_1.buildMaterialGroupTree)(nested);
50
+ expect(tree).toHaveLength(1);
51
+ expect(tree[0]).toMatchObject({ value: '2300610101667139', label: '大波浪', materialGroupPath: 'Salty|乐事|大波浪', level: 3 });
52
+ var campaign = tree[0].children[0];
53
+ expect(campaign).toMatchObject({ value: '2300610211674057', label: '2027-CNY-O2O' });
54
+ expect(campaign.children.map(function (c) { return c.label; })).toEqual(['campaign design content', 'Social material']);
55
+ expect(campaign.children[0].children).toBeUndefined();
56
+ expect(campaign.children[1]).toMatchObject({ disabled: true, materialGroupPath: 'Salty|乐事|大波浪|2027-CNY-O2O|Social material' });
57
+ });
58
+ it('选项上不带接口原始的 children 字段', function () {
59
+ var tree = (0, content_hub_material_group_1.buildMaterialGroupTree)(nested);
60
+ expect(JSON.stringify(tree)).not.toContain('materialGroupName');
61
+ });
62
+ it('下级没带 parentMaterialGroupId 时按嵌套关系挂到上级', function () {
63
+ var tree = (0, content_hub_material_group_1.buildMaterialGroupTree)([
64
+ tslib_1.__assign(tslib_1.__assign({}, group('1', 'A', null, 1)), { children: [tslib_1.__assign(tslib_1.__assign({}, group('2', 'B', null, 2)), { children: [group('3', 'C', null, 3)] })] })
65
+ ]);
66
+ expect(tree).toHaveLength(1);
67
+ expect(tree[0].children[0].value).toBe('2');
68
+ expect(tree[0].children[0].children[0].value).toBe('3');
69
+ });
70
+ it('扁平与嵌套混在一起时不重复', function () {
71
+ var tree = (0, content_hub_material_group_1.buildMaterialGroupTree)([
72
+ tslib_1.__assign(tslib_1.__assign({}, group('1', 'A', null, 1)), { children: [group('2', 'B', '1', 2)] }),
73
+ group('2', 'B', '1', 2)
74
+ ]);
75
+ expect(tree[0].children).toHaveLength(1);
76
+ });
77
+ });
32
78
  describe('mockMaterialGroups', function () {
33
79
  it('普通查询返回匹配节点及其下级, 路径与 ID 路径前后一致', function () {
34
80
  var e_1, _a;
@@ -1 +1 @@
1
- {"version":3,"file":"contentHubMaterialGroup.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/contentHubMaterialGroup.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contentHubMaterialGroup.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/contentHubMaterialGroup.test.ts"],"names":[],"mappings":"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"}
@@ -131,7 +131,7 @@ var uploadedZip = function (body) {
131
131
  return body.slice(start, end);
132
132
  };
133
133
  var logs = [];
134
- var pushLogs = function () { return logs.filter(function (l) { return l.name === 'Content Hub推送'; }).map(function (l) { return (tslib_1.__assign(tslib_1.__assign({}, l), { data: JSON.parse(l.data) })); }); };
134
+ var pushLogs = function () { return logs.filter(function (l) { return String(l.name).startsWith('Content Hub推送'); }).map(function (l) { return (tslib_1.__assign(tslib_1.__assign({}, l), { data: JSON.parse(l.data) })); }); };
135
135
  var w1Response;
136
136
  var w1Ok = function (emails, extra) {
137
137
  if (extra === void 0) { extra = {}; }
@@ -283,7 +283,7 @@ describe('存量单据保持原有逻辑', function () {
283
283
  });
284
284
  }); });
285
285
  });
286
- describe('推送日志(系统日志 logs, name=Content Hub推送)', function () {
286
+ describe('推送日志(系统日志 logs, name=Content Hub推送-表单版本-审批单ID)', function () {
287
287
  it('推送成功记一条 info, 带触发方式、素材、素材组、Content Hub 返回内容', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
288
288
  var log;
289
289
  return tslib_1.__generator(this, function (_a) {
@@ -293,7 +293,7 @@ describe('推送日志(系统日志 logs, name=Content Hub推送)', function ()
293
293
  _a.sent();
294
294
  expect(pushLogs()).toHaveLength(1);
295
295
  log = pushLogs()[0];
296
- expect(log).toMatchObject({ level: 'info', space: 'space-1' });
296
+ expect(log).toMatchObject({ name: 'Content Hub推送(单个素材)-v3-a1-m1', level: 'info', space: 'space-1' });
297
297
  expect(log.data).toMatchObject({
298
298
  action: 'content-hub-push', trigger: 'spot_check', status: 'pushed',
299
299
  approval_id: 'a1', approval_name: '尾部审批单', form_version: 'v3', material_id: 'm1',
@@ -312,6 +312,7 @@ describe('推送日志(系统日志 logs, name=Content Hub推送)', function ()
312
312
  case 1:
313
313
  _a.sent();
314
314
  expect(pushLogs()).toHaveLength(1);
315
+ expect(pushLogs()[0].name).toBe('Content Hub推送-v3-a1');
315
316
  expect(pushLogs()[0].data).toMatchObject({ trigger: 'launch', status: 'skipped', reason: '申请单未选择同步到Content Hub, 不推送' });
316
317
  return [2];
317
318
  }
@@ -372,6 +373,20 @@ describe('推送日志(系统日志 logs, name=Content Hub推送)', function ()
372
373
  }
373
374
  });
374
375
  }); });
376
+ it('标题带表单版本, 没有 form_version 的存量单据记为旧版', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
377
+ return tslib_1.__generator(this, function (_a) {
378
+ switch (_a.label) {
379
+ case 0: return [4, (0, content_hub_1.inventoryApprovalMaterial)(createCtx(tslib_1.__assign(tslib_1.__assign({}, REVIEWED_APPROVAL), { form_version: 'v1' })), 'a1')];
380
+ case 1:
381
+ _a.sent();
382
+ return [4, (0, content_hub_1.inventoryApprovalMaterial)(createCtx(tslib_1.__assign(tslib_1.__assign({}, REVIEWED_APPROVAL), { form_version: undefined })), 'a1', undefined, { force: true })];
383
+ case 2:
384
+ _a.sent();
385
+ expect(pushLogs().map(function (l) { return l.name; })).toEqual(['Content Hub推送-v1-a1', 'Content Hub推送-旧版-a1']);
386
+ return [2];
387
+ }
388
+ });
389
+ }); });
375
390
  });
376
391
  describe('v3: 版权文件打成压缩包一起推', function () {
377
392
  var WITH_COPYRIGHT = tslib_1.__assign(tslib_1.__assign({}, TAIL_APPROVAL), { copyright_music: ['c1'], copyright_front: ['c2'] });
@@ -621,7 +636,7 @@ describe('素材组 ID', function () {
621
636
  });
622
637
  describe('推送成功后开通上传权限并发邮件(W1)', function () {
623
638
  var APPROVAL = tslib_1.__assign(tslib_1.__assign({}, REVIEWED_APPROVAL), { ch_material_group: '22334050712759158' });
624
- var uploaderLogs = function () { return logs.filter(function (l) { return l.name === 'Content Hub上传授权'; }).map(function (l) { return JSON.parse(l.data); }); };
639
+ var uploaderLogs = function () { return logs.filter(function (l) { return String(l.name).startsWith('Content Hub上传授权'); }).map(function (l) { return JSON.parse(l.data); }); };
625
640
  it('内部员工提的单: 推送成功后用发起人邮箱和素材组调 W1, 素材组 ID 原样传(不丢精度), 再给发起人发邮件, 附路径', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
626
641
  var approval, log;
627
642
  return tslib_1.__generator(this, function (_a) {
@@ -638,6 +653,7 @@ describe('推送成功后开通上传权限并发邮件(W1)', function () {
638
653
  expect(emails[0].to).toBe('Owner@Pepsico.com');
639
654
  expect(emails[0].html).toContain('线下衍生素材 &gt; 永辉');
640
655
  expect(updates).toContainEqual({ name: 'pepsico_material_approval', id: 'a1', doc: { ch_uploader_notified_group: '22334050712759158' } });
656
+ expect(logs.find(function (l) { return String(l.name).startsWith('Content Hub上传授权'); }).name).toBe('Content Hub上传授权-a1');
641
657
  log = uploaderLogs()[0];
642
658
  expect(log).toMatchObject({ status: 'done', emailed: ['Owner@Pepsico.com'] });
643
659
  expect(log.request).toEqual({
@@ -650,6 +666,48 @@ describe('推送成功后开通上传权限并发邮件(W1)', function () {
650
666
  }
651
667
  });
652
668
  }); });
669
+ it('只推单个素材时, 日志标题标出单个素材并带审批单 ID 和素材 ID', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
670
+ return tslib_1.__generator(this, function (_a) {
671
+ switch (_a.label) {
672
+ case 0: return [4, (0, content_hub_1.sendByMaterial)(createCtx(tslib_1.__assign(tslib_1.__assign({}, TAIL_APPROVAL), { owner: 'u1', created_by: 'u1' })), 'm1')];
673
+ case 1:
674
+ _a.sent();
675
+ expect(logs.find(function (l) { return String(l.name).startsWith('Content Hub上传授权'); }).name).toBe('Content Hub上传授权(单个素材)-a1-m1');
676
+ expect(uploaderLogs()[0]).toMatchObject({ approval_id: 'a1', material_id: 'm1' });
677
+ return [2];
678
+ }
679
+ });
680
+ }); });
681
+ it('W1 返回了素材组链接(materialGroupUrl)时, 邮件里的路径做成链接', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
682
+ return tslib_1.__generator(this, function (_a) {
683
+ switch (_a.label) {
684
+ case 0:
685
+ w1Response = w1Ok(['owner@pepsico.com'], { materialGroupUrl: 'https://contenthub.example.com/material-groups/22334050712759158' });
686
+ return [4, (0, content_hub_1.inventoryApprovalMaterial)(createCtx(tslib_1.__assign(tslib_1.__assign({}, APPROVAL), { owner: 'u1', created_by: 'u1' })), 'a1')];
687
+ case 1:
688
+ _a.sent();
689
+ expect(emails).toHaveLength(1);
690
+ expect(emails[0].html).toContain('<a href="https://contenthub.example.com/material-groups/22334050712759158">线下衍生素材 &gt; 永辉</a>');
691
+ expect(emails[0].html).toContain('点击上面的路径');
692
+ return [2];
693
+ }
694
+ });
695
+ }); });
696
+ it('没有素材组链接或链接不是 http(s) 时, 路径按纯文本显示', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
697
+ return tslib_1.__generator(this, function (_a) {
698
+ switch (_a.label) {
699
+ case 0:
700
+ w1Response = w1Ok(['owner@pepsico.com'], { materialGroupUrl: 'javascript:alert(1)' });
701
+ return [4, (0, content_hub_1.inventoryApprovalMaterial)(createCtx(tslib_1.__assign(tslib_1.__assign({}, APPROVAL), { owner: 'u1', created_by: 'u1' })), 'a1')];
702
+ case 1:
703
+ _a.sent();
704
+ expect(emails[0].html).toContain('<b>线下衍生素材 &gt; 永辉</b>');
705
+ expect(emails[0].html).not.toContain('javascript:');
706
+ expect(emails[0].html).not.toContain('点击上面的路径');
707
+ return [2];
708
+ }
709
+ });
710
+ }); });
653
711
  it('Agency 代提的单: 发给内部发起人和 Agency 各一封', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
654
712
  var approval;
655
713
  return tslib_1.__generator(this, function (_a) {
@@ -688,7 +746,7 @@ describe('推送成功后开通上传权限并发邮件(W1)', function () {
688
746
  case 1:
689
747
  _a.sent();
690
748
  expect(emails).toHaveLength(0);
691
- expect(logs.find(function (l) { return l.name === 'Content Hub上传授权'; })).toMatchObject({ level: 'error' });
749
+ expect(logs.find(function (l) { return String(l.name).startsWith('Content Hub上传授权'); })).toMatchObject({ level: 'error' });
692
750
  return [2];
693
751
  }
694
752
  });