@steedos-labs/content-compliance 0.7.21 → 0.8.1

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 (131) hide show
  1. package/README.md +61 -0
  2. package/dist/index.js +1 -1
  3. package/lib/actions/__tests__/downloadFieldZip.test.d.ts +1 -0
  4. package/lib/actions/__tests__/downloadFieldZip.test.js +154 -0
  5. package/lib/actions/__tests__/downloadFieldZip.test.js.map +1 -0
  6. package/lib/actions/approvalCc.d.ts +7 -0
  7. package/lib/actions/approvalCc.js +35 -0
  8. package/lib/actions/approvalCc.js.map +1 -0
  9. package/lib/actions/downloadFieldZip.d.ts +9 -0
  10. package/lib/actions/downloadFieldZip.js +155 -0
  11. package/lib/actions/downloadFieldZip.js.map +1 -0
  12. package/lib/actions/index.d.ts +1 -0
  13. package/lib/actions/index.js +1 -0
  14. package/lib/actions/index.js.map +1 -1
  15. package/lib/index.js +157 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/methods/__tests__/approvalCc.test.d.ts +1 -0
  18. package/lib/methods/__tests__/approvalCc.test.js +180 -0
  19. package/lib/methods/__tests__/approvalCc.test.js.map +1 -0
  20. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.d.ts +1 -0
  21. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.js +61 -0
  22. package/lib/methods/__tests__/voidMaterialReasonMetadata.test.js.map +1 -0
  23. package/lib/methods/approval_cc.d.ts +15 -0
  24. package/lib/methods/approval_cc.js +170 -0
  25. package/lib/methods/approval_cc.js.map +1 -0
  26. package/lib/methods/approval_engine.js +21 -8
  27. package/lib/methods/approval_engine.js.map +1 -1
  28. package/lib/methods/consts.d.ts +1 -0
  29. package/lib/methods/consts.js.map +1 -1
  30. package/lib/methods/index.d.ts +1 -0
  31. package/lib/methods/index.js +1 -0
  32. package/lib/methods/index.js.map +1 -1
  33. package/lib/methods/notification.d.ts +2 -0
  34. package/lib/methods/notification.js +135 -14
  35. package/lib/methods/notification.js.map +1 -1
  36. package/lib/methods/pls.d.ts +19 -0
  37. package/lib/methods/pls.js +332 -29
  38. package/lib/methods/pls.js.map +1 -1
  39. package/main/default/applications/pepsico_content_review.app.yml +0 -4
  40. package/main/default/objects/pepsico_approval_cc_log/fields/action.field.yml +11 -0
  41. package/main/default/objects/pepsico_approval_cc_log/fields/approval_name.field.yml +6 -0
  42. package/main/default/objects/pepsico_approval_cc_log/fields/cc_user.field.yml +7 -0
  43. package/main/default/objects/pepsico_approval_cc_log/fields/operator.field.yml +7 -0
  44. package/main/default/objects/pepsico_approval_cc_log/fields/pepsico_material_approval.field.yml +7 -0
  45. package/main/default/objects/pepsico_approval_cc_log/fields/space.field.yml +6 -0
  46. package/main/default/objects/pepsico_approval_cc_log/listviews/all.listview.yml +19 -0
  47. package/main/default/objects/pepsico_approval_cc_log/pepsico_approval_cc_log.object.yml +16 -0
  48. package/main/default/objects/pepsico_approval_cc_log/permissions/admin.permission.yml +13 -0
  49. package/main/default/objects/pepsico_approval_cc_log/permissions/user.permission.yml +13 -0
  50. package/main/default/objects/pepsico_km_pls/fields/brand.field.yml +10 -0
  51. package/main/default/objects/pepsico_km_pls/fields/content.field.yml +1 -1
  52. package/main/default/objects/pepsico_km_pls/fields/created.field.yml +1 -1
  53. package/main/default/objects/pepsico_km_pls/fields/created_by.field.yml +1 -0
  54. package/main/default/objects/pepsico_km_pls/fields/enable.field.yml +0 -1
  55. package/main/default/objects/pepsico_km_pls/fields/father_nutrient.field.yml +8 -0
  56. package/main/default/objects/pepsico_km_pls/fields/modified.field.yml +1 -0
  57. package/main/default/objects/pepsico_km_pls/fields/modified_by.field.yml +1 -0
  58. package/main/default/objects/pepsico_km_pls/fields/name.field.yml +2 -3
  59. package/main/default/objects/pepsico_km_pls/fields/net_content.field.yml +8 -0
  60. package/main/default/objects/pepsico_km_pls/fields/nrv_percent.field.yml +7 -0
  61. package/main/default/objects/pepsico_km_pls/fields/nutrient.field.yml +8 -0
  62. package/main/default/objects/pepsico_km_pls/fields/nutrient_value.field.yml +8 -0
  63. package/main/default/objects/pepsico_km_pls/fields/package_type.field.yml +8 -0
  64. package/main/default/objects/pepsico_km_pls/fields/pls_file.field.yml +1 -1
  65. package/main/default/objects/pepsico_km_pls/fields/product.field.yml +3 -2
  66. package/main/default/objects/pepsico_km_pls/fields/product_standard.field.yml +8 -0
  67. package/main/default/objects/pepsico_km_pls/fields/serving_amount.field.yml +8 -0
  68. package/main/default/objects/pepsico_km_pls/fields/serving_desc.field.yml +8 -0
  69. package/main/default/objects/pepsico_km_pls/fields/shelf_life.field.yml +7 -0
  70. package/main/default/objects/pepsico_km_pls/fields/storage_condition.field.yml +9 -0
  71. package/main/default/objects/pepsico_km_pls/fields/tag.field.yml +3 -3
  72. package/main/default/objects/pepsico_km_pls/fields/taste.field.yml +1 -1
  73. package/main/default/objects/pepsico_km_pls/fields/unit.field.yml +7 -0
  74. package/main/default/objects/pepsico_km_pls/listviews/all.listview.yml +13 -3
  75. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_activate.button.js +6 -0
  76. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_activate.button.yml +110 -0
  77. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_batch_upload_pls.button.yml +147 -0
  78. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_deactivate.button.js +6 -0
  79. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_deactivate.button.yml +110 -0
  80. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_extract_rules.button.js +6 -0
  81. package/main/default/objects/pepsico_km_pls_file/buttons/pepsico_extract_rules.button.yml +110 -0
  82. package/main/default/objects/pepsico_km_pls_file/buttons/standard_delete.button.js +9 -0
  83. package/main/default/objects/pepsico_km_pls_file/buttons/standard_delete.button.yml +1 -0
  84. package/main/default/objects/pepsico_km_pls_file/buttons/standard_new.button.yml +3 -0
  85. package/main/default/objects/pepsico_km_pls_file/fields/ai_extract.field.yml +1 -2
  86. package/main/default/objects/pepsico_km_pls_file/fields/brand.field.yml +10 -0
  87. package/main/default/objects/pepsico_km_pls_file/fields/created.field.yml +2 -2
  88. package/main/default/objects/pepsico_km_pls_file/fields/created_by.field.yml +2 -2
  89. package/main/default/objects/pepsico_km_pls_file/fields/is_active.field.yml +7 -0
  90. package/main/default/objects/pepsico_km_pls_file/fields/issue_date.field.yml +8 -0
  91. package/main/default/objects/pepsico_km_pls_file/fields/modified.field.yml +1 -0
  92. package/main/default/objects/pepsico_km_pls_file/fields/modified_by.field.yml +1 -0
  93. package/main/default/objects/pepsico_km_pls_file/fields/name.field.yml +5 -5
  94. package/main/default/objects/pepsico_km_pls_file/fields/pepsico_material.field.yml +1 -1
  95. package/main/default/objects/pepsico_km_pls_file/fields/pepsico_material_approval.field.yml +1 -1
  96. package/main/default/objects/pepsico_km_pls_file/fields/pls_file.field.yml +4 -4
  97. package/main/default/objects/pepsico_km_pls_file/fields/product.field.yml +2 -1
  98. package/main/default/objects/pepsico_km_pls_file/fields/product_name.field.yml +10 -0
  99. package/main/default/objects/pepsico_km_pls_file/fields/rule_count.field.yml +16 -0
  100. package/main/default/objects/pepsico_km_pls_file/fields/sku.field.yml +10 -0
  101. package/main/default/objects/pepsico_km_pls_file/fields/version.field.yml +9 -0
  102. package/main/default/objects/pepsico_km_pls_file/listviews/all.listview.yml +10 -2
  103. package/main/default/objects/pepsico_km_pls_file/pepsico_km_pls_file.object.yml +2 -1
  104. package/main/default/objects/pepsico_km_pls_file/permissions/pepsico_approve.permission.yml +10 -1
  105. package/main/default/objects/pepsico_km_pls_file/permissions/pepsico_approve_cooperate.permission.yml +10 -1
  106. package/main/default/objects/pepsico_material/buttons/pepsico_nullify_material.button.yml +114 -37
  107. package/main/default/objects/pepsico_material/buttons/pepsico_onedrive_edit_material.button.yml +1 -1
  108. package/main/default/objects/pepsico_material/buttons/pepsico_update_material.button.yml +1 -0
  109. package/main/default/objects/pepsico_material/fields/void_at.field.yml +11 -0
  110. package/main/default/objects/pepsico_material/fields/void_by.field.yml +12 -0
  111. package/main/default/objects/pepsico_material/fields/void_material.field.yml +2 -2
  112. package/main/default/objects/pepsico_material/fields/void_reason.field.yml +12 -0
  113. package/main/default/objects/pepsico_material/pepsico_material.object.yml +3 -0
  114. package/main/default/objects/pepsico_material_approval/buttons/pepsico_cc.button.yml +113 -0
  115. package/main/default/objects/pepsico_material_approval/buttons/pepsico_confirm_online.button.yml +19 -2
  116. package/main/default/objects/pepsico_material_approval/buttons/pepsico_material_upload.button.yml +19 -2
  117. package/main/default/objects/pepsico_material_approval/buttons/pepsico_postpone_review.button.yml +18 -0
  118. package/main/default/objects/pepsico_material_approval/buttons/pepsico_urgent_review.button.yml +18 -0
  119. package/main/default/objects/pepsico_material_approval/fields/cc_users.field.yml +18 -0
  120. package/main/default/objects/pepsico_material_approval/fields/pre_ca_reviewer.field.yml +3 -1
  121. package/main/default/objects/pepsico_material_approval/fields/pre_legal_reviewer.field.yml +3 -1
  122. package/main/default/objects/pepsico_material_approval/fields/pre_ns_reviewer.field.yml +3 -1
  123. package/main/default/objects/pepsico_material_approval/fields/pre_reviewer.field.yml +3 -1
  124. package/main/default/objects/pepsico_material_approval/fields/pre_sra_reviewer.field.yml +3 -1
  125. package/main/default/triggers/pepsico_km_pls_file_active_sync.trigger.yml +31 -0
  126. package/main/default/triggers/pepsico_km_pls_file_title_update.trigger.yml +35 -0
  127. package/main/default/triggers/pepsico_km_pls_product_name_update.trigger.yml +1 -1
  128. package/main/default/triggers/pepsico_material_void_reason_required.trigger.yml +24 -0
  129. package/package.json +1 -1
  130. package/main/default/imports/pepsico_km_pls.import.yml +0 -17
  131. package/main/default/triggers/pepsico_km_pls_file_product_name_update.trigger.yml +0 -50
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var downloadFieldZip_1 = require("../downloadFieldZip");
5
+ var axios_1 = require("axios");
6
+ var FIELD = 'portrait_auth_doc';
7
+ var makeCtx = function (record, files, fieldName) {
8
+ if (fieldName === void 0) { fieldName = FIELD; }
9
+ var approvalObj = {
10
+ directFind: jest.fn(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
11
+ return [2, (record ? [record] : [])];
12
+ }); }); }),
13
+ toConfig: jest.fn(function () {
14
+ var _a;
15
+ return ({
16
+ NAME_FIELD_KEY: 'name',
17
+ fields: (_a = {}, _a[FIELD] = { label: 'KOL肖像授权文件' }, _a)
18
+ });
19
+ })
20
+ };
21
+ var fileObj = { directFind: jest.fn(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
22
+ return [2, files];
23
+ }); }); }) };
24
+ var objects = { pepsico_material_approval: approvalObj, cfs_files_filerecord: fileObj };
25
+ var logger = { info: jest.fn(), warn: jest.fn(), error: jest.fn() };
26
+ var thisArg = {
27
+ getObject: jest.fn(function (n) { return objects[n]; }),
28
+ getLogger: jest.fn(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
29
+ return [2, logger];
30
+ }); }); })
31
+ };
32
+ var ctx = {
33
+ params: { objectName: 'pepsico_material_approval', recordId: 'rec-1', fieldName: fieldName },
34
+ meta: { requestHeaders: {} }
35
+ };
36
+ return { thisArg: thisArg, ctx: ctx, logger: logger, approvalObj: approvalObj, fileObj: fileObj };
37
+ };
38
+ var expectedDate = function () {
39
+ var d = new Date();
40
+ var pad = function (n) { return (n < 10 ? '0' + n : '' + n); };
41
+ return "".concat(d.getFullYear()).concat(pad(d.getMonth() + 1)).concat(pad(d.getDate()));
42
+ };
43
+ describe('downloadFieldZip', function () {
44
+ afterEach(function () {
45
+ delete axios_1.default.get;
46
+ jest.clearAllMocks();
47
+ });
48
+ it('打包字段下全部文件, 返回 zip 且文件名为 审批单号_字段名称_日期.zip', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
49
+ var record, files, _a, thisArg, ctx, buffer, cd, match;
50
+ var _b;
51
+ return tslib_1.__generator(this, function (_c) {
52
+ switch (_c.label) {
53
+ case 0:
54
+ axios_1.default.get = jest.fn(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
55
+ return [2, ({ data: Buffer.from('hello-file') })];
56
+ }); }); });
57
+ record = (_b = { _id: 'rec-1', name: 'CA-0001' }, _b[FIELD] = ['f1', 'f2'], _b);
58
+ files = [
59
+ { _id: 'f1', original: { name: 'a.pdf' } },
60
+ { _id: 'f2', original: { name: 'b.png' } }
61
+ ];
62
+ _a = makeCtx(record, files), thisArg = _a.thisArg, ctx = _a.ctx;
63
+ return [4, downloadFieldZip_1.downloadFieldZip.handler.call(thisArg, ctx)];
64
+ case 1:
65
+ buffer = _c.sent();
66
+ expect(Buffer.isBuffer(buffer)).toBe(true);
67
+ expect(buffer[0]).toBe(0x50);
68
+ expect(buffer[1]).toBe(0x4b);
69
+ expect(axios_1.default.get).toHaveBeenCalledTimes(2);
70
+ expect(ctx.meta.$responseType).toBe('application/zip');
71
+ cd = ctx.meta.$responseHeaders['Content-Disposition'];
72
+ match = cd.match(/filename\*=UTF-8''(.+)$/);
73
+ expect(match).toBeTruthy();
74
+ expect(decodeURIComponent(match[1])).toBe("CA-0001_KOL\u8096\u50CF\u6388\u6743\u6587\u4EF6_".concat(expectedDate(), ".zip"));
75
+ return [2];
76
+ }
77
+ });
78
+ }); });
79
+ it('单值(非数组)字段也能正常打包', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
80
+ var record, files, _a, thisArg, ctx, buffer;
81
+ var _b;
82
+ return tslib_1.__generator(this, function (_c) {
83
+ switch (_c.label) {
84
+ case 0:
85
+ axios_1.default.get = jest.fn(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
86
+ return [2, ({ data: Buffer.from('x') })];
87
+ }); }); });
88
+ record = (_b = { _id: 'rec-1', name: 'CA-0002' }, _b[FIELD] = 'f1', _b);
89
+ files = [{ _id: 'f1', original: { name: 'only.pdf' } }];
90
+ _a = makeCtx(record, files), thisArg = _a.thisArg, ctx = _a.ctx;
91
+ return [4, downloadFieldZip_1.downloadFieldZip.handler.call(thisArg, ctx)];
92
+ case 1:
93
+ buffer = _c.sent();
94
+ expect(axios_1.default.get).toHaveBeenCalledTimes(1);
95
+ expect(buffer[0]).toBe(0x50);
96
+ return [2];
97
+ }
98
+ });
99
+ }); });
100
+ it('单个文件下载失败时跳过, 不影响整包生成', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
101
+ var record, files, _a, thisArg, ctx, logger, buffer;
102
+ var _b;
103
+ return tslib_1.__generator(this, function (_c) {
104
+ switch (_c.label) {
105
+ case 0:
106
+ axios_1.default.get = jest.fn()
107
+ .mockResolvedValueOnce({ data: Buffer.from('ok') })
108
+ .mockRejectedValueOnce(new Error('boom'));
109
+ record = (_b = { _id: 'rec-1', name: 'CA-0003' }, _b[FIELD] = ['f1', 'f2'], _b);
110
+ files = [
111
+ { _id: 'f1', original: { name: 'good.pdf' } },
112
+ { _id: 'f2', original: { name: 'bad.pdf' } }
113
+ ];
114
+ _a = makeCtx(record, files), thisArg = _a.thisArg, ctx = _a.ctx, logger = _a.logger;
115
+ return [4, downloadFieldZip_1.downloadFieldZip.handler.call(thisArg, ctx)];
116
+ case 1:
117
+ buffer = _c.sent();
118
+ expect(buffer[0]).toBe(0x50);
119
+ expect(logger.error).toHaveBeenCalled();
120
+ expect(ctx.meta.$responseType).toBe('application/zip');
121
+ return [2];
122
+ }
123
+ });
124
+ }); });
125
+ it('字段为空时报错', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
126
+ var record, _a, thisArg, ctx;
127
+ var _b;
128
+ return tslib_1.__generator(this, function (_c) {
129
+ switch (_c.label) {
130
+ case 0:
131
+ record = (_b = { _id: 'rec-1', name: 'CA-0004' }, _b[FIELD] = [], _b);
132
+ _a = makeCtx(record, []), thisArg = _a.thisArg, ctx = _a.ctx;
133
+ return [4, expect(downloadFieldZip_1.downloadFieldZip.handler.call(thisArg, ctx)).rejects.toThrow('该字段没有可下载的附件')];
134
+ case 1:
135
+ _c.sent();
136
+ return [2];
137
+ }
138
+ });
139
+ }); });
140
+ it('记录不存在时报错', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
141
+ var _a, thisArg, ctx;
142
+ return tslib_1.__generator(this, function (_b) {
143
+ switch (_b.label) {
144
+ case 0:
145
+ _a = makeCtx(null, []), thisArg = _a.thisArg, ctx = _a.ctx;
146
+ return [4, expect(downloadFieldZip_1.downloadFieldZip.handler.call(thisArg, ctx)).rejects.toThrow('未找到记录')];
147
+ case 1:
148
+ _b.sent();
149
+ return [2];
150
+ }
151
+ });
152
+ }); });
153
+ });
154
+ //# sourceMappingURL=downloadFieldZip.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadFieldZip.test.js","sourceRoot":"","sources":["../../../src/actions/__tests__/downloadFieldZip.test.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AACvD,+BAA0B;AAE1B,IAAM,KAAK,GAAG,mBAAmB,CAAC;AAElC,IAAM,OAAO,GAAG,UAAC,MAAW,EAAE,KAAY,EAAE,SAAiB;IAAjB,0BAAA,EAAA,iBAAiB;IACzD,IAAM,WAAW,GAAG;QAChB,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YAAY,WAAA,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAA;iBAAA,CAAC;QACzD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;;YAAM,OAAA,CAAC;gBACrB,cAAc,EAAE,MAAM;gBACtB,MAAM,YAAI,GAAC,KAAK,IAAG,EAAE,KAAK,EAAE,WAAW,EAAE,KAAE;aAC9C,CAAC;QAHsB,CAGtB,CAAC;KACN,CAAC;IACF,IAAM,OAAO,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YAAY,WAAA,KAAK,EAAA;iBAAA,CAAC,EAAE,CAAC;IAC3D,IAAM,OAAO,GAAQ,EAAE,yBAAyB,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAC/F,IAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACtE,IAAM,OAAO,GAAG;QACZ,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAC,CAAS,IAAK,OAAA,OAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;QAC7C,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;YAAY,WAAA,MAAM,EAAA;iBAAA,CAAC;KACzC,CAAC;IACF,IAAM,GAAG,GAAQ;QACb,MAAM,EAAE,EAAE,UAAU,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,WAAA,EAAE;QACjF,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;KAC/B,CAAC;IACF,OAAO,EAAE,OAAO,SAAA,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,WAAW,aAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG;IACjB,IAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,IAAM,GAAG,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAA3B,CAA2B,CAAC;IACvD,OAAO,UAAG,CAAC,CAAC,WAAW,EAAE,SAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAE,CAAC;AAC3E,CAAC,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE;IACzB,SAAS,CAAC;QACN,OAAQ,eAAa,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE;;;;;;oBAC1C,eAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;wBAAY,WAAA,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA;6BAAA,CAAC,CAAC;oBAC1E,MAAM,WAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,IAAE,GAAC,KAAK,IAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAE,CAAC;oBAClE,KAAK,GAAG;wBACV,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;wBAC1C,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;qBAC7C,CAAC;oBACI,KAAmB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAvC,OAAO,aAAA,EAAE,GAAG,SAAA,CAA4B;oBAEzB,WAAM,mCAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAA;;oBAAlE,MAAM,GAAW,SAAiD;oBAGxE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAE7B,MAAM,CAAE,eAAa,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAEpD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACjD,EAAE,GAAW,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC9D,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBAClD,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC3B,MAAM,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0DAAqB,YAAY,EAAE,SAAM,CAAC,CAAC;;;;SACzF,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE;;;;;;oBACjB,eAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;wBAAY,WAAA,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA;6BAAA,CAAC,CAAC;oBACjE,MAAM,WAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,IAAE,GAAC,KAAK,IAAG,IAAI,KAAE,CAAC;oBAC1D,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;oBACxD,KAAmB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAvC,OAAO,aAAA,EAAE,GAAG,SAAA,CAA4B;oBAEzB,WAAM,mCAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAA;;oBAAlE,MAAM,GAAW,SAAiD;oBAExE,MAAM,CAAE,eAAa,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBACpD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;SAChC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;;;;;;oBACtB,eAAa,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE;yBACzB,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;yBAClD,qBAAqB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxC,MAAM,WAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,IAAE,GAAC,KAAK,IAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAE,CAAC;oBAClE,KAAK,GAAG;wBACV,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;wBAC7C,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;qBAC/C,CAAC;oBACI,KAA2B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAA/C,OAAO,aAAA,EAAE,GAAG,SAAA,EAAE,MAAM,YAAA,CAA4B;oBAEjC,WAAM,mCAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAA;;oBAAlE,MAAM,GAAW,SAAiD;oBAExE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACxC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;;;SAC1D,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE;;;;;;oBACJ,MAAM,WAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,IAAE,GAAC,KAAK,IAAG,EAAE,KAAE,CAAC;oBACxD,KAAmB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAApC,OAAO,aAAA,EAAE,GAAG,SAAA,CAAyB;oBAC7C,WAAM,MAAM,CAAC,mCAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAA;;oBAAxF,SAAwF,CAAC;;;;SAC5F,CAAC,CAAC;IAEH,EAAE,CAAC,UAAU,EAAE;;;;;oBACL,KAAmB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAlC,OAAO,aAAA,EAAE,GAAG,SAAA,CAAuB;oBAC3C,WAAM,MAAM,CAAC,mCAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAA;;oBAAlF,SAAkF,CAAC;;;;SACtF,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const setApprovalCc: {
2
+ rest: {
3
+ method: string;
4
+ fullPath: string;
5
+ };
6
+ handler(ctx: any): Promise<any>;
7
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setApprovalCc = void 0;
4
+ var tslib_1 = require("tslib");
5
+ exports.setApprovalCc = {
6
+ rest: {
7
+ method: 'POST',
8
+ fullPath: '/api/pepsico-content/approve/cc/:recordId'
9
+ },
10
+ handler: function (ctx) {
11
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
12
+ var logger, ccUsers;
13
+ return tslib_1.__generator(this, function (_a) {
14
+ switch (_a.label) {
15
+ case 0:
16
+ ctx.getObject = this.getObject;
17
+ return [4, this.getLogger()];
18
+ case 1:
19
+ logger = _a.sent();
20
+ ctx.logger = logger;
21
+ ccUsers = ctx.params.cc_users || ctx.params.ccUsers || [];
22
+ if (typeof ccUsers === 'string') {
23
+ ccUsers = ccUsers.split(',').map(function (s) { return s.trim(); }).filter(Boolean);
24
+ }
25
+ else if (!Array.isArray(ccUsers)) {
26
+ ccUsers = [ccUsers];
27
+ }
28
+ return [4, this.setApprovalCcUsers(ctx, ctx.params.recordId, ccUsers)];
29
+ case 2: return [2, _a.sent()];
30
+ }
31
+ });
32
+ });
33
+ }
34
+ };
35
+ //# sourceMappingURL=approvalCc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvalCc.js","sourceRoot":"","sources":["../../src/actions/approvalCc.ts"],"names":[],"mappings":";;;;AAAa,QAAA,aAAa,GAAG;IACzB,IAAI,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,2CAA2C;KACxD;IACK,OAAO,YAAC,GAAG;;;;;;wBACb,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAChB,WAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAA/B,MAAM,GAAG,SAAsB;wBACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBAEhB,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;wBAE9D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;4BAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAE,EAAR,CAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBACrE;6BAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;4BAChC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;yBACvB;wBACM,WAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAA;4BAAvE,WAAO,SAAgE,EAAC;;;;KAC3E;CACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ export declare const downloadFieldZip: {
4
+ rest: {
5
+ method: string;
6
+ fullPath: string;
7
+ };
8
+ handler(ctx: any): Promise<Buffer>;
9
+ };
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadFieldZip = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var axios_1 = require("axios");
6
+ var _ = require("lodash");
7
+ var archiver = require('archiver');
8
+ function sanitizeName(name) {
9
+ return String(name == null ? '' : name)
10
+ .replace(/[\/\\:*?"<>|\r\n\t]/g, '_')
11
+ .trim() || '附件';
12
+ }
13
+ function formatDate(date) {
14
+ var pad = function (n) { return (n < 10 ? '0' + n : '' + n); };
15
+ return "".concat(date.getFullYear()).concat(pad(date.getMonth() + 1)).concat(pad(date.getDate()));
16
+ }
17
+ exports.downloadFieldZip = {
18
+ rest: {
19
+ method: 'GET',
20
+ fullPath: '/api/pepsico-content/download/field-zip/:objectName/:recordId/:fieldName'
21
+ },
22
+ handler: function (ctx) {
23
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
24
+ var logger, _a, objectName, recordId, fieldName, obj, records, record, fileIds, files, fileMap, rootUrl, metaUser, requestHeaders, fetchHeaders, archive, chunks, finished, usedNames, added, fileIds_1, fileIds_1_1, fileId, fileRec, rawName, name, dot, base, ext, i, url, resp, error_1, e_1_1, buffer, objConfig, nameFieldKey, recordName, fieldLabel, zipName, encoded;
25
+ var e_1, _b;
26
+ return tslib_1.__generator(this, function (_c) {
27
+ switch (_c.label) {
28
+ case 0:
29
+ ctx.getObject = this.getObject;
30
+ return [4, this.getLogger()];
31
+ case 1:
32
+ logger = _c.sent();
33
+ ctx.logger = logger;
34
+ _a = ctx.params, objectName = _a.objectName, recordId = _a.recordId, fieldName = _a.fieldName;
35
+ obj = ctx.getObject(objectName);
36
+ return [4, obj.directFind({ filters: [['_id', '=', recordId]] })];
37
+ case 2:
38
+ records = _c.sent();
39
+ record = records && records[0];
40
+ if (!record) {
41
+ throw new Error('未找到记录');
42
+ }
43
+ fileIds = record[fieldName];
44
+ if (_.isNil(fileIds) || (_.isArray(fileIds) && fileIds.length === 0)) {
45
+ throw new Error('该字段没有可下载的附件');
46
+ }
47
+ if (!_.isArray(fileIds)) {
48
+ fileIds = [fileIds];
49
+ }
50
+ return [4, ctx.getObject('cfs_files_filerecord').directFind({
51
+ filters: [['_id', 'in', fileIds]]
52
+ })];
53
+ case 3:
54
+ files = _c.sent();
55
+ fileMap = _.keyBy(files, '_id');
56
+ rootUrl = process.env.ROOT_URL || '';
57
+ metaUser = (ctx.meta && ctx.meta.user) || {};
58
+ requestHeaders = (ctx.meta && ctx.meta.requestHeaders) || {};
59
+ fetchHeaders = {};
60
+ if (metaUser.authToken)
61
+ fetchHeaders['X-Auth-Token'] = metaUser.authToken;
62
+ if (metaUser.spaceId)
63
+ fetchHeaders['X-Space-Id'] = metaUser.spaceId;
64
+ if (!fetchHeaders['X-Auth-Token'] && requestHeaders['x-auth-token'])
65
+ fetchHeaders['X-Auth-Token'] = requestHeaders['x-auth-token'];
66
+ if (!fetchHeaders['X-Space-Id'] && requestHeaders['x-space-id'])
67
+ fetchHeaders['X-Space-Id'] = requestHeaders['x-space-id'];
68
+ if (requestHeaders.cookie)
69
+ fetchHeaders.cookie = requestHeaders.cookie;
70
+ archive = archiver('zip', { zlib: { level: 9 } });
71
+ chunks = [];
72
+ archive.on('data', function (chunk) { return chunks.push(chunk); });
73
+ archive.on('warning', function (err) { return logger.warn("[\u5B57\u6BB5\u6253\u5305\u4E0B\u8F7D] \u8B66\u544A: ".concat(err.message), { objectName: objectName, _id: recordId, fieldName: fieldName }); });
74
+ finished = new Promise(function (resolve, reject) {
75
+ archive.on('end', resolve);
76
+ archive.on('error', reject);
77
+ });
78
+ usedNames = new Set();
79
+ added = 0;
80
+ _c.label = 4;
81
+ case 4:
82
+ _c.trys.push([4, 11, 12, 13]);
83
+ fileIds_1 = tslib_1.__values(fileIds), fileIds_1_1 = fileIds_1.next();
84
+ _c.label = 5;
85
+ case 5:
86
+ if (!!fileIds_1_1.done) return [3, 10];
87
+ fileId = fileIds_1_1.value;
88
+ fileRec = fileMap[fileId];
89
+ rawName = sanitizeName(fileRec && fileRec.original && fileRec.original.name ? fileRec.original.name : fileId);
90
+ name = rawName;
91
+ if (usedNames.has(name)) {
92
+ dot = rawName.lastIndexOf('.');
93
+ base = dot > 0 ? rawName.slice(0, dot) : rawName;
94
+ ext = dot > 0 ? rawName.slice(dot) : '';
95
+ i = 1;
96
+ do {
97
+ name = "".concat(base, "(").concat(i, ")").concat(ext);
98
+ i++;
99
+ } while (usedNames.has(name));
100
+ }
101
+ usedNames.add(name);
102
+ _c.label = 6;
103
+ case 6:
104
+ _c.trys.push([6, 8, , 9]);
105
+ url = "".concat(rootUrl, "/api/files/files/").concat(fileId, "?download=true");
106
+ return [4, axios_1.default.get(url, { responseType: 'arraybuffer', headers: fetchHeaders })];
107
+ case 7:
108
+ resp = _c.sent();
109
+ archive.append(Buffer.from(resp.data), { name: name });
110
+ added++;
111
+ return [3, 9];
112
+ case 8:
113
+ error_1 = _c.sent();
114
+ logger.error("[\u5B57\u6BB5\u6253\u5305\u4E0B\u8F7D] \u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25 ".concat(fileId, ": ").concat(error_1.message), { objectName: objectName, _id: recordId, fieldName: fieldName });
115
+ archive.append("\u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25: ".concat(rawName, "\n\u539F\u56E0: ").concat(error_1.message), { name: "".concat(name, ".\u4E0B\u8F7D\u5931\u8D25.txt") });
116
+ return [3, 9];
117
+ case 9:
118
+ fileIds_1_1 = fileIds_1.next();
119
+ return [3, 5];
120
+ case 10: return [3, 13];
121
+ case 11:
122
+ e_1_1 = _c.sent();
123
+ e_1 = { error: e_1_1 };
124
+ return [3, 13];
125
+ case 12:
126
+ try {
127
+ if (fileIds_1_1 && !fileIds_1_1.done && (_b = fileIds_1.return)) _b.call(fileIds_1);
128
+ }
129
+ finally { if (e_1) throw e_1.error; }
130
+ return [7];
131
+ case 13: return [4, archive.finalize()];
132
+ case 14:
133
+ _c.sent();
134
+ return [4, finished];
135
+ case 15:
136
+ _c.sent();
137
+ buffer = Buffer.concat(chunks);
138
+ objConfig = obj.toConfig();
139
+ nameFieldKey = objConfig.NAME_FIELD_KEY || 'name';
140
+ recordName = record[nameFieldKey] || recordId;
141
+ fieldLabel = (objConfig.fields && objConfig.fields[fieldName] && objConfig.fields[fieldName].label) || fieldName;
142
+ zipName = "".concat(sanitizeName(recordName), "_").concat(sanitizeName(fieldLabel), "_").concat(formatDate(new Date()), ".zip");
143
+ encoded = encodeURIComponent(zipName);
144
+ ctx.meta.$responseType = 'application/zip';
145
+ ctx.meta.$responseHeaders = {
146
+ 'Content-Disposition': "attachment; filename=\"".concat(encoded, "\"; filename*=UTF-8''").concat(encoded)
147
+ };
148
+ logger.info("[\u5B57\u6BB5\u6253\u5305\u4E0B\u8F7D] ".concat(zipName, " \u5171 ").concat(added, "/").concat(fileIds.length, " \u4E2A\u6587\u4EF6"), { objectName: objectName, _id: recordId, fieldName: fieldName });
149
+ return [2, buffer];
150
+ }
151
+ });
152
+ });
153
+ }
154
+ };
155
+ //# sourceMappingURL=downloadFieldZip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadFieldZip.js","sourceRoot":"","sources":["../../src/actions/downloadFieldZip.ts"],"names":[],"mappings":";;;;AAKA,+BAA0B;AAC1B,0BAA4B;AAC5B,IAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAGrC,SAAS,YAAY,CAAC,IAAY;IAC9B,OAAO,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC;SACpC,IAAI,EAAE,IAAI,IAAI,CAAC;AACxB,CAAC;AAGD,SAAS,UAAU,CAAC,IAAU;IAC1B,IAAM,GAAG,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAA3B,CAA2B,CAAC;IACvD,OAAO,UAAG,IAAI,CAAC,WAAW,EAAE,SAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAE,CAAC;AACpF,CAAC;AAEY,QAAA,gBAAgB,GAAG;IAC5B,IAAI,EAAE;QACF,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,0EAA0E;KACvF;IACK,OAAO,YAAC,GAAG;;;;;;;wBACb,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;wBAChB,WAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAA/B,MAAM,GAAG,SAAsB;wBACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBAEd,KAAsC,GAAG,CAAC,MAAM,EAA9C,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAE,SAAS,eAAA,CAAgB;wBAGjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;wBACtB,WAAM,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAA;;wBAArE,OAAO,GAAG,SAA2D;wBACrE,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;wBACrC,IAAI,CAAC,MAAM,EAAE;4BACT,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;yBAC5B;wBAGG,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;wBAChC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;4BAClE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;yBAClC;wBACD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;4BACrB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;yBACvB;wBAGa,WAAM,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC;gCACjE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;6BACpC,CAAC,EAAA;;wBAFI,KAAK,GAAG,SAEZ;wBACI,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAIhC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;wBACrC,QAAQ,GAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAClD,cAAc,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;wBAC7D,YAAY,GAAQ,EAAE,CAAC;wBAC7B,IAAI,QAAQ,CAAC,SAAS;4BAAE,YAAY,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;wBAC1E,IAAI,QAAQ,CAAC,OAAO;4BAAE,YAAY,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;wBAEpE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC;4BAAE,YAAY,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;wBACnI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC;4BAAE,YAAY,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;wBAC3H,IAAI,cAAc,CAAC,MAAM;4BAAE,YAAY,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;wBAGjE,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClD,MAAM,GAAa,EAAE,CAAC;wBAC5B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAC;wBAClD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAG,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,+DAAgB,GAAG,CAAC,OAAO,CAAE,EAAE,EAAE,UAAU,YAAA,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,WAAA,EAAE,CAAC,EAApF,CAAoF,CAAC,CAAC;wBAC/G,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;4BACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;4BAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAChC,CAAC,CAAC,CAAC;wBAEG,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;wBAChC,KAAK,GAAG,CAAC,CAAC;;;;wBACO,YAAA,iBAAA,OAAO,CAAA;;;;wBAAjB,MAAM;wBACP,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC1B,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAEhH,IAAI,GAAG,OAAO,CAAC;wBACnB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACf,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;4BAC/B,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;4BACjD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC1C,CAAC,GAAG,CAAC,CAAC;4BACV,GAAG;gCAAE,IAAI,GAAG,UAAG,IAAI,cAAI,CAAC,cAAI,GAAG,CAAE,CAAC;gCAAC,CAAC,EAAE,CAAC;6BAAE,QAAQ,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;yBACzE;wBACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;;;wBAGV,GAAG,GAAG,UAAG,OAAO,8BAAoB,MAAM,mBAAgB,CAAC;wBACpD,WAAM,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAA;;wBAAnF,IAAI,GAAG,SAA4E;wBACzF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;wBACjD,KAAK,EAAE,CAAC;;;;wBAER,MAAM,CAAC,KAAK,CAAC,sFAAmB,MAAM,eAAK,OAAK,CAAC,OAAO,CAAE,EAAE,EAAE,UAAU,YAAA,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;wBACtG,OAAO,CAAC,MAAM,CAAC,gDAAW,OAAO,6BAAS,OAAK,CAAC,OAAO,CAAE,EAAE,EAAE,IAAI,EAAE,UAAG,IAAI,kCAAW,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;6BAIjG,WAAM,OAAO,CAAC,QAAQ,EAAE,EAAA;;wBAAxB,SAAwB,CAAC;wBACzB,WAAM,QAAQ,EAAA;;wBAAd,SAAc,CAAC;wBACT,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAG/B,SAAS,GAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAChC,YAAY,GAAG,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC;wBAClD,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC;wBAC9C,UAAU,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;wBACjH,OAAO,GAAG,UAAG,YAAY,CAAC,UAAU,CAAC,cAAI,YAAY,CAAC,UAAU,CAAC,cAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,SAAM,CAAC;wBAClG,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAE5C,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;wBAC3C,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG;4BACxB,qBAAqB,EAAE,iCAAyB,OAAO,kCAAuB,OAAO,CAAE;yBAC1F,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,iDAAY,OAAO,qBAAM,KAAK,cAAI,OAAO,CAAC,MAAM,wBAAM,EAAE,EAAE,UAAU,YAAA,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;wBAC9G,WAAO,MAAM,EAAC;;;;KACjB;CACJ,CAAC"}
@@ -25,3 +25,4 @@ export * from './postponeReview';
25
25
  export * from './urgentApproval';
