Files
docs/悦/货代SAAS平台后台/tests/verify-wms-inventory-architecture.cjs
T
2026-08-21 09:20:26 +08:00

122 lines
4.8 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const html = fs.readFileSync(path.resolve(__dirname, '..', 'index.html'), 'utf8');
const failures = [];
function expect(pattern, label, source = html) {
if (!pattern.test(source)) failures.push(`missing ${label}`);
}
function expectAbsent(pattern, label, source = html) {
if (pattern.test(source)) failures.push(`unexpected ${label}`);
}
const managementStart = html.indexOf('<div class="page" id="page-fba-stock-management">');
const managementEnd = html.indexOf('<!-- ==================== INVENTORY OVERVIEW', managementStart);
const management = managementStart >= 0 && managementEnd > managementStart
? html.slice(managementStart, managementEnd)
: '';
const overviewStart = html.indexOf('<div class="page" id="page-inventory-overview">');
const overviewEnd = html.indexOf('<!-- ==================== WAREHOUSE STOCK', overviewStart);
const overview = overviewStart >= 0 && overviewEnd > overviewStart
? html.slice(overviewStart, overviewEnd)
: '';
expect(/id="page-fba-stock-management"/, '库存管理页面');
expectAbsent(/class="inventory-management-tabs"/, '海外仓库存业务页签容器', management);
expectAbsent(/data-stock-tab="(?:warehouse-stock|fba-return-stock|overseas-stock|purchase-stock)"/, '仓储/退货/暂扣/采购库存页签', management);
[
'wms-inventory-summary',
'wms-summary-onhand',
'wms-summary-available',
'wms-summary-hold',
'wms-summary-defective',
'wms-summary-in-transit',
'wms-summary-purchase',
'wms-inventory-batch',
'wms-inventory-location',
'wms-inventory-status',
'tbody-inventory-overview'
].forEach(id => expect(new RegExp(`id="${id}"`), id));
['在库总量', '可用库存', '暂扣库存', '美本土散版', '在途库存', '采购库存', '更新时间'].forEach(label => {
expect(new RegExp(label), `WMS 字段 ${label}`);
});
expectAbsent(/>批次数<|>库位数</, '库存管理批次/库位统计列', overview);
expectAbsent(/不良品/, '旧不良品库存文案');
expect(/存在美本土散版/, '美本土散版库存状态');
expect(/const\s+looseboardStockData\s*=\s*\[/, '美本土散版库存数据源');
expect(/record\.defectiveStock\s*=\s*addWmsUnits\(record\.defectiveStock/, '美本土散版库存聚合');
expect(/state:['"]美本土散版['"]/, '美本土散版批次状态');
expect(/JSON\.stringify\(\[owner,warehouse,sku\]\)/, '无歧义客户 + 海外仓 + SKU 聚合键');
expect(/const warehouseLookup=new Map\(/, '暂扣库存仓储行索引');
[
'availableStock',
'lockedStock',
'holdStock',
'defectiveStock',
'inTransitStock',
'purchaseStock',
'onHandStock',
'expectedStock'
].forEach(field => expect(new RegExp(field), `库存状态字段 ${field}`));
['createWmsUnits', 'addWmsUnits', 'formatWmsUnits', 'renderWmsInventorySummary', 'getWmsInventoryStatus'].forEach(name => {
expect(new RegExp(`function\\s+${name}\\s*\\(`), name);
});
expectAbsent(/wms-summary-pending|pendingPutawayStock/, 'WMS 待上架字段');
expect(/if\(page==='fba-stock-management'\)\s*\{\s*renderUnifiedInventory\(\)/, '库存管理直接渲染 WMS 工作台');
[
'wms-detail-status',
'tbody-wms-detail-batches',
'tbody-wms-detail-pallets',
'tbody-warehouse-stock-detail-ledger'
].forEach(id => expect(new RegExp(`id="${id}"`), `库存详情 ${id}`));
expect(/function\s+openWarehouseStockDetail\s*\(\s*owner\s*,\s*warehouse\s*,\s*sku\s*\)/, '仓库维度库存详情入口');
[
'page-inventory-transactions',
'inventory-transaction-start',
'inventory-transaction-end',
'inventory-transaction-owner',
'inventory-transaction-warehouse',
'inventory-transaction-sku',
'inventory-transaction-type',
'inventory-transaction-business-order',
'inventory-transaction-inbound',
'inventory-transaction-outbound',
'tbody-inventory-transactions',
'inventory-transaction-total'
].forEach(id => expect(new RegExp(`id="${id}"`), `进销存页面 ${id}`));
[
'buildInventoryTransactionData',
'renderInventoryTransactions',
'inventoryTransactionSearch',
'inventoryTransactionReset',
'openInventoryTransactions',
'backToInventoryManagement',
'openInventoryRelatedDocument'
].forEach(name => expect(new RegExp(`function\\s+${name}\\s*\\(`), name));
['businessOrderNo', 'inboundNo', 'outboundNo'].forEach(field => {
expect(new RegExp(field), `进销存关联字段 ${field}`);
});
expect(/>业务订单号<\/th>[\s\S]{0,180}>入库单号<\/th>[\s\S]{0,180}>出库单号<\/th>/, '三类关联单据列表列');
['page-warehouse-stock', 'page-fba-return-stock', 'page-overseas-stock', 'page-purchase-stock'].forEach(id => {
expect(new RegExp(`id="${id}"`), `保留兼容页面 ${id}`);
});
if (failures.length) {
console.error('WMS_INVENTORY_ARCHITECTURE_CHECK_FAIL');
failures.forEach(failure => console.error(`- ${failure}`));
process.exitCode = 1;
} else {
console.log('WMS_INVENTORY_ARCHITECTURE_CHECK_PASS');
}