@steedos-labs/content-compliance 0.8.8 → 0.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/index.js +1 -1
  2. package/lib/actions/bypassApproval.js +18 -0
  3. package/lib/actions/bypassApproval.js.map +1 -1
  4. package/lib/actions/bypassMaterial.js +12 -0
  5. package/lib/actions/bypassMaterial.js.map +1 -1
  6. package/lib/index.js +153 -0
  7. package/lib/index.js.map +1 -1
  8. package/lib/methods/AI.d.ts +6 -0
  9. package/lib/methods/AI.js +116 -15
  10. package/lib/methods/AI.js.map +1 -1
  11. package/lib/methods/__tests__/plsReview.test.d.ts +1 -0
  12. package/lib/methods/__tests__/plsReview.test.js +736 -0
  13. package/lib/methods/__tests__/plsReview.test.js.map +1 -0
  14. package/lib/methods/__tests__/postponeReview.test.js +21 -0
  15. package/lib/methods/__tests__/postponeReview.test.js.map +1 -1
  16. package/lib/methods/__tests__/qcParallelReview.test.d.ts +1 -0
  17. package/lib/methods/__tests__/qcParallelReview.test.js +53 -0
  18. package/lib/methods/__tests__/qcParallelReview.test.js.map +1 -0
  19. package/lib/methods/__tests__/qcPreReview.test.d.ts +1 -0
  20. package/lib/methods/__tests__/qcPreReview.test.js +65 -0
  21. package/lib/methods/__tests__/qcPreReview.test.js.map +1 -0
  22. package/lib/methods/approval_engine.d.ts +4 -0
  23. package/lib/methods/approval_engine.js +388 -221
  24. package/lib/methods/approval_engine.js.map +1 -1
  25. package/lib/methods/consts.d.ts +35 -0
  26. package/lib/methods/consts.js +2 -0
  27. package/lib/methods/consts.js.map +1 -1
  28. package/lib/methods/material.js +13 -0
  29. package/lib/methods/material.js.map +1 -1
  30. package/lib/methods/pls.d.ts +37 -0
  31. package/lib/methods/pls.js +480 -130
  32. package/lib/methods/pls.js.map +1 -1
  33. package/lib/pages/__tests__/aiReviewCardStyles.test.d.ts +1 -0
  34. package/lib/pages/__tests__/aiReviewCardStyles.test.js +36 -0
  35. package/lib/pages/__tests__/aiReviewCardStyles.test.js.map +1 -0
  36. package/lib/pages/__tests__/aiReviewChineseColons.test.d.ts +1 -0
  37. package/lib/pages/__tests__/aiReviewChineseColons.test.js +132 -0
  38. package/lib/pages/__tests__/aiReviewChineseColons.test.js.map +1 -0
  39. package/lib/pages/__tests__/clientCssCacheVersion.test.d.ts +1 -0
  40. package/lib/pages/__tests__/clientCssCacheVersion.test.js +31 -0
  41. package/lib/pages/__tests__/clientCssCacheVersion.test.js.map +1 -0
  42. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.d.ts +1 -0
  43. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js +51 -0
  44. package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js.map +1 -0
  45. package/lib/pages/__tests__/plsReviewCardStyles.test.d.ts +1 -0
  46. package/lib/pages/__tests__/plsReviewCardStyles.test.js +98 -0
  47. package/lib/pages/__tests__/plsReviewCardStyles.test.js.map +1 -0
  48. package/lib/pages/__tests__/plsReviewPage.test.d.ts +1 -0
  49. package/lib/pages/__tests__/plsReviewPage.test.js +338 -0
  50. package/lib/pages/__tests__/plsReviewPage.test.js.map +1 -0
  51. package/main/default/applications/pepsico_content_setting.app.yml +4 -0
  52. package/main/default/client/pepsico_content.client.js +8 -3
  53. package/main/default/objects/ai_process_detail/ai_process_detail.object.yml +1 -0
  54. package/main/default/objects/ai_process_detail/fields/pls_extracted_data.field.yml +9 -0
  55. package/main/default/objects/ai_process_detail/fields/pls_file_ids.field.yml +9 -0
  56. package/main/default/objects/ai_process_detail/fields/pls_product_name_matched.field.yml +9 -0
  57. package/main/default/objects/ai_process_detail/fields/pls_rule_unique_matched.field.yml +9 -0
  58. package/main/default/objects/pepesio_ch__c/fields/company_id.field.yml +14 -0
  59. package/main/default/objects/pepesio_ch__c/fields/company_ids.field.yml +16 -0
  60. package/main/default/objects/pepesio_ch__c/fields/created.field.yml +10 -0
  61. package/main/default/objects/pepesio_ch__c/fields/created_by.field.yml +9 -0
  62. package/main/default/objects/pepesio_ch__c/fields/file_name.field.yml +8 -0
  63. package/main/default/objects/pepesio_ch__c/fields/instance_state.field.yml +25 -0
  64. package/main/default/objects/pepesio_ch__c/fields/locked.field.yml +12 -0
  65. package/main/default/objects/pepesio_ch__c/fields/material_type.field.yml +10 -0
  66. package/main/default/objects/pepesio_ch__c/fields/media_type.field.yml +13 -0
  67. package/main/default/objects/pepesio_ch__c/fields/modified.field.yml +10 -0
  68. package/main/default/objects/pepesio_ch__c/fields/modified_by.field.yml +9 -0
  69. package/main/default/objects/pepesio_ch__c/fields/name.field.yml +11 -0
  70. package/main/default/objects/pepesio_ch__c/fields/owner.field.yml +12 -0
  71. package/main/default/objects/pepesio_ch__c/fields/product.field.yml +10 -0
  72. package/main/default/objects/pepesio_ch__c/fields/time.field.yml +8 -0
  73. package/main/default/objects/pepesio_ch__c/fields/type.field.yml +22 -0
  74. package/main/default/objects/pepesio_ch__c/listviews/all.listview.yml +21 -0
  75. package/main/default/objects/pepesio_ch__c/listviews/recent.listview.yml +11 -0
  76. package/main/default/objects/pepesio_ch__c/pepesio_ch__c.object.yml +31 -0
  77. package/main/default/objects/pepesio_ch__c/permissions/admin.permission.yml +9 -0
  78. package/main/default/objects/pepesio_ch__c/permissions/user.permission.yml +9 -0
  79. package/main/default/objects/pepsico_ai_review/buttons/pepsico_adopt.button.yml +15 -3
  80. package/main/default/objects/pepsico_ai_review/fields/is_active.field.yml +7 -0
  81. package/main/default/objects/pepsico_ai_review/fields/pepsico_material_approval.field.yml +7 -0
  82. package/main/default/objects/pepsico_ai_review/fields/pls_file.field.yml +7 -0
  83. package/main/default/objects/pepsico_ai_review/fields/review_type.field.yml +12 -0
  84. package/main/default/objects/pepsico_approval_process/fields/type.field.yml +5 -1
  85. package/main/default/objects/pepsico_km_pls/fields/allergen_statement.field.yml +9 -0
  86. package/main/default/objects/pepsico_km_pls/fields/ingredient_list.field.yml +9 -0
  87. package/main/default/objects/pepsico_km_pls/listviews/all.listview.yml +6 -0
  88. package/main/default/objects/pepsico_km_pls_file/listviews/lookup.listview.yml +19 -0
  89. package/main/default/objects/pepsico_km_pls_file/permissions/user.permission.yml +2 -2
  90. package/main/default/objects/pepsico_material/fields/pre_qc_approval_status.field.yml +16 -0
  91. package/main/default/objects/pepsico_material/fields/qc_approval_status.field.yml +16 -0
  92. package/main/default/objects/pepsico_material/fields/qc_bypass_reason.field.yml +11 -0
  93. package/main/default/objects/pepsico_material/fields/qc_bypassed.field.yml +12 -0
  94. package/main/default/objects/pepsico_material/fields/qc_bypassed_at.field.yml +11 -0
  95. package/main/default/objects/pepsico_material/fields/qc_bypassed_by.field.yml +12 -0
  96. package/main/default/objects/pepsico_material/listviews/all.listview.yml +1 -0
  97. package/main/default/objects/pepsico_material_approval/buttons/pepsico_modify_pls.button.yml +70 -0
  98. package/main/default/objects/pepsico_material_approval/buttons/pepsico_postpone_review.button.yml +62 -37
  99. package/main/default/objects/pepsico_material_approval/buttons/pre_review_approve.button.yml +1 -1
  100. package/main/default/objects/pepsico_material_approval/buttons/pre_review_reject.button.yml +1 -1
  101. package/main/default/objects/pepsico_material_approval/fields/approved_flows.field.yml +2 -2
  102. package/main/default/objects/pepsico_material_approval/fields/assistance.field.yml +1 -1
  103. package/main/default/objects/pepsico_material_approval/fields/ca_assistance.field.yml +1 -1
  104. package/main/default/objects/pepsico_material_approval/fields/classification.field.yml +15 -0
  105. package/main/default/objects/pepsico_material_approval/fields/ec_check_food_name.field.yml +18 -0
  106. package/main/default/objects/pepsico_material_approval/fields/ec_check_ingredients.field.yml +18 -0
  107. package/main/default/objects/pepsico_material_approval/fields/ec_check_net_content.field.yml +18 -0
  108. package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_address.field.yml +18 -0
  109. package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_name.field.yml +18 -0
  110. package/main/default/objects/pepsico_material_approval/fields/ec_check_shelf_life.field.yml +18 -0
  111. package/main/default/objects/pepsico_material_approval/fields/ec_check_standard_code.field.yml +18 -0
  112. package/main/default/objects/pepsico_material_approval/fields/ec_check_storage_condition.field.yml +18 -0
  113. package/main/default/objects/pepsico_material_approval/fields/ec_has_detail_page.field.yml +18 -0
  114. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.field.yml +5 -0
  115. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_address.field.yml +7 -0
  116. package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_name.field.yml +7 -0
  117. package/main/default/objects/pepsico_material_approval/fields/ec_producers.field.yml +16 -0
  118. package/main/default/objects/pepsico_material_approval/fields/ec_qc_production_email.field.yml +16 -0
  119. package/main/default/objects/pepsico_material_approval/fields/ec_related_approval.field.yml +9 -0
  120. package/main/default/objects/pepsico_material_approval/fields/form_version.field.yml +10 -0
  121. package/main/default/objects/pepsico_material_approval/fields/handler_preca.field.yml +1 -1
  122. package/main/default/objects/pepsico_material_approval/fields/handler_preguding.field.yml +1 -1
  123. package/main/default/objects/pepsico_material_approval/fields/handler_prens.field.yml +1 -1
  124. package/main/default/objects/pepsico_material_approval/fields/handler_preqc.field.yml +22 -0
  125. package/main/default/objects/pepsico_material_approval/fields/handler_presra.field.yml +1 -1
  126. package/main/default/objects/pepsico_material_approval/fields/handler_qc.field.yml +20 -0
  127. package/main/default/objects/pepsico_material_approval/fields/has_nutrition_table.field.yml +18 -0
  128. package/main/default/objects/pepsico_material_approval/fields/legal_assistance.field.yml +1 -1
  129. package/main/default/objects/pepsico_material_approval/fields/ns_assistance.field.yml +1 -1
  130. package/main/default/objects/pepsico_material_approval/fields/pls_file.field.yml +2 -2
  131. package/main/default/objects/pepsico_material_approval/fields/pls_km_files.field.yml +28 -0
  132. package/main/default/objects/pepsico_material_approval/fields/pls_upload_files.field.yml +21 -0
  133. package/main/default/objects/pepsico_material_approval/fields/pre_ca_reviewer.field.yml +1 -1
  134. package/main/default/objects/pepsico_material_approval/fields/pre_ns_reviewer.field.yml +1 -1
  135. package/main/default/objects/pepsico_material_approval/fields/pre_qc_approval_status.field.yml +17 -0
  136. package/main/default/objects/pepsico_material_approval/fields/pre_qc_materials_quantity.field.yml +21 -0
  137. package/main/default/objects/pepsico_material_approval/fields/pre_qc_reviewer.field.yml +19 -0
  138. package/main/default/objects/pepsico_material_approval/fields/pre_reviewer.field.yml +1 -1
  139. package/main/default/objects/pepsico_material_approval/fields/pre_sra_reviewer.field.yml +1 -1
  140. package/main/default/objects/pepsico_material_approval/fields/product.field.yml +15 -0
  141. package/main/default/objects/pepsico_material_approval/fields/qc_approval_status.field.yml +18 -0
  142. package/main/default/objects/pepsico_material_approval/fields/qc_assistance.field.yml +22 -0
  143. package/main/default/objects/pepsico_material_approval/fields/qc_bypass_reason.field.yml +8 -0
  144. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed.field.yml +12 -0
  145. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_at.field.yml +8 -0
  146. package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_by.field.yml +8 -0
  147. package/main/default/objects/pepsico_material_approval/fields/qc_materials_quantity.field.yml +21 -0
  148. package/main/default/objects/pepsico_material_approval/fields/qc_reviewer.field.yml +22 -0
  149. package/main/default/objects/pepsico_material_approval/fields/sra_assistance.field.yml +1 -1
  150. package/main/default/objects/pepsico_material_approval/listviews/all.listview.yml +2 -0
  151. package/main/default/objects/pepsico_material_approval/pepsico_material_approval.object.yml +4 -0
  152. package/main/default/objects/pepsico_pls_change_log/fields/after_pls_files.field.yml +9 -0
  153. package/main/default/objects/pepsico_pls_change_log/fields/after_pls_names.field.yml +7 -0
  154. package/main/default/objects/pepsico_pls_change_log/fields/approval.field.yml +7 -0
  155. package/main/default/objects/pepsico_pls_change_log/fields/approval_name.field.yml +6 -0
  156. package/main/default/objects/pepsico_pls_change_log/fields/before_pls_files.field.yml +9 -0
  157. package/main/default/objects/pepsico_pls_change_log/fields/before_pls_names.field.yml +7 -0
  158. package/main/default/objects/pepsico_pls_change_log/fields/material.field.yml +8 -0
  159. package/main/default/objects/pepsico_pls_change_log/fields/operator.field.yml +7 -0
  160. package/main/default/objects/pepsico_pls_change_log/fields/scene.field.yml +13 -0
  161. package/main/default/objects/pepsico_pls_change_log/fields/source.field.yml +14 -0
  162. package/main/default/objects/pepsico_pls_change_log/fields/space.field.yml +6 -0
  163. package/main/default/objects/pepsico_pls_change_log/listviews/all.listview.yml +25 -0
  164. package/main/default/objects/pepsico_pls_change_log/pepsico_pls_change_log.object.yml +16 -0
  165. package/main/default/objects/pepsico_pls_change_log/permissions/admin.permission.yml +15 -0
  166. package/main/default/objects/pepsico_pls_change_log/permissions/user.permission.yml +14 -0
  167. package/main/default/objects/pepsico_review_postpone/fields/department_type.field.yml +4 -0
  168. package/main/default/objects/pepsico_reviewer/fields/pre_qc_reviewer.field.yml +10 -0
  169. package/main/default/objects/pepsico_reviewer/fields/qc_assistance.field.yml +14 -0
  170. package/main/default/objects/pepsico_reviewer/fields/qc_reviewer.field.yml +12 -0
  171. package/main/default/objects/pepsico_reviewer/listviews/all.listview.yml +4 -0
  172. package/main/default/pages/pepsico_content_review_detail.page.amis.json +19 -1
  173. package/main/default/pages/pepsico_material_detail.page.amis.json +698 -52
  174. package/main/default/pages/pepsico_material_detail_mobile.page.amis.json +332 -8
  175. package/main/default/tabs/object_pepsico_pls_change_log.tab.yml +14 -0
  176. package/main/default/triggers/pepsico_material_approval_change.trigger.yml +3 -0
  177. package/package.json +1 -1
  178. package/public/content-review/amis.css +344 -9
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var fs = require("node:fs");
5
+ var path = require("node:path");
6
+ var pageDirectory = path.resolve(__dirname, '../../../main/default/pages');
7
+ var loadPage = function (name) { return JSON.parse(fs.readFileSync(path.join(pageDirectory, name), 'utf8')); };
8
+ var loadAmisButton = function (relativePath) {
9
+ var e_1, _a;
10
+ var source = fs.readFileSync(path.resolve(pageDirectory, '..', 'objects', relativePath), 'utf8');
11
+ var schemaLines = [];
12
+ try {
13
+ for (var _b = tslib_1.__values(source.slice(source.indexOf('amis_schema: |-') + 'amis_schema: |-'.length).split('\n').slice(1)), _c = _b.next(); !_c.done; _c = _b.next()) {
14
+ var line = _c.value;
15
+ if (line && !line.startsWith(' ')) {
16
+ break;
17
+ }
18
+ schemaLines.push(line.slice(2));
19
+ }
20
+ }
21
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
22
+ finally {
23
+ try {
24
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
25
+ }
26
+ finally { if (e_1) throw e_1.error; }
27
+ }
28
+ return JSON.parse(schemaLines.join('\n'));
29
+ };
30
+ var collect = function (node, predicate, result) {
31
+ if (result === void 0) { result = []; }
32
+ if (Array.isArray(node)) {
33
+ node.forEach(function (item) { return collect(item, predicate, result); });
34
+ return result;
35
+ }
36
+ if (!node || typeof node !== 'object') {
37
+ return result;
38
+ }
39
+ var schema = node;
40
+ if (predicate(schema)) {
41
+ result.push(schema);
42
+ }
43
+ Object.values(schema).forEach(function (value) { return collect(value, predicate, result); });
44
+ return result;
45
+ };
46
+ var pages = [
47
+ loadPage('pepsico_material_detail.page.amis.json'),
48
+ loadPage('pepsico_material_detail_mobile.page.amis.json')
49
+ ];
50
+ var contentReviewCss = fs.readFileSync(path.resolve(pageDirectory, '../../../public/content-review/amis.css'), 'utf8');
51
+ var services = pages.flatMap(function (page) { return collect(page, function (schema) { return schema.type === 'service'
52
+ && schema.api === '/api/pepsico-content/pls-review/material/${recordId}'; }); });
53
+ var permissionServices = pages.flatMap(function (page) { return collect(page, function (schema) { return schema.type === 'service'
54
+ && schema.api === '/api/pepsico-content/review-permissions/material/${recordId}'; }); });
55
+ var tabsSchemas = pages.flatMap(function (page) { return collect(page, function (schema) { return schema.type === 'tabs'; }); });
56
+ var findOne = function (node, predicate) {
57
+ var matches = collect(node, predicate);
58
+ expect(matches).toHaveLength(1);
59
+ return matches[0];
60
+ };
61
+ describe('PLS review page schema', function () {
62
+ it('preserves the full-height layout through the review permissions service', function () {
63
+ expect(permissionServices).toHaveLength(3);
64
+ permissionServices.forEach(function (service) {
65
+ expect(String(service.className || '').split(/\s+/)).toContain('h-full');
66
+ expect(findOne(service.body, function (schema) { return schema.type === 'tabs'; })).toBeTruthy();
67
+ });
68
+ });
69
+ it('keeps the existing comments room configuration independent from review permissions', function () {
70
+ var roomProviders = pages.flatMap(function (page) { return collect(page, function (schema) { return schema.type === 'rooms-provider'; }); });
71
+ expect(roomProviders).toHaveLength(2);
72
+ roomProviders.forEach(function (provider) {
73
+ expect(provider.baseUrl).toBe('${context.rootUrl}');
74
+ var comments = findOne(provider.body, function (schema) { return schema.type === 'rooms-comments'; });
75
+ expect(comments.roomId).toBe('objects:pepsico_material:${recordId}');
76
+ expect(comments.visibleOn).toBeUndefined();
77
+ expect(comments.hiddenOn).toBeUndefined();
78
+ expect(comments.disabledOn).toBeUndefined();
79
+ expect(JSON.stringify(provider)).not.toMatch(/canAdopt|hasPLSFile/);
80
+ });
81
+ });
82
+ it('shows PLS tabs only when the approval has a PLS lookup value', function () {
83
+ expect(tabsSchemas).toHaveLength(3);
84
+ expect(permissionServices).toHaveLength(3);
85
+ permissionServices.forEach(function (service) {
86
+ var tabs = findOne(service.body, function (schema) { return schema.type === 'tabs'; });
87
+ var plsTab = findOne(tabs.tabs, function (schema) { return schema.title === 'PLS意见'; });
88
+ expect(plsTab.visibleOn).toBe('${hasPLSFile}');
89
+ expect(collect(tabs, function (schema) {
90
+ return schema.type === 'service'
91
+ && schema.api === '/api/pepsico-content/review-permissions/material/${recordId}';
92
+ })).toHaveLength(0);
93
+ });
94
+ });
95
+ it('keeps all three PLS tabs grouped by file and review', function () {
96
+ expect(services).toHaveLength(3);
97
+ services.forEach(function (service) {
98
+ var groupEach = findOne(service.body, function (schema) {
99
+ return schema.type === 'each' && schema.source === '${groups}';
100
+ });
101
+ expect(collect(groupEach.items, function (schema) {
102
+ return schema.type === 'cards' && schema.source === '${reviews}';
103
+ })).toHaveLength(1);
104
+ });
105
+ });
106
+ it('opens each PLS file in a right-side read-only drawer', function () {
107
+ services.forEach(function (service) {
108
+ var header = findOne(service.body, function (schema) {
109
+ return schema.className === 'pepsico-pls-review-group-header';
110
+ });
111
+ var fileButton = findOne(header, function (schema) {
112
+ return schema.className === 'pepsico-pls-review-file-button';
113
+ });
114
+ expect(fileButton.type).toBe('button');
115
+ expect(fileButton.label).toBe('${plsName}');
116
+ expect(fileButton.level).toBe('link');
117
+ expect(fileButton.actionType).toBe('drawer');
118
+ expect(fileButton.drawer.position).toBe('right');
119
+ expect(fileButton.drawer.closeOnOutside).toBe(true);
120
+ expect(fileButton.drawer.actions).toEqual([]);
121
+ var plsForm = findOne(fileButton.drawer.body, function (schema) {
122
+ return schema.type === 'steedos-object-form';
123
+ });
124
+ expect(plsForm.objectApiName).toBe('pepsico_km_pls_file');
125
+ expect(plsForm.recordId).toBe('${plsFileId}');
126
+ expect(plsForm.mode).toBe('read');
127
+ expect(collect(header, function (schema) {
128
+ return typeof schema.tpl === 'string' && schema.tpl.includes('PLS 文件:');
129
+ })).toHaveLength(0);
130
+ var modifyButton = findOne(header, function (schema) { return schema.label === '修改PLS文件'; });
131
+ expect(modifyButton.visibleOn).toBe('${canManage}');
132
+ expect(modifyButton.actionType).toBe('dialog');
133
+ expect(modifyButton.level).toBe('default');
134
+ expect(modifyButton.size).toBeUndefined();
135
+ });
136
+ });
137
+ it('uses the AI Cards structure for grouped PLS reviews', function () {
138
+ services.forEach(function (service) {
139
+ var cards = findOne(service.body, function (schema) {
140
+ return schema.type === 'cards' && schema.source === '${reviews}';
141
+ });
142
+ expect(cards.className).toContain('pepsico_ai_review-card');
143
+ expect(cards.className).toContain('pepsico-pls-review-cards');
144
+ expect(cards.columnsCount).toBe(1);
145
+ expect(cards.card.media).toEqual({
146
+ type: 'image',
147
+ url: '${evidence_image}',
148
+ position: 'left'
149
+ });
150
+ expect(cards.card.bodyClassName).toBe('pepsico_ai_review-card-body');
151
+ var templates = collect(cards.card, function (schema) { return typeof schema.tpl === 'string'; })
152
+ .map(function (schema) { return schema.tpl; });
153
+ expect(templates).toEqual(expect.arrayContaining([
154
+ '<b>素材内容:</b>${name}',
155
+ '<b>提醒类型:</b>${rule_category}',
156
+ '<b>提醒原因:</b>${reason}'
157
+ ]));
158
+ expect(templates.some(function (tpl) { return tpl.includes('规则原文'); })).toBe(false);
159
+ });
160
+ });
161
+ it('opens a native two-step wizard with the approved copy and APIs', function () {
162
+ services.forEach(function (service) {
163
+ var modifyButton = findOne(service.body, function (schema) { return schema.label === '修改PLS文件'; });
164
+ expect(modifyButton.dialog.title).toBe('');
165
+ expect(modifyButton.dialog.showCloseButton).toBe(true);
166
+ var wizard = findOne(modifyButton.dialog.body, function (schema) { return schema.type === 'wizard'; });
167
+ expect(wizard.className).toContain('pepsico-pls-review-wizard');
168
+ expect(wizard.mode).toBe('horizontal');
169
+ expect(wizard.steps).toHaveLength(2);
170
+ expect(wizard.steps.map(function (step) { return step.title; })).toEqual([
171
+ '选择或上传 PLS文件',
172
+ '确认应用新PLS文件规则'
173
+ ]);
174
+ expect(wizard.actionNextLabel).toBe('下一步');
175
+ expect(wizard.actionNextSaveLabel).toBe('下一步');
176
+ expect(wizard.actionFinishLabel).toBe('应用新的PLS文件重新审核');
177
+ expect(wizard.steps[0].api.url).toBe('/api/pepsico-content/pls-file/upload');
178
+ expect(wizard.steps[1].api.url).toBe('/api/pepsico-content/pls-review/apply-source');
179
+ expect(wizard.steps[0].api.sendOn).toContain('!newPlsFileId');
180
+ expect(wizard.steps[0].api.sendOn).toContain('newPlsUploadedFileId');
181
+ expect(wizard.steps[0].api.sendOn).toContain('uploadedPlsFile[0]');
182
+ expect(wizard.steps[0].api.adaptor).toContain('newPlsUploadedFileId');
183
+ expect(wizard.steps[0].api.adaptor).toContain('payload.error');
184
+ expect(wizard.steps[0].api.requestAdaptor).toContain('approvalId: context.approvalId');
185
+ expect(wizard.steps[1].api.adaptor).toContain('payload.error');
186
+ expect(wizard.steps[1].api.requestAdaptor).toContain("throw new Error('请选择或上传PLS文件')");
187
+ expect(wizard.steps[1].api.requestAdaptor).toContain('materialId: context.materialId');
188
+ expect(wizard.steps[1].api.adaptor).toContain('请稍后刷新页面进行确认');
189
+ expect(wizard.steps[1].api.requestAdaptor).toContain('sourceMode: context.plsSourceMode');
190
+ var schemas = collect(wizard, function () { return true; });
191
+ var existingPlsSelect = findOne(wizard, function (schema) {
192
+ return schema.type === 'steedos-field' && schema.name === 'selectedPlsFile';
193
+ });
194
+ expect(existingPlsSelect.type).toBe('steedos-field');
195
+ expect(existingPlsSelect.className).toBe('pepsico-pls-source-field');
196
+ expect(existingPlsSelect.source).toBeUndefined();
197
+ expect(existingPlsSelect.config).toMatchObject({
198
+ type: 'lookup',
199
+ name: 'selectedPlsFile',
200
+ reference_to: 'pepsico_km_pls_file',
201
+ enable_enhanced_lookup: true,
202
+ filters: [['is_active', '!=', false]],
203
+ amis: {
204
+ joinValues: false,
205
+ extractValue: false
206
+ }
207
+ });
208
+ var uploadedPlsInput = findOne(wizard, function (schema) {
209
+ return schema.type === 'input-file' && schema.label === '上传本地PLS文件';
210
+ });
211
+ expect(uploadedPlsInput.className).toBe('pepsico-pls-source-field');
212
+ expect(schemas.some(function (schema) { return schema.tpl === '<b>当前PLS文件:</b>${plsName}'; })).toBe(true);
213
+ expect(schemas.some(function (schema) {
214
+ return schema.tpl === '<b>新的PLS文件:</b>${plsSourceMode === "existing" ? (selectedPlsFile.name || selectedPlsFile.label || selectedPlsFile) : newPlsFileName}';
215
+ })).toBe(true);
216
+ expect(schemas.some(function (schema) {
217
+ return schema.body === '应用后,当前 PLS 文件关联的意见将失效,并按新的PLS文件规则重新生成对应意见。';
218
+ })).toBe(true);
219
+ expect(collect(wizard.steps[1].body, function (schema) {
220
+ return schema.className === 'pepsico-pls-source-summary';
221
+ })).toHaveLength(2);
222
+ });
223
+ });
224
+ it('uses the compact dialog and the exact AI adoption workflow', function () {
225
+ var aiAdoptButton = findOne(pages[0], function (schema) { return schema.id === 'u:pepsico_adopt'; });
226
+ var aiThreadAction = findOne(aiAdoptButton.onEvent.click.actions, function (schema) {
227
+ return schema.outputVar === 'responseResult';
228
+ });
229
+ expect(aiThreadAction.api.requestAdaptor).toContain('filter(Boolean)');
230
+ expect(aiThreadAction.api.requestAdaptor).toContain("typeof file === 'string'");
231
+ expect(aiThreadAction.api.requestAdaptor).toContain('file.value || file._id');
232
+ expect(aiThreadAction.api.requestAdaptor).not.toContain('evidence_image_file.length ?');
233
+ var adoptionButtons = pages.flatMap(function (page) { return collect(page, function (schema) {
234
+ return schema.label === '采纳' && schema.confirmText === aiAdoptButton.confirmText;
235
+ }); });
236
+ var expectCommentToast = function (button) {
237
+ var actions = button.onEvent.click.actions;
238
+ var commentIndex = actions.findIndex(function (action) {
239
+ var _a, _b;
240
+ return action.actionType === 'ajax'
241
+ && ((_b = (_a = action.api) === null || _a === void 0 ? void 0 : _a.url) === null || _b === void 0 ? void 0 : _b.includes('/threads'));
242
+ });
243
+ expect(commentIndex).toBeGreaterThanOrEqual(0);
244
+ expect(actions[commentIndex].ignoreError).toBe(false);
245
+ expect(actions[commentIndex + 1]).toMatchObject({
246
+ ignoreError: false,
247
+ actionType: 'toast',
248
+ args: {
249
+ msgType: 'success',
250
+ position: 'top-right',
251
+ msg: '意见已采纳到评论区,请确认'
252
+ }
253
+ });
254
+ };
255
+ expect(adoptionButtons).toHaveLength(5);
256
+ adoptionButtons.forEach(function (button) {
257
+ expect(button.visibleOn).toBe('${canAdopt}');
258
+ var threadAction = findOne(button.onEvent.click.actions, function (schema) {
259
+ return schema.outputVar === 'responseResult';
260
+ });
261
+ expect(threadAction.api.requestAdaptor).toBe(aiThreadAction.api.requestAdaptor);
262
+ expectCommentToast(button);
263
+ });
264
+ var executeAdaptor = function (requestAdaptor, context) {
265
+ return new Function('api', 'context', 'Amis', requestAdaptor)({}, context, { uuidv4: function () { return 'generated-id'; } });
266
+ };
267
+ var mixedAttachments = [
268
+ { value: null },
269
+ null,
270
+ {},
271
+ { value: 'valid-value' },
272
+ { _id: 'valid-id' },
273
+ 'valid-string'
274
+ ];
275
+ expect(executeAdaptor(aiThreadAction.api.requestAdaptor, {
276
+ evidence_image_file: mixedAttachments
277
+ }).data.comment.attachmentIds).toEqual(['valid-value', 'valid-id', 'valid-string']);
278
+ var objectAdoptButton = findOne(loadAmisButton('pepsico_ai_review/buttons/pepsico_adopt.button.yml'), function (schema) { return schema.id === 'u:pepsico_adopt'; });
279
+ var objectThreadAction = findOne(objectAdoptButton.onEvent.click.actions, function (schema) {
280
+ return schema.outputVar === 'responseResult';
281
+ });
282
+ expect(objectAdoptButton.visibleOn).toBe('${canAdopt}');
283
+ expectCommentToast(objectAdoptButton);
284
+ expect(executeAdaptor(objectThreadAction.api.requestAdaptor, {
285
+ record: { _display: { evidence_image_file: mixedAttachments } }
286
+ }).data.comment.attachmentIds).toEqual(['valid-value', 'valid-id', 'valid-string']);
287
+ expect(permissionServices).toHaveLength(3);
288
+ permissionServices.forEach(function (service) {
289
+ expect(collect(service.body, function (schema) {
290
+ return schema.type === 'steedos-object-related-listview'
291
+ && schema.relatedObjectApiName === 'pepsico_ai_review';
292
+ })).toHaveLength(1);
293
+ });
294
+ services.forEach(function (service) {
295
+ var modifyButton = findOne(service.body, function (schema) { return schema.label === '修改PLS文件'; });
296
+ expect(modifyButton.dialog.size).toBe('md');
297
+ expect(modifyButton.dialog.className).toContain('pepsico-pls-review-dialog');
298
+ var adoptButton = findOne(service.body, function (schema) {
299
+ return schema.label === '采纳' && schema.className === 'pepsico-adopt mr-4';
300
+ });
301
+ expect(adoptButton.confirmText).toBe(aiAdoptButton.confirmText);
302
+ expect(adoptButton.onEvent).toEqual(aiAdoptButton.onEvent);
303
+ expect(adoptButton.actionType).toBeUndefined();
304
+ expect(adoptButton.api).toBeUndefined();
305
+ });
306
+ });
307
+ it('removes the old always-visible source controls', function () {
308
+ services.forEach(function (service) {
309
+ expect(collect(service.body, function (schema) {
310
+ return typeof schema.className === 'string'
311
+ && schema.className.includes('pepsico-pls-review-actions');
312
+ })).toHaveLength(0);
313
+ });
314
+ });
315
+ it('expands AI opinions only when the desktop comments panel is absent', function () {
316
+ var noCommentsGrid = findOne(pages[0], function (schema) {
317
+ return schema.type === 'grid'
318
+ && typeof schema.visibleOn === 'string'
319
+ && schema.visibleOn.includes('created_by === context.userId');
320
+ });
321
+ var commentsGrid = findOne(pages[0], function (schema) {
322
+ return schema.type === 'grid'
323
+ && collect(schema, function (child) {
324
+ return typeof child.className === 'string'
325
+ && child.className.includes('material-detail-comments-panel');
326
+ }).length === 1;
327
+ });
328
+ expect(noCommentsGrid.className).toContain('material-detail-no-comments');
329
+ expect(commentsGrid.className).not.toContain('material-detail-no-comments');
330
+ expect(contentReviewCss).toContain([
331
+ '.antd-Drawer-body .material-detail-no-comments .pepsico_ai_review-tab-content {',
332
+ ' width: 100%;',
333
+ ' position: initial;',
334
+ '}'
335
+ ].join('\n'));
336
+ });
337
+ });
338
+ //# sourceMappingURL=plsReviewPage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plsReviewPage.test.js","sourceRoot":"","sources":["../../../src/pages/__tests__/plsReviewPage.test.ts"],"names":[],"mappings":";;;AAAA,4BAA8B;AAC9B,gCAAkC;AAIlC,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;AAC7E,IAAM,QAAQ,GAAG,UAAC,IAAY,IAAiB,OAAA,IAAI,CAAC,KAAK,CACrD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAC1D,EAF8C,CAE9C,CAAC;AACF,IAAM,cAAc,GAAG,UAAC,YAAoB;;IACxC,IAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACnG,IAAM,WAAW,GAAa,EAAE,CAAC;;QACjC,KAAmB,IAAA,KAAA,iBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,gBAAA,4BAAE;YAA/G,IAAM,IAAI,WAAA;YACX,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAChC,MAAM;aACT;YACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACnC;;;;;;;;;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UACZ,IAAa,EACb,SAA0C,EAC1C,MAAyB;IAAzB,uBAAA,EAAA,WAAyB;IAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAhC,CAAgC,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;KACjB;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,OAAO,MAAM,CAAC;KACjB;IAED,IAAM,MAAM,GAAG,IAAkB,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;QACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvB;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAjC,CAAiC,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,IAAM,KAAK,GAAG;IACV,QAAQ,CAAC,wCAAwC,CAAC;IAClD,QAAQ,CAAC,+CAA+C,CAAC;CAC5D,CAAC;AACF,IAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CACpC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,yCAAyC,CAAC,EACtE,MAAM,CACT,CAAC;AACF,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAC5C,IAAI,EACJ,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,SAAS;OAC9B,MAAM,CAAC,GAAG,KAAK,sDAAsD,EADhE,CACgE,CAC/E,EAJwC,CAIxC,CAAC,CAAC;AACH,IAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CACtD,IAAI,EACJ,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,SAAS;OAC9B,MAAM,CAAC,GAAG,KAAK,8DAA8D,EADxE,CACwE,CACvF,EAJkD,CAIlD,CAAC,CAAC;AACH,IAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAC/C,IAAI,EACJ,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM,EAAtB,CAAsB,CACrC,EAH2C,CAG3C,CAAC,CAAC;AAEH,IAAM,OAAO,GAAG,UAAC,IAAa,EAAE,SAA0C;IACtE,IAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE;IAC/B,EAAE,CAAC,yEAAyE,EAAE;QAC1E,MAAM,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE3C,kBAAkB,CAAC,OAAO,CAAC,UAAC,OAAO;YAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM,EAAtB,CAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACnF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE;QACrF,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CACjD,IAAI,EACJ,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAhC,CAAgC,CAC/C,EAH6C,CAG7C,CAAC,CAAC;QAEH,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,aAAa,CAAC,OAAO,CAAC,UAAC,QAAQ;YAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpD,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAhC,CAAgC,CAAC,CAAC;YACtF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE;QAC/D,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE3C,kBAAkB,CAAC,OAAO,CAAC,UAAC,OAAO;YAC/B,IAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM,EAAtB,CAAsB,CAAC,CAAC;YACvE,IAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,KAAK,OAAO,EAAxB,CAAwB,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBACxB,OAAA,MAAM,CAAC,IAAI,KAAK,SAAS;uBAClB,MAAM,CAAC,GAAG,KAAK,8DAA8D;YADpF,CACoF,CACvF,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE;QACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBAC3C,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;YAAvD,CAAuD,CAC1D,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAC,MAAM;gBACnC,OAAA,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY;YAAzD,CAAyD,CAC5D,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE;QACvD,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBACxC,OAAA,MAAM,CAAC,SAAS,KAAK,iCAAiC;YAAtD,CAAsD,CACzD,CAAC;YACF,IAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,UAAC,MAAM;gBACtC,OAAA,MAAM,CAAC,SAAS,KAAK,gCAAgC;YAArD,CAAqD,CACxD,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE9C,IAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAC,MAAM;gBACnD,OAAA,MAAM,CAAC,IAAI,KAAK,qBAAqB;YAArC,CAAqC,CACxC,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAC,MAAM;gBAC1B,OAAA,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAhE,CAAgE,CACnE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEnB,IAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,KAAK,SAAS,EAA1B,CAA0B,CAAC,CAAC;YAC7E,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAE9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE;QACtD,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBACvC,OAAA,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY;YAAzD,CAAyD,CAC5D,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC7B,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,mBAAmB;gBACxB,QAAQ,EAAE,MAAM;aACnB,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAErE,IAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAA9B,CAA8B,CAAC;iBAC5E,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,GAAG,EAAV,CAAU,CAAC,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC7C,qBAAqB;gBACrB,8BAA8B;gBAC9B,uBAAuB;aAC1B,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAApB,CAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE;QACjE,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,KAAK,SAAS,EAA1B,CAA0B,CAAC,CAAC;YACnF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAxB,CAAwB,CAAC,CAAC;YACvF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAgB,IAAK,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/D,aAAa;gBACb,cAAc;aACjB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACrF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACrE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YACvF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAEvF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAEvF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;YAE1F,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;YAC5C,IAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,UAAC,MAAM;gBAC7C,OAAA,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB;YAApE,CAAoE,CACvE,CAAC;YACF,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACrE,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;YACjD,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBAC3C,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,iBAAiB;gBACvB,YAAY,EAAE,qBAAqB;gBACnC,sBAAsB,EAAE,IAAI;gBAC5B,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,EAAE;oBACF,UAAU,EAAE,KAAK;oBACjB,YAAY,EAAE,KAAK;iBACtB;aACJ,CAAC,CAAC;YACH,IAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,UAAC,MAAM;gBAC5C,OAAA,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;YAA5D,CAA4D,CAC/D,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,GAAG,KAAK,2BAA2B,EAA1C,CAA0C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM;gBACvB,OAAA,MAAM,CAAC,GAAG,KAAK,sIAAsI;YAArJ,CAAqJ,CACxJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM;gBACvB,OAAA,MAAM,CAAC,IAAI,KAAK,4CAA4C;YAA5D,CAA4D,CAC/D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAC,MAAM;gBACxC,OAAA,MAAM,CAAC,SAAS,KAAK,4BAA4B;YAAjD,CAAiD,CACpD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE;QAC7D,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,KAAK,iBAAiB,EAA/B,CAA+B,CAAC,CAAC;QACrF,IAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAC,MAAM;YACvE,OAAA,MAAM,CAAC,SAAS,KAAK,gBAAgB;QAArC,CAAqC,CACxC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAChF,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC9E,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAExF,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;YACjE,OAAA,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW;QAAzE,CAAyE,CAC5E,EAF+C,CAE/C,CAAC,CAAC;QACH,IAAM,kBAAkB,GAAG,UAAC,MAAkB;YAC1C,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7C,IAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,UAAC,MAAkB;;gBACtD,OAAA,MAAM,CAAC,UAAU,KAAK,MAAM;wBACrB,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,GAAG,0CAAE,QAAQ,CAAC,UAAU,CAAC,CAAA,CAAA;aAAA,CAC/C,CAAC;YAEF,MAAM,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC5C,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE;oBACF,OAAO,EAAE,SAAS;oBAClB,QAAQ,EAAE,WAAW;oBACrB,GAAG,EAAE,eAAe;iBACvB;aACJ,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,eAAe,CAAC,OAAO,CAAC,UAAC,MAAM;YAC3B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAC,MAAM;gBAC9D,OAAA,MAAM,CAAC,SAAS,KAAK,gBAAgB;YAArC,CAAqC,CACxC,CAAC;YACF,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChF,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAM,cAAc,GAAG,UAAC,cAAsB,EAAE,OAAmB;YAC/D,OAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAClD,EAAE,EACF,OAAO,EACP,EAAE,MAAM,EAAE,cAAM,OAAA,cAAc,EAAd,CAAc,EAAE,CACnC;QAJD,CAIC,CAAC;QACN,IAAM,gBAAgB,GAAG;YACrB,EAAE,KAAK,EAAE,IAAI,EAAE;YACf,IAAI;YACJ,EAAE;YACF,EAAE,KAAK,EAAE,aAAa,EAAE;YACxB,EAAE,GAAG,EAAE,UAAU,EAAE;YACnB,cAAc;SACjB,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE;YACrD,mBAAmB,EAAE,gBAAgB;SACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QAEpF,IAAM,iBAAiB,GAAG,OAAO,CAC7B,cAAc,CAAC,oDAAoD,CAAC,EACpE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,KAAK,iBAAiB,EAA/B,CAA+B,CAC9C,CAAC;QACF,IAAM,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAC,MAAM;YAC/E,OAAA,MAAM,CAAC,SAAS,KAAK,gBAAgB;QAArC,CAAqC,CACxC,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE;YACzD,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,EAAE;SAClE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QAEpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,kBAAkB,CAAC,OAAO,CAAC,UAAC,OAAO;YAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBAChC,OAAA,MAAM,CAAC,IAAI,KAAK,iCAAiC;uBAC1C,MAAM,CAAC,oBAAoB,KAAK,mBAAmB;YAD1D,CAC0D,CAC7D,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,KAAK,SAAS,EAA1B,CAA0B,CAAC,CAAC;YACnF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAE7E,IAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBAC7C,OAAA,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,oBAAoB;YAAlE,CAAkE,CACrE,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE;QACjD,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,MAAM;gBAChC,OAAA,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;uBAC7B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAD9D,CAC8D,CACjE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE;QACrE,IAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAC,MAAM;YAC5C,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM;mBACf,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;mBACpC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAFjE,CAEiE,CACpE,CAAC;QACF,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAC,MAAM;YAC1C,OAAA,MAAM,CAAC,IAAI,KAAK,MAAM;mBACf,OAAO,CAAC,MAAM,EAAE,UAAC,KAAK;oBACrB,OAAA,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;2BAC5B,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,gCAAgC,CAAC;gBADjE,CACiE,CACpE,CAAC,MAAM,KAAK,CAAC;QAJlB,CAIkB,CACrB,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC1E,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC5E,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC;YAC/B,iFAAiF;YACjF,kBAAkB;YAClB,wBAAwB;YACxB,GAAG;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -117,6 +117,9 @@ tab_items:
117
117
  object_pepsico_mail_visit_log:
