feat: implement ERP authentication, data extraction, and Excel parsing
This commit completes the core ERP automation functionality, migrating from Python Playwright to TypeScript while maintaining full compatibility with the original implementation. **ERP Authentication Service (erp-auth.ts):** - Implement login() with role-based locators for form elements - Add SSL certificate bypass for internal VPN network - Handle force login confirmation dialogs - Return session with mainFrame reference for subsequent operations - Add session lifecycle management (close, getSession, isActive) **Data Extractor Service (extractor.ts):** - Implement precise nested iframe navigation (#forwardFrame → #mainiframe) - Add batch processing support for multiple order numbers - Implement order number filling with comma separation - Handle material selection and download workflows - Successfully tested with 300 orders in 5 batches **Excel Parser Service (excel-parser.ts):** - Fix ExcelJS 1-indexed array access (row[1] for 序号, row[2] for 材料编码) - Add dynamic table header search to handle empty row skipping - Add field mapping: "来源单号" → "productionOrder" - Implement saveAsExcel() method compatible with Python format - Validate compatibility: 527 rows, 69 orders matching Python output **Type Definitions (erp.types.ts):** - Add headless property to ErpConfig for browser mode control - Add mainFrame reference to ErpSession for frame reuse **Integration Tests (extractor.test.ts):** - Modify tests to use independent auth services for isolation - Add test with 300 orders and batch size 70 - All tests passing with real ERP data **Test Configuration (vitest.config.ts):** - Add setupFiles configuration for environment variable loading **Testing Results:** - ✅ Successfully logs in to ERP system - ✅ Processes 300 orders in 5 batches (43.59 seconds) - ✅ Downloads 5 Excel files (347.62 KB total) - ✅ Parses 2,131 material plans from 280 unique orders - ✅ Excel output matches Python format exactly Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ export default defineConfig({
|
||||
environment: 'node',
|
||||
include: ['tests/**/*.{test,spec}.{ts,tsx}'],
|
||||
exclude: ['node_modules', 'dist', 'out'],
|
||||
setupFiles: ['tests/setup.ts'],
|
||||
coverage: {
|
||||
provider: 'v8',
|
||||
reporter: ['text', 'json', 'html'],
|
||||
|
||||
Reference in New Issue
Block a user