@chenchaolong/plugin-trade-compliance-workbench 0.1.73 → 1.0.0

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 (180) hide show
  1. package/README.md +41 -22
  2. package/dist/assets/templates/CI.xlsx +0 -0
  3. package/dist/assets/templates/CUSTOMS_DECLARATION.xlsx +0 -0
  4. package/dist/assets/templates/PI.xlsx +0 -0
  5. package/dist/assets/templates/PL.xlsx +0 -0
  6. package/dist/index.d.ts +115 -228
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +19 -108
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/{document-text-extractor.d.ts → adapters/document-text-extractor.d.ts} +2 -2
  11. package/dist/lib/adapters/document-text-extractor.d.ts.map +1 -0
  12. package/dist/lib/{document-text-extractor.js → adapters/document-text-extractor.js} +8 -2
  13. package/dist/lib/adapters/document-text-extractor.js.map +1 -0
  14. package/dist/lib/adapters/file-storage.d.ts +9 -0
  15. package/dist/lib/adapters/file-storage.d.ts.map +1 -0
  16. package/dist/lib/adapters/file-storage.js +37 -0
  17. package/dist/lib/adapters/file-storage.js.map +1 -0
  18. package/dist/lib/{trade-compliance.enrichment.d.ts → adapters/hsbianma.provider.d.ts} +6 -6
  19. package/dist/lib/adapters/hsbianma.provider.d.ts.map +1 -0
  20. package/dist/lib/{trade-compliance.enrichment.js → adapters/hsbianma.provider.js} +1 -1
  21. package/dist/lib/adapters/hsbianma.provider.js.map +1 -0
  22. package/dist/lib/adapters/translation.provider.d.ts +4 -0
  23. package/dist/lib/adapters/translation.provider.d.ts.map +1 -0
  24. package/dist/lib/adapters/translation.provider.js +35 -0
  25. package/dist/lib/adapters/translation.provider.js.map +1 -0
  26. package/dist/lib/constants.d.ts +17 -11
  27. package/dist/lib/constants.d.ts.map +1 -1
  28. package/dist/lib/constants.js +17 -21
  29. package/dist/lib/constants.js.map +1 -1
  30. package/dist/lib/domain/contract-number.d.ts +14 -0
  31. package/dist/lib/domain/contract-number.d.ts.map +1 -0
  32. package/dist/lib/domain/contract-number.js +36 -0
  33. package/dist/lib/domain/contract-number.js.map +1 -0
  34. package/dist/lib/domain/default-settings.d.ts +28 -0
  35. package/dist/lib/domain/default-settings.d.ts.map +1 -0
  36. package/dist/lib/domain/default-settings.js +16 -0
  37. package/dist/lib/domain/default-settings.js.map +1 -0
  38. package/dist/lib/domain/finance.d.ts +37 -0
  39. package/dist/lib/domain/finance.d.ts.map +1 -0
  40. package/dist/lib/domain/finance.js +60 -0
  41. package/dist/lib/domain/finance.js.map +1 -0
  42. package/dist/lib/domain/import-issues.d.ts +10 -0
  43. package/dist/lib/domain/import-issues.d.ts.map +1 -0
  44. package/dist/lib/domain/import-issues.js +23 -0
  45. package/dist/lib/domain/import-issues.js.map +1 -0
  46. package/dist/lib/domain/normalization.d.ts +8 -0
  47. package/dist/lib/domain/normalization.d.ts.map +1 -0
  48. package/dist/lib/domain/normalization.js +50 -0
  49. package/dist/lib/domain/normalization.js.map +1 -0
  50. package/dist/lib/domain/workflow.d.ts +4 -0
  51. package/dist/lib/domain/workflow.d.ts.map +1 -0
  52. package/dist/lib/domain/workflow.js +14 -0
  53. package/dist/lib/domain/workflow.js.map +1 -0
  54. package/dist/lib/entities/base.d.ts +20 -0
  55. package/dist/lib/entities/base.d.ts.map +1 -0
  56. package/dist/lib/entities/base.js +51 -0
  57. package/dist/lib/entities/base.js.map +1 -0
  58. package/dist/lib/entities/catalog.entity.d.ts +80 -0
  59. package/dist/lib/entities/catalog.entity.d.ts.map +1 -0
  60. package/dist/lib/entities/catalog.entity.js +308 -0
  61. package/dist/lib/entities/catalog.entity.js.map +1 -0
  62. package/dist/lib/entities/customer.entity.d.ts +72 -0
  63. package/dist/lib/entities/customer.entity.d.ts.map +1 -0
  64. package/dist/lib/entities/customer.entity.js +276 -0
  65. package/dist/lib/entities/customer.entity.js.map +1 -0
  66. package/dist/lib/entities/index.d.ts +12 -6
  67. package/dist/lib/entities/index.d.ts.map +1 -1
  68. package/dist/lib/entities/index.js +20 -7
  69. package/dist/lib/entities/index.js.map +1 -1
  70. package/dist/lib/entities/procurement.entity.d.ts +99 -0
  71. package/dist/lib/entities/procurement.entity.d.ts.map +1 -0
  72. package/dist/lib/entities/procurement.entity.js +386 -0
  73. package/dist/lib/entities/procurement.entity.js.map +1 -0
  74. package/dist/lib/entities/settings.entity.d.ts +64 -0
  75. package/dist/lib/entities/settings.entity.d.ts.map +1 -0
  76. package/dist/lib/entities/settings.entity.js +243 -0
  77. package/dist/lib/entities/settings.entity.js.map +1 -0
  78. package/dist/lib/entities/shared.entity.d.ts +40 -0
  79. package/dist/lib/entities/shared.entity.d.ts.map +1 -0
  80. package/dist/lib/entities/shared.entity.js +149 -0
  81. package/dist/lib/entities/shared.entity.js.map +1 -0
  82. package/dist/lib/remote-components/trade-compliance-workbench/app.js +245 -2677
  83. package/dist/lib/remote-components/trade-compliance-workbench/editor-source.mjs +53 -0
  84. package/dist/lib/remote-components/trade-compliance-workbench/editor.css +1 -0
  85. package/dist/lib/remote-components/trade-compliance-workbench/editor.js +533 -0
  86. package/dist/lib/sales-file.service.d.ts +29 -0
  87. package/dist/lib/sales-file.service.d.ts.map +1 -0
  88. package/dist/lib/sales-file.service.js +300 -0
  89. package/dist/lib/sales-file.service.js.map +1 -0
  90. package/dist/lib/trade-compliance.config.d.ts +94 -187
  91. package/dist/lib/trade-compliance.config.d.ts.map +1 -1
  92. package/dist/lib/trade-compliance.config.js +12 -96
  93. package/dist/lib/trade-compliance.config.js.map +1 -1
  94. package/dist/lib/types.d.ts +104 -1
  95. package/dist/lib/types.d.ts.map +1 -1
  96. package/dist/lib/types.js +47 -1
  97. package/dist/lib/types.js.map +1 -1
  98. package/dist/lib/workbench-view.provider.d.ts +276 -0
  99. package/dist/lib/workbench-view.provider.d.ts.map +1 -0
  100. package/dist/lib/workbench-view.provider.js +222 -0
  101. package/dist/lib/workbench-view.provider.js.map +1 -0
  102. package/dist/lib/workbench.middleware.d.ts +351 -0
  103. package/dist/lib/workbench.middleware.d.ts.map +1 -0
  104. package/dist/lib/workbench.middleware.js +48 -0
  105. package/dist/lib/workbench.middleware.js.map +1 -0
  106. package/dist/lib/workbench.plugin.d.ts +5 -0
  107. package/dist/lib/workbench.plugin.d.ts.map +1 -0
  108. package/dist/lib/workbench.plugin.js +24 -0
  109. package/dist/lib/workbench.plugin.js.map +1 -0
  110. package/dist/lib/workbench.service.d.ts +257 -0
  111. package/dist/lib/workbench.service.d.ts.map +1 -0
  112. package/dist/lib/workbench.service.js +755 -0
  113. package/dist/lib/workbench.service.js.map +1 -0
  114. package/package.json +19 -25
  115. package/dist/assets/customs-workbook-template.xls +0 -0
  116. package/dist/lib/controlled-goods-extracted-text-store.d.ts +0 -29
  117. package/dist/lib/controlled-goods-extracted-text-store.d.ts.map +0 -1
  118. package/dist/lib/controlled-goods-extracted-text-store.js +0 -42
  119. package/dist/lib/controlled-goods-extracted-text-store.js.map +0 -1
  120. package/dist/lib/controlled-goods-file-parser.d.ts +0 -9
  121. package/dist/lib/controlled-goods-file-parser.d.ts.map +0 -1
  122. package/dist/lib/controlled-goods-file-parser.js +0 -298
  123. package/dist/lib/controlled-goods-file-parser.js.map +0 -1
  124. package/dist/lib/document-text-extractor.d.ts.map +0 -1
  125. package/dist/lib/document-text-extractor.js.map +0 -1
  126. package/dist/lib/entities/controlled-goods-record.entity.d.ts +0 -5
  127. package/dist/lib/entities/controlled-goods-record.entity.d.ts.map +0 -1
  128. package/dist/lib/entities/controlled-goods-record.entity.js +0 -68
  129. package/dist/lib/entities/controlled-goods-record.entity.js.map +0 -1
  130. package/dist/lib/entities/customs-workbook-generation.entity.d.ts +0 -5
  131. package/dist/lib/entities/customs-workbook-generation.entity.d.ts.map +0 -1
  132. package/dist/lib/entities/customs-workbook-generation.entity.js +0 -72
  133. package/dist/lib/entities/customs-workbook-generation.entity.js.map +0 -1
  134. package/dist/lib/entities/trade-compliance-import-batch.entity.d.ts +0 -5
  135. package/dist/lib/entities/trade-compliance-import-batch.entity.d.ts.map +0 -1
  136. package/dist/lib/entities/trade-compliance-import-batch.entity.js +0 -60
  137. package/dist/lib/entities/trade-compliance-import-batch.entity.js.map +0 -1
  138. package/dist/lib/entities/trade-compliance-review-item.entity.d.ts +0 -5
  139. package/dist/lib/entities/trade-compliance-review-item.entity.d.ts.map +0 -1
  140. package/dist/lib/entities/trade-compliance-review-item.entity.js +0 -84
  141. package/dist/lib/entities/trade-compliance-review-item.entity.js.map +0 -1
  142. package/dist/lib/entities/trade-product.entity.d.ts +0 -5
  143. package/dist/lib/entities/trade-product.entity.d.ts.map +0 -1
  144. package/dist/lib/entities/trade-product.entity.js +0 -105
  145. package/dist/lib/entities/trade-product.entity.js.map +0 -1
  146. package/dist/lib/entities/trade-supplier.entity.d.ts +0 -5
  147. package/dist/lib/entities/trade-supplier.entity.d.ts.map +0 -1
  148. package/dist/lib/entities/trade-supplier.entity.js +0 -55
  149. package/dist/lib/entities/trade-supplier.entity.js.map +0 -1
  150. package/dist/lib/trade-compliance-workbench-view.provider.d.ts +0 -129
  151. package/dist/lib/trade-compliance-workbench-view.provider.d.ts.map +0 -1
  152. package/dist/lib/trade-compliance-workbench-view.provider.js +0 -863
  153. package/dist/lib/trade-compliance-workbench-view.provider.js.map +0 -1
  154. package/dist/lib/trade-compliance-workbench.middleware.d.ts +0 -485
  155. package/dist/lib/trade-compliance-workbench.middleware.d.ts.map +0 -1
  156. package/dist/lib/trade-compliance-workbench.middleware.js +0 -494
  157. package/dist/lib/trade-compliance-workbench.middleware.js.map +0 -1
  158. package/dist/lib/trade-compliance-workbench.plugin.d.ts +0 -11
  159. package/dist/lib/trade-compliance-workbench.plugin.d.ts.map +0 -1
  160. package/dist/lib/trade-compliance-workbench.plugin.js +0 -39
  161. package/dist/lib/trade-compliance-workbench.plugin.js.map +0 -1
  162. package/dist/lib/trade-compliance-workbench.service.d.ts +0 -33
  163. package/dist/lib/trade-compliance-workbench.service.d.ts.map +0 -1
  164. package/dist/lib/trade-compliance-workbench.service.js +0 -369
  165. package/dist/lib/trade-compliance-workbench.service.js.map +0 -1
  166. package/dist/lib/trade-compliance-workbench.templates.d.ts +0 -31
  167. package/dist/lib/trade-compliance-workbench.templates.d.ts.map +0 -1
  168. package/dist/lib/trade-compliance-workbench.templates.js +0 -60
  169. package/dist/lib/trade-compliance-workbench.templates.js.map +0 -1
  170. package/dist/lib/trade-compliance-workbook.d.ts +0 -28
  171. package/dist/lib/trade-compliance-workbook.d.ts.map +0 -1
  172. package/dist/lib/trade-compliance-workbook.js +0 -635
  173. package/dist/lib/trade-compliance-workbook.js.map +0 -1
  174. package/dist/lib/trade-compliance.enrichment.d.ts.map +0 -1
  175. package/dist/lib/trade-compliance.enrichment.js.map +0 -1
  176. package/dist/lib/trade-compliance.matching.d.ts +0 -10
  177. package/dist/lib/trade-compliance.matching.d.ts.map +0 -1
  178. package/dist/lib/trade-compliance.matching.js +0 -63
  179. package/dist/lib/trade-compliance.matching.js.map +0 -1
  180. package/dist/xpert-trade-compliance-workbench-assistant.yaml +0 -27