118
118
  group: 业务日志
119
119
  index: 20
120
+ object_pepsico_pls_change_log:
121
+ group: 业务日志
122
+ index: 29
120
123
  admin_logs:
121
124
  group: 系统信息
122
125
  index: 21
@@ -157,6 +160,7 @@ tabs:
157
160
  - object_pepsico_spot_check_report
158
161
  - object_pepsico_mail_send_log
159
162
  - object_pepsico_mail_visit_log
163
+ - object_pepsico_pls_change_log
160
164
  - admin_logs
161
165
  - admin_steedos_packages
162
166
  - operation_logs
@@ -13,7 +13,14 @@ document.title = "内容审核";
13
13
  // document.head.appendChild(link);
14
14
 
15
15
  var today = new Date();
16
- var v = today.getFullYear().toString() + (today.getMonth() + 1).toString().padStart(2, '0') + today.getDate().toString().padStart(2, '0');
16
+ var fallbackV = today.getFullYear().toString()
17
+ + (today.getMonth() + 1).toString().padStart(2, '0')
18
+ + today.getDate().toString().padStart(2, '0')
19
+ + today.getHours().toString().padStart(2, '0')
20
+ + today.getMinutes().toString().padStart(2, '0');
21
+ var v = window.__meteor_runtime_config__ && window.__meteor_runtime_config__.autoupdateVersion
22
+ ? window.__meteor_runtime_config__.autoupdateVersion
23
+ : fallbackV;
17
24
 
