@steedos-labs/content-compliance 1.0.1 → 1.0.3
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.
- package/dist/index.js +1 -1
- package/lib/actions/contentHubFillOnSave.d.ts +5 -0
- package/lib/actions/contentHubFillOnSave.js +49 -0
- package/lib/actions/contentHubFillOnSave.js.map +1 -0
- package/lib/actions/contentHubMaterialGroups.js +19 -35
- package/lib/actions/contentHubMaterialGroups.js.map +1 -1
- package/lib/actions/contentHubSyncPreview.d.ts +9 -4
- package/lib/actions/contentHubSyncPreview.js +23 -19
- package/lib/actions/contentHubSyncPreview.js.map +1 -1
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +1 -0
- package/lib/actions/index.js.map +1 -1
- package/lib/index.js +35 -110
- package/lib/index.js.map +1 -1
- package/lib/methods/__tests__/contentHubFormFill.test.d.ts +1 -0
- package/lib/methods/__tests__/contentHubFormFill.test.js +274 -0
- package/lib/methods/__tests__/contentHubFormFill.test.js.map +1 -0
- package/lib/methods/__tests__/contentHubPush.test.js +211 -6
- package/lib/methods/__tests__/contentHubPush.test.js.map +1 -1
- package/lib/methods/__tests__/contentHubSyncRule.test.js +37 -5
- package/lib/methods/__tests__/contentHubSyncRule.test.js.map +1 -1
- package/lib/methods/__tests__/contentHubTagSync.test.js +21 -57
- package/lib/methods/__tests__/contentHubTagSync.test.js.map +1 -1
- package/lib/methods/content_hub.js +13 -3
- package/lib/methods/content_hub.js.map +1 -1
- package/lib/methods/content_hub_form_fill.d.ts +2 -0
- package/lib/methods/content_hub_form_fill.js +75 -0
- package/lib/methods/content_hub_form_fill.js.map +1 -0
- package/lib/methods/content_hub_material_group.d.ts +1 -0
- package/lib/methods/content_hub_material_group.js +14 -1
- package/lib/methods/content_hub_material_group.js.map +1 -1
- package/lib/methods/content_hub_material_group_rule.d.ts +9 -0
- package/lib/methods/content_hub_material_group_rule.js +62 -1
- package/lib/methods/content_hub_material_group_rule.js.map +1 -1
- package/lib/methods/content_hub_sync_rule.d.ts +13 -0
- package/lib/methods/content_hub_sync_rule.js +49 -13
- package/lib/methods/content_hub_sync_rule.js.map +1 -1
- package/lib/methods/content_hub_tag.d.ts +0 -5
- package/lib/methods/content_hub_tag.js +47 -207
- package/lib/methods/content_hub_tag.js.map +1 -1
- package/lib/methods/content_hub_uploader.d.ts +24 -0
- package/lib/methods/content_hub_uploader.js +282 -0
- package/lib/methods/content_hub_uploader.js.map +1 -0
- package/main/default/objects/pepsico_ch_sync_rule/fields/kol_classification.field.yml +1 -1
- package/main/default/objects/pepsico_ch_tag_sync_log/fields/expired_date.field.yml +1 -0
- package/main/default/objects/pepsico_material_approval/fields/ch_material_group.field.yml +5 -12
- package/main/default/objects/pepsico_material_approval/fields/ch_material_group_path.field.yml +8 -4
- package/main/default/objects/pepsico_material_approval/fields/ch_sync_enabled.field.yml +10 -0
- package/main/default/objects/pepsico_material_approval/fields/ch_sync_manual.field.yml +12 -0
- package/main/default/objects/pepsico_material_approval/fields/ch_sync_rule_check.field.yml +13 -16
- package/main/default/objects/pepsico_material_approval/fields/ch_uploader_notified_group.field.yml +11 -0
- package/main/default/triggers/pepsico_material_approval_content_hub.trigger.yml +32 -0
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const CONTENT_HUB_UPLOADER_LOG_NAME = "Content Hub\u4E0A\u4F20\u6388\u6743";
|
|
2
|
+
export type UploaderRecipient = {
|
|
3
|
+
email: string;
|
|
4
|
+
role: '发起人' | 'Agency';
|
|
5
|
+
userId?: string;
|
|
6
|
+
};
|
|
7
|
+
export type UploaderPermissionRow = {
|
|
8
|
+
email: string;
|
|
9
|
+
accountStatus?: string;
|
|
10
|
+
workspaceMemberStatus?: string;
|
|
11
|
+
materialGroupId?: string;
|
|
12
|
+
materialGroupPath?: string;
|
|
13
|
+
permissionStatus?: string;
|
|
14
|
+
effectiveScope?: string | null;
|
|
15
|
+
};
|
|
16
|
+
export declare const getUploaderRecipients: (ctx: any, approval: any) => Promise<UploaderRecipient[]>;
|
|
17
|
+
export declare const buildW1Body: (emails: string[], materialGroupIds: string[]) => string;
|
|
18
|
+
export declare const parseW1Response: (text: any) => any;
|
|
19
|
+
export declare const requestUploaderPermission: (token: string, emails: string[], materialGroupIds: string[], trace?: any) => Promise<any>;
|
|
20
|
+
export declare const buildUploaderEmail: (approval: any, path: string, row?: UploaderPermissionRow) => {
|
|
21
|
+
subject: string;
|
|
22
|
+
html: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const grantUploaderAndNotify: (ctx: any, approval: any, materialGroupIds: string[], getToken: () => Promise<string>) => Promise<void>;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.grantUploaderAndNotify = exports.buildUploaderEmail = exports.requestUploaderPermission = exports.parseW1Response = exports.buildW1Body = exports.getUploaderRecipients = exports.CONTENT_HUB_UPLOADER_LOG_NAME = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var axios_1 = require("axios");
|
|
6
|
+
var _ = require("lodash");
|
|
7
|
+
var pls_1 = require("./pls");
|
|
8
|
+
exports.CONTENT_HUB_UPLOADER_LOG_NAME = 'Content Hub上传授权';
|
|
9
|
+
var newRequestId = function () {
|
|
10
|
+
var crypto = require('crypto');
|
|
11
|
+
return crypto.randomUUID ? crypto.randomUUID() : "".concat(Date.now(), "-").concat(Math.random().toString(16).slice(2));
|
|
12
|
+
};
|
|
13
|
+
var normalizeEmail = function (email) { return (_.isString(email) ? email.trim().toLowerCase() : ''); };
|
|
14
|
+
var getUploaderRecipients = function (ctx, approval) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
15
|
+
var spaceUsers, creatorId, recipients, byUser, collaboratorId, rows, initiator, agency, initiator;
|
|
16
|
+
return tslib_1.__generator(this, function (_a) {
|
|
17
|
+
switch (_a.label) {
|
|
18
|
+
case 0:
|
|
19
|
+
spaceUsers = ctx.getObject('space_users');
|
|
20
|
+
creatorId = approval.created_by || approval.owner;
|
|
21
|
+
recipients = [];
|
|
22
|
+
byUser = function (userId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
23
|
+
var rows;
|
|
24
|
+
return tslib_1.__generator(this, function (_a) {
|
|
25
|
+
switch (_a.label) {
|
|
26
|
+
case 0:
|
|
27
|
+
if (!userId) {
|
|
28
|
+
return [2, null];
|
|
29
|
+
}
|
|
30
|
+
return [4, spaceUsers.directFind({
|
|
31
|
+
filters: [['user', '=', userId], ['space', '=', approval.space]],
|
|
32
|
+
fields: ['user', 'email'],
|
|
33
|
+
top: 1
|
|
34
|
+
})];
|
|
35
|
+
case 1:
|
|
36
|
+
rows = _a.sent();
|
|
37
|
+
return [2, rows && rows[0]];
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}); };
|
|
41
|
+
if (!(approval.is_external === true)) return [3, 4];
|
|
42
|
+
collaboratorId = _.isPlainObject(approval.internal_collaborator) ? approval.internal_collaborator._id : approval.internal_collaborator;
|
|
43
|
+
if (!collaboratorId) return [3, 2];
|
|
44
|
+
return [4, spaceUsers.directFind({ filters: [['_id', '=', collaboratorId]], fields: ['user', 'email'], top: 1 })];
|
|
45
|
+
case 1:
|
|
46
|
+
rows = _a.sent();
|
|
47
|
+
initiator = rows && rows[0];
|
|
48
|
+
if (initiator && initiator.email) {
|
|
49
|
+
recipients.push({ email: initiator.email, role: '发起人', userId: initiator.user });
|
|
50
|
+
}
|
|
51
|
+
_a.label = 2;
|
|
52
|
+
case 2: return [4, byUser(creatorId)];
|
|
53
|
+
case 3:
|
|
54
|
+
agency = _a.sent();
|
|
55
|
+
if (agency && agency.email) {
|
|
56
|
+
recipients.push({ email: agency.email, role: 'Agency', userId: agency.user });
|
|
57
|
+
}
|
|
58
|
+
return [3, 6];
|
|
59
|
+
case 4: return [4, byUser(approval.owner || creatorId)];
|
|
60
|
+
case 5:
|
|
61
|
+
initiator = _a.sent();
|
|
62
|
+
if (initiator && initiator.email) {
|
|
63
|
+
recipients.push({ email: initiator.email, role: '发起人', userId: initiator.user });
|
|
64
|
+
}
|
|
65
|
+
_a.label = 6;
|
|
66
|
+
case 6: return [2, _.uniqBy(_.filter(recipients, function (r) { return !!normalizeEmail(r.email); }), function (r) { return normalizeEmail(r.email); })];
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}); };
|
|
70
|
+
exports.getUploaderRecipients = getUploaderRecipients;
|
|
71
|
+
var buildW1Body = function (emails, materialGroupIds) {
|
|
72
|
+
var ids = _.uniq(_.map(materialGroupIds, String));
|
|
73
|
+
if (_.some(ids, function (id) { return !/^\d+$/.test(id); })) {
|
|
74
|
+
throw new Error("\u7D20\u6750\u7EC4 ID \u4E0D\u5408\u6CD5: ".concat(ids.join(',')));
|
|
75
|
+
}
|
|
76
|
+
return "{\"email\":".concat(JSON.stringify(_.uniq(_.compact(_.map(emails, normalizeEmail)))), ",\"materialGroupIdList\":[").concat(ids.join(','), "]}");
|
|
77
|
+
};
|
|
78
|
+
exports.buildW1Body = buildW1Body;
|
|
79
|
+
var parseW1Response = function (text) {
|
|
80
|
+
if (!_.isString(text)) {
|
|
81
|
+
return text;
|
|
82
|
+
}
|
|
83
|
+
return JSON.parse(text.replace(/("materialGroupId"\s*:\s*)(\d+)/g, '$1"$2"'));
|
|
84
|
+
};
|
|
85
|
+
exports.parseW1Response = parseW1Response;
|
|
86
|
+
var requestUploaderPermission = function (token, emails, materialGroupIds, trace) {
|
|
87
|
+
if (trace === void 0) { trace = {}; }
|
|
88
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
89
|
+
var body, requestId, result, error_1;
|
|
90
|
+
return tslib_1.__generator(this, function (_a) {
|
|
91
|
+
switch (_a.label) {
|
|
92
|
+
case 0:
|
|
93
|
+
body = (0, exports.buildW1Body)(emails, materialGroupIds);
|
|
94
|
+
requestId = newRequestId();
|
|
95
|
+
trace.request = {
|
|
96
|
+
url: '/creativeSaas/pepsico/compliance/v1/editable-material/uploader-permission',
|
|
97
|
+
request_id: requestId,
|
|
98
|
+
body: body
|
|
99
|
+
};
|
|
100
|
+
_a.label = 1;
|
|
101
|
+
case 1:
|
|
102
|
+
_a.trys.push([1, 3, , 4]);
|
|
103
|
+
return [4, axios_1.default.post("".concat(process.env.PEPSICO_CONTENT_HUB_BASE_URL).concat(trace.request.url), body, {
|
|
104
|
+
headers: {
|
|
105
|
+
'tenant-access-token': token,
|
|
106
|
+
'X-Request-Id': requestId,
|
|
107
|
+
'Content-Type': 'application/json; charset=UTF-8'
|
|
108
|
+
},
|
|
109
|
+
timeout: 30000,
|
|
110
|
+
transformResponse: [function (data) { return data; }]
|
|
111
|
+
})];
|
|
112
|
+
case 2:
|
|
113
|
+
result = _a.sent();
|
|
114
|
+
trace.response = (0, exports.parseW1Response)(result.data);
|
|
115
|
+
return [2, trace.response];
|
|
116
|
+
case 3:
|
|
117
|
+
error_1 = _a.sent();
|
|
118
|
+
if (error_1 && error_1.response) {
|
|
119
|
+
trace.http_status = error_1.response.status;
|
|
120
|
+
try {
|
|
121
|
+
trace.response = (0, exports.parseW1Response)(error_1.response.data);
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
trace.response = error_1.response.data;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
throw error_1;
|
|
128
|
+
case 4: return [2];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
exports.requestUploaderPermission = requestUploaderPermission;
|
|
134
|
+
var escapeHtml = function (text) { return String(text == null ? '' : text)
|
|
135
|
+
.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); };
|
|
136
|
+
var buildUploaderEmail = function (approval, path, row) {
|
|
137
|
+
var webUrl = process.env.PEPSICO_CONTENT_HUB_WEB_URL;
|
|
138
|
+
path = String(path || '').split('|').map(function (name) { return name.trim(); }).join(' > ');
|
|
139
|
+
var ssoPending = row && row.accountStatus === 'SSO_PENDING';
|
|
140
|
+
var subject = "\u3010Content Hub\u3011\u8BF7\u4E0A\u4F20\u53EF\u7F16\u8F91\u7D20\u6750: ".concat(approval.name);
|
|
141
|
+
var html = "\n <p>\u60A8\u597D\uFF0C</p>\n <p>\u5BA1\u6279\u5355\u300C".concat(escapeHtml(approval.name), "\u300D\u7684\u7D20\u6750\u5DF2\u540C\u6B65\u5230 Content Hub\uFF0C\u5B58\u653E\u4F4D\u7F6E\uFF1A</p>\n <p><b>").concat(escapeHtml(path), "</b></p>\n <p>\u8BF7\u767B\u5F55 Content Hub\uFF0C\u5728\u4E0A\u8FF0\u76EE\u5F55\u4E0A\u4F20\u8BE5\u6279\u7D20\u6750\u7684\u53EF\u7F16\u8F91\u7248\u672C\uFF08\u5982 PSD / PSB \u7B49\u6E90\u6587\u4EF6\uFF09\u3002\u60A8\u5DF2\u88AB\u6388\u4E88\u8BE5\u76EE\u5F55\u7684\u4E0A\u4F20\u6743\u9650\u3002</p>\n ").concat(ssoPending ? '<p>您是首次使用 Content Hub,请先通过公司 SSO 登录一次以完成账号开通。</p>' : '', "\n ").concat(webUrl ? "<p><a href=\"".concat(escapeHtml(webUrl), "\">\u6253\u5F00 Content Hub</a></p>") : '', "\n <p>\u5BA1\u6279\u5355\uFF1A<a href=\"").concat(process.env.ROOT_URL, "/app/pepsico_content_review/pepsico_material_approval/view/").concat(approval._id, "\">").concat(escapeHtml(approval.name), "</a></p>\n <p>\u6709\u4EFB\u4F55\u7591\u95EE\uFF0C\u8BF7\u8054\u7CFB\u7CFB\u7EDF\u7BA1\u7406\u5458\u3002</p>\n ");
|
|
142
|
+
return { subject: subject, html: html };
|
|
143
|
+
};
|
|
144
|
+
exports.buildUploaderEmail = buildUploaderEmail;
|
|
145
|
+
var grantUploaderAndNotify = function (ctx, approval, materialGroupIds, getToken) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
146
|
+
var groupKey, log, recipients, response, _a, rows, emailed, notEmailed, _loop_1, recipients_1, recipients_1_1, recipient, e_1_1, error_2, e_2;
|
|
147
|
+
var e_1, _b;
|
|
148
|
+
return tslib_1.__generator(this, function (_c) {
|
|
149
|
+
switch (_c.label) {
|
|
150
|
+
case 0:
|
|
151
|
+
groupKey = _.sortBy(_.map(materialGroupIds, String)).join(',');
|
|
152
|
+
log = {
|
|
153
|
+
action: 'content-hub-uploader-permission',
|
|
154
|
+
approval_id: approval._id,
|
|
155
|
+
approval_name: approval.name,
|
|
156
|
+
material_group_ids: materialGroupIds
|
|
157
|
+
};
|
|
158
|
+
_c.label = 1;
|
|
159
|
+
case 1:
|
|
160
|
+
_c.trys.push([1, 19, , 24]);
|
|
161
|
+
if (!groupKey) {
|
|
162
|
+
return [2];
|
|
163
|
+
}
|
|
164
|
+
if (approval.ch_uploader_notified_group === groupKey) {
|
|
165
|
+
return [2];
|
|
166
|
+
}
|
|
167
|
+
return [4, (0, exports.getUploaderRecipients)(ctx, approval)];
|
|
168
|
+
case 2:
|
|
169
|
+
recipients = _c.sent();
|
|
170
|
+
log.recipients = recipients.map(function (r) { return ({ email: r.email, role: r.role }); });
|
|
171
|
+
if (!(recipients.length === 0)) return [3, 4];
|
|
172
|
+
log.status = 'skipped';
|
|
173
|
+
log.reason = '取不到发起人 / Agency 的邮箱';
|
|
174
|
+
return [4, (0, pls_1.writeSystemLog)(ctx, 'info', log, exports.CONTENT_HUB_UPLOADER_LOG_NAME, approval.space)];
|
|
175
|
+
case 3:
|
|
176
|
+
_c.sent();
|
|
177
|
+
return [2];
|
|
178
|
+
case 4:
|
|
179
|
+
_a = exports.requestUploaderPermission;
|
|
180
|
+
return [4, getToken()];
|
|
181
|
+
case 5: return [4, _a.apply(void 0, [_c.sent(), _.map(recipients, 'email'), materialGroupIds, log])];
|
|
182
|
+
case 6:
|
|
183
|
+
response = _c.sent();
|
|
184
|
+
if (!(!response || response.success !== true || response.code !== 200)) return [3, 8];
|
|
185
|
+
log.status = 'failed';
|
|
186
|
+
log.error = (response && (response.msg || response.message)) || 'W1 调用失败';
|
|
187
|
+
return [4, (0, pls_1.writeSystemLog)(ctx, 'error', log, exports.CONTENT_HUB_UPLOADER_LOG_NAME, approval.space)];
|
|
188
|
+
case 7:
|
|
189
|
+
_c.sent();
|
|
190
|
+
return [2];
|
|
191
|
+
case 8:
|
|
192
|
+
rows = response.data || [];
|
|
193
|
+
emailed = [];
|
|
194
|
+
notEmailed = [];
|
|
195
|
+
_loop_1 = function (recipient) {
|
|
196
|
+
var mine, usable, row, path, _d, subject, html, error_3;
|
|
197
|
+
return tslib_1.__generator(this, function (_e) {
|
|
198
|
+
switch (_e.label) {
|
|
199
|
+
case 0:
|
|
200
|
+
mine = _.filter(rows, function (row) { return normalizeEmail(row.email) === normalizeEmail(recipient.email); });
|
|
201
|
+
usable = _.filter(mine, function (row) { return row.accountStatus !== 'FAILED' && row.permissionStatus !== 'FAILED'; });
|
|
202
|
+
if (mine.length > 0 && usable.length === 0) {
|
|
203
|
+
notEmailed.push({ email: recipient.email, reason: '账号或授权失败', rows: mine });
|
|
204
|
+
return [2, "continue"];
|
|
205
|
+
}
|
|
206
|
+
row = usable[0];
|
|
207
|
+
path = _.uniq(_.compact(_.map(usable, 'materialGroupPath'))).join(';') || approval.ch_material_group_path || '';
|
|
208
|
+
_d = (0, exports.buildUploaderEmail)(approval, path, row), subject = _d.subject, html = _d.html;
|
|
209
|
+
_e.label = 1;
|
|
210
|
+
case 1:
|
|
211
|
+
_e.trys.push([1, 3, , 4]);
|
|
212
|
+
return [4, ctx.broker.call('@builder6/email.send', { to: recipient.email, subject: subject, html: html })];
|
|
213
|
+
case 2:
|
|
214
|
+
_e.sent();
|
|
215
|
+
emailed.push(recipient.email);
|
|
216
|
+
return [3, 4];
|
|
217
|
+
case 3:
|
|
218
|
+
error_3 = _e.sent();
|
|
219
|
+
notEmailed.push({ email: recipient.email, reason: "\u53D1\u9001\u90AE\u4EF6\u5931\u8D25: ".concat(error_3.message) });
|
|
220
|
+
return [3, 4];
|
|
221
|
+
case 4: return [2];
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
_c.label = 9;
|
|
226
|
+
case 9:
|
|
227
|
+
_c.trys.push([9, 14, 15, 16]);
|
|
228
|
+
recipients_1 = tslib_1.__values(recipients), recipients_1_1 = recipients_1.next();
|
|
229
|
+
_c.label = 10;
|
|
230
|
+
case 10:
|
|
231
|
+
if (!!recipients_1_1.done) return [3, 13];
|
|
232
|
+
recipient = recipients_1_1.value;
|
|
233
|
+
return [5, _loop_1(recipient)];
|
|
234
|
+
case 11:
|
|
235
|
+
_c.sent();
|
|
236
|
+
_c.label = 12;
|
|
237
|
+
case 12:
|
|
238
|
+
recipients_1_1 = recipients_1.next();
|
|
239
|
+
return [3, 10];
|
|
240
|
+
case 13: return [3, 16];
|
|
241
|
+
case 14:
|
|
242
|
+
e_1_1 = _c.sent();
|
|
243
|
+
e_1 = { error: e_1_1 };
|
|
244
|
+
return [3, 16];
|
|
245
|
+
case 15:
|
|
246
|
+
try {
|
|
247
|
+
if (recipients_1_1 && !recipients_1_1.done && (_b = recipients_1.return)) _b.call(recipients_1);
|
|
248
|
+
}
|
|
249
|
+
finally { if (e_1) throw e_1.error; }
|
|
250
|
+
return [7];
|
|
251
|
+
case 16:
|
|
252
|
+
log.emailed = emailed;
|
|
253
|
+
log.not_emailed = notEmailed;
|
|
254
|
+
log.status = notEmailed.length > 0 ? 'partial' : 'done';
|
|
255
|
+
return [4, ctx.getObject('pepsico_material_approval').directUpdate(approval._id, { ch_uploader_notified_group: groupKey })];
|
|
256
|
+
case 17:
|
|
257
|
+
_c.sent();
|
|
258
|
+
return [4, (0, pls_1.writeSystemLog)(ctx, notEmailed.length > 0 ? 'error' : 'info', log, exports.CONTENT_HUB_UPLOADER_LOG_NAME, approval.space)];
|
|
259
|
+
case 18:
|
|
260
|
+
_c.sent();
|
|
261
|
+
return [3, 24];
|
|
262
|
+
case 19:
|
|
263
|
+
error_2 = _c.sent();
|
|
264
|
+
log.status = 'failed';
|
|
265
|
+
log.error = error_2.message;
|
|
266
|
+
_c.label = 20;
|
|
267
|
+
case 20:
|
|
268
|
+
_c.trys.push([20, 22, , 23]);
|
|
269
|
+
return [4, (0, pls_1.writeSystemLog)(ctx, 'error', log, exports.CONTENT_HUB_UPLOADER_LOG_NAME, approval.space)];
|
|
270
|
+
case 21:
|
|
271
|
+
_c.sent();
|
|
272
|
+
return [3, 23];
|
|
273
|
+
case 22:
|
|
274
|
+
e_2 = _c.sent();
|
|
275
|
+
return [3, 23];
|
|
276
|
+
case 23: return [3, 24];
|
|
277
|
+
case 24: return [2];
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}); };
|
|
281
|
+
exports.grantUploaderAndNotify = grantUploaderAndNotify;
|
|
282
|
+
//# sourceMappingURL=content_hub_uploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content_hub_uploader.js","sourceRoot":"","sources":["../../src/methods/content_hub_uploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
name: ch_material_group
|
|
2
2
|
amis:
|
|
3
3
|
id: 'u:ch_material_group'
|
|
4
|
+
# 只在编辑时显示; 只读时不渲染(也就不去查 Content Hub), 改由「Content Hub 素材组路径」显示存下的全路径
|
|
5
|
+
visibleOn: "form_version == 'v3' && ch_sync_enabled == true && global.mode !== 'read'"
|
|
4
6
|
type: tree-select
|
|
5
7
|
label: Content Hub 素材组
|
|
6
8
|
multiple: false
|
|
9
|
+
# 只存素材组 ID 字符串, 不存整个选项对象(否则推送时素材组会变成 [object Object])
|
|
10
|
+
joinValues: false
|
|
11
|
+
extractValue: true
|
|
7
12
|
clearable: true
|
|
8
13
|
searchable: true
|
|
9
14
|
onlyLeaf: false
|
|
@@ -34,16 +39,6 @@ amis:
|
|
|
34
39
|
api.query = query;
|
|
35
40
|
return api;
|
|
36
41
|
messages: {}
|
|
37
|
-
onEvent:
|
|
38
|
-
change:
|
|
39
|
-
weight: 0
|
|
40
|
-
actions:
|
|
41
|
-
# 同时把选中节点的完整名称路径存下来, Content Hub 那边目录改名 / 删除后历史单据照样能看
|
|
42
|
-
- ignoreError: true
|
|
43
|
-
actionType: setValue
|
|
44
|
-
componentId: 'u:ch_material_group_path'
|
|
45
|
-
args:
|
|
46
|
-
value: '${event.data.item.materialGroupPath || ""}'
|
|
47
42
|
data_type: text
|
|
48
43
|
description: 素材同步到 Content Hub 后存放的位置
|
|
49
44
|
group: 素材标签
|
|
@@ -52,5 +47,3 @@ label: Content Hub 素材组
|
|
|
52
47
|
required: false
|
|
53
48
|
sort_no: 1370
|
|
54
49
|
type: select
|
|
55
|
-
# 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
|
|
56
|
-
visible_on: form_version == 'v3' && ch_sync_enabled == true
|
package/main/default/objects/pepsico_material_approval/fields/ch_material_group_path.field.yml
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
name: ch_material_group_path
|
|
2
2
|
amis:
|
|
3
3
|
id: 'u:ch_material_group_path'
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
# 只读展示: 存的是 Content Hub 的路径格式(各级用 | 连接), 显示时换成 > 更易读
|
|
5
|
+
type: static
|
|
6
|
+
tpl: '${REPLACE(ch_material_group_path, "|", " > ")}'
|
|
7
|
+
# 只读时代替素材组下拉显示存下的全路径, 不再查 Content Hub; 编辑时不显示
|
|
8
|
+
label: Content Hub 素材组
|
|
9
|
+
description: 素材同步到 Content Hub 后存放的位置
|
|
10
|
+
visibleOn: "form_version == 'v3' && ch_sync_enabled == true && global.mode === 'read'"
|
|
11
|
+
description: 保存时按所选素材组自动带出完整路径
|
|
6
12
|
group: 素材标签
|
|
7
13
|
is_wide: true
|
|
8
14
|
label: Content Hub 素材组路径
|
|
@@ -10,5 +16,3 @@ readonly: true
|
|
|
10
16
|
required: false
|
|
11
17
|
sort_no: 1380
|
|
12
18
|
type: text
|
|
13
|
-
# 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
|
|
14
|
-
visible_on: form_version == 'v3' && ch_sync_enabled == true
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
name: ch_sync_enabled
|
|
2
2
|
amis:
|
|
3
3
|
id: 'u:ch_sync_enabled'
|
|
4
|
+
onEvent:
|
|
5
|
+
# 只有用户点选才会触发 change(规则带出用的 setValue 不会), 记下「手动设置过」
|
|
6
|
+
change:
|
|
7
|
+
weight: 0
|
|
8
|
+
actions:
|
|
9
|
+
- ignoreError: true
|
|
10
|
+
actionType: setValue
|
|
11
|
+
componentId: 'u:ch_sync_manual'
|
|
12
|
+
args:
|
|
13
|
+
value: true
|
|
4
14
|
description: 系统会根据填写的信息自动勾选。如果这批素材不需要同步到 Content Hub,可以取消勾选。
|
|
5
15
|
group: 素材标签
|
|
6
16
|
label: 同步到 Content Hub
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
name: ch_sync_manual
|
|
2
|
+
# 辅助字段: 用户在页面上手动勾选 / 取消过「同步到 Content Hub」就记为 true, 之后不再按同步规则自动改开关
|
|
3
|
+
amis:
|
|
4
|
+
id: 'u:ch_sync_manual'
|
|
5
|
+
className: hidden
|
|
6
|
+
description: 用户手动改过「同步到 Content Hub」后为是, 之后不再按同步规则自动带出
|
|
7
|
+
group: 素材标签
|
|
8
|
+
label: 已手动设置同步开关
|
|
9
|
+
required: false
|
|
10
|
+
sort_no: 1367
|
|
11
|
+
type: boolean
|
|
12
|
+
visible_on: form_version == 'v3'
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
name: ch_sync_rule_check
|
|
2
|
-
# 辅助字段, 不存值: 只是挂一个 service, 填单时按同步规则预判是否需要同步, 写入「同步到 Content Hub
|
|
2
|
+
# 辅助字段, 不存值: 只是挂一个 service, 填单时按同步规则预判是否需要同步, 写入「同步到 Content Hub」开关, 并显示命中的规则
|
|
3
3
|
amis:
|
|
4
4
|
type: service
|
|
5
|
-
|
|
5
|
+
# 只在编辑时预判; 只读查看时不请求, 也不改开关
|
|
6
|
+
visibleOn: "form_version == 'v3' && global.mode !== 'read'"
|
|
6
7
|
api:
|
|
7
8
|
# url 里引用这几个字段, 任一变化时 service 会重新请求
|
|
8
9
|
url: '/api/pepsico-content/content-hub/sync-preview?owner_department=${owner_department}&classification=${classification}&product=${product}&kol_classification=${kol_classification}'
|
|
@@ -21,7 +22,13 @@ amis:
|
|
|
21
22
|
api.query = query;
|
|
22
23
|
return api;
|
|
23
24
|
messages: {}
|
|
24
|
-
|
|
25
|
+
# 在开关旁边提示按哪条规则带出的; 没命中时管理员能看到每条规则没命中的原因, 方便排查规则配置
|
|
26
|
+
body:
|
|
27
|
+
- type: tpl
|
|
28
|
+
className: text-muted text-sm
|
|
29
|
+
visibleOn: '${ch_sync_preview}'
|
|
30
|
+
tpl: >-
|
|
31
|
+
<% if (data.ch_sync_preview.needSync) { %>已按同步规则「<%- data.ch_sync_preview.ruleName %>」自动勾选同步<% } else if (data.ch_sync_preview.ruleName) { %>同步规则「<%- data.ch_sync_preview.ruleName %>」设为不同步<% } else { %>未命中任何同步规则, 默认不同步<% } %><% if (!data.ch_sync_preview.needSync && data.global && data.global.user && data.global.user.is_space_admin && data.ch_sync_preview.mismatches && data.ch_sync_preview.mismatches.length) { %><br/>(仅管理员可见)各规则未命中原因:<% data.ch_sync_preview.mismatches.forEach(function(m){ %><br/>· <%- m.rule %>: <%- m.reason %><% }) %><% } %>
|
|
25
32
|
onEvent:
|
|
26
33
|
fetchInited:
|
|
27
34
|
weight: 0
|
|
@@ -32,24 +39,14 @@ amis:
|
|
|
32
39
|
if (event.data.responseStatus !== 0) {
|
|
33
40
|
return;
|
|
34
41
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const key = _.map(['owner_department', 'classification', 'product', 'kol_classification'], (k) => str(event.data[k])).join('|');
|
|
38
|
-
const store = window.__chSyncRuleKeys || (window.__chSyncRuleKeys = {});
|
|
39
|
-
const recordId = event.data._id || 'new';
|
|
40
|
-
const prevKey = store[recordId];
|
|
41
|
-
store[recordId] = key;
|
|
42
|
-
const current = event.data.ch_sync_enabled;
|
|
43
|
-
// 打开已有单据时保留已存的选择(用户可能手动关过); 之后这几个字段变了再按规则重新带出
|
|
44
|
-
if ((current === true || current === false) && (prevKey === undefined || prevKey === key)) {
|
|
42
|
+
// 用户手动设置过开关就以用户为准; 否则按当前填写的内容和同步规则带出(保存时服务端还会再算一次)
|
|
43
|
+
if (event.data.ch_sync_manual === true) {
|
|
45
44
|
return;
|
|
46
45
|
}
|
|
47
|
-
doAction({ actionType: 'setValue', componentId: 'u:ch_sync_enabled', args: { value: !!event.data.needSync } });
|
|
46
|
+
doAction({ actionType: 'setValue', componentId: 'u:ch_sync_enabled', args: { value: !!(event.data.ch_sync_preview && event.data.ch_sync_preview.needSync) } });
|
|
48
47
|
description: 辅助字段, 不存值。填单时按「Content Hub 同步规则」预判是否需要同步, 带出「同步到 Content Hub」的默认值
|
|
49
48
|
group: 素材标签
|
|
50
49
|
label: 同步规则预判
|
|
51
50
|
required: false
|
|
52
51
|
sort_no: 1366
|
|
53
52
|
type: text
|
|
54
|
-
# 只在 Content Hub 改版后的新版表单(form_version 见 content_hub_sync_rule.ts 的 CONTENT_HUB_FORM_VERSIONS)显示, 存量单据不受影响
|
|
55
|
-
visible_on: form_version == 'v3'
|
package/main/default/objects/pepsico_material_approval/fields/ch_uploader_notified_group.field.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: ch_uploader_notified_group
|
|
2
|
+
# 系统字段: 推送成功后已经为哪个素材组开通过上传权限、发过通知邮件, 同一素材组不重复处理
|
|
3
|
+
description: 已开通 Content Hub 上传权限并通知发起人 / Agency 的素材组, 系统自动记录
|
|
4
|
+
group: 素材标签
|
|
5
|
+
hidden: true
|
|
6
|
+
label: 已通知上传的素材组
|
|
7
|
+
omit: true
|
|
8
|
+
readonly: true
|
|
9
|
+
required: false
|
|
10
|
+
sort_no: 1390
|
|
11
|
+
type: text
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: pepsico_material_approval_content_hub
|
|
2
|
+
listenTo: pepsico_material_approval
|
|
3
|
+
when:
|
|
4
|
+
- beforeInsert
|
|
5
|
+
- beforeUpdate
|
|
6
|
+
isEnabled: true
|
|
7
|
+
handler: |-
|
|
8
|
+
// 新版表单(v3)保存时补算「同步到 Content Hub」开关(用户没手动改过时按同步规则)和「Content Hub 素材组路径」,
|
|
9
|
+
// 不依赖页面联动是否生效。逻辑在 src/methods/content_hub_form_fill.ts; 存量单据在那边直接跳过。
|
|
10
|
+
// 只是补算, 任何异常都不能挡住保存(系统已上线, 存量单据照常可改)
|
|
11
|
+
const { doc } = ctx.params;
|
|
12
|
+
// 填单预判接口的返回值会被页面合并进表单数据, 不是字段, 不存库
|
|
13
|
+
if (doc) {
|
|
14
|
+
delete doc.ch_sync_preview;
|
|
15
|
+
delete doc.needSync;
|
|
16
|
+
delete doc.ruleName;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
if (!ctx.broker || !doc) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const result = await ctx.broker.call('@steedos-labs/content-compliance.contentHubFillOnSave', {
|
|
23
|
+
doc,
|
|
24
|
+
id: ctx.params.isInsert === true ? null : ctx.params.id
|
|
25
|
+
});
|
|
26
|
+
Object.assign(doc, (result && result.patch) || {});
|
|
27
|
+
} catch (e) {
|
|
28
|
+
console.error('[Content Hub]保存时补算失败, 不影响保存', ctx.params && ctx.params.id, e && e.message);
|
|
29
|
+
}
|
|
30
|
+
authentication_type: none
|
|
31
|
+
locked: false
|
|
32
|
+
type: code
|