@@ -1,494 +0,0 @@
1
- // @ts-nocheck
2
- import { __decorate, __metadata, __param } from "tslib";
3
- import { Inject, Injectable, Optional } from '@nestjs/common';
4
- import { tool } from '@langchain/core/tools';
5
- import { readFile } from 'fs/promises';
6
- import { dirname, join } from 'path';
7
- import { fileURLToPath } from 'url';
8
- import { AgentMiddlewareStrategy, PLUGIN_CONFIG_RESOLVER_TOKEN, RequestContext } from '@xpert-ai/plugin-sdk';
9
- import { z } from 'zod/v3';
10
- import { TRADE_COMPLIANCE_FEATURE, TRADE_COMPLIANCE_ICON, TRADE_COMPLIANCE_MIDDLEWARE_NAME, TRADE_COMPLIANCE_PLUGIN_NAME, TRADE_COMPLIANCE_TOOL_NAMES } from './constants.js';
11
- import { readTradeComplianceEnvDefaults, TradeComplianceWorkbenchConfigSchema } from './trade-compliance.config.js';
12
- import { enrichProductWithFallback, searchHsBianmaCodes } from './trade-compliance.enrichment.js';
13
- import { matchControlledGoods } from './trade-compliance.matching.js';
14
- import { buildCustomsWorkbookModel, createCustomsWorkbookFromTemplateBuffer } from './trade-compliance-workbook.js';
15
- import { TradeComplianceWorkbenchService } from './trade-compliance-workbench.service.js';
16
- import { getControlledGoodsExtractedTextChunk } from './controlled-goods-extracted-text-store.js';
17
- const __filename = fileURLToPath(import.meta.url);
18
- const __dirname = dirname(__filename);
19
- const reviewItemSchema = z.object({
20
- type: z.enum(['controlled_goods', 'supplier_product', 'customs_workbook']),
21
- title: z.string().min(1),
22
- extractedData: z.record(z.unknown()).optional(),
23
- defaultData: z.record(z.unknown()).optional(),
24
- fields: z.array(z.record(z.unknown())).optional(),
25
- confidence: z.number().min(0).max(1).optional(),
26
- sourceLocation: z.string().optional()
27
- });
28
- const createReviewBatchSchema = z.object({
29
- batchId: z.string().optional(),
30
- sourceFileName: z.string().optional(),
31
- metadata: z.record(z.unknown()).optional(),
32
- items: z.array(reviewItemSchema).default([])
33
- });
34
- const controlledGoodsRowsSchema = z.object({
35
- batchId: z.string().optional(),
36
- sourceFileName: z.string().optional(),
37
- metadata: z.record(z.unknown()).optional(),
38
- items: z.array(reviewItemSchema).optional(),
39
- rows: z.array(z.object({
40
- productName: z.string().optional(),
41
- hsCode: z.string().optional(),
42
- keywords: z.array(z.string()).optional(),
43
- controlNote: z.string().optional().describe('Only fill when the source row explicitly states a control basis, license requirement, prohibition, restriction, or compliance note. Leave empty for generic chapter/category labels; do not invent text.'),
44
- enabled: z.boolean().optional(),
45
- sequence: z.string().optional(),
46
- controlCode: z.string().optional(),
47
- sectionPath: z.string().optional().describe('Source chapter, sheet, or section path. Do not copy this into controlNote.'),
48
- rawText: z.string().optional().describe('Original row text from the source. Do not copy this into controlNote unless it explicitly is a control note.'),
49
- sourcePage: z.string().optional(),
50
- sourceLocation: z.string().optional(),
51
- confidence: z.number().min(0).max(1).optional()
52
- })).optional()
53
- });
54
- const controlledGoodsTextChunkSchema = z.object({
55
- batchId: z.string().min(1),
56
- chunkIndex: z.number().int().min(1).default(1)
57
- });
58
- const productSchema = z.object({
59
- productName: z.string().optional(),
60
- model: z.string().optional(),
61
- description: z.string().optional(),
62
- hsCode: z.string().optional()
63
- });
64
- const controlledGoodsCandidateSchema = z.object({
65
- id: z.string(),
66
- productName: z.string().optional(),
67
- hsCode: z.string().optional(),
68
- keywords: z.array(z.string()).optional(),
69
- controlNote: z.string().optional(),
70
- enabled: z.boolean().optional()
71
- });
72
- const workbookSchema = z.object({
73
- source: z.record(z.unknown()),
74
- defaults: z.record(z.unknown()).optional()
75
- });
76
- const generatedWorkbookSchema = z.object({
77
- sourceFileName: z.string().optional(),
78
- invoiceNo: z.string().optional(),
79
- contractNo: z.string().optional(),
80
- fileName: z.string().min(1),
81
- sheetNames: z.array(z.string()).default(['报关单', 'CI', 'Contract', 'PL']),
82
- workbookData: z.record(z.unknown()).optional()
83
- });
84
- let TradeComplianceWorkbenchMiddleware = class TradeComplianceWorkbenchMiddleware {
85
- constructor(service, pluginConfigResolver) {
86
- this.service = service;
87
- this.pluginConfigResolver = pluginConfigResolver;
88
- this.meta = {
89
- name: TRADE_COMPLIANCE_MIDDLEWARE_NAME,
90
- label: {
91
- en_US: 'Trade Compliance Workbench',
92
- zh_Hans: '外贸合规工作台'
93
- },
94
- description: {
95
- en_US: 'Tools for controlled goods review, supplier product extraction, enrichment, and customs workbook generation.',
96
- zh_Hans: '提供管控商品识别、供应商商品抽取、商品补全和报关资料生成工具。'
97
- },
98
- icon: {
99
- type: 'svg',
100
- value: TRADE_COMPLIANCE_ICON,
101
- color: '#0f766e'
102
- },
103
- features: [TRADE_COMPLIANCE_FEATURE],
104
- configSchema: {
105
- type: 'object',
106
- properties: {}
107
- }
108
- };
109
- }
110
- createMiddleware(_options, context) {
111
- const scope = scopeFromContext(context);
112
- const config = this.resolveConfig();
113
- return {
114
- name: TRADE_COMPLIANCE_MIDDLEWARE_NAME,
115
- tools: [
116
- tool(async (input) => {
117
- const normalizedInput = normalizeControlledGoodsExtractionInput(input);
118
- return stringify(summarizeReviewBatchResult(await this.service.createReviewBatch(scope, { ...normalizedInput, type: 'controlled_goods_file' }), normalizedInput));
119
- }, {
120
- name: TRADE_COMPLIANCE_TOOL_NAMES[0],
121
- description: 'Save controlled goods entries extracted from an uploaded control catalog file into a review batch. Prefer the compact rows field for hundreds or thousands of records; the plugin converts rows into review items. Use one call with the same batchId whenever possible.',
122
- schema: controlledGoodsRowsSchema
123
- }),
124
- tool(async (input) => stringify(summarizeReviewBatchResult(await this.service.createReviewBatch(scope, {
125
- ...input,
126
- type: 'supplier_contract',
127
- items: await enrichSupplierReviewItemsWithHsCandidates(input.items, config)
128
- }), input)), {
129
- name: TRADE_COMPLIANCE_TOOL_NAMES[1],
130
- description: 'Save supplier and product information extracted from a supplier contract into a review batch.',
131
- schema: createReviewBatchSchema
132
- }),
133
- tool(async (input) => stringify(await enrichProductWithFallback(input, {
134
- hsbianma: {
135
- baseUrl: config.enrichment?.apiBaseUrl,
136
- timeoutMs: config.enrichment?.timeoutMs
137
- }
138
- })), {
139
- name: TRADE_COMPLIANCE_TOOL_NAMES[2],
140
- description: 'Enrich a product with HS code, tax refund rate, and English product name by querying HS编码网 HTML search results and parsing the result table.',
141
- schema: productSchema
142
- }),
143
- tool(async (input) => stringify(matchControlledGoods(input.product, input.candidates.map((candidate) => ({
144
- id: candidate.id ?? '',
145
- productName: candidate.productName,
146
- hsCode: candidate.hsCode,
147
- keywords: candidate.keywords,
148
- controlNote: candidate.controlNote,
149
- enabled: candidate.enabled
150
- })))), {
151
- name: TRADE_COMPLIANCE_TOOL_NAMES[3],
152
- description: 'Match product information against explicit controlled goods records using HS code, product name, description, and keywords.',
153
- schema: z.object({
154
- product: productSchema,
155
- candidates: z.array(controlledGoodsCandidateSchema)
156
- })
157
- }),
158
- tool(async (input) => {
159
- const normalizedInput = normalizeSalesContractExtractionInput(input);
160
- return stringify(summarizeReviewBatchResult(await this.service.createReviewBatch(scope, { ...normalizedInput, type: 'sales_contract' }), normalizedInput));
161
- }, {
162
- name: TRADE_COMPLIANCE_TOOL_NAMES[4],
163
- description: 'Save sales contract extraction results for review before customs workbook generation.',
164
- schema: createReviewBatchSchema
165
- }),
166
- tool(async (input) => {
167
- const model = buildCustomsWorkbookModel(input.source, input.defaults ?? {});
168
- const template = await readFile(join(__dirname, '..', 'assets', 'customs-workbook-template.xls'));
169
- const workbook = await createCustomsWorkbookFromTemplateBuffer(model, template);
170
- return stringify({
171
- model,
172
- fileName: workbook.fileName,
173
- sheetNames: workbook.sheetNames,
174
- mimeType: workbook.mimeType,
175
- bookType: workbook.bookType,
176
- byteLength: workbook.buffer.length
177
- });
178
- }, {
179
- name: TRADE_COMPLIANCE_TOOL_NAMES[5],
180
- description: 'Prepare customs workbook preview data by merging extracted sales contract fields with template defaults.',
181
- schema: workbookSchema
182
- }),
183
- tool(async (input) => stringify(await this.service.recordWorkbookGeneration(scope, input)), {
184
- name: TRADE_COMPLIANCE_TOOL_NAMES[6],
185
- description: 'Record a generated customs workbook after human review confirmation.',
186
- schema: generatedWorkbookSchema
187
- }),
188
- tool(async (input) => stringify(getControlledGoodsExtractedTextChunk(input.batchId, input.chunkIndex)), {
189
- name: TRADE_COMPLIANCE_TOOL_NAMES[7],
190
- description: 'Read the next lossless text chunk converted from the uploaded controlled goods file. Use this when the initial prompt says the converted text has multiple chunks; process and save each chunk with the same batchId until hasMore is false.',
191
- schema: controlledGoodsTextChunkSchema
192
- })
193
- ]
194
- };
195
- }
196
- resolveConfig() {
197
- const defaults = readTradeComplianceEnvDefaults();
198
- const pluginConfig = this.pluginConfigResolver?.resolve(TRADE_COMPLIANCE_PLUGIN_NAME, {
199
- defaults
200
- }) ?? defaults;
201
- return TradeComplianceWorkbenchConfigSchema.parse(pluginConfig);
202
- }
203
- };
204
- TradeComplianceWorkbenchMiddleware = __decorate([
205
- Injectable(),
206
- AgentMiddlewareStrategy(TRADE_COMPLIANCE_MIDDLEWARE_NAME),
207
- __param(1, Optional()),
208
- __param(1, Inject(PLUGIN_CONFIG_RESOLVER_TOKEN)),
209
- __metadata("design:paramtypes", [TradeComplianceWorkbenchService, Object])
210
- ], TradeComplianceWorkbenchMiddleware);
211
- export { TradeComplianceWorkbenchMiddleware };
212
- function scopeFromContext(context) {
213
- return {
214
- tenantId: context.tenantId ?? RequestContext.currentTenantId(),
215
- organizationId: context.organizationId === undefined ? RequestContext.getOrganizationId() : context.organizationId,
216
- workspaceId: context.workspaceId ?? null,
217
- assistantId: context.xpertId ?? null,
218
- projectId: context.projectId ?? null,
219
- userId: context.userId ?? RequestContext.currentUserId()
220
- };
221
- }
222
- function stringify(value) {
223
- return JSON.stringify(value, null, 2);
224
- }
225
- function summarizeReviewBatchResult(result, input) {
226
- const attemptedCount = Array.isArray(input?.items) ? input.items.length : undefined;
227
- const savedCount = Array.isArray(result?.items) ? result.items.length : 0;
228
- return {
229
- batchId: result?.batch?.id,
230
- type: result?.batch?.type,
231
- status: result?.batch?.status,
232
- sourceFileName: result?.batch?.sourceFileName,
233
- attemptedCount,
234
- savedCount,
235
- skippedDuplicateCount: typeof attemptedCount === 'number' ? Math.max(0, attemptedCount - savedCount) : undefined
236
- };
237
- }
238
- function normalizeControlledGoodsExtractionInput(input) {
239
- const items = Array.isArray(input?.items) && input.items.length > 0
240
- ? input.items
241
- : Array.isArray(input?.rows)
242
- ? input.rows.map(toControlledGoodsReviewItemFromRow).filter(Boolean)
243
- : [];
244
- return {
245
- batchId: input?.batchId,
246
- sourceFileName: input?.sourceFileName,
247
- metadata: {
248
- ...(input?.metadata ?? {}),
249
- inputMode: Array.isArray(input?.rows) && (!Array.isArray(input?.items) || input.items.length === 0) ? 'compact_rows' : 'items',
250
- rowCount: Array.isArray(input?.rows) ? input.rows.length : undefined
251
- },
252
- items
253
- };
254
- }
255
- function normalizeSalesContractExtractionInput(input) {
256
- const sourceItems = Array.isArray(input?.items) ? input.items : [];
257
- const workbookItems = sourceItems.filter((item) => item?.type === 'customs_workbook');
258
- if (workbookItems.length <= 1) {
259
- return { ...input, items: workbookItems.length ? workbookItems : sourceItems };
260
- }
261
- const mainItem = workbookItems.find((item) => isSalesContractHeaderData(mergeReviewData(item))) ?? workbookItems[0];
262
- const mainData = mergeReviewData(mainItem);
263
- const detailRows = workbookItems
264
- .filter((item) => item !== mainItem)
265
- .map((item) => toSalesContractLineItem(mergeReviewData(item)))
266
- .filter(Boolean);
267
- const existingLines = Array.isArray(mainData.items) ? mainData.items : [];
268
- const mergedData = {
269
- ...mainData,
270
- items: dedupeSalesContractLineItems([...existingLines, ...detailRows])
271
- };
272
- return {
273
- ...input,
274
- items: [{
275
- ...mainItem,
276
- title: mainItem.title || buildSalesContractTitle(mergedData),
277
- extractedData: mergedData,
278
- defaultData: mainItem.defaultData,
279
- fields: mainItem.fields,
280
- sourceLocation: mainItem.sourceLocation
281
- }]
282
- };
283
- }
284
- function mergeReviewData(item) {
285
- return {
286
- ...(item?.defaultData ?? {}),
287
- ...(item?.extractedData ?? {})
288
- };
289
- }
290
- function isSalesContractHeaderData(data) {
291
- return Boolean(stringValue(data.invoiceNo) || stringValue(data.contractNo) || stringValue(data.buyerName) || stringValue(data.sellerName));
292
- }
293
- function toSalesContractLineItem(data) {
294
- const productName = stringValue(data.productName) ?? stringValue(data.name) ?? stringValue(data.description);
295
- const description = stringValue(data.description) ?? productName;
296
- const hasLineData = productName || stringValue(data.model) || stringValue(data.hsCode) || data.quantity != null || data.unitPrice != null || data.amount != null;
297
- if (!hasLineData)
298
- return null;
299
- return {
300
- productName,
301
- englishName: stringValue(data.englishName),
302
- model: stringValue(data.model),
303
- description,
304
- quantity: data.quantity,
305
- unit: stringValue(data.unit),
306
- unitPrice: data.unitPrice ?? data.taxInclusiveUnitPrice,
307
- amount: data.amount ?? data.taxInclusiveTotalAmount,
308
- hsCode: stringValue(data.hsCode ?? data.contractHsCode ?? data.enrichedHsCode),
309
- netWeight: data.netWeight,
310
- grossWeight: data.grossWeight
311
- };
312
- }
313
- function dedupeSalesContractLineItems(items) {
314
- const seen = new Set();
315
- return items.filter((item) => {
316
- const key = [item.productName, item.model, item.hsCode, item.quantity, item.unitPrice, item.amount].map((value) => String(value ?? '').trim()).join('|');
317
- if (seen.has(key))
318
- return false;
319
- seen.add(key);
320
- return true;
321
- });
322
- }
323
- function buildSalesContractTitle(data) {
324
- return ['购销合同', data.contractNo].filter(Boolean).join(' ') || '购销合同';
325
- }
326
- function toControlledGoodsReviewItemFromRow(row) {
327
- if (!row || typeof row !== 'object' || Array.isArray(row))
328
- return null;
329
- const productName = stringValue(row.productName) ?? stringValue(row.rawText)?.slice(0, 80);
330
- const hsCode = stringValue(row.hsCode);
331
- const controlCode = stringValue(row.controlCode);
332
- const sectionPath = stringValue(row.sectionPath);
333
- const rawText = stringValue(row.rawText);
334
- const keywords = normalizeControlledGoodsKeywords(row.keywords, [controlCode, sectionPath, productName, hsCode]);
335
- const title = [controlCode, productName].filter(Boolean).join(' ') || hsCode || '管控商品';
336
- const controlNote = stringValue(row.controlNote);
337
- return {
338
- type: 'controlled_goods',
339
- title,
340
- extractedData: {
341
- productName,
342
- hsCode,
343
- keywords,
344
- controlNote,
345
- enabled: typeof row.enabled === 'boolean' ? row.enabled : true,
346
- sequence: stringValue(row.sequence),
347
- controlCode,
348
- sectionPath,
349
- rawText,
350
- sourcePage: stringValue(row.sourcePage)
351
- },
352
- fields: [
353
- { key: '序号', value: stringValue(row.sequence) },
354
- { key: '管制编码', value: controlCode },
355
- { key: '海关编码', value: hsCode },
356
- { key: '来源', value: stringValue(row.sourceLocation) }
357
- ].filter((field) => field.value),
358
- confidence: typeof row.confidence === 'number' ? row.confidence : undefined,
359
- sourceLocation: stringValue(row.sourceLocation)
360
- };
361
- }
362
- function normalizeControlledGoodsKeywords(value, fallback) {
363
- const values = Array.isArray(value) ? value : fallback;
364
- return [...new Set(values.map((item) => stringValue(item)).filter(Boolean))];
365
- }
366
- async function enrichSupplierReviewItemsWithHsCandidates(items, config) {
367
- const list = Array.isArray(items) ? items : [];
368
- const enriched = [];
369
- for (const item of list) {
370
- if (item?.type !== 'supplier_product') {
371
- enriched.push(item);
372
- continue;
373
- }
374
- const sanitizedItem = sanitizeSupplierReviewItem(item);
375
- const defaultData = { ...(sanitizedItem.defaultData || {}) };
376
- if (Array.isArray(defaultData.hsCodeCandidates) && defaultData.hsCodeCandidates.length > 0) {
377
- enriched.push(sanitizedItem);
378
- continue;
379
- }
380
- const data = { ...defaultData, ...(sanitizedItem.extractedData || {}) };
381
- const keyword = buildSupplierHsCandidateKeyword(data);
382
- if (!keyword) {
383
- enriched.push({
384
- ...sanitizedItem,
385
- defaultData: {
386
- ...defaultData,
387
- hsCodeLookupStatus: 'not_ready',
388
- hsCodeLookupNote: '缺少商品名称、型号或合同海关编码,无法自动查询候选编码'
389
- }
390
- });
391
- continue;
392
- }
393
- try {
394
- const candidates = await searchSupplierHsCandidatesForDefault(keyword, config);
395
- const contractHsCode = resolveSupplierContractHsCode(data.contractHsCode);
396
- const suggestion = resolveSupplierHsSuggestion(candidates, contractHsCode);
397
- enriched.push({
398
- ...sanitizedItem,
399
- defaultData: {
400
- ...defaultData,
401
- hsCodeLookupKeyword: keyword,
402
- hsCodeLookupStatus: candidates.length > 0 ? 'pending_confirmation' : 'not_found',
403
- hsCodeCandidateCount: candidates.length,
404
- suggestedHsCode: suggestion?.code,
405
- suggestedHsCodeName: suggestion?.name,
406
- suggestedHsCodeEnglishName: suggestion?.englishName,
407
- suggestedTaxRefundRate: suggestion?.taxRefundRate,
408
- enrichedHsCode: contractHsCode ?? suggestion?.code,
409
- taxRefundRate: suggestion?.taxRefundRate,
410
- englishName: suggestion?.englishName,
411
- hsCodeCandidates: candidates
412
- }
413
- });
414
- }
415
- catch (error) {
416
- enriched.push({
417
- ...sanitizedItem,
418
- defaultData: {
419
- ...defaultData,
420
- hsCodeLookupKeyword: keyword,
421
- hsCodeLookupStatus: 'failed',
422
- hsCodeLookupError: summarizeHsLookupError(error),
423
- hsCodeCandidates: []
424
- }
425
- });
426
- }
427
- }
428
- return enriched;
429
- }
430
- async function searchSupplierHsCandidatesForDefault(keyword, config) {
431
- const result = await searchHsBianmaCodes({
432
- keywords: keyword,
433
- page: 1,
434
- filterFailureCode: true,
435
- displayChapter: false,
436
- displayEnName: true
437
- }, {
438
- baseUrl: config?.enrichment?.apiBaseUrl,
439
- timeoutMs: config?.enrichment?.timeoutMs
440
- });
441
- return result.results ?? [];
442
- }
443
- function resolveSupplierHsSuggestion(candidates, contractHsCode) {
444
- const normalizedContractHsCode = normalizeHsCode(contractHsCode);
445
- if (normalizedContractHsCode) {
446
- const exact = candidates.find((candidate) => normalizeHsCode(candidate?.code) === normalizedContractHsCode);
447
- if (exact)
448
- return exact;
449
- }
450
- return candidates[0];
451
- }
452
- function normalizeHsCode(value) {
453
- const text = stringValue(value);
454
- if (!text)
455
- return undefined;
456
- const digits = text.replace(/\D/g, '');
457
- return digits || text;
458
- }
459
- function sanitizeSupplierReviewItem(item) {
460
- return {
461
- ...item,
462
- extractedData: item.extractedData,
463
- defaultData: item.defaultData
464
- };
465
- }
466
- function buildSupplierHsCandidateKeyword(data) {
467
- const contractHsCode = resolveSupplierContractHsCode(data.contractHsCode);
468
- if (contractHsCode)
469
- return contractHsCode;
470
- const productName = stringValue(data.productName);
471
- const model = stringValue(data.model);
472
- const description = stringValue(data.description);
473
- const keyword = [productName, model].filter(Boolean).join(' ').trim();
474
- if (keyword)
475
- return keyword.slice(0, 100);
476
- return description ? description.slice(0, 100) : undefined;
477
- }
478
- function resolveSupplierContractHsCode(value) {
479
- const text = stringValue(value);
480
- if (!text)
481
- return undefined;
482
- const digits = text.replace(/\D/g, '');
483
- return /^\d{8,10}$/.test(digits) ? digits : undefined;
484
- }
485
- function stringValue(value) {
486
- const text = String(value ?? '').trim();
487
- return text ? text : undefined;
488
- }
489
- function summarizeHsLookupError(error) {
490
- if (error instanceof Error)
491
- return error.message.slice(0, 300);
492
- return String(error).slice(0, 300);
493
- }
494
- //# sourceMappingURL=trade-compliance-workbench.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trade-compliance-workbench.middleware.js","sourceRoot":"","sources":["../../src/lib/trade-compliance-workbench.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare const TRADE_COMPLIANCE_ENTITIES: {
2
- new (): {};
3
- }[];
4
- declare let TradeComplianceWorkbenchPlugin: {
5
- new (): {
6
- onPluginBootstrap(): void;
7
- onPluginDestroy(): void;
8
- };
9
- };
10
- export { TradeComplianceWorkbenchPlugin };
11
- //# sourceMappingURL=trade-compliance-workbench.plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trade-compliance-workbench.plugin.d.ts","sourceRoot":"","sources":["../../src/lib/trade-compliance-workbench.plugin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,yBAAyB;;GAOrC,CAAC;AACF,QAAA,IAAI,8BAA8B;;;;;CAOjC,CAAC;AAaF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -1,39 +0,0 @@
1
- // @ts-nocheck
2
- var TradeComplianceWorkbenchPlugin_1;
3
- import { __decorate } from "tslib";
4
- import { TypeOrmModule } from '@nestjs/typeorm';
5
- import { XpertServerPlugin } from '@xpert-ai/plugin-sdk';
6
- import { ControlledGoodsRecord, CustomsWorkbookGeneration, TradeComplianceImportBatch, TradeComplianceReviewItem, TradeProduct, TradeSupplier } from './entities/index.js';
7
- import { TradeComplianceWorkbenchMiddleware } from './trade-compliance-workbench.middleware.js';
8
- import { TradeComplianceWorkbenchService } from './trade-compliance-workbench.service.js';
9
- import { TradeComplianceWorkbenchViewProvider } from './trade-compliance-workbench-view.provider.js';
10
- export const TRADE_COMPLIANCE_ENTITIES = [
11
- TradeComplianceImportBatch,
12
- TradeComplianceReviewItem,
13
- ControlledGoodsRecord,
14
- TradeSupplier,
15
- TradeProduct,
16
- CustomsWorkbookGeneration
17
- ];
18
- let TradeComplianceWorkbenchPlugin = TradeComplianceWorkbenchPlugin_1 = class TradeComplianceWorkbenchPlugin {
19
- onPluginBootstrap() {
20
- console.log(`${TradeComplianceWorkbenchPlugin_1.name} is being bootstrapped...`);
21
- }
22
- onPluginDestroy() {
23
- console.log(`${TradeComplianceWorkbenchPlugin_1.name} is being destroyed...`);
24
- }
25
- };
26
- TradeComplianceWorkbenchPlugin = TradeComplianceWorkbenchPlugin_1 = __decorate([
27
- XpertServerPlugin({
28
- imports: [TypeOrmModule.forFeature(TRADE_COMPLIANCE_ENTITIES)],
29
- entities: TRADE_COMPLIANCE_ENTITIES,
30
- providers: [
31
- TradeComplianceWorkbenchService,
32
- TradeComplianceWorkbenchMiddleware,
33
- TradeComplianceWorkbenchViewProvider
34
- ],
35
- exports: [TradeComplianceWorkbenchService]
36
- })
37
- ], TradeComplianceWorkbenchPlugin);
38
- export { TradeComplianceWorkbenchPlugin };
39
- //# sourceMappingURL=trade-compliance-workbench.plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trade-compliance-workbench.plugin.js","sourceRoot":"","sources":["../../src/lib/trade-compliance-workbench.plugin.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,IAAI,gCAAgC,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3K,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,+CAA+C,CAAC;AACrG,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,0BAA0B;IAC1B,yBAAyB;IACzB,qBAAqB;IACrB,aAAa;IACb,YAAY;IACZ,yBAAyB;CAC5B,CAAC;AACF,IAAI,8BAA8B,GAAG,gCAAgC,GAAG,MAAM,8BAA8B;IACxG,iBAAiB;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,IAAI,2BAA2B,CAAC,CAAC;IACrF,CAAC;IACD,eAAe;QACX,OAAO,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,IAAI,wBAAwB,CAAC,CAAC;IAClF,CAAC;CACJ,CAAC;AACF,8BAA8B,GAAG,gCAAgC,GAAG,UAAU,CAAC;IAC3E,iBAAiB,CAAC;QACd,OAAO,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QAC9D,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE;YACP,+BAA+B;YAC/B,kCAAkC;YAClC,oCAAoC;SACvC;QACD,OAAO,EAAE,CAAC,+BAA+B,CAAC;KAC7C,CAAC;CACL,EAAE,8BAA8B,CAAC,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -1,33 +0,0 @@
1
- declare let TradeComplianceWorkbenchService: {
2
- new (batchRepository: any, reviewItemRepository: any, controlledGoodsRepository: any, supplierRepository: any, productRepository: any, workbookRepository: any): {
3
- createReviewBatch(scope: any, input: any): Promise<{
4
- batch: any;
5
- items: any;
6
- }>;
7
- listReviewItems(scope: any, batchId: any): Promise<any>;
8
- confirmReviewItem(scope: any, itemId: any, confirmedData: any): Promise<any>;
9
- confirmReviewItems(scope: any, itemIds: any): Promise<any[]>;
10
- rejectReviewItem(scope: any, itemId: any): Promise<any>;
11
- rejectReviewItems(scope: any, itemIds: any): Promise<any[]>;
12
- updateReviewItem(scope: any, itemId: any, data: any): Promise<any>;
13
- deleteReviewItem(scope: any, itemId: any): Promise<any>;
14
- saveControlledGoods(scope: any, input: any): Promise<any>;
15
- listControlledGoods(scope: any): Promise<any>;
16
- updateControlledGoods(scope: any, id: any, input: any): Promise<any>;
17
- deleteControlledGoods(scope: any, id: any): Promise<any>;
18
- saveSupplierProduct(scope: any, input: any): Promise<any>;
19
- listProducts(scope: any): Promise<any>;
20
- updateSupplierProduct(scope: any, id: any, input: any): Promise<any>;
21
- deleteSupplierProduct(scope: any, id: any): Promise<any>;
22
- recordWorkbookGeneration(scope: any, input: any): Promise<any>;
23
- listWorkbookGenerations(scope: any): Promise<any>;
24
- getWorkbookGeneration(scope: any, id: any): Promise<any>;
25
- deleteWorkbookGeneration(scope: any, id: any): Promise<any>;
26
- findOrCreateSupplier(scope: any, input: any): Promise<any>;
27
- findDuplicateControlledGoods(scope: any, input: any): Promise<any>;
28
- findDuplicateSupplierProduct(scope: any, input: any): Promise<any>;
29
- deduplicateReviewItems(scope: any, items: any): Promise<any>;
30
- };
31
- };
32
- export { TradeComplianceWorkbenchService };
33
- //# sourceMappingURL=trade-compliance-workbench.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trade-compliance-workbench.service.d.ts","sourceRoot":"","sources":["../../src/lib/trade-compliance-workbench.service.ts"],"names":[],"mappings":"AAKA,QAAA,IAAI,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwRlC,CAAC;AAWF,OAAO,EAAE,+BAA+B,EAAE,CAAC"}