@chenchaolong/plugin-trade-compliance-workbench 1.0.20 → 1.0.22

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.
@@ -2,6 +2,7 @@ import { type IPluginConfigResolver } from '@xpert-ai/plugin-sdk';
2
2
  export type TranslationRequestOptions = {
3
3
  signal?: AbortSignal;
4
4
  deadline?: number;
5
+ organizationId?: string;
5
6
  };
6
7
  export declare class TranslationProvider {
7
8
  private readonly configResolver?;
@@ -1 +1 @@
1
- {"version":3,"file":"translation.provider.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/translation.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG/F,MAAM,MAAM,yBAAyB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnF,qBACa,mBAAmB;IACgC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAf,cAAc,CAAC,EAAE,qBAAqB,YAAA;IAE/G,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBhI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAErF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAG5F"}
1
+ {"version":3,"file":"translation.provider.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/translation.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG/F,MAAM,MAAM,yBAAyB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5G,qBACa,mBAAmB;IACgC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAf,cAAc,CAAC,EAAE,qBAAqB,YAAA;IAE/G,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBhI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAErF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAG5F"}
@@ -10,7 +10,7 @@ let TranslationProvider = class TranslationProvider {
10
10
  const text = value.trim();
11
11
  if (!text)
12
12
  return '';
13
- const config = resolveTradeComplianceConfig(this.configResolver).translation;
13
+ const config = resolveTradeComplianceConfig(this.configResolver, options.organizationId).translation;
14
14
  const endpoint = config.endpoint;
15
15
  if (!endpoint)
16
16
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"translation.provider.js","sourceRoot":"","sources":["../../../src/lib/adapters/translation.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translation.provider.js","sourceRoot":"","sources":["../../../src/lib/adapters/translation.provider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../../src/lib/catalog-import/confidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAG1B,MAAM,gBAAgB,CAAA;AAsCvB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,yBAAyB,CAmBxF"}
1
+ {"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../../src/lib/catalog-import/confidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAG1B,MAAM,gBAAgB,CAAA;AAsCvB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,yBAAyB,CAuBxF"}
@@ -35,6 +35,9 @@ export function classifyCandidate(candidate) {
35
35
  if (failure) {
36
36
  return { confidence: 'LOW', autoPersist: false, reasons: [failure] };
37
37
  }
38
+ if (candidate.kind === 'CONTROLLED' && candidate.values.translationRequired === true) {
39
+ return { confidence: 'MEDIUM', autoPersist: false, reasons: ['TRANSLATION_REQUIRED'] };
40
+ }
38
41
  const reviewReasons = candidate.signals.filter(signal => REVIEW_SIGNALS.has(signal));
39
42
  if (reviewReasons.length > 0) {
40
43
  return { confidence: 'MEDIUM', autoPersist: false, reasons: reviewReasons };
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../../src/lib/catalog-import/confidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../../src/lib/catalog-import/confidence.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export type CatalogCandidate = {
23
23
  signals: CatalogSignal[];
24
24
  warnings: string[];
25
25
  };
26
- export type CatalogConfidenceReason = 'SOURCE_EVIDENCE_MISSING' | 'PRODUCT_NAME_MISSING' | 'COMPANY_NAME_MISSING' | 'HS_CODE_INVALID' | 'EFFECTIVE_DATE_INVALID' | 'CONTROL_CODE_INVALID' | 'CROSS_PAGE_UNCERTAIN' | 'COLUMN_LAYOUT_DRIFT' | 'FIELD_CONFLICT' | 'RECORD_START_UNVERIFIED' | 'COLUMN_LAYOUT_UNVERIFIED' | 'VERIFIABLE_STRUCTURE';
26
+ export type CatalogConfidenceReason = 'SOURCE_EVIDENCE_MISSING' | 'PRODUCT_NAME_MISSING' | 'COMPANY_NAME_MISSING' | 'HS_CODE_INVALID' | 'EFFECTIVE_DATE_INVALID' | 'CONTROL_CODE_INVALID' | 'CROSS_PAGE_UNCERTAIN' | 'COLUMN_LAYOUT_DRIFT' | 'FIELD_CONFLICT' | 'RECORD_START_UNVERIFIED' | 'COLUMN_LAYOUT_UNVERIFIED' | 'TRANSLATION_REQUIRED' | 'VERIFIABLE_STRUCTURE';
27
27
  export type CatalogConfidenceDecision = {
28
28
  confidence: CatalogConfidence;
29
29
  autoPersist: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/lib/catalog-import/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,CAAA;AAEpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,oBAAoB,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,sBAAsB,CAAA;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,yBAAyB,GACzB,sBAAsB,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,GAChB,yBAAyB,GACzB,0BAA0B,GAC1B,sBAAsB,CAAA;AAE1B,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,uBAAuB,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,sBAAsB,CAAA;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAA;CACxC,CAAA"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/lib/catalog-import/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,CAAA;AAEpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,oBAAoB,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,sBAAsB,CAAA;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,yBAAyB,GACzB,sBAAsB,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,GAChB,yBAAyB,GACzB,0BAA0B,GAC1B,sBAAsB,GACtB,sBAAsB,CAAA;AAE1B,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,uBAAuB,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,sBAAsB,CAAA;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAA;CACxC,CAAA"}
@@ -56,7 +56,7 @@ export function buildCatalogObserverCommand(task) {
56
56
  return {
57
57
  commandKey: 'assistant.chat.send_message',
58
58
  payload: {
59
- text: `目录文件“${task.sourceFileName}”正在由确定性代码管线解析。不要读取或重新解析原文件。请调用 ${TOOL_NAMES.waitImportProgress} 持续报告真实进度;若 reviewPendingCount 大于 0,循环调用 ${TOOL_NAMES.nextReviewBatch} 领取最多 20 个局部来源块,只依据块内证据复核,并用 ${TOOL_NAMES.submitReviewBatch} 提交。无法确认的块必须 REJECT。任务成功、失败或无待复核块后,用中文简要汇总真实计数。固定参数:${JSON.stringify({ importTaskId: task.id })}`,
59
+ text: `目录文件“${task.sourceFileName}”正在由确定性代码管线解析。不要读取或重新解析原文件。请调用 ${TOOL_NAMES.waitImportProgress} 持续报告真实进度;若 reviewPendingCount 大于 0,循环调用 ${TOOL_NAMES.nextReviewBatch} 领取最多 20 个局部来源块,只依据块内证据复核,并用 ${TOOL_NAMES.submitReviewBatch} 提交。对 reasons 包含 TRANSLATION_REQUIRED 的管控商品,ACCEPT 时必须在 payload 中补充中文 productName,保留 originalProductName 原文,并设置 translationSource 为 AGENT_TRANSLATED;无法可靠翻译的块必须 REJECT。其他无法确认的块也必须 REJECT。任务成功、失败或无待复核块后,用中文简要汇总真实计数。固定参数:${JSON.stringify({ importTaskId: task.id })}`,
60
60
  clientMessageId: `trade-compliance:observer:${task.id}`,
61
61
  followUpMode: 'queue',
62
62
  state: { tradeComplianceWorkbench: { actionKey: 'observe_catalog_import', importTaskId: task.id } }
@@ -1 +1 @@
1
- {"version":3,"file":"import-command.builder.js","sourceRoot":"","sources":["../../../src/lib/import-jobs/import-command.builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-command.builder.js","sourceRoot":"","sources":["../../../src/lib/import-jobs/import-command.builder.ts"],"names":[],"mappings":"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"}
@@ -226,7 +226,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
226
226
  const pendingRows = await this.pendingControlledCatalogRows(scope, claim.batch, input.rows);
227
227
  if (!pendingRows.length)
228
228
  return this.completeControlledCatalogPostProcessing(scope, claim.batch);
229
- const localizedRows = await this.localizeControlledCatalogRows(pendingRows);
229
+ const localizedRows = await this.localizeControlledCatalogRows(pendingRows, scope.organizationId);
230
230
  const appended = await this.appendCompletedControlledCatalog(scope, { ...input, rows: pendingRows }, localizedRows, claim.batch.id);
231
231
  return this.completeControlledCatalogPostProcessing(scope, appended);
232
232
  }
@@ -238,7 +238,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
238
238
  try {
239
239
  let result;
240
240
  try {
241
- const localizedRows = await this.localizeControlledCatalogRows(input.rows, claim.deadline, heartbeat.signal);
241
+ const localizedRows = await this.localizeControlledCatalogRows(input.rows, scope.organizationId, claim.deadline, heartbeat.signal);
242
242
  heartbeat.assertOwned();
243
243
  result = await this.persistControlledCatalog(scope, input, localizedRows, claim.claimId);
244
244
  }
@@ -469,7 +469,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
469
469
  batch.riskRecalculatedAt = result.riskRecalculatedAt ?? new Date();
470
470
  return batch;
471
471
  }
472
- async localizeControlledCatalogRows(rows, deadline = Date.now() + CONTROLLED_CATALOG_TRANSLATION_TIMEOUT_MS, ownerSignal) {
472
+ async localizeControlledCatalogRows(rows, organizationId, deadline = Date.now() + CONTROLLED_CATALOG_TRANSLATION_TIMEOUT_MS, ownerSignal) {
473
473
  const localized = new Array(rows.length);
474
474
  const controller = new AbortController();
475
475
  const abortFromOwner = () => controller.abort(ownerSignal?.reason);
@@ -483,7 +483,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
483
483
  while (nextIndex < rows.length) {
484
484
  const index = nextIndex;
485
485
  nextIndex += 1;
486
- localized[index] = await this.localizeControlledCatalogRow(rows[index], deadline, controller.signal);
486
+ localized[index] = await this.localizeControlledCatalogRow(rows[index], organizationId, deadline, controller.signal);
487
487
  }
488
488
  };
489
489
  try {
@@ -495,7 +495,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
495
495
  ownerSignal?.removeEventListener('abort', abortFromOwner);
496
496
  }
497
497
  }
498
- async localizeControlledCatalogRow(row, deadline, signal) {
498
+ async localizeControlledCatalogRow(row, organizationId, deadline, signal) {
499
499
  const originalProductName = String(row.originalProductName ?? '').trim() || null;
500
500
  const originalControlDescription = String(row.originalControlDescription ?? '').trim() || null;
501
501
  let productName = String(row.productName ?? '').trim();
@@ -508,13 +508,13 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
508
508
  if (!productName) {
509
509
  if (!originalProductName)
510
510
  return { productName: '', controlDescription, originalProductName, originalControlDescription, translationSource, error: '商品名称为空' };
511
- productName = await this.translateCatalogValue(originalProductName, deadline, signal) ?? '';
511
+ productName = await this.translateCatalogValue(originalProductName, organizationId, deadline, signal) ?? '';
512
512
  if (!productName)
513
513
  return { productName: '', controlDescription, originalProductName, originalControlDescription, translationSource, error: '商品名称翻译失败' };
514
514
  serviceTranslated = true;
515
515
  }
516
516
  if (!controlDescription && originalControlDescription) {
517
- controlDescription = await this.translateCatalogValue(originalControlDescription, deadline, signal);
517
+ controlDescription = await this.translateCatalogValue(originalControlDescription, organizationId, deadline, signal);
518
518
  if (!controlDescription)
519
519
  return { productName, controlDescription: null, originalProductName, originalControlDescription, translationSource, error: '管控说明翻译失败' };
520
520
  serviceTranslated = true;
@@ -525,11 +525,11 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
525
525
  translationSource = 'SERVICE_TRANSLATED';
526
526
  return { productName, controlDescription, originalProductName, originalControlDescription, translationSource };
527
527
  }
528
- async translateCatalogValue(value, deadline, signal) {
528
+ async translateCatalogValue(value, organizationId, deadline, signal) {
529
529
  const remaining = deadline - Date.now();
530
530
  if (!this.translation || remaining <= 0 || signal.aborted)
531
531
  return null;
532
- const translated = Promise.resolve(this.translation.toChinese(value, { signal, deadline }))
532
+ const translated = Promise.resolve(this.translation.toChinese(value, { signal, deadline, organizationId }))
533
533
  .then(result => String(result ?? '').trim() || null, () => null);
534
534
  let onAbort;
535
535
  try {
@@ -761,7 +761,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
761
761
  const controlledRows = input.candidates.flatMap(candidate => candidate.kind === 'CONTROLLED'
762
762
  ? candidateToControlledRows(candidate)
763
763
  : []);
764
- const localizedRows = controlledRows.length ? await this.localizeControlledCatalogRows(controlledRows) : [];
764
+ const localizedRows = controlledRows.length ? await this.localizeControlledCatalogRows(controlledRows, scope.organizationId) : [];
765
765
  return this.dataSource.transaction(async (manager) => {
766
766
  const taskRepo = manager.getRepository(ImportTask);
767
767
  const task = await required(taskRepo.findOne({
@@ -984,7 +984,7 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
984
984
  const batchRepo = manager.getRepository(ControlledCatalogBatch);
985
985
  const batch = await required(batchRepo.findOne({ where: { ...activeScope(scope), id: task.resultEntityId } }), '管控目录批次不存在');
986
986
  const rows = acceptedCandidates.flatMap(candidateToControlledRows);
987
- const localized = await this.localizeControlledCatalogRows(rows);
987
+ const localized = await this.localizeControlledCatalogRows(rows, scope.organizationId);
988
988
  await this.appendControlledCatalogRows(manager, scope, batch, rows, localized);
989
989
  await batchRepo.save(batch);
990
990
  task.progress.successCount = batch.successCount;