18
25
  loadCss(Steedos.absoluteUrl('/content-review/topic.css?v='+v));
19
26
  loadCss(Steedos.absoluteUrl('/content-review/amis.css?v='+v));
@@ -56,5 +63,3 @@ if(false){
56
63
  }, {});
57
64
  })
58
65
  }
59
-
60
-
@@ -21,6 +21,7 @@ field_groups:
21
21
  - group_name: 视频
22
22
  - group_name: Word
23
23
  - group_name: PPT
24
+ - group_name: PLS
24
25
  icon: video
25
26
  is_enable: true
26
27
  label: AI数据处理明细行
@@ -0,0 +1,9 @@
1
+ name: pls_extracted_data
2
+ amis:
3
+ id: 'u:a1b2c3d50010'
4
+ group: PLS
5
+ is_wide: true
6
+ label: 模型输出的完整多产品结构化数据
7
+ language: json
8
+ sort_no: 1200
9
+ type: code
@@ -0,0 +1,9 @@
1
+ name: pls_file_ids
2
+ amis:
3
+ id: 'u:a1b2c3d50011'
4
+ group: PLS
5
+ is_wide: true
6
+ label: 用户提供的一个或多个PLS文件ID
7
+ language: json
8
+ sort_no: 1250
9
+ type: code
@@ -0,0 +1,9 @@
1
+ name: pls_product_name_matched
2
+ amis:
3
+ id: 'u:a1b2c3d50012'
4
+ group: PLS
5
+ is_wide: false
6
+ label: 所有素材产品名是否都能在PLS规则中找到
7
+ required: false
8
+ sort_no: 1300
9
+ type: boolean
@@ -0,0 +1,9 @@
1
+ name: pls_rule_unique_matched
2
+ amis:
3
+ id: 'u:a1b2c3d50013'
4
+ group: PLS
5
+ is_wide: false
6
+ label: 每个产品是否能唯一定位一组PLS规则
7
+ required: false
8
+ sort_no: 1350
9
+ type: boolean
@@ -0,0 +1,14 @@
1
+ name: company_id
2
+ amis:
3
+ id: 'u:dbf9ff7957a7'
4
+ description: ''
5
+ enable_thousands: true
6
+ group: 通用
7
+ index: true
8
+ inlineHelpText: ''
9
+ label: 主分部
10
+ reference_to: company
11
+ sort_no: 500
12
+ sortable: true
13
+ type: lookup
14
+ visible_on: '{{false}}'
@@ -0,0 +1,16 @@
1
+ name: company_ids
2
+ amis:
3
+ id: 'u:9e1464ea0def'
4
+ description: ''
5
+ enable_thousands: true
6
+ group: 通用
7
+ hidden: false
8
+ index: true
9
+ inlineHelpText: ''
10
+ label: 所属分部
11
+ multiple: true
12
+ reference_to: company
13
+ sort_no: 550
14
+ sortable: true
15
+ type: lookup
16
+ visible_on: '{{false}}'
@@ -0,0 +1,10 @@
1
+ name: created
2
+ amis:
3
+ id: 'u:533baf78ad91'
4
+ disabled: true
5
+ group: 通用
6
+ label: 创建时间
7
+ readonly: true
8
+ sort_no: 650
9
+ sortable: true
10
+ type: datetime
@@ -0,0 +1,9 @@
1
+ name: created_by
2
+ amis: {}
3
+ disabled: true
4
+ group: 通用
5
+ label: 创建人
6
+ readonly: true
7
+ reference_to: users
8
+ sort_no: 700
9
+ type: lookup
@@ -0,0 +1,8 @@
1
+ name: file_name
2
+ amis:
3
+ id: 'u:079e0a9780f3'
4
+ group: 通用
5
+ label: 文件名
6
+ required: true
7
+ sort_no: 100
8
+ type: text
@@ -0,0 +1,25 @@
1
+ name: instance_state
2
+ amis:
3
+ id: 'u:6ecc9e437b0f'
4
+ description: ''
5
+ enable_thousands: true
6
+ group: 通用
7
+ inlineHelpText: ''
8
+ label: 申请单审批状态
9
+ options:
10
+ - label: 草稿
11
+ value: draft
12
+ - label: 进行中
13
+ value: pending
14
+ - label: 已完成
15
+ value: completed
16
+ - label: 已核准
17
+ value: approved
18
+ - label: 已驳回
19
+ value: rejected
20
+ - label: 已取消
21
+ value: terminated
22
+ readonly: true
23
+ sort_no: 600
24
+ type: select
25
+ visible_on: '{{false}}'
@@ -0,0 +1,12 @@
1
+ name: locked
2
+ amis:
3
+ id: 'u:80c1945ba6cf'
4
+ description: ''
5
+ enable_thousands: true
6
+ group: 通用
7
+ hidden: false
8
+ inlineHelpText: ''
9
+ label: 已锁定
10
+ sort_no: 450
11
+ type: boolean
12
+ visible_on: '{{false}}'
@@ -0,0 +1,10 @@
1
+ name: material_type
2
+ amis:
3
+ id: 'u:931b3c6cc6b6'
4
+ deleted_lookup_record_behavior: retain
5
+ group: 通用
6
+ label: 素材类型
7
+ reference_to: picklist_options
8
+ required: true
9
+ sort_no: 300
10
+ type: lookup
@@ -0,0 +1,13 @@
1
+ name: media_type
2
+ amis:
3
+ id: 'u:ce18de49afe1'
4
+ group: 通用
5
+ label: 媒体类型
6
+ options:
7
+ - label: 图片
8
+ value: 图片
9
+ - label: 视频
10
+ value: 视频
11
+ required: true
12
+ sort_no: 200
13
+ type: select
@@ -0,0 +1,10 @@
1
+ name: modified
2
+ amis:
3
+ id: 'u:556f829f2866'
4
+ disabled: true
5
+ group: 通用
6
+ label: 修改时间
7
+ readonly: true
8
+ sort_no: 750
9
+ sortable: true
10
+ type: datetime
@@ -0,0 +1,9 @@
1
+ name: modified_by
2
+ amis: {}
3
+ disabled: true
4
+ group: 通用
5
+ label: 修改人
6
+ readonly: true
7
+ reference_to: users
8
+ sort_no: 800
9
+ type: lookup
@@ -0,0 +1,11 @@
1
+ name: name
2
+ amis:
3
+ id: 'u:bac9e64dde15'
4
+ filterable: true
5
+ group: 通用
6
+ index: true
7
+ label: 标题
8
+ required: true
9
+ searchable: true
10
+ sort_no: 50
11
+ type: text
@@ -0,0 +1,12 @@
1
+ name: owner
2
+ amis:
3
+ id: 'u:3671e1624489'
4
+ description: ''
5
+ enable_thousands: true
6
+ group: 通用
7
+ index: true
8
+ inlineHelpText: ''
9
+ label: 所有者
10
+ sort_no: 400
11
+ sortable: true
12
+ visible_on: '{{false}}'