26
26
  export * from './initUrgentQuota';
27
27
  export * from './initCollaborator';
28
+ export * from './approvalCc';
@@ -28,4 +28,5 @@ tslib_1.__exportStar(require("./postponeReview"), exports);
28
28
  tslib_1.__exportStar(require("./urgentApproval"), exports);
29
29
  tslib_1.__exportStar(require("./initUrgentQuota"), exports);
30
30
  tslib_1.__exportStar(require("./initCollaborator"), exports);
31
+ tslib_1.__exportStar(require("./approvalCc"), exports);
31
32
  //# 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;AAElC,6DAAmC"}
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;AAEnC,uDAA6B"}
package/lib/index.js CHANGED
@@ -771,6 +771,163 @@ module.exports = {
771
771
  });
772
772
  });
773
773
  }
774
+ }, backfillPLSFileTitles: {
775
+ rest: {
776
+ method: 'GET',
777
+ fullPath: '/api/pepsico-content/pls-file/backfill-title'
778
+ },
779
+ handler: function (ctx) {
780
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
781
+ var user, logger, result;
782
+ return tslib_1.__generator(this, function (_a) {
783
+ switch (_a.label) {
784
+ case 0:
785
+ user = ctx.meta.user;
786
+ if (user && !user.is_space_admin) {
787
+ return [2, { error: '没有权限' }];
788
+ }
789
+ return [4, this.getLogger()];
790
+ case 1:
791
+ logger = _a.sent();
792
+ ctx.getObject = this.getObject;
793
+ ctx.logger = logger;
794
+ return [4, (0, pls_1.backfillPLSFileTitles)(ctx)];
795
+ case 2:
796
+ result = _a.sent();
797
+ return [2, {
798
+ '历史记录总数': result.total,
799
+ '更新标题数量': result.updated,
800
+ '跳过数量': result.skipped
801
+ }];
802
+ }
803
+ });
804
+ });
805
+ }
806
+ }, resetPLSFileAIExtract: {
807
+ rest: {
808
+ method: 'GET',
809
+ fullPath: '/api/pepsico-content/pls-file/reset-ai-extract'
810
+ },
811
+ handler: function (ctx) {
812
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
813
+ var user, logger, result;
814
+ return tslib_1.__generator(this, function (_a) {
815
+ switch (_a.label) {
816
+ case 0:
817
+ user = ctx.meta.user;
818
+ if (user && !user.is_space_admin) {
819
+ return [2, { error: '没有权限' }];
820
+ }
821
+ return [4, this.getLogger()];
822
+ case 1:
823
+ logger = _a.sent();
824
+ ctx.getObject = this.getObject;
825
+ ctx.logger = logger;
826
+ return [4, (0, pls_1.resetPLSFileAIExtract)(ctx)];
827
+ case 2:
828
+ result = _a.sent();
829
+ return [2, {
830
+ '记录总数': result.total,
831
+ '重置数量': result.updated
832
+ }];
833
+ }
834
+ });
835
+ });
836
+ }
837
+ }, batchCreatePLSFiles: {
838
+ rest: {
839
+ method: 'POST',
840
+ fullPath: '/api/pepsico-content/pls-file/batch-upload'
841
+ },
842
+ handler: function (ctx) {
843
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
844
+ var user, _a, rawFileIds, fileIds, result;
845
+ return tslib_1.__generator(this, function (_b) {
846
+ switch (_b.label) {
847
+ case 0:
848
+ user = ctx.meta.user;
849
+ if (!user || !user.userId) {
850
+ return [2, { error: '请先登录' }];
851
+ }
852
+ ctx.getObject = this.getObject;
853
+ _a = ctx;
854
+ return [4, this.getLogger()];
855
+ case 1:
856
+ _a.logger = _b.sent();
857
+ rawFileIds = ctx.params.fileIds || ctx.params.files;
858
+ fileIds = _.isString(rawFileIds) ? rawFileIds.split(',') : (rawFileIds || []);
859
+ return [4, (0, pls_1.batchCreatePLSFiles)(ctx, fileIds)];
860
+ case 2:
861
+ result = _b.sent();
862
+ return [2, result];
863
+ }
864
+ });
865
+ });
866
+ }
867
+ }, setPLSFileActive: {
868
+ rest: {
869
+ method: 'POST',
870
+ fullPath: '/api/pepsico-content/pls-file/set-active'
871
+ },
872
+ handler: function (ctx) {
873
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
874
+ var user, _a, _b, id, active, result;
875
+ return tslib_1.__generator(this, function (_c) {
876
+ switch (_c.label) {
877
+ case 0:
878
+ user = ctx.meta.user;
879
+ if (!user || !user.userId) {
880
+ return [2, { error: '请先登录' }];
881
+ }
882
+ ctx.getObject = this.getObject;
883
+ _a = ctx;
884
+ return [4, this.getLogger()];
885
+ case 1:
886
+ _a.logger = _c.sent();
887
+ _b = ctx.params, id = _b.id, active = _b.active;
888
+ if (!id) {
889
+ return [2, { error: '缺少记录ID' }];
890
+ }
891
+ return [4, (0, pls_1.setPLSFileActive)(ctx, id, active === true || active === 'true')];
892
+ case 2:
893
+ result = _c.sent();
894
+ return [2, result];
895
+ }
896
+ });
897
+ });
898
+ }
899
+ }, extractPLSRules: {
900
+ rest: {
901
+ method: 'POST',
902
+ fullPath: '/api/pepsico-content/pls-file/extract-rules'
903
+ },
904
+ handler: function (ctx) {
905
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
906
+ var user, _a, id, result;
907
+ return tslib_1.__generator(this, function (_b) {
908
+ switch (_b.label) {
909
+ case 0:
910
+ user = ctx.meta.user;
911
+ if (!user || !user.userId) {
912
+ return [2, { error: '请先登录' }];
913
+ }
914
+ ctx.getObject = this.getObject;
915
+ _a = ctx;
916
+ return [4, this.getLogger()];
917
+ case 1:
918
+ _a.logger = _b.sent();
919
+ id = ctx.params.id;
920
+ if (!id) {
921
+ return [2, { error: '缺少记录ID' }];
922
+ }
923
+ return [4, (0, pls_1.callExtractPLSRules)(ctx, id)];
924
+ case 2:
925
+ result = _b.sent();
926
+ return [2, result];
927
+ }
928
+ });
929
+ });
930
+ }
774
931
  }, scanInactiveUsers: {
775
932
  rest: {
776
933
  method: 'GET',