Files
makemd/server/src/test_orchestrator.ts
wurenzhi 136c2fa579 feat: 初始化项目结构并添加核心功能模块
- 新增文档模板和导航结构
- 实现服务器基础API路由和控制器
- 添加扩展插件配置和前端框架
- 引入多租户和权限管理模块
- 集成日志和数据库配置
- 添加核心业务模型和类型定义
2026-03-17 22:07:19 +08:00

92 lines
3.6 KiB
TypeScript

import { ConsumerOrderService } from './domains/Trade/ConsumerOrderService';
import db from './config/database';
import { DomainBootstrap } from './core/runtime/DomainBootstrap';
import { DomainRegistry } from './core/runtime/DomainRegistry';
async function testOrchestrator() {
console.log('🚀 Testing Order Orchestrator & Auto-Heal (BIZ_ORD_05)...');
try {
await DomainBootstrap.init();
await DomainRegistry.bootstrap();
await ConsumerOrderService.initTable();
const tenantId = 'test-tenant';
const shopId = 'test-shop';
// 1. 创建测试订单 (包含 PO Box 异常)
console.log('--- Test 1: Logistics Forbidden Zone ---');
const orderId1 = await ConsumerOrderService.syncPlatformOrder({
tenant_id: tenantId,
shop_id: shopId,
platform: 'AMAZON',
site: 'US',
platform_order_id: 'AMZ-1001',
customer_name: 'John Doe',
shipping_address: { city: 'NY', address: 'PO Box 1234' },
items: [{ sku: 'SKU-001', quantity: 1, price: 50 }],
total_amount: 50,
status: 'PAID'
});
const order1 = await db('cf_consumer_orders').where({ id: orderId1 }).first();
console.log(`Order 1 Status: ${order1.status}, Reason: ${order1.exception_reason}`);
if (order1.status === 'EXCEPTION' && order1.exception_reason.includes('Forbidden zone')) {
console.log('✅ Forbidden zone detection verified');
}
// 2. 创建高价值订单
console.log('\n--- Test 2: High Value Audit ---');
const orderId2 = await ConsumerOrderService.syncPlatformOrder({
tenant_id: tenantId,
shop_id: shopId,
platform: 'SHOPIFY',
site: 'US',
platform_order_id: 'SHP-2002',
customer_name: 'Rich Client',
shipping_address: { city: 'LA', address: '123 Luxury St' },
items: [{ sku: 'GOLD-SKU', quantity: 1, price: 6000 }],
total_amount: 6000,
status: 'PAID'
});
const order2 = await db('cf_consumer_orders').where({ id: orderId2 }).first();
console.log(`Order 2 Status: ${order2.status}, Reason: ${order2.exception_reason}`);
if (order2.status === 'EXCEPTION' && order2.exception_reason.includes('High value')) {
console.log('✅ High value audit verified');
}
// 3. 模拟异常自愈 (手动触发)
console.log('\n--- Test 3: Auto-Heal (Stock Out) ---');
// 先手动设置一个订单为 EXCEPTION (Stock Out)
const orderId3 = await ConsumerOrderService.syncPlatformOrder({
tenant_id: tenantId,
shop_id: shopId,
platform: 'ALIEXPRESS',
site: 'US',
platform_order_id: 'ALI-3003',
items: [{ sku: 'OUT-OF-STOCK', quantity: 1, price: 20, mainImage: 'https://example.com/item.jpg' }],
total_amount: 20,
status: 'PAID'
});
// 强制触发自愈逻辑 (假设 runHealthCheck 已经识别了异常,这里我们手动调用 attemptAutoHeal 来验证寻源)
// 注意:在真实代码中,这是由 runHealthCheck 触发的
await ConsumerOrderService.transitionStatus(tenantId, orderId3, 'EXCEPTION', 'Stock out');
await (ConsumerOrderService as any).attemptAutoHeal(tenantId, orderId3, 'STOCK_OUT');
const order3 = await db('cf_consumer_orders').where({ id: orderId3 }).first();
console.log(`Order 3 Status: ${order3.status}, Auto-Heal: ${order3.auto_heal_status}, Reason: ${order3.exception_reason}`);
if (order3.auto_heal_status === 'HEALED' && order3.status === 'PROCESSING') {
console.log('✅ Auto-heal via rerouting verified');
}
} catch (error) {
console.error('❌ Test failed:', error);
} finally {
await db.destroy();
}
}
testOrchestrator();