const http = require('http'); const BASE_URL = 'http://localhost:3002'; function testAPI(name, endpoint) { return new Promise((resolve) => { const req = http.get(`${BASE_URL}${endpoint}`, (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => { try { const json = JSON.parse(data); resolve({ name, endpoint, status: res.statusCode, success: json.success, dataCount: Array.isArray(json.data) ? json.data.length : (json.data ? Object.keys(json.data).length : 0) }); } catch (e) { resolve({ name, endpoint, status: res.statusCode, success: false, error: e.message }); } }); }); req.on('error', (e) => { resolve({ name, endpoint, status: 'ERROR', success: false, error: e.message }); }); }); } async function runTests() { console.log('开始测试所有API...\n'); const tests = [ { name: '预算报价', endpoint: '/api/budget-projects' }, { name: '施工管理', endpoint: '/api/construction/my-projects' }, { name: '预支款', endpoint: '/api/advances' }, { name: '报销', endpoint: '/api/reimbursements' }, { name: '付款申请', endpoint: '/api/payment-requests' }, { name: '核销', endpoint: '/api/verifications' }, { name: '采购申请', endpoint: '/api/purchase-requests' }, { name: '汇率最新', endpoint: '/api/exchange-rates/latest' }, { name: '汇率历史', endpoint: '/api/exchange-rates/history' }, { name: '项目', endpoint: '/api/projects' }, { name: '分包商', endpoint: '/api/subcontractors' }, { name: '供应商', endpoint: '/api/suppliers' }, { name: '客户', endpoint: '/api/customers' } ]; const results = []; for (const test of tests) { const result = await testAPI(test.name, test.endpoint); results.push(result); const status = result.success ? '✅' : '❌'; console.log(`${status} ${result.name}: ${result.endpoint} - 状态码: ${result.status}, 数据量: ${result.dataCount || 0}`); } console.log('\n========================================'); console.log('测试结果汇总'); console.log('========================================'); const successCount = results.filter(r => r.success).length; const failCount = results.filter(r => !r.success).length; console.log(`\n成功: ${successCount}/${results.length}`); console.log(`失败: ${failCount}/${results.length}\n`); if (failCount > 0) { console.log('失败的API:'); results.filter(r => !r.success).forEach(r => { console.log(` - ${r.name}: ${r.error || '未知错误'}`); }); } } runTests();