@chenchaolong/plugin-trade-compliance-workbench 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -1
- package/dist/assets/branding/yuneec-logo.png +0 -0
- package/dist/assets/templates/CI.xlsx +0 -0
- package/dist/assets/templates/CUSTOMS_DECLARATION.xlsx +0 -0
- package/dist/assets/templates/PI.xlsx +0 -0
- package/dist/assets/templates/PL.xlsx +0 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/adapters/file-storage.d.ts +4 -2
- package/dist/lib/adapters/file-storage.d.ts.map +1 -1
- package/dist/lib/adapters/file-storage.js +25 -10
- package/dist/lib/adapters/file-storage.js.map +1 -1
- package/dist/lib/adapters/hsbianma.provider.d.ts +1 -0
- package/dist/lib/adapters/hsbianma.provider.d.ts.map +1 -1
- package/dist/lib/adapters/hsbianma.provider.js +32 -3
- package/dist/lib/adapters/hsbianma.provider.js.map +1 -1
- package/dist/lib/adapters/translation.provider.d.ts +3 -0
- package/dist/lib/adapters/translation.provider.d.ts.map +1 -1
- package/dist/lib/adapters/translation.provider.js +15 -6
- package/dist/lib/adapters/translation.provider.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +1 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/demo-data.definitions.d.ts +28 -0
- package/dist/lib/demo-data.definitions.d.ts.map +1 -0
- package/dist/lib/demo-data.definitions.js +236 -0
- package/dist/lib/demo-data.definitions.js.map +1 -0
- package/dist/lib/demo-data.entity.d.ts +9 -0
- package/dist/lib/demo-data.entity.d.ts.map +1 -0
- package/dist/lib/demo-data.entity.js +24 -0
- package/dist/lib/demo-data.entity.js.map +1 -0
- package/dist/lib/demo-data.ids.d.ts +4 -0
- package/dist/lib/demo-data.ids.d.ts.map +1 -0
- package/dist/lib/demo-data.ids.js +19 -0
- package/dist/lib/demo-data.ids.js.map +1 -0
- package/dist/lib/demo-data.service.d.ts +26 -0
- package/dist/lib/demo-data.service.d.ts.map +1 -0
- package/dist/lib/demo-data.service.js +124 -0
- package/dist/lib/demo-data.service.js.map +1 -0
- package/dist/lib/domain/default-settings.d.ts +1 -0
- package/dist/lib/domain/default-settings.d.ts.map +1 -1
- package/dist/lib/domain/default-settings.js +1 -0
- package/dist/lib/domain/default-settings.js.map +1 -1
- package/dist/lib/domain/risk-notice.d.ts +59 -0
- package/dist/lib/domain/risk-notice.d.ts.map +1 -0
- package/dist/lib/domain/risk-notice.js +30 -0
- package/dist/lib/domain/risk-notice.js.map +1 -0
- package/dist/lib/entities/catalog.entity.d.ts.map +1 -1
- package/dist/lib/entities/catalog.entity.js +4 -2
- package/dist/lib/entities/catalog.entity.js.map +1 -1
- package/dist/lib/entities/customer.entity.d.ts +9 -2
- package/dist/lib/entities/customer.entity.d.ts.map +1 -1
- package/dist/lib/entities/customer.entity.js +29 -1
- package/dist/lib/entities/customer.entity.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/procurement.entity.d.ts +6 -4
- package/dist/lib/entities/procurement.entity.d.ts.map +1 -1
- package/dist/lib/entities/procurement.entity.js +9 -1
- package/dist/lib/entities/procurement.entity.js.map +1 -1
- package/dist/lib/entities/settings.entity.d.ts +12 -2
- package/dist/lib/entities/settings.entity.d.ts.map +1 -1
- package/dist/lib/entities/settings.entity.js +40 -0
- package/dist/lib/entities/settings.entity.js.map +1 -1
- package/dist/lib/entities/shared.entity.d.ts +10 -5
- package/dist/lib/entities/shared.entity.d.ts.map +1 -1
- package/dist/lib/entities/shared.entity.js +22 -1
- package/dist/lib/entities/shared.entity.js.map +1 -1
- package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -0
- package/dist/lib/remote-components/trade-compliance-workbench/app.js +63 -277
- package/dist/lib/remote-components/trade-compliance-workbench/editor-source.mjs +2 -1
- package/dist/lib/remote-components/trade-compliance-workbench/editor.js +171 -128
- package/dist/lib/remote-ui/analytics-contracts.d.ts +106 -0
- package/dist/lib/remote-ui/analytics-contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/analytics-contracts.js +4 -0
- package/dist/lib/remote-ui/analytics-contracts.js.map +1 -0
- package/dist/lib/remote-ui/app-source.d.ts +2 -0
- package/dist/lib/remote-ui/app-source.d.ts.map +1 -0
- package/dist/lib/remote-ui/app-source.js +796 -0
- package/dist/lib/remote-ui/app-source.js.map +1 -0
- package/dist/lib/remote-ui/bridge.d.ts +36 -0
- package/dist/lib/remote-ui/bridge.d.ts.map +1 -0
- package/dist/lib/remote-ui/bridge.js +159 -0
- package/dist/lib/remote-ui/bridge.js.map +1 -0
- package/dist/lib/remote-ui/components/data-grid.d.ts +34 -0
- package/dist/lib/remote-ui/components/data-grid.d.ts.map +1 -0
- package/dist/lib/remote-ui/components/data-grid.js +59 -0
- package/dist/lib/remote-ui/components/data-grid.js.map +1 -0
- package/dist/lib/remote-ui/components/forms.d.ts +63 -0
- package/dist/lib/remote-ui/components/forms.d.ts.map +1 -0
- package/dist/lib/remote-ui/components/forms.js +117 -0
- package/dist/lib/remote-ui/components/forms.js.map +1 -0
- package/dist/lib/remote-ui/components/layout.d.ts +25 -0
- package/dist/lib/remote-ui/components/layout.d.ts.map +1 -0
- package/dist/lib/remote-ui/components/layout.js +66 -0
- package/dist/lib/remote-ui/components/layout.js.map +1 -0
- package/dist/lib/remote-ui/contract-import.d.ts +82 -0
- package/dist/lib/remote-ui/contract-import.d.ts.map +1 -0
- package/dist/lib/remote-ui/contract-import.js +102 -0
- package/dist/lib/remote-ui/contract-import.js.map +1 -0
- package/dist/lib/remote-ui/contracts.d.ts +257 -0
- package/dist/lib/remote-ui/contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/contracts.js +12 -0
- package/dist/lib/remote-ui/contracts.js.map +1 -0
- package/dist/lib/remote-ui/customer-contract-contracts.d.ts +227 -0
- package/dist/lib/remote-ui/customer-contract-contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/customer-contract-contracts.js +10 -0
- package/dist/lib/remote-ui/customer-contract-contracts.js.map +1 -0
- package/dist/lib/remote-ui/model.d.ts +31 -0
- package/dist/lib/remote-ui/model.d.ts.map +1 -0
- package/dist/lib/remote-ui/model.js +248 -0
- package/dist/lib/remote-ui/model.js.map +1 -0
- package/dist/lib/remote-ui/pages/analytics.d.ts +12 -0
- package/dist/lib/remote-ui/pages/analytics.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/analytics.js +123 -0
- package/dist/lib/remote-ui/pages/analytics.js.map +1 -0
- package/dist/lib/remote-ui/pages/catalogs.d.ts +225 -0
- package/dist/lib/remote-ui/pages/catalogs.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/catalogs.js +572 -0
- package/dist/lib/remote-ui/pages/catalogs.js.map +1 -0
- package/dist/lib/remote-ui/pages/contracts.d.ts +80 -0
- package/dist/lib/remote-ui/pages/contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/contracts.js +396 -0
- package/dist/lib/remote-ui/pages/contracts.js.map +1 -0
- package/dist/lib/remote-ui/pages/files.d.ts +31 -0
- package/dist/lib/remote-ui/pages/files.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/files.js +64 -0
- package/dist/lib/remote-ui/pages/files.js.map +1 -0
- package/dist/lib/remote-ui/pages/home.d.ts +71 -0
- package/dist/lib/remote-ui/pages/home.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/home.js +136 -0
- package/dist/lib/remote-ui/pages/home.js.map +1 -0
- package/dist/lib/remote-ui/pages/procurement.d.ts +36 -0
- package/dist/lib/remote-ui/pages/procurement.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/procurement.js +370 -0
- package/dist/lib/remote-ui/pages/procurement.js.map +1 -0
- package/dist/lib/remote-ui/pages/sales.d.ts +12 -0
- package/dist/lib/remote-ui/pages/sales.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/sales.js +106 -0
- package/dist/lib/remote-ui/pages/sales.js.map +1 -0
- package/dist/lib/remote-ui/pages/settings.d.ts +34 -0
- package/dist/lib/remote-ui/pages/settings.d.ts.map +1 -0
- package/dist/lib/remote-ui/pages/settings.js +259 -0
- package/dist/lib/remote-ui/pages/settings.js.map +1 -0
- package/dist/lib/remote-ui/procurement-contracts.d.ts +177 -0
- package/dist/lib/remote-ui/procurement-contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/procurement-contracts.js +2 -0
- package/dist/lib/remote-ui/procurement-contracts.js.map +1 -0
- package/dist/lib/remote-ui/sales-contracts.d.ts +133 -0
- package/dist/lib/remote-ui/sales-contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/sales-contracts.js +2 -0
- package/dist/lib/remote-ui/sales-contracts.js.map +1 -0
- package/dist/lib/remote-ui/settings-contracts.d.ts +114 -0
- package/dist/lib/remote-ui/settings-contracts.d.ts.map +1 -0
- package/dist/lib/remote-ui/settings-contracts.js +6 -0
- package/dist/lib/remote-ui/settings-contracts.js.map +1 -0
- package/dist/lib/remote-ui/upload-policy.d.ts +18 -0
- package/dist/lib/remote-ui/upload-policy.d.ts.map +1 -0
- package/dist/lib/remote-ui/upload-policy.js +56 -0
- package/dist/lib/remote-ui/upload-policy.js.map +1 -0
- package/dist/lib/runtime-validation.d.ts +61 -0
- package/dist/lib/runtime-validation.d.ts.map +1 -0
- package/dist/lib/runtime-validation.js +243 -0
- package/dist/lib/runtime-validation.js.map +1 -0
- package/dist/lib/sales-file.service.d.ts +54 -6
- package/dist/lib/sales-file.service.d.ts.map +1 -1
- package/dist/lib/sales-file.service.js +278 -33
- package/dist/lib/sales-file.service.js.map +1 -1
- package/dist/lib/trade-compliance.config.d.ts +32 -0
- package/dist/lib/trade-compliance.config.d.ts.map +1 -1
- package/dist/lib/trade-compliance.config.js +16 -4
- package/dist/lib/trade-compliance.config.js.map +1 -1
- package/dist/lib/types.d.ts +253 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +24 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/workbench-view.provider.d.ts +675 -38
- package/dist/lib/workbench-view.provider.d.ts.map +1 -1
- package/dist/lib/workbench-view.provider.js +418 -42
- package/dist/lib/workbench-view.provider.js.map +1 -1
- package/dist/lib/workbench.middleware.d.ts +70 -19
- package/dist/lib/workbench.middleware.d.ts.map +1 -1
- package/dist/lib/workbench.middleware.js +5 -1
- package/dist/lib/workbench.middleware.js.map +1 -1
- package/dist/lib/workbench.plugin.d.ts.map +1 -1
- package/dist/lib/workbench.plugin.js +6 -4
- package/dist/lib/workbench.plugin.js.map +1 -1
- package/dist/lib/workbench.service.d.ts +629 -48
- package/dist/lib/workbench.service.d.ts.map +1 -1
- package/dist/lib/workbench.service.js +1818 -300
- package/dist/lib/workbench.service.js.map +1 -1
- package/package.json +15 -4
- package/scripts/seed-demo-data.mjs +138 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { parsePurchaseContractNo } from './domain/contract-number.js';
|
|
2
|
+
import { normalizeExactName } from './domain/normalization.js';
|
|
3
|
+
import { scopedDemoId } from './demo-data.ids.js';
|
|
4
|
+
const catalogTypes = ['DUAL_USE', 'OVERSEAS_SANCTION'];
|
|
5
|
+
const clauseTypes = ['CONTRACT_AMOUNT', 'TAX_RATE', 'PRICE_TERMS', 'TRANSPORT', 'WARRANTY', 'BREACH_LIABILITY', 'PAYMENT_TERMS'];
|
|
6
|
+
const riskLevels = ['LOW', 'MEDIUM', 'HIGH'];
|
|
7
|
+
const salesFileTypes = ['PI', 'CI', 'PL', 'CUSTOMS_DECLARATION'];
|
|
8
|
+
const sourceType = 'FILE_IMPORT';
|
|
9
|
+
const importMode = 'APPEND';
|
|
10
|
+
const importStatus = 'SUCCEEDED';
|
|
11
|
+
const fileFormat = 'XLSX';
|
|
12
|
+
const lineSource = 'CONTRACT_EXTRACTED';
|
|
13
|
+
const hsCodeStatus = 'MANUALLY_CONFIRMED';
|
|
14
|
+
const hsCodeSource = 'HS_LOOKUP';
|
|
15
|
+
const englishNameSource = 'AI_TRANSLATION';
|
|
16
|
+
const vatRateSource = 'CONTRACT_EXTRACTED';
|
|
17
|
+
const refundRateSource = 'HS_LOOKUP';
|
|
18
|
+
const refundValidationMethod = 'PROVIDER_DATE_RANGE';
|
|
19
|
+
const analysisStatus = 'SUCCEEDED';
|
|
20
|
+
const rateSource = 'MANUAL';
|
|
21
|
+
export function buildDemoDataDefinitions(scope, currentYear = new Date().getFullYear()) {
|
|
22
|
+
const id = (entityType, businessKey) => scopedDemoId(scope, entityType, String(businessKey));
|
|
23
|
+
const importTasks = buildImportTasks(currentYear, id);
|
|
24
|
+
const controlledImportTasks = importTasks.filter(task => task.documentType === 'CONTROLLED_CATALOG');
|
|
25
|
+
const sanctionImportTask = importTasks.find(task => task.documentType === 'SANCTION_CATALOG');
|
|
26
|
+
const purchaseImportTasks = importTasks.filter(task => task.documentType === 'PURCHASE_CONTRACT');
|
|
27
|
+
const customerImportTasks = importTasks.filter(task => task.documentType === 'CUSTOMER_CONTRACT');
|
|
28
|
+
const controlledBatches = catalogTypes.map((catalogType, index) => ({
|
|
29
|
+
id: id('controlled_batch', catalogType), catalogType, sourceFileId: `demo-source/controlled-${index + 1}.xlsx`, sourceFileName: `演示管控目录-${index + 1}.xlsx`, importMode,
|
|
30
|
+
replacedBatchId: null, totalCount: 12, successCount: 12, duplicateCount: 0, invalidCount: 0, importTaskId: controlledImportTasks[index].id
|
|
31
|
+
}));
|
|
32
|
+
const controlledGoods = Array.from({ length: 24 }, (_, index) => {
|
|
33
|
+
const catalogType = catalogTypes[index % catalogTypes.length];
|
|
34
|
+
const productName = controlledProductNames[index];
|
|
35
|
+
return {
|
|
36
|
+
id: id('controlled_goods', `${catalogType}:${index + 1}`), batchId: controlledBatches[index % controlledBatches.length].id, sourceType, catalogType, productName,
|
|
37
|
+
normalizedProductName: normalizeExactName(productName), hsCode: `8806${String(2100 + index).padStart(4, '0')}`,
|
|
38
|
+
normalizedHsCode: `8806${String(2100 + index).padStart(4, '0')}`, controlDescription: catalogType === 'DUAL_USE' ? '无人机及关键部件出口需核验最终用户和用途。' : '目的地存在境外制裁管控要求,出货前需复核。',
|
|
39
|
+
sourceLocation: `Sheet1!A${index + 2}`, sourceContent: `${productName} 演示目录原文`, deletedAt: null, deletedById: null, deleteOperation: null
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
const sanctionBatches = [{
|
|
43
|
+
id: id('sanction_batch', 'primary'), sourceFileId: 'demo-source/sanctions.xlsx', sourceFileName: '演示公司制裁目录.xlsx', importMode, replacedBatchId: null,
|
|
44
|
+
totalCount: 22, successCount: 22, duplicateCount: 0, invalidCount: 0, importTaskId: sanctionImportTask.id
|
|
45
|
+
}];
|
|
46
|
+
const sanctionedCompanies = Array.from({ length: 22 }, (_, index) => {
|
|
47
|
+
const companyName = sanctionedCompanyNames[index];
|
|
48
|
+
return {
|
|
49
|
+
id: id('sanctioned_company', index + 1), batchId: sanctionBatches[0].id, sourceType, companyName, normalizedCompanyName: normalizeExactName(companyName),
|
|
50
|
+
countryOrRegion: sanctionedCountries[index % sanctionedCountries.length], sanctionListSource: index % 2 === 0 ? 'OFAC SDN' : 'EU Consolidated List',
|
|
51
|
+
normalizedSanctionListSource: normalizeExactName(index % 2 === 0 ? 'OFAC SDN' : 'EU Consolidated List'), sanctionReason: '演示制裁名单命中记录,仅用于产品功能展示。',
|
|
52
|
+
effectiveDate: date(currentYear, (index % 10) + 1, (index % 20) + 1), remarks: index % 3 === 0 ? '高风险交易对手,需升级审批。' : null,
|
|
53
|
+
sourceLocation: `Sanctions!A${index + 2}`, sourceContent: `${companyName} 演示制裁原文`, deletedAt: null, deletedById: null, deleteOperation: null
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
const suppliers = supplierNames.map((name, index) => ({
|
|
57
|
+
id: id('supplier', `SUP-${String(index + 1).padStart(3, '0')}`), code: `SUP-${String(index + 1).padStart(3, '0')}`, name, normalizedName: normalizeExactName(name), shortName: name.slice(0, 6),
|
|
58
|
+
address: `深圳市光明区演示产业园 ${index + 1} 栋`, contactName: demoContacts[index], phone: `1380000${String(1000 + index)}`,
|
|
59
|
+
wechat: `demo_supplier_${index + 1}`, email: `supplier${index + 1}@example.test`, taxNumber: `91440300DEMO${String(index + 1).padStart(4, '0')}`,
|
|
60
|
+
paymentAccount: `62170000000000${String(index + 1).padStart(4, '0')}`, bankName: index % 2 === 0 ? '中国银行深圳分行' : '招商银行深圳分行',
|
|
61
|
+
taxpayerRating: index % 3 === 0 ? 'A' : 'B', website: `https://supplier-${index + 1}.example.test`, businessProducts: supplierProducts[index],
|
|
62
|
+
complianceCheckedAt: timestamp(currentYear, 1, index + 2), deletedAt: null, deletedById: null, deleteOperation: null
|
|
63
|
+
}));
|
|
64
|
+
const purchaseOrders = suppliers.map((supplier, index) => {
|
|
65
|
+
const base = `DEMO-${String(index + 1).padStart(3, '0')}`;
|
|
66
|
+
const contractNo = index % 2 === 0 ? `${base}C` : `${base}-1C`;
|
|
67
|
+
const amount = Array.from({ length: 3 }, (_, lineIndex) => purchaseLineAmount(index, lineIndex)).reduce((sum, value) => sum + value, 0);
|
|
68
|
+
return {
|
|
69
|
+
id: id('purchase_order', contractNo), supplierId: supplier.id, contractNo, normalizedContractNo: contractNo, orderDate: date(currentYear, index + 1, 8 + index),
|
|
70
|
+
contractAmountCny: amount.toFixed(4), paidAmountCny: (index % 3 === 0 ? amount : index % 3 === 1 ? amount * 0.45 : 0).toFixed(4),
|
|
71
|
+
refundedAmountCny: (index % 2 === 0 ? amount * 0.015 : 0).toFixed(4), sourceFileId: `demo-source/purchase-${index + 1}.xlsx`,
|
|
72
|
+
sourceFileName: `演示采购合同-${index + 1}.xlsx`, importTaskId: purchaseImportTasks[index].id, amountMismatchConfirmedAt: null, amountMismatchConfirmedById: null,
|
|
73
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
const purchaseLines = purchaseOrders.flatMap((order, orderIndex) => Array.from({ length: 3 }, (_, lineIndex) => {
|
|
77
|
+
const index = orderIndex * 3 + lineIndex;
|
|
78
|
+
const quantity = purchaseLineQuantity(orderIndex, lineIndex);
|
|
79
|
+
const unitPrice = purchaseLineUnitPrice(orderIndex, lineIndex);
|
|
80
|
+
return {
|
|
81
|
+
id: id('purchase_line', `${String(order.contractNo)}:${lineIndex + 1}`), purchaseOrderId: order.id, lineNumber: lineIndex + 1, sourceType: lineSource,
|
|
82
|
+
productName: purchaseProductNames[index], normalizedProductName: normalizeExactName(purchaseProductNames[index]), englishName: purchaseEnglishNames[index], englishNameSource,
|
|
83
|
+
productDescription: `面向国际市场的${purchaseProductNames[index]},含标准包装与技术资料。`, modelSpecification: `TCW-${orderIndex + 1}${lineIndex + 1}00`, unit: lineIndex === 2 ? 'SET' : 'PCS',
|
|
84
|
+
quantity: quantity.toFixed(6), unitPriceTaxIncluded: unitPrice.toFixed(6), lineAmountTaxIncluded: (quantity * unitPrice).toFixed(4),
|
|
85
|
+
vatRate: '0.13000000', vatRateSource, hsCode: controlledGoods[index].hsCode, hsCodeStatus, hsCodeSource, hsCodeReferenceSnapshotId: null,
|
|
86
|
+
refundRate: lineIndex === 0 ? '0.13000000' : '0.09000000', refundRateSource, refundPolicyReference: '财税演示政策 2026-01', refundPolicyDate: date(currentYear, 1, 1),
|
|
87
|
+
refundValidationMethod, refundConfirmedAt: timestamp(currentYear, 1, 5), refundConfirmedById: null, amountMismatchConfirmedAt: null, amountMismatchConfirmedById: null,
|
|
88
|
+
sourceLocation: `Products!A${lineIndex + 2}`, sourceContent: `${purchaseProductNames[index]} 采购合同原文`, complianceCheckedAt: timestamp(currentYear, orderIndex + 1, 20),
|
|
89
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
90
|
+
};
|
|
91
|
+
}));
|
|
92
|
+
const productMatches = purchaseLines.filter((_, index) => index % 3 === 0).map((line, index) => ({
|
|
93
|
+
id: id('product_match', index + 1), purchaseOrderLineId: line.id, controlledGoodsId: controlledGoods[index * 3].id, catalogType: controlledGoods[index * 3].catalogType,
|
|
94
|
+
matchMethod: 'HS_CODE_EXACT', similarityScore: '1.000000', matchingRuleVersion: 'DEMO_V1', matchingThreshold: '0.900000',
|
|
95
|
+
matchedAt: timestamp(currentYear, index + 1, 21), deletedAt: null, invalidationReason: null
|
|
96
|
+
}));
|
|
97
|
+
const customers = customerNames.map((name, index) => {
|
|
98
|
+
const pricingProfitRateStatus = index === customerNames.length - 1 ? 'MISSING' : 'CONFIGURED';
|
|
99
|
+
const complianceCheckStatus = index % 2 === 0 ? 'CHECKED' : 'UNCHECKED';
|
|
100
|
+
return {
|
|
101
|
+
id: id('customer', `CUS-${String(index + 1).padStart(3, '0')}`), code: `CUS-${String(index + 1).padStart(3, '0')}`, name, normalizedName: normalizeExactName(name), shortName: customerShortNames[index],
|
|
102
|
+
country: customerCountries[index], address: customerAddresses[index], contactName: customerContacts[index], phone: `+1-202-555-${String(1100 + index)}`,
|
|
103
|
+
wechat: null, email: `buyer${index + 1}@example.test`, taxNumber: `TAX-DEMO-${index + 1}`, paymentAccount: `DEMO-CUSTOMER-${index + 1}`,
|
|
104
|
+
bankName: index % 2 === 0 ? 'Citibank N.A.' : 'Deutsche Bank', taxpayerRating: null, website: `https://customer-${index + 1}.example.test`,
|
|
105
|
+
businessProducts: '无人机、航拍设备及配套零部件', defaultPricingProfitRate: pricingProfitRateStatus === 'CONFIGURED' ? (0.12 + index * 0.01).toFixed(8) : null,
|
|
106
|
+
pricingProfitRateStatus, complianceCheckStatus, complianceCheckedAt: complianceCheckStatus === 'CHECKED' ? timestamp(currentYear, index + 1, 18) : null,
|
|
107
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
const companyMatches = [...[0, 1, 2, 3].map((index) => ({
|
|
111
|
+
id: id('company_match', `SUPPLIER:${String(suppliers[index].code)}`), subjectType: 'SUPPLIER', supplierId: suppliers[index].id, customerId: null,
|
|
112
|
+
sanctionedCompanyId: sanctionedCompanies[index].id, matchedNormalizedName: sanctionedCompanies[index].normalizedCompanyName,
|
|
113
|
+
checkedAt: timestamp(currentYear, 2, index + 1), deletedAt: null, invalidationReason: null
|
|
114
|
+
})), ...[0, 1].map((index) => ({
|
|
115
|
+
id: id('company_match', `CUSTOMER:${String(customers[index].code)}`), subjectType: 'CUSTOMER', supplierId: null, customerId: customers[index].id,
|
|
116
|
+
sanctionedCompanyId: sanctionedCompanies[index + 4].id, matchedNormalizedName: sanctionedCompanies[index + 4].normalizedCompanyName,
|
|
117
|
+
checkedAt: timestamp(currentYear, 2, index + 5), deletedAt: null, invalidationReason: null
|
|
118
|
+
}))];
|
|
119
|
+
const analysisRuns = customers.map((_, index) => ({
|
|
120
|
+
id: id('analysis_run', `DEMO-${String(index + 1).padStart(3, '0')}X:INITIAL`), customerContractId: id('customer_contract', `DEMO-${String(index + 1).padStart(3, '0')}X`), importTaskId: customerImportTasks[index].id, analysisType: 'INITIAL', status: analysisStatus,
|
|
121
|
+
promptVersion: 'DEMO_CONTRACT_V1', modelName: 'demo-analysis', errorCode: null, errorMessage: null, analysisInput: null, executionCommand: null,
|
|
122
|
+
expiresAt: null, commandDispatchedAt: timestamp(currentYear, index + 1, 10), startedAt: timestamp(currentYear, index + 1, 10), completedAt: timestamp(currentYear, index + 1, 10), createdById: null
|
|
123
|
+
}));
|
|
124
|
+
const customerContracts = customers.map((customer, index) => {
|
|
125
|
+
const base = `DEMO-${String(index + 1).padStart(3, '0')}`;
|
|
126
|
+
return {
|
|
127
|
+
id: id('customer_contract', `${base}X`), customerId: customer.id, contractNo: `${base}X`, normalizedContractNo: `${base}X`, contractAmountReviewCny: (320000 + index * 98000).toFixed(4),
|
|
128
|
+
signedAt: date(currentYear, index + 1, 5 + index), overallRiskLevel: riskLevels[(index + 1) % riskLevels.length], latestAnalysisRunId: analysisRuns[index].id,
|
|
129
|
+
currentReanalysisRunId: null, sourceFileId: `demo-source/customer-${index + 1}.xlsx`, sourceFileName: `演示客户合同-${index + 1}.xlsx`, importTaskId: customerImportTasks[index].id,
|
|
130
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
const clauses = customerContracts.flatMap((contract, contractIndex) => clauseTypes.map((clauseType, clauseIndex) => ({
|
|
134
|
+
id: id('contract_clause', `${String(contract.contractNo)}:${clauseType}`), customerContractId: contract.id, clauseType, extractionStatus: 'FOUND',
|
|
135
|
+
sourceText: clauseTexts[clauseType], reviewedText: clauseIndex === 5 ? `${clauseTexts[clauseType]}(建议限制责任上限)` : clauseTexts[clauseType],
|
|
136
|
+
sourceLocation: `第 ${clauseIndex + 2} 条`, sourceContent: clauseTexts[clauseType], deletedAt: null, deletedById: null, deleteOperation: null
|
|
137
|
+
})));
|
|
138
|
+
const clauseAnalyses = customerContracts.flatMap((_, contractIndex) => clauseTypes.map((clauseType, clauseIndex) => {
|
|
139
|
+
const riskLevel = riskLevels[(contractIndex + clauseIndex) % riskLevels.length];
|
|
140
|
+
return {
|
|
141
|
+
id: id('clause_analysis', `${String(customerContracts[contractIndex].contractNo)}:${clauseType}`), analysisRunId: analysisRuns[contractIndex].id, customerContractClauseId: clauses[contractIndex * clauseTypes.length + clauseIndex].id,
|
|
142
|
+
clauseType, analyzedTextSnapshot: clauseTexts[clauseType], riskLevel, riskMessageZh: riskMessages[riskLevel], suggestionZh: riskSuggestions[riskLevel]
|
|
143
|
+
};
|
|
144
|
+
}));
|
|
145
|
+
const salesManualData = customerContracts.map((contract, index) => ({
|
|
146
|
+
id: id('sales_manual', `${String(contract.contractNo)}:${String(purchaseOrders[index].contractNo)}`), customerContractId: contract.id, purchaseOrderId: purchaseOrders[index].id,
|
|
147
|
+
pricingProfitRateOverride: index % 2 === 0 ? (0.18 + index * 0.005).toFixed(8) : null,
|
|
148
|
+
receivedAmountCny: index % 3 === 0 ? (90000 + index * 12000).toFixed(4) : index % 3 === 1 ? '0.0000' : (150000 + index * 10000).toFixed(4),
|
|
149
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
150
|
+
}));
|
|
151
|
+
const generatedSalesFiles = salesFileTypes.map((fileType, index) => {
|
|
152
|
+
const editVersion = [0, 1, 0, 2][index];
|
|
153
|
+
return {
|
|
154
|
+
id: id('generated_sales_file', `DEMO-FILE-${index + 1}`), customerContractId: customerContracts[index % customerContracts.length].id, purchaseOrderId: purchaseOrders[index % customerContracts.length].id,
|
|
155
|
+
salesOrderNoSnapshot: parsePurchaseContractNo(String(purchaseOrders[index % customerContracts.length].normalizedContractNo)).salesOrderNo, fileType,
|
|
156
|
+
documentNo: fileType === 'PI' ? 'DEMO-001P' : fileType === 'CI' ? 'DEMO-002C' : null, fileName: `DEMO-20260725-${fileType}.xlsx`, editVersion,
|
|
157
|
+
templateVersion: 'fixed-v1', templateChecksum: 'demo-20260725-template-checksum', generationSnapshotVersion: 'demo-v1',
|
|
158
|
+
generationSnapshot: { marker: 'DEMO-20260725', businessKey: `DEMO-FILE-${index + 1}` }, generationWarnings: index === 3 ? [{ code: 'DEMO_REVIEW', message: '演示报关资料待人工复核' }] : null,
|
|
159
|
+
pricingProfitRate: (0.15 + index * 0.01).toFixed(8), complianceProfitRate: (0.08 + index * 0.01).toFixed(8), exchangeCost: index % 2 === 0 ? '6.25000000' : null,
|
|
160
|
+
profitRuleSnapshot: { status: 'ACTIVE', ruleVersion: 'COMPLIANCE_V1', minimumOrderProfitRate: '0.05' },
|
|
161
|
+
bankType: fileType === 'CUSTOMS_DECLARATION' ? null : index % 2 === 0 ? 'OVERSEAS_CNY' : 'OVERSEAS_USD',
|
|
162
|
+
bankSnapshot: fileType === 'CUSTOMS_DECLARATION' ? null : { beneficiary: 'YUNEEC TECHNOLOGY(SHENZHEN)CO.,LTD', accountType: index % 2 === 0 ? 'OVERSEAS_CNY' : 'OVERSEAS_USD' },
|
|
163
|
+
generatedById: null, generatedAt: timestamp(currentYear, index + 1, 25), lastEditedById: null, lastEditedAt: editVersion > 0 ? timestamp(currentYear, index + 1, 26) : null,
|
|
164
|
+
deletedAt: null, deletedById: null, deleteOperation: null
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
const monthlyRates = Array.from({ length: 12 }, (_, index) => ({
|
|
168
|
+
id: id('monthly_rate', index + 1), year: currentYear, month: index + 1, currencyCode: 'USD', usdToCnyRate: (7.08 + index * 0.013).toFixed(8),
|
|
169
|
+
sourceType: rateSource, sourceReference: `DEMO-20260725 月度安全汇率 ${index + 1}`, revision: 1, deletedAt: null, deletedById: null, deleteOperation: null
|
|
170
|
+
}));
|
|
171
|
+
return { importTasks, controlledBatches, controlledGoods, sanctionBatches, sanctionedCompanies, suppliers, purchaseOrders, purchaseLines, productMatches, customers, companyMatches, customerContracts, analysisRuns, clauses, clauseAnalyses, salesManualData, generatedSalesFiles, monthlyRates };
|
|
172
|
+
}
|
|
173
|
+
function buildImportTasks(currentYear, id) {
|
|
174
|
+
const taskSources = [
|
|
175
|
+
...catalogTypes.map((catalogType, index) => ({
|
|
176
|
+
documentType: 'CONTROLLED_CATALOG',
|
|
177
|
+
businessKey: catalogType,
|
|
178
|
+
sourceFileId: `demo-source/controlled-${index + 1}.xlsx`,
|
|
179
|
+
sourceFileName: `演示管控目录-${index + 1}.xlsx`
|
|
180
|
+
})),
|
|
181
|
+
{ documentType: 'SANCTION_CATALOG', businessKey: 'primary', sourceFileId: 'demo-source/sanctions.xlsx', sourceFileName: '演示公司制裁目录.xlsx' },
|
|
182
|
+
...supplierNames.map((_, index) => {
|
|
183
|
+
const base = `DEMO-${String(index + 1).padStart(3, '0')}`;
|
|
184
|
+
const contractNo = index % 2 === 0 ? `${base}C` : `${base}-1C`;
|
|
185
|
+
return {
|
|
186
|
+
documentType: 'PURCHASE_CONTRACT',
|
|
187
|
+
businessKey: base,
|
|
188
|
+
sourceFileId: `demo-source/purchase-${index + 1}.xlsx`,
|
|
189
|
+
sourceFileName: `演示采购合同-${index + 1}.xlsx`,
|
|
190
|
+
resultEntityId: id('purchase_order', contractNo)
|
|
191
|
+
};
|
|
192
|
+
}),
|
|
193
|
+
...customerNames.map((_, index) => {
|
|
194
|
+
const contractNo = `DEMO-${String(index + 1).padStart(3, '0')}X`;
|
|
195
|
+
return {
|
|
196
|
+
documentType: 'CUSTOMER_CONTRACT',
|
|
197
|
+
businessKey: contractNo,
|
|
198
|
+
sourceFileId: `demo-source/customer-${index + 1}.xlsx`,
|
|
199
|
+
sourceFileName: `演示客户合同-${index + 1}.xlsx`,
|
|
200
|
+
resultEntityId: id('customer_contract', contractNo)
|
|
201
|
+
};
|
|
202
|
+
})
|
|
203
|
+
];
|
|
204
|
+
return taskSources.map(({ documentType, businessKey, sourceFileId, sourceFileName, resultEntityId = null }, index) => ({
|
|
205
|
+
id: id('import_task', `${documentType}:${businessKey}`), documentType, sourceFileId, sourceFileName, sourceFileFormat: fileFormat,
|
|
206
|
+
sourcePlatformFileId: null, status: importStatus, executionInput: null, executionCommand: null, commandDispatchedAt: null, resultPayloadVersion: 'demo-v1',
|
|
207
|
+
resultPayload: { marker: 'DEMO-20260725' }, resultEntityId, currentReanalysisRunId: null, reviewSavedAt: timestamp(currentYear, 1, 2),
|
|
208
|
+
retryOfTaskId: null, errorCode: null, errorMessage: null, queuedAt: timestamp(currentYear, 1, 2), startedAt: timestamp(currentYear, 1, 2), completedAt: timestamp(currentYear, 1, 2),
|
|
209
|
+
machineElapsedMs: 1250 + index * 100, createdById: null
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
function purchaseLineQuantity(orderIndex, lineIndex) { return 20 + lineIndex * 15 + orderIndex; }
|
|
213
|
+
function purchaseLineUnitPrice(orderIndex, lineIndex) { return 1600 + orderIndex * 225 + lineIndex * 380; }
|
|
214
|
+
function purchaseLineAmount(orderIndex, lineIndex) { return purchaseLineQuantity(orderIndex, lineIndex) * purchaseLineUnitPrice(orderIndex, lineIndex); }
|
|
215
|
+
function date(year, month, day) { return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; }
|
|
216
|
+
function timestamp(year, month, day) { return new Date(`${date(year, month, day)}T04:00:00.000Z`); }
|
|
217
|
+
const controlledProductNames = ['专业级多旋翼无人机', '长航时固定翼无人机', '高精度惯性导航模块', '热成像云台相机', '飞控计算机', '加密数传模块', '高能量密度锂电池', '无人机遥控终端', '卫星定位接收机', '复合材料螺旋桨', '激光测距模块', '夜视成像组件', '抗干扰天线', '航空级电机', '电子调速器', '图像传输模块', '自动驾驶仪', '毫米波雷达', '机载通信终端', '地面控制站', '航拍稳定器', '电源管理模块', '高空测绘相机', '无人机维修套件'];
|
|
218
|
+
const sanctionedCompanyNames = ['深圳市天翼智能科技有限公司', '东莞市精航电子有限公司', '惠州市云端动力有限公司', '广州视界光电有限公司', 'Skyline Robotics Inc.', 'Nordic Aerial Solutions AB', 'Red Sea Aviation Supply', 'Baltic Drone Systems', 'Caspian Precision Tools', 'Atlas Navigation GmbH', 'Falcon Optics Trading', 'Polar Route Logistics', 'Summit Radio Systems', 'Nova Aerospace Parts', 'Vertex Composite Works', 'Meridian Sensor Lab', 'Titan Flight Controls', 'Aurora Imaging Corp', 'Frontier Propulsion Ltd', 'Helios Data Links', 'Vector Ground Systems', 'Zenith Battery Export'];
|
|
219
|
+
const sanctionedCountries = ['United States', 'Germany', 'United Arab Emirates', 'Russia', 'United Kingdom'];
|
|
220
|
+
const supplierNames = ['深圳市天翼智能科技有限公司', '东莞市精航电子有限公司', '惠州市云端动力有限公司', '广州视界光电有限公司', '苏州领航复合材料有限公司', '杭州星链通信技术有限公司', '成都远景传感科技有限公司', '武汉蓝图航空设备有限公司'];
|
|
221
|
+
const demoContacts = ['张伟', '李娜', '王强', '陈静', '刘洋', '赵敏', '周磊', '吴芳'];
|
|
222
|
+
const supplierProducts = ['无人机整机与飞控', '数传及电子元件', '动力电池与电机', '云台与光电载荷', '碳纤维机体部件', '通信与定位模块', '雷达与传感器', '地面站与维修设备'];
|
|
223
|
+
const purchaseProductNames = controlledProductNames;
|
|
224
|
+
const purchaseEnglishNames = ['Professional Multirotor UAV', 'Long-Endurance Fixed-Wing UAV', 'Precision Inertial Navigation Module', 'Thermal Imaging Gimbal Camera', 'Flight Control Computer', 'Encrypted Data Link Module', 'High-Energy Lithium Battery', 'UAV Remote Controller', 'GNSS Receiver', 'Composite Propeller', 'Laser Rangefinder Module', 'Night Vision Imaging Component', 'Anti-Jamming Antenna', 'Aviation Motor', 'Electronic Speed Controller', 'Video Transmission Module', 'Autopilot', 'Millimeter-Wave Radar', 'Airborne Communication Terminal', 'Ground Control Station', 'Aerial Gimbal', 'Power Management Module', 'Survey Camera', 'UAV Maintenance Kit'];
|
|
225
|
+
const customerNames = ['Skyline Robotics Inc.', 'Nordic Aerial Solutions AB', 'Pacific Survey Technologies Pty Ltd', 'Alpine Drone Services GmbH', 'Atlas Inspection Systems Ltd', 'Blue Horizon Imaging SAS'];
|
|
226
|
+
const customerShortNames = ['Skyline', 'Nordic Aerial', 'Pacific Survey', 'Alpine Drone', 'Atlas Inspection', 'Blue Horizon'];
|
|
227
|
+
const customerCountries = ['United States', 'Sweden', 'Australia', 'Germany', 'United Kingdom', 'France'];
|
|
228
|
+
const customerAddresses = ['1200 Market Street, San Francisco, CA', 'Sveavagen 41, Stockholm', '88 Harbour Street, Sydney', 'Leopoldstrasse 12, Munich', '30 King Street, London', '16 Rue de Lyon, Paris'];
|
|
229
|
+
const customerContacts = ['Emma Wilson', 'Lars Andersson', 'Olivia Brown', 'Felix Wagner', 'George Taylor', 'Camille Martin'];
|
|
230
|
+
const clauseTexts = {
|
|
231
|
+
CONTRACT_AMOUNT: '合同总金额以经双方确认的商业发票为准。', TAX_RATE: '所有报价均为人民币含税价,适用税率为 13%。', PRICE_TERMS: '价格条款为 FOB Shenzhen。',
|
|
232
|
+
TRANSPORT: '卖方负责按约定时间交付至深圳港。', WARRANTY: '产品质保期为验收后十二个月。', BREACH_LIABILITY: '违约方承担直接损失及合理维权费用。', PAYMENT_TERMS: '签约后支付 30% 预付款,发货前支付余款。'
|
|
233
|
+
};
|
|
234
|
+
const riskMessages = { LOW: '条款完整,当前未发现明显合规风险。', MEDIUM: '条款存在边界不清,履约前需补充确认。', HIGH: '条款可能导致重大付款或责任风险。' };
|
|
235
|
+
const riskSuggestions = { LOW: '保留现有条款并归档双方确认记录。', MEDIUM: '补充期限、金额和责任边界后再签署。', HIGH: '暂停签署并由法务完成专项复核。' };
|
|
236
|
+
//# sourceMappingURL=demo-data.definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.definitions.js","sourceRoot":"","sources":["../../src/lib/demo-data.definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuditedEntity } from './entities/base.js';
|
|
2
|
+
export declare const DEMO_DATA_MARKER: "DEMO-20260725";
|
|
3
|
+
export type DemoDataMarker = typeof DEMO_DATA_MARKER;
|
|
4
|
+
export declare class DemoDataSeedMarker extends AuditedEntity {
|
|
5
|
+
marker: DemoDataMarker;
|
|
6
|
+
dataYear: number;
|
|
7
|
+
recordCounts: Record<string, number>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=demo-data.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.entity.d.ts","sourceRoot":"","sources":["../../src/lib/demo-data.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,gBAAgB,EAAG,eAAwB,CAAA;AACxD,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAA;AAEpD,qBAEa,kBAAmB,SAAQ,aAAa;IACV,MAAM,EAAG,cAAc,CAAA;IACnC,QAAQ,EAAG,MAAM,CAAA;IACnB,YAAY,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Column, Entity, Index } from 'typeorm';
|
|
3
|
+
import { AuditedEntity } from './entities/base.js';
|
|
4
|
+
export const DEMO_DATA_MARKER = 'DEMO-20260725';
|
|
5
|
+
let DemoDataSeedMarker = class DemoDataSeedMarker extends AuditedEntity {
|
|
6
|
+
};
|
|
7
|
+
__decorate([
|
|
8
|
+
Column({ type: 'varchar', length: 32 }),
|
|
9
|
+
__metadata("design:type", String)
|
|
10
|
+
], DemoDataSeedMarker.prototype, "marker", void 0);
|
|
11
|
+
__decorate([
|
|
12
|
+
Column({ type: 'integer' }),
|
|
13
|
+
__metadata("design:type", Number)
|
|
14
|
+
], DemoDataSeedMarker.prototype, "dataYear", void 0);
|
|
15
|
+
__decorate([
|
|
16
|
+
Column({ type: 'jsonb' }),
|
|
17
|
+
__metadata("design:type", Object)
|
|
18
|
+
], DemoDataSeedMarker.prototype, "recordCounts", void 0);
|
|
19
|
+
DemoDataSeedMarker = __decorate([
|
|
20
|
+
Entity('plugin_trade_compliance_demo_data_seed'),
|
|
21
|
+
Index(['tenantId', 'organizationId', 'marker'], { unique: true })
|
|
22
|
+
], DemoDataSeedMarker);
|
|
23
|
+
export { DemoDataSeedMarker };
|
|
24
|
+
//# sourceMappingURL=demo-data.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.entity.js","sourceRoot":"","sources":["../../src/lib/demo-data.entity.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAwB,CAAA;AAKjD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,aAAa;CAIpD,CAAA;AAH0C;IAAxC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;kDAAwB;AACnC;IAA5B,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;oDAAkB;AACnB;IAA1B,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;wDAAsC;AAHrD,kBAAkB;IAF9B,MAAM,CAAC,wCAAwC,CAAC;IAChD,KAAK,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACrD,kBAAkB,CAI9B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RequestScope } from './types.js';
|
|
2
|
+
export type DemoDataEntityType = 'import_task' | 'controlled_batch' | 'controlled_goods' | 'sanction_batch' | 'sanctioned_company' | 'supplier' | 'purchase_order' | 'purchase_line' | 'product_match' | 'customer' | 'company_match' | 'customer_contract' | 'analysis_run' | 'contract_clause' | 'clause_analysis' | 'sales_manual' | 'generated_sales_file' | 'monthly_rate' | 'seed_marker';
|
|
3
|
+
export declare function scopedDemoId(scope: Pick<RequestScope, 'tenantId' | 'organizationId'>, entityType: DemoDataEntityType, businessKey: string): string;
|
|
4
|
+
//# sourceMappingURL=demo-data.ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.ids.d.ts","sourceRoot":"","sources":["../../src/lib/demo-data.ids.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,oBAAoB,GACjG,UAAU,GAAG,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,GAAG,eAAe,GAChG,mBAAmB,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,cAAc,GAC7F,sBAAsB,GAAG,cAAc,GAAG,aAAa,CAAA;AAI3D,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAclJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { DEMO_DATA_MARKER } from './demo-data.entity.js';
|
|
3
|
+
const DEMO_UUID_NAMESPACE = '812a2f70-23f1-5f93-8a26-14b45ce15318';
|
|
4
|
+
export function scopedDemoId(scope, entityType, businessKey) {
|
|
5
|
+
const structuredName = JSON.stringify({
|
|
6
|
+
marker: DEMO_DATA_MARKER,
|
|
7
|
+
tenantId: scope.tenantId,
|
|
8
|
+
organizationId: scope.organizationId,
|
|
9
|
+
entityType,
|
|
10
|
+
businessKey
|
|
11
|
+
});
|
|
12
|
+
const namespace = Buffer.from(DEMO_UUID_NAMESPACE.replaceAll('-', ''), 'hex');
|
|
13
|
+
const bytes = createHash('sha1').update(namespace).update(structuredName, 'utf8').digest().subarray(0, 16);
|
|
14
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x50;
|
|
15
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
16
|
+
const hex = bytes.toString('hex');
|
|
17
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=demo-data.ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.ids.js","sourceRoot":"","sources":["../../src/lib/demo-data.ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AASxD,MAAM,mBAAmB,GAAG,sCAAsC,CAAA;AAElE,MAAM,UAAU,YAAY,CAAC,KAAwD,EAAE,UAA8B,EAAE,WAAmB;IACxI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU;QACV,WAAW;KACZ,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1G,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACnC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;AAC5G,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type DataSource } from 'typeorm';
|
|
2
|
+
import { TradeComplianceFileStorage } from './adapters/file-storage.js';
|
|
3
|
+
import { DEMO_DATA_MARKER } from './demo-data.entity.js';
|
|
4
|
+
import type { RequestScope } from './types.js';
|
|
5
|
+
export type DemoDataSeedResult = {
|
|
6
|
+
inserted: false;
|
|
7
|
+
reason: 'already_seeded';
|
|
8
|
+
marker: typeof DEMO_DATA_MARKER;
|
|
9
|
+
} | {
|
|
10
|
+
inserted: true;
|
|
11
|
+
marker: typeof DEMO_DATA_MARKER;
|
|
12
|
+
dataYear: number;
|
|
13
|
+
counts: Record<string, number>;
|
|
14
|
+
};
|
|
15
|
+
export interface DemoDataSeedInput {
|
|
16
|
+
confirmation: 'INIT_DEMO_DATA';
|
|
17
|
+
}
|
|
18
|
+
export declare class TradeComplianceDemoDataService {
|
|
19
|
+
private readonly dataSource;
|
|
20
|
+
private readonly storage;
|
|
21
|
+
private readonly logger;
|
|
22
|
+
constructor(dataSource: DataSource, storage: TradeComplianceFileStorage);
|
|
23
|
+
seed(scope: RequestScope): Promise<DemoDataSeedResult>;
|
|
24
|
+
private bootstrapSettings;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=demo-data.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.service.d.ts","sourceRoot":"","sources":["../../src/lib/demo-data.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,UAAU,EAA+E,MAAM,SAAS,CAAA;AAE9H,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAIvE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,uBAAuB,CAAA;AA0B5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,OAAO,gBAAgB,CAAA;CAAE,GAC9E;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAA;AAEzG,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,gBAAgB,CAAA;CAC/B;AAED,qBACa,8BAA8B;IAInB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;gBAGlC,UAAU,EAAE,UAAU,EAC1C,OAAO,EAAE,0BAA0B;IAGhD,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAoE9C,iBAAiB;CAoBhC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
var TradeComplianceDemoDataService_1;
|
|
2
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
3
|
+
import { Injectable, Logger } from '@nestjs/common';
|
|
4
|
+
import { InjectDataSource } from '@nestjs/typeorm';
|
|
5
|
+
import { IsNull } from 'typeorm';
|
|
6
|
+
import XLSX from 'xlsx';
|
|
7
|
+
import { TradeComplianceFileStorage } from './adapters/file-storage.js';
|
|
8
|
+
import { BUILTIN_COMPANY_LOGO_STORAGE_ID, DEFAULT_BANKS, DEFAULT_COMPANY, DEFAULT_PROFIT_RULE } from './domain/default-settings.js';
|
|
9
|
+
import { DEFAULT_RISK_NOTICE } from './domain/risk-notice.js';
|
|
10
|
+
import { buildDemoDataDefinitions } from './demo-data.definitions.js';
|
|
11
|
+
import { DEMO_DATA_MARKER, DemoDataSeedMarker } from './demo-data.entity.js';
|
|
12
|
+
import { BankAccountSettings, CompanySanctionMatch, CompanySettings, ControlledCatalogBatch, ControlledGoodsRecord, Customer, CustomerContract, CustomerContractAnalysisRun, CustomerContractClause, CustomerContractClauseAnalysis, DerivedSalesOrderManualData, GeneratedSalesFile, ImportTask, ManagedAsset, MonthlySafeExchangeRate, ProductComplianceMatch, ProfitRuleSettings, PurchaseOrder, PurchaseOrderLine, RiskNoticeSettings, SanctionCatalogBatch, SanctionedCompanyRecord, Supplier } from './entities/index.js';
|
|
13
|
+
import { scopedDemoId } from './demo-data.ids.js';
|
|
14
|
+
let TradeComplianceDemoDataService = TradeComplianceDemoDataService_1 = class TradeComplianceDemoDataService {
|
|
15
|
+
constructor(dataSource, storage) {
|
|
16
|
+
this.dataSource = dataSource;
|
|
17
|
+
this.storage = storage;
|
|
18
|
+
this.logger = new Logger(TradeComplianceDemoDataService_1.name);
|
|
19
|
+
}
|
|
20
|
+
async seed(scope) {
|
|
21
|
+
const storedFileIds = [];
|
|
22
|
+
try {
|
|
23
|
+
return await this.dataSource.transaction(async (manager) => {
|
|
24
|
+
await manager.query('SELECT pg_advisory_xact_lock(hashtext($1), hashtext($2))', [`trade-compliance-demo:${scope.tenantId}`, scope.organizationId]);
|
|
25
|
+
const markerWhere = { tenantId: scope.tenantId, organizationId: scope.organizationId, marker: DEMO_DATA_MARKER };
|
|
26
|
+
const existing = await manager.getRepository(DemoDataSeedMarker).findOne({ where: markerWhere });
|
|
27
|
+
if (existing)
|
|
28
|
+
return { inserted: false, reason: 'already_seeded', marker: DEMO_DATA_MARKER };
|
|
29
|
+
const dataYear = currentShanghaiYear();
|
|
30
|
+
const definitions = buildDemoDataDefinitions(scope, dataYear);
|
|
31
|
+
await this.bootstrapSettings(manager, scope);
|
|
32
|
+
const sourceStorageFileId = await this.storage.save(buildDemoWorkbook('SOURCE', dataYear), `${DEMO_DATA_MARKER}-SOURCE.xlsx`, 'generated');
|
|
33
|
+
storedFileIds.push(sourceStorageFileId);
|
|
34
|
+
const generatedFiles = [];
|
|
35
|
+
for (const definition of definitions.generatedSalesFiles) {
|
|
36
|
+
const fileName = String(definition.fileName);
|
|
37
|
+
const storageFileId = await this.storage.save(buildDemoWorkbook(definition.fileType, dataYear), fileName, 'generated');
|
|
38
|
+
storedFileIds.push(storageFileId);
|
|
39
|
+
generatedFiles.push({ ...definition, storageFileId });
|
|
40
|
+
}
|
|
41
|
+
const counts = definitionCounts(definitions);
|
|
42
|
+
const scopeOnly = (row) => ({ ...row, tenantId: scope.tenantId, organizationId: scope.organizationId });
|
|
43
|
+
const created = (row) => ({ ...scopeOnly(row) });
|
|
44
|
+
const importAudited = (row) => ({ ...scopeOnly(row), createdById: scope.userId ?? null });
|
|
45
|
+
const audited = (row) => ({ ...scopeOnly(row), createdById: scope.userId ?? null, updatedById: scope.userId ?? null });
|
|
46
|
+
await saveRows(manager, ImportTask, definitions.importTasks.map(row => importAudited({ ...row, sourceFileId: sourceStorageFileId })));
|
|
47
|
+
await saveRows(manager, ControlledCatalogBatch, definitions.controlledBatches.map(row => audited({ ...row, sourceFileId: sourceStorageFileId })));
|
|
48
|
+
await saveRows(manager, ControlledGoodsRecord, definitions.controlledGoods.map(audited));
|
|
49
|
+
await saveRows(manager, SanctionCatalogBatch, definitions.sanctionBatches.map(row => audited({ ...row, sourceFileId: sourceStorageFileId })));
|
|
50
|
+
await saveRows(manager, SanctionedCompanyRecord, definitions.sanctionedCompanies.map(audited));
|
|
51
|
+
await saveRows(manager, Supplier, definitions.suppliers.map(audited));
|
|
52
|
+
await saveRows(manager, PurchaseOrder, definitions.purchaseOrders.map(row => audited({ ...row, sourceFileId: sourceStorageFileId })));
|
|
53
|
+
await saveRows(manager, PurchaseOrderLine, definitions.purchaseLines.map(audited));
|
|
54
|
+
await saveRows(manager, ProductComplianceMatch, definitions.productMatches.map(created));
|
|
55
|
+
await saveRows(manager, Customer, definitions.customers.map(audited));
|
|
56
|
+
await saveRows(manager, CompanySanctionMatch, definitions.companyMatches.map(created));
|
|
57
|
+
await saveRows(manager, CustomerContract, definitions.customerContracts.map(row => audited({ ...row, sourceFileId: sourceStorageFileId })));
|
|
58
|
+
await saveRows(manager, CustomerContractAnalysisRun, definitions.analysisRuns.map(importAudited));
|
|
59
|
+
await saveRows(manager, CustomerContractClause, definitions.clauses.map(audited));
|
|
60
|
+
await saveRows(manager, CustomerContractClauseAnalysis, definitions.clauseAnalyses.map(created));
|
|
61
|
+
await saveRows(manager, DerivedSalesOrderManualData, definitions.salesManualData.map(audited));
|
|
62
|
+
await saveRows(manager, GeneratedSalesFile, generatedFiles.map(row => audited({ ...row, generatedById: scope.userId ?? null, lastEditedById: row.lastEditedAt ? scope.userId ?? null : null })));
|
|
63
|
+
await saveRows(manager, MonthlySafeExchangeRate, definitions.monthlyRates.map(audited));
|
|
64
|
+
await manager.save(DemoDataSeedMarker, audited({ id: scopedDemoId(scope, 'seed_marker', DEMO_DATA_MARKER), marker: DEMO_DATA_MARKER, dataYear, recordCounts: counts }));
|
|
65
|
+
return { inserted: true, marker: DEMO_DATA_MARKER, dataYear, counts };
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const cleanupResults = await Promise.allSettled(storedFileIds.map(id => this.storage.remove(id)));
|
|
70
|
+
const cleanupFailures = cleanupResults.flatMap((result, index) => result.status === 'rejected'
|
|
71
|
+
? [{ id: storedFileIds[index], reason: result.reason }]
|
|
72
|
+
: []);
|
|
73
|
+
if (cleanupFailures.length) {
|
|
74
|
+
this.logger.error(`Demo seed rollback left storage files pending cleanup: ${cleanupFailures.map(item => item.id).join(', ')}`, cleanupFailures.map(item => `${item.id}: ${item.reason instanceof Error ? item.reason.stack ?? item.reason.message : String(item.reason)}`).join('\n'));
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async bootstrapSettings(manager, scope) {
|
|
80
|
+
const audit = { tenantId: scope.tenantId, organizationId: scope.organizationId, createdById: scope.userId ?? null, updatedById: scope.userId ?? null };
|
|
81
|
+
const logo = await ensureOne(manager, ManagedAsset, { tenantId: scope.tenantId, organizationId: scope.organizationId, assetType: 'COMPANY_LOGO', storageType: 'BUILTIN', storageFileId: BUILTIN_COMPANY_LOGO_STORAGE_ID, deletedAt: IsNull() }, { ...audit, assetType: 'COMPANY_LOGO', status: 'ACTIVE', storageType: 'BUILTIN', storageFileId: BUILTIN_COMPANY_LOGO_STORAGE_ID, ownerId: null, originalFileName: 'yuneec-logo.png', deletedAt: null, deletedById: null, deleteOperation: null });
|
|
82
|
+
await ensureOne(manager, RiskNoticeSettings, { tenantId: scope.tenantId, organizationId: scope.organizationId }, { ...audit, content: DEFAULT_RISK_NOTICE, revision: 1 });
|
|
83
|
+
await ensureOne(manager, ProfitRuleSettings, { tenantId: scope.tenantId, organizationId: scope.organizationId }, { ...audit, ...DEFAULT_PROFIT_RULE, revision: 1 });
|
|
84
|
+
await ensureOne(manager, CompanySettings, { tenantId: scope.tenantId, organizationId: scope.organizationId }, { ...audit, ...DEFAULT_COMPANY, logoFileId: logo.id, revision: 1 });
|
|
85
|
+
for (const bank of DEFAULT_BANKS) {
|
|
86
|
+
await ensureOne(manager, BankAccountSettings, { tenantId: scope.tenantId, organizationId: scope.organizationId, bankType: bank.bankType }, { ...audit, ...bank, revision: 1 });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
TradeComplianceDemoDataService = TradeComplianceDemoDataService_1 = __decorate([
|
|
91
|
+
Injectable(),
|
|
92
|
+
__param(0, InjectDataSource()),
|
|
93
|
+
__metadata("design:paramtypes", [Function, TradeComplianceFileStorage])
|
|
94
|
+
], TradeComplianceDemoDataService);
|
|
95
|
+
export { TradeComplianceDemoDataService };
|
|
96
|
+
async function ensureOne(manager, entity, where, values) {
|
|
97
|
+
const repository = manager.getRepository(entity);
|
|
98
|
+
const existing = await repository.findOne({ where: where });
|
|
99
|
+
if (existing)
|
|
100
|
+
return existing;
|
|
101
|
+
return repository.save(repository.create(values));
|
|
102
|
+
}
|
|
103
|
+
async function saveRows(manager, entity, rows) {
|
|
104
|
+
if (rows.length)
|
|
105
|
+
await manager.save(entity, rows);
|
|
106
|
+
}
|
|
107
|
+
function definitionCounts(definitions) {
|
|
108
|
+
return Object.fromEntries(Object.entries(definitions).map(([key, rows]) => [key, rows.length]));
|
|
109
|
+
}
|
|
110
|
+
function buildDemoWorkbook(fileType, dataYear) {
|
|
111
|
+
const workbook = XLSX.utils.book_new();
|
|
112
|
+
const worksheet = XLSX.utils.aoa_to_sheet([
|
|
113
|
+
['DEMO_MARKER', DEMO_DATA_MARKER],
|
|
114
|
+
['FILE_TYPE', String(fileType)],
|
|
115
|
+
['DATA_YEAR', dataYear],
|
|
116
|
+
['NOTICE', '演示文件,仅用于外贸合规工作台功能展示。']
|
|
117
|
+
]);
|
|
118
|
+
XLSX.utils.book_append_sheet(workbook, worksheet, 'Demo');
|
|
119
|
+
return Buffer.from(XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx', compression: true }));
|
|
120
|
+
}
|
|
121
|
+
function currentShanghaiYear(now = new Date()) {
|
|
122
|
+
return Number(new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Shanghai', year: 'numeric' }).format(now));
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=demo-data.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-data.service.js","sourceRoot":"","sources":["../../src/lib/demo-data.service.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAgG,MAAM,SAAS,CAAA;AAC9H,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,+BAA+B,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACnI,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAA4B,MAAM,4BAA4B,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,2BAA2B,EAC3B,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACT,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAW1C,IAAM,8BAA8B,sCAApC,MAAM,8BAA8B;IAGzC,YACsB,UAAuC,EAC1C,OAAmC;QADf,eAAU,GAAV,UAAU,CAAY;QAC1C,YAAO,GAAP,OAAO,CAA4B;QAJrC,WAAM,GAAG,IAAI,MAAM,CAAC,gCAA8B,CAAC,IAAI,CAAC,CAAA;IAKtE,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,KAAmB;QAC5B,MAAM,aAAa,GAAa,EAAE,CAAA;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;gBACvD,MAAM,OAAO,CAAC,KAAK,CACjB,0DAA0D,EAC1D,CAAC,yBAAyB,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAClE,CAAA;gBACD,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;gBAChH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;gBAChG,IAAI,QAAQ;oBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;gBAE5F,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAA;gBACtC,MAAM,WAAW,GAAG,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAE5C,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,gBAAgB,cAAc,EAAE,WAAW,CAAC,CAAA;gBAC1I,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;gBACvC,MAAM,cAAc,GAA2C,EAAE,CAAA;gBACjE,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC;oBACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;oBAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;oBACtH,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBACjC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;gBACvD,CAAC;gBACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;gBAC5C,MAAM,SAAS,GAAG,CAAmB,GAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;gBAC5H,MAAM,OAAO,GAAG,CAAmB,GAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACrE,MAAM,aAAa,GAAG,CAAmB,GAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAA;gBAC9G,MAAM,OAAO,GAAG,CAAmB,GAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAA;gBAE3I,MAAM,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAA;gBACrI,MAAM,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAA;gBACjJ,MAAM,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACxF,MAAM,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC7I,MAAM,QAAQ,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC9F,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACrE,MAAM,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAA;gBACrI,MAAM,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBAClF,MAAM,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACxF,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACrE,MAAM,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACtF,MAAM,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC3I,MAAM,QAAQ,CAAC,OAAO,EAAE,2BAA2B,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;gBACjG,MAAM,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACjF,MAAM,QAAQ,CAAC,OAAO,EAAE,8BAA8B,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBAChG,MAAM,QAAQ,CAAC,OAAO,EAAE,2BAA2B,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC9F,MAAM,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAChM,MAAM,QAAQ,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACvF,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;gBAEvK,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;YACvE,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACjG,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;gBAC5F,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvD,CAAC,CAAC,EAAE,CAAC,CAAA;YACP,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0DAA0D,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC3G,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvJ,CAAA;YACH,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,KAAmB;QACzE,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAA;QACtJ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,YAAY,EAChD,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,+BAA+B,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAC1L,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;QACnP,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,EACzC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAClE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1D,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,EACzC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAClE,EAAE,GAAG,KAAK,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QACpD,MAAM,SAAS,CAAC,OAAO,EAAE,eAAe,EACtC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAClE,EAAE,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QACrE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,OAAO,EAAE,mBAAmB,EAC1C,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAC3F,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF,CAAA;AAhGY,8BAA8B;IAD1C,UAAU,EAAE;IAKR,WAAA,gBAAgB,EAAE,CAAA;+CACO,0BAA0B;GAL3C,8BAA8B,CAgG1C;;AAED,KAAK,UAAU,SAAS,CAA0B,OAAsB,EAAE,MAAuB,EAAE,KAA8B,EAAE,MAAsB;IACvJ,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAA;IACpE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,KAAK,UAAU,QAAQ,CAA0B,OAAsB,EAAE,MAAuB,EAAE,IAA2B;IAC3H,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAgC;IACxD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACjG,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB,EAAE,QAAgB;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACxC,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACjC,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,WAAW,EAAE,QAAQ,CAAC;QACvB,CAAC,QAAQ,EAAE,sBAAsB,CAAC;KACnC,CAAC,CAAA;IACF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACnG,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IAC3C,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7G,CAAC"}
|
|
@@ -9,6 +9,7 @@ export declare const DEFAULT_COMPANY: {
|
|
|
9
9
|
readonly phone: "+86 15112619120";
|
|
10
10
|
readonly email: "sales03@yuneectech.com";
|
|
11
11
|
};
|
|
12
|
+
export declare const BUILTIN_COMPANY_LOGO_STORAGE_ID = "builtin:company-logo:yuneec";
|
|
12
13
|
export declare const DEFAULT_BANKS: ReadonlyArray<{
|
|
13
14
|
bankType: BankAccountType;
|
|
14
15
|
beneficiary: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/default-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAA;AAEV,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAG3L,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;CAAkJ,CAAA"}
|
|
1
|
+
{"version":3,"file":"default-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/default-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAA;AAEV,eAAO,MAAM,+BAA+B,gCAAgC,CAAA;AAE5E,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAG3L,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;CAAkJ,CAAA"}
|
|
@@ -8,6 +8,7 @@ export const DEFAULT_COMPANY = {
|
|
|
8
8
|
phone: '+86 15112619120',
|
|
9
9
|
email: 'sales03@yuneectech.com'
|
|
10
10
|
};
|
|
11
|
+
export const BUILTIN_COMPANY_LOGO_STORAGE_ID = 'builtin:company-logo:yuneec';
|
|
11
12
|
export const DEFAULT_BANKS = [
|
|
12
13
|
{ bankType: 'OVERSEAS_CNY', beneficiary: 'YUNEEC TECHNOLOGY(SHENZHEN)CO.,LTD', bankName: 'VTB BANK (PJSC) SHANGHAI BRANCH', bankAddress: 'NO.2503-2505, Shanghai Tower, No.501 Middle Yincheng Road, Pudong New Area, Shanghai, China', cnapsCode: '767290000018', accountNo: '40807156400610004941', swiftCode: 'VTBRCNSH' },
|
|
13
14
|
{ bankType: 'OVERSEAS_USD', beneficiary: 'YUNEEC TECHNOLOGY(SHENZHEN)CO.,LTD', bankName: 'Bank of China Shenzhen Branch Tianhuicheng Sub-Branch', bankAddress: 'No.111 Matian Road,Gongming Town,Guangming District,Shenzhen China', cnapsCode: '1045 8400 1612', accountNo: '7445 7739 2397', swiftCode: 'BKCHCNBJ45A' }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-settings.js","sourceRoot":"","sources":["../../../src/lib/domain/default-settings.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,uCAAuC;IACtD,uBAAuB,EAAE,oBAAoB;IAC7C,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,qHAAqH;IAChI,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,wBAAwB;CACvB,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAsK;IAC9L,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,iCAAiC,EAAE,WAAW,EAAE,6FAA6F,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE;IAC7T,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,uDAAuD,EAAE,WAAW,EAAE,oEAAoE,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;CAC1T,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,MAAM,EAAE,QAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"default-settings.js","sourceRoot":"","sources":["../../../src/lib/domain/default-settings.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,uCAAuC;IACtD,uBAAuB,EAAE,oBAAoB;IAC7C,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,qHAAqH;IAChI,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,wBAAwB;CACvB,CAAA;AAEV,MAAM,CAAC,MAAM,+BAA+B,GAAG,6BAA6B,CAAA;AAE5E,MAAM,CAAC,MAAM,aAAa,GAAsK;IAC9L,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,iCAAiC,EAAE,WAAW,EAAE,6FAA6F,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE;IAC7T,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,uDAAuD,EAAE,WAAW,EAAE,oEAAoE,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;CAC1T,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,MAAM,EAAE,QAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAA"}
|