@chenchaolong/plugin-trade-compliance-workbench 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/lib/demo-data.definitions.js +1 -1
- package/dist/lib/demo-data.definitions.js.map +1 -1
- package/dist/lib/demo-data.service.d.ts.map +1 -1
- package/dist/lib/demo-data.service.js +1 -3
- package/dist/lib/demo-data.service.js.map +1 -1
- package/dist/lib/entities/index.d.ts +2 -2
- package/dist/lib/entities/index.d.ts.map +1 -1
- package/dist/lib/entities/index.js +2 -2
- package/dist/lib/entities/index.js.map +1 -1
- package/dist/lib/entities/shared.entity.d.ts +2 -5
- package/dist/lib/entities/shared.entity.d.ts.map +1 -1
- package/dist/lib/entities/shared.entity.js +5 -16
- package/dist/lib/entities/shared.entity.js.map +1 -1
- package/dist/lib/legacy-schema-cleanup.d.ts +9 -0
- package/dist/lib/legacy-schema-cleanup.d.ts.map +1 -0
- package/dist/lib/legacy-schema-cleanup.js +28 -0
- package/dist/lib/legacy-schema-cleanup.js.map +1 -0
- package/dist/lib/remote-components/trade-compliance-workbench/app.css +3268 -1
- package/dist/lib/remote-components/trade-compliance-workbench/app.js +5 -5
- package/dist/lib/remote-ui/app-source.d.ts.map +1 -1
- package/dist/lib/remote-ui/app-source.js +7 -6
- package/dist/lib/remote-ui/app-source.js.map +1 -1
- package/dist/lib/remote-ui/bridge.d.ts +0 -4
- package/dist/lib/remote-ui/bridge.d.ts.map +1 -1
- package/dist/lib/remote-ui/bridge.js +23 -20
- package/dist/lib/remote-ui/bridge.js.map +1 -1
- package/dist/lib/remote-ui/components/data-grid.js +1 -1
- package/dist/lib/remote-ui/components/data-grid.js.map +1 -1
- package/dist/lib/remote-ui/components/forms.js +2 -2
- package/dist/lib/remote-ui/components/forms.js.map +1 -1
- package/dist/lib/remote-ui/components/layout.d.ts +5 -1
- package/dist/lib/remote-ui/components/layout.d.ts.map +1 -1
- package/dist/lib/remote-ui/components/layout.js +23 -3
- package/dist/lib/remote-ui/components/layout.js.map +1 -1
- package/dist/lib/remote-ui/contracts.d.ts +1 -0
- package/dist/lib/remote-ui/contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/model.d.ts.map +1 -1
- package/dist/lib/remote-ui/model.js +11 -11
- package/dist/lib/remote-ui/model.js.map +1 -1
- package/dist/lib/remote-ui/pages/analytics.js +1 -1
- package/dist/lib/remote-ui/pages/analytics.js.map +1 -1
- package/dist/lib/remote-ui/pages/catalogs.js +14 -14
- package/dist/lib/remote-ui/pages/catalogs.js.map +1 -1
- package/dist/lib/remote-ui/pages/contracts.js +3 -3
- package/dist/lib/remote-ui/pages/contracts.js.map +1 -1
- package/dist/lib/remote-ui/pages/files.js +5 -5
- package/dist/lib/remote-ui/pages/files.js.map +1 -1
- package/dist/lib/remote-ui/pages/home.d.ts +18 -62
- package/dist/lib/remote-ui/pages/home.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/home.js +25 -131
- package/dist/lib/remote-ui/pages/home.js.map +1 -1
- package/dist/lib/remote-ui/pages/procurement.js +11 -11
- package/dist/lib/remote-ui/pages/procurement.js.map +1 -1
- package/dist/lib/remote-ui/pages/sales.js +8 -8
- package/dist/lib/remote-ui/pages/sales.js.map +1 -1
- package/dist/lib/remote-ui/pages/settings.d.ts +0 -3
- package/dist/lib/remote-ui/pages/settings.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/settings.js +7 -56
- package/dist/lib/remote-ui/pages/settings.js.map +1 -1
- package/dist/lib/remote-ui/settings-contracts.d.ts +2 -16
- package/dist/lib/remote-ui/settings-contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/settings-contracts.js +2 -2
- package/dist/lib/remote-ui/settings-contracts.js.map +1 -1
- package/dist/lib/remote-ui/sidebar-state.d.ts +5 -0
- package/dist/lib/remote-ui/sidebar-state.d.ts.map +1 -0
- package/dist/lib/remote-ui/sidebar-state.js +18 -0
- package/dist/lib/remote-ui/sidebar-state.js.map +1 -0
- package/dist/lib/runtime-validation.d.ts +0 -1
- package/dist/lib/runtime-validation.d.ts.map +1 -1
- package/dist/lib/runtime-validation.js +0 -17
- package/dist/lib/runtime-validation.js.map +1 -1
- package/dist/lib/types.d.ts +11 -10
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +8 -2
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/view-parameters.d.ts +3 -0
- package/dist/lib/view-parameters.d.ts.map +1 -0
- package/dist/lib/view-parameters.js +23 -0
- package/dist/lib/view-parameters.js.map +1 -0
- package/dist/lib/workbench-view.provider.d.ts +14 -9
- package/dist/lib/workbench-view.provider.d.ts.map +1 -1
- package/dist/lib/workbench-view.provider.js +55 -20
- package/dist/lib/workbench-view.provider.js.map +1 -1
- package/dist/lib/workbench.plugin.d.ts +4 -1
- package/dist/lib/workbench.plugin.d.ts.map +1 -1
- package/dist/lib/workbench.plugin.js +12 -4
- package/dist/lib/workbench.plugin.js.map +1 -1
- package/dist/lib/workbench.service.d.ts +4 -8
- package/dist/lib/workbench.service.d.ts.map +1 -1
- package/dist/lib/workbench.service.js +10 -25
- package/dist/lib/workbench.service.js.map +1 -1
- package/package.json +3 -1
- package/dist/lib/domain/risk-notice.d.ts +0 -59
- package/dist/lib/domain/risk-notice.d.ts.map +0 -1
- package/dist/lib/domain/risk-notice.js +0 -30
- package/dist/lib/domain/risk-notice.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
3
3
|
import { XpertServerPlugin } from '@xpert-ai/plugin-sdk';
|
|
4
4
|
import { TRADE_COMPLIANCE_ENTITIES } from './entities/index.js';
|
|
@@ -10,17 +10,25 @@ import { TranslationProvider } from './adapters/translation.provider.js';
|
|
|
10
10
|
import { SalesFileService } from './sales-file.service.js';
|
|
11
11
|
import { DemoDataSeedMarker } from './demo-data.entity.js';
|
|
12
12
|
import { TradeComplianceDemoDataService } from './demo-data.service.js';
|
|
13
|
+
import { TradeComplianceLegacySchemaCleanup } from './legacy-schema-cleanup.js';
|
|
13
14
|
let TradeComplianceWorkbenchPlugin = class TradeComplianceWorkbenchPlugin {
|
|
14
|
-
|
|
15
|
+
constructor(legacySchemaCleanup) {
|
|
16
|
+
this.legacySchemaCleanup = legacySchemaCleanup;
|
|
17
|
+
}
|
|
18
|
+
async onPluginBootstrap() {
|
|
19
|
+
await this.legacySchemaCleanup.onApplicationBootstrap();
|
|
20
|
+
console.log('TradeComplianceWorkbenchPlugin bootstrapped');
|
|
21
|
+
}
|
|
15
22
|
onPluginDestroy() { console.log('TradeComplianceWorkbenchPlugin destroyed'); }
|
|
16
23
|
};
|
|
17
24
|
TradeComplianceWorkbenchPlugin = __decorate([
|
|
18
25
|
XpertServerPlugin({
|
|
19
26
|
imports: [TypeOrmModule.forFeature([...TRADE_COMPLIANCE_ENTITIES, DemoDataSeedMarker])],
|
|
20
27
|
entities: [...TRADE_COMPLIANCE_ENTITIES, DemoDataSeedMarker],
|
|
21
|
-
providers: [TradeComplianceFileStorage, TranslationProvider, TradeComplianceWorkbenchService, TradeComplianceDemoDataService, SalesFileService, TradeComplianceWorkbenchMiddleware, TradeComplianceWorkbenchViewProvider],
|
|
28
|
+
providers: [TradeComplianceLegacySchemaCleanup, TradeComplianceFileStorage, TranslationProvider, TradeComplianceWorkbenchService, TradeComplianceDemoDataService, SalesFileService, TradeComplianceWorkbenchMiddleware, TradeComplianceWorkbenchViewProvider],
|
|
22
29
|
exports: [TradeComplianceWorkbenchService, TradeComplianceDemoDataService, SalesFileService]
|
|
23
|
-
})
|
|
30
|
+
}),
|
|
31
|
+
__metadata("design:paramtypes", [TradeComplianceLegacySchemaCleanup])
|
|
24
32
|
], TradeComplianceWorkbenchPlugin);
|
|
25
33
|
export { TradeComplianceWorkbenchPlugin };
|
|
26
34
|
//# sourceMappingURL=workbench.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workbench.plugin.js","sourceRoot":"","sources":["../../src/lib/workbench.plugin.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"workbench.plugin.js","sourceRoot":"","sources":["../../src/lib/workbench.plugin.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAA;AAQxE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,YAA6B,mBAAuD;QAAvD,wBAAmB,GAAnB,mBAAmB,CAAoC;IAAG,CAAC;IAExF,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;IAC5D,CAAC;IACD,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA,CAAC,CAAC;CAC9E,CAAA;AARY,8BAA8B;IAN1C,iBAAiB,CAAC;QACjB,OAAO,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,yBAAyB,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACvF,QAAQ,EAAE,CAAC,GAAG,yBAAyB,EAAE,kBAAkB,CAAC;QAC5D,SAAS,EAAE,CAAC,kCAAkC,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,kCAAkC,EAAE,oCAAoC,CAAC;QAC7P,OAAO,EAAE,CAAC,+BAA+B,EAAE,8BAA8B,EAAE,gBAAgB,CAAC;KAC7F,CAAC;qCAEkD,kCAAkC;GADzE,8BAA8B,CAQ1C"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { DataSource, EntityManager, type ObjectLiteral } from 'typeorm';
|
|
2
2
|
import ExcelJS from 'exceljs';
|
|
3
3
|
import { type WriteStream } from 'node:fs';
|
|
4
|
-
import { BankAccountSettings, CompanySettings, ControlledCatalogBatch, ControlledGoodsRecord, Customer, CustomerContract, CustomerContractAnalysisRun, CustomerContractClause, CustomerContractClauseAnalysis, DerivedSalesOrderManualData, GeneratedSalesFile, ImportTask, ManagedAsset, MonthlySafeExchangeRate, ProfitRuleSettings, PurchaseOrder, PurchaseOrderLine,
|
|
4
|
+
import { BankAccountSettings, CompanySettings, ControlledCatalogBatch, ControlledGoodsRecord, Customer, CustomerContract, CustomerContractAnalysisRun, CustomerContractClause, CustomerContractClauseAnalysis, DerivedSalesOrderManualData, GeneratedSalesFile, ImportTask, ManagedAsset, MonthlySafeExchangeRate, ProfitRuleSettings, PurchaseOrder, PurchaseOrderLine, SanctionCatalogBatch, SanctionedCompanyRecord, Supplier } from './entities/index.js';
|
|
5
5
|
import type { AnalyticsDetailRow, AnalyticsQuery, CatalogType, ClauseType, DeleteMonthlyRateInput, DerivedSalesOrder, ImportExecutionCommand, PageQuery, RequestScope, RestoreSettingsInput, SettingsType } from './types.js';
|
|
6
|
-
import { DEFAULT_RISK_NOTICE } from './domain/risk-notice.js';
|
|
7
6
|
import { TradeComplianceFileStorage } from './adapters/file-storage.js';
|
|
8
|
-
export { DEFAULT_RISK_NOTICE };
|
|
9
7
|
export declare function writeWorkbookFile(filePath: string, populate: (workbook: ExcelJS.stream.xlsx.WorkbookWriter) => Promise<void>, openOutput?: (path: string) => WriteStream): Promise<void>;
|
|
10
8
|
export interface CatalogImportRow {
|
|
11
9
|
productName?: string;
|
|
@@ -85,7 +83,6 @@ export declare class TradeComplianceWorkbenchService {
|
|
|
85
83
|
private readonly storage?;
|
|
86
84
|
constructor(dataSource: DataSource, storage?: TradeComplianceFileStorage | undefined);
|
|
87
85
|
bootstrapSettings(scope: RequestScope): Promise<{
|
|
88
|
-
risk: RiskNoticeSettings;
|
|
89
86
|
profit: ProfitRuleSettings;
|
|
90
87
|
company: CompanySettings;
|
|
91
88
|
banks: BankAccountSettings[];
|
|
@@ -93,7 +90,6 @@ export declare class TradeComplianceWorkbenchService {
|
|
|
93
90
|
private ensureBuiltinCompanyLogo;
|
|
94
91
|
private ensureSettingsDefault;
|
|
95
92
|
dashboard(scope: RequestScope): Promise<{
|
|
96
|
-
riskNotice: RiskNoticeSettings;
|
|
97
93
|
controlledRiskCount: number;
|
|
98
94
|
sanctionRiskCount: number;
|
|
99
95
|
unlinkedPurchaseCount: number;
|
|
@@ -753,14 +749,13 @@ export declare class TradeComplianceWorkbenchService {
|
|
|
753
749
|
pageSize: number;
|
|
754
750
|
}>;
|
|
755
751
|
settings(scope: RequestScope): Promise<{
|
|
756
|
-
risk: RiskNoticeSettings | null;
|
|
757
752
|
company: CompanySettings | null;
|
|
758
753
|
banks: BankAccountSettings[];
|
|
759
754
|
profit: ProfitRuleSettings | null;
|
|
760
755
|
rates: MonthlySafeExchangeRate[];
|
|
761
756
|
}>;
|
|
762
|
-
saveSettings(scope: RequestScope, type: SettingsType, input: Record<string, unknown>, expectedRevision: number): Promise<
|
|
763
|
-
restoreSettingsDefault(scope: RequestScope, input: RestoreSettingsInput): Promise<
|
|
757
|
+
saveSettings(scope: RequestScope, type: SettingsType, input: Record<string, unknown>, expectedRevision: number): Promise<CompanySettings | BankAccountSettings | ProfitRuleSettings | MonthlySafeExchangeRate>;
|
|
758
|
+
restoreSettingsDefault(scope: RequestScope, input: RestoreSettingsInput): Promise<CompanySettings | BankAccountSettings | ProfitRuleSettings>;
|
|
764
759
|
deleteMonthlyRate(scope: RequestScope, input: DeleteMonthlyRateInput): Promise<MonthlySafeExchangeRate>;
|
|
765
760
|
private persistSettings;
|
|
766
761
|
private persistCompanySettings;
|
|
@@ -835,4 +830,5 @@ export declare class TradeComplianceWorkbenchService {
|
|
|
835
830
|
private countUnlinkedCustomers;
|
|
836
831
|
private unrefundedAmount;
|
|
837
832
|
}
|
|
833
|
+
export {};
|
|
838
834
|
//# sourceMappingURL=workbench.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workbench.service.d.ts","sourceRoot":"","sources":["../../src/lib/workbench.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,UAAU,EAAE,aAAa,EAAiF,KAAK,aAAa,EAAmB,MAAM,SAAS,CAAA;AAEjL,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAA;AAK7D,OAAO,EACL,mBAAmB,EAAwB,eAAe,EAAE,sBAAsB,EACpD,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAC/E,2BAA2B,EAAE,sBAAsB,EAAE,8BAA8B,EACnF,2BAA2B,EAAE,kBAAkB,EAA2B,UAAU,EAAE,YAAY,EAClG,uBAAuB,EAA0B,kBAAkB,EAAE,aAAa,EAClF,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"workbench.service.d.ts","sourceRoot":"","sources":["../../src/lib/workbench.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { mkdtemp, readFile, rm } from 'node:fs/promises';
|
|
|
9
9
|
import { tmpdir } from 'node:os';
|
|
10
10
|
import { join } from 'node:path';
|
|
11
11
|
import { finished } from 'node:stream/promises';
|
|
12
|
-
import { BankAccountSettings, CompanySanctionMatch, CompanySettings, ControlledCatalogBatch, ControlledCatalogImportIssue, ControlledGoodsRecord, Customer, CustomerContract, CustomerContractAnalysisRun, CustomerContractClause, CustomerContractClauseAnalysis, DerivedSalesOrderManualData, GeneratedSalesFile, ImportTask, ManagedAsset, MonthlySafeExchangeRate, ProductComplianceMatch, ProfitRuleSettings, PurchaseOrder, PurchaseOrderLine,
|
|
12
|
+
import { BankAccountSettings, CompanySanctionMatch, CompanySettings, ControlledCatalogBatch, ControlledCatalogImportIssue, ControlledGoodsRecord, Customer, CustomerContract, CustomerContractAnalysisRun, CustomerContractClause, CustomerContractClauseAnalysis, DerivedSalesOrderManualData, GeneratedSalesFile, ImportTask, ManagedAsset, MonthlySafeExchangeRate, ProductComplianceMatch, ProfitRuleSettings, PurchaseOrder, PurchaseOrderLine, SanctionCatalogBatch, SanctionCatalogImportIssue, SanctionedCompanyRecord, SettingsHistory, Supplier } from './entities/index.js';
|
|
13
13
|
import { CatalogTypes, ClauseTypes, CustomerProfitRateStatuses, DomainError, DomainErrorCodes, RefundValidationMethods, SalesPaymentStatuses, SanctionHitStatuses } from './types.js';
|
|
14
14
|
import { deriveSalesLine, assertReceivedAmount } from './domain/finance.js';
|
|
15
15
|
import { parseCustomerContractNo, parsePurchaseContractNo } from './domain/contract-number.js';
|
|
@@ -17,9 +17,8 @@ import { isProductNameMatch, normalizeExactName, normalizeForProductMatch, norma
|
|
|
17
17
|
import { importTaskTimedOut, nextSettingsRevision, normalizeOptionalDecimalInput } from './domain/workflow.js';
|
|
18
18
|
import { renderImportIssuesWorkbook } from './domain/import-issues.js';
|
|
19
19
|
import { BUILTIN_COMPANY_LOGO_STORAGE_ID, DEFAULT_BANKS, DEFAULT_COMPANY, DEFAULT_PROFIT_RULE } from './domain/default-settings.js';
|
|
20
|
-
import { DEFAULT_RISK_NOTICE } from './domain/risk-notice.js';
|
|
21
20
|
import { TradeComplianceFileStorage } from './adapters/file-storage.js';
|
|
22
|
-
import { parseBankAccountType, parseExchangeRateInput, parseExpectedRevision,
|
|
21
|
+
import { parseBankAccountType, parseExchangeRateInput, parseExpectedRevision, validateBankSettingsInput, validateProfitSettingsInput, validatePurchaseLineDiscriminators, validateTaxRates } from './runtime-validation.js';
|
|
23
22
|
const DEFAULT_IMPORT_ISSUE_EXPORT_MAX_ROWS = 50_000;
|
|
24
23
|
const HARD_IMPORT_ISSUE_EXPORT_MAX_ROWS = 100_000;
|
|
25
24
|
const CUSTOMER_REANALYSIS_TIMEOUT_MS = 20 * 60 * 1000;
|
|
@@ -28,7 +27,6 @@ const CATALOG_RISK_RECOMMENDATIONS = {
|
|
|
28
27
|
DUAL_USE: '建议核验军民两用物项许可要求,并在出口前完成合规审批',
|
|
29
28
|
OVERSEAS_SANCTION: '建议核验海外制裁限制及交易对手风险,并在交易前完成合规审批'
|
|
30
29
|
};
|
|
31
|
-
export { DEFAULT_RISK_NOTICE };
|
|
32
30
|
export async function writeWorkbookFile(filePath, populate, openOutput = createWriteStream) {
|
|
33
31
|
const output = openOutput(filePath);
|
|
34
32
|
const closed = finished(output, { cleanup: true });
|
|
@@ -52,18 +50,16 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
|
|
|
52
50
|
this.storage = storage;
|
|
53
51
|
}
|
|
54
52
|
async bootstrapSettings(scope) {
|
|
55
|
-
const riskRepo = this.dataSource.getRepository(RiskNoticeSettings);
|
|
56
53
|
const profitRepo = this.dataSource.getRepository(ProfitRuleSettings);
|
|
57
54
|
const companyRepo = this.dataSource.getRepository(CompanySettings);
|
|
58
55
|
const bankRepo = this.dataSource.getRepository(BankAccountSettings);
|
|
59
56
|
const builtinLogo = await this.ensureBuiltinCompanyLogo(scope);
|
|
60
|
-
const [
|
|
61
|
-
this.ensureSettingsDefault(riskRepo, activeScope(scope), { ...auditScope(scope), content: DEFAULT_RISK_NOTICE, revision: 1 }),
|
|
57
|
+
const [profit, company, ...banks] = await Promise.all([
|
|
62
58
|
this.ensureSettingsDefault(profitRepo, activeScope(scope), { ...auditScope(scope), ...DEFAULT_PROFIT_RULE, revision: 1 }),
|
|
63
59
|
this.ensureSettingsDefault(companyRepo, activeScope(scope), { ...auditScope(scope), ...DEFAULT_COMPANY, logoFileId: builtinLogo.id, revision: 1 }),
|
|
64
60
|
...DEFAULT_BANKS.map(defaults => this.ensureSettingsDefault(bankRepo, { ...activeScope(scope), bankType: defaults.bankType }, { ...auditScope(scope), ...defaults, revision: 1 }))
|
|
65
61
|
]);
|
|
66
|
-
return {
|
|
62
|
+
return { profit, company, banks };
|
|
67
63
|
}
|
|
68
64
|
async ensureBuiltinCompanyLogo(scope) {
|
|
69
65
|
const repo = this.dataSource.getRepository(ManagedAsset);
|
|
@@ -88,14 +84,13 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
|
|
|
88
84
|
return row;
|
|
89
85
|
}
|
|
90
86
|
async dashboard(scope) {
|
|
91
|
-
const [
|
|
92
|
-
this.bootstrapSettings(scope),
|
|
87
|
+
const [controlledRiskCount, sanctionRiskCount, unlinkedPurchaseCount, unlinkedCustomerCount] = await Promise.all([
|
|
93
88
|
this.dataSource.getRepository(ProductComplianceMatch).count({ where: { ...activeScope(scope), deletedAt: IsNull() } }),
|
|
94
89
|
this.dataSource.getRepository(CompanySanctionMatch).count({ where: { ...activeScope(scope), deletedAt: IsNull() } }),
|
|
95
90
|
this.countUnlinkedPurchases(scope),
|
|
96
91
|
this.countUnlinkedCustomers(scope)
|
|
97
92
|
]);
|
|
98
|
-
return {
|
|
93
|
+
return { controlledRiskCount, sanctionRiskCount, unlinkedPurchaseCount, unlinkedCustomerCount };
|
|
99
94
|
}
|
|
100
95
|
async listControlledGoods(scope, query = {}) {
|
|
101
96
|
return this.pagedCatalogQuery(ControlledGoodsRecord, ControlledCatalogBatch, scope, query, {
|
|
@@ -344,7 +339,8 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
|
|
|
344
339
|
return repo.save(repo.create({
|
|
345
340
|
...createdScope(scope), documentType: source.documentType, sourceFileId: source.sourceFileId,
|
|
346
341
|
sourceFileName: source.sourceFileName, sourceFileFormat: source.sourceFileFormat,
|
|
347
|
-
sourcePlatformFileId: source.sourcePlatformFileId,
|
|
342
|
+
sourcePlatformFileId: source.sourcePlatformFileId, sourceWorkspacePath: source.sourceWorkspacePath,
|
|
343
|
+
executionInput: source.executionInput,
|
|
348
344
|
retryOfTaskId: source.id, status: 'EXTRACTING', queuedAt: new Date(), createdById: scope.userId ?? null
|
|
349
345
|
}));
|
|
350
346
|
});
|
|
@@ -1209,22 +1205,15 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
|
|
|
1209
1205
|
async listGeneratedFiles(scope, query = {}) { return this.pagedQuery(GeneratedSalesFile, scope, query, ['salesOrderNoSnapshot', 'documentNo', 'fileName'], { customerContractId: query.parameters?.customerContractId, purchaseOrderId: query.parameters?.purchaseOrderId, fileType: query.parameters?.fileType }); }
|
|
1210
1206
|
async settings(scope) {
|
|
1211
1207
|
await this.bootstrapSettings(scope);
|
|
1212
|
-
const [
|
|
1213
|
-
this.dataSource.getRepository(RiskNoticeSettings).findOne({ where: activeScope(scope) }),
|
|
1208
|
+
const [profit, company, banks, rates] = await Promise.all([
|
|
1214
1209
|
this.dataSource.getRepository(ProfitRuleSettings).findOne({ where: activeScope(scope) }),
|
|
1215
1210
|
this.dataSource.getRepository(CompanySettings).findOne({ where: activeScope(scope) }),
|
|
1216
1211
|
this.dataSource.getRepository(BankAccountSettings).find({ where: activeScope(scope), order: { bankType: 'ASC' } }),
|
|
1217
1212
|
this.dataSource.getRepository(MonthlySafeExchangeRate).find({ where: { ...activeScope(scope), deletedAt: IsNull() }, order: { year: 'DESC', month: 'DESC' } })
|
|
1218
1213
|
]);
|
|
1219
|
-
return {
|
|
1214
|
+
return { company, banks, profit, rates };
|
|
1220
1215
|
}
|
|
1221
1216
|
async saveSettings(scope, type, input, expectedRevision) {
|
|
1222
|
-
if (type === 'risk') {
|
|
1223
|
-
const changes = {};
|
|
1224
|
-
if ('content' in input)
|
|
1225
|
-
changes.content = sanitizeRiskNoticeContent(input.content);
|
|
1226
|
-
return this.persistSettings(scope, 'RISK', RiskNoticeSettings, activeScope(scope), settingsCreateScope(scope), changes, expectedRevision);
|
|
1227
|
-
}
|
|
1228
1217
|
if (type === 'company') {
|
|
1229
1218
|
const changes = {};
|
|
1230
1219
|
for (const field of ['logoFileId', 'companyNameZh', 'companyNameEn', 'unifiedSocialCreditCode', 'addressZh', 'addressEn', 'phone', 'email'])
|
|
@@ -1247,8 +1236,6 @@ let TradeComplianceWorkbenchService = class TradeComplianceWorkbenchService {
|
|
|
1247
1236
|
return this.persistMonthlyRate(scope, input, { ...parsed, sourceReference }, expectedRevision);
|
|
1248
1237
|
}
|
|
1249
1238
|
async restoreSettingsDefault(scope, input) {
|
|
1250
|
-
if (input.settingsType === 'risk')
|
|
1251
|
-
return this.persistSettings(scope, 'RISK', RiskNoticeSettings, activeScope(scope), settingsCreateScope(scope), { content: DEFAULT_RISK_NOTICE }, input.expectedRevision, 'RESTORE_DEFAULT');
|
|
1252
1239
|
if (input.settingsType === 'company') {
|
|
1253
1240
|
const builtinLogo = await this.ensureBuiltinCompanyLogo(scope);
|
|
1254
1241
|
return this.persistCompanySettings(scope, { ...DEFAULT_COMPANY, logoFileId: builtinLogo.id }, input.expectedRevision, 'RESTORE_DEFAULT');
|
|
@@ -2005,8 +1992,6 @@ function settingsSnapshot(settingsType, row) {
|
|
|
2005
1992
|
const revision = Number(value.revision);
|
|
2006
1993
|
if (!Number.isInteger(revision) || revision < 1)
|
|
2007
1994
|
throw new DomainError(DomainErrorCodes.INVALID_INPUT, '设置修订号无效', { settingsType, revision: value.revision });
|
|
2008
|
-
if (settingsType === 'RISK')
|
|
2009
|
-
return { settingsType, snapshotVersion: 'v1', revision, content: String(value.content ?? '') };
|
|
2010
1995
|
if (settingsType === 'COMPANY')
|
|
2011
1996
|
return { settingsType, snapshotVersion: 'v1', revision, logoFileId: nullableSnapshotText(value.logoFileId), companyNameZh: nullableSnapshotText(value.companyNameZh), companyNameEn: nullableSnapshotText(value.companyNameEn), unifiedSocialCreditCode: nullableSnapshotText(value.unifiedSocialCreditCode), addressZh: nullableSnapshotText(value.addressZh), addressEn: nullableSnapshotText(value.addressEn), phone: nullableSnapshotText(value.phone), email: nullableSnapshotText(value.email) };
|
|
2012
1997
|
if (settingsType === 'BANK')
|