const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true, executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' }); const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); const errors = []; page.on('pageerror', error => errors.push(error.message)); await page.goto('http://127.0.0.1:8931/AI%E5%BF%AB%E9%80%9F%E6%8A%A5%E4%BB%B7_Demo2.html?v=kitchen-formula-test', { waitUntil: 'load' }); const result = await page.evaluate(() => { const calc = (name, count) => qCalculateKitchenItem(name, 5, 2, count || 0); const names = ['地柜','吊柜','冰箱吊柜','高柜','见光板','台面','台面超出部分','碗篮','锅篮','自弹','切角','台下盆','包管']; const calculations = Object.fromEntries(names.map(name => [name, calc(name, 2)])); return { calculations, minimumMeter: { baseAt3m: qCalculateKitchenItem('地柜', 3, 2, 0), wallAt2m: qCalculateKitchenItem('吊柜', 2, 2, 0), countertopOverAt3m: qCalculateKitchenItem('台面超出部分', 3, 2, 0) }, configured: DEFAULT_RULES.kitchen.map(rule => ({ name: rule.name, method: rule.method, value: Number(rule.value), unit: rule.unit })), legacy: DEFAULT_RULES.kitchen.filter(rule => /11199|3733|基础套餐|超3米/.test(rule.name + rule.value)).map(rule => rule.name) }; }); console.log(JSON.stringify({ ...result, errors })); await browser.close(); })().catch(error => { console.error(error); process.exit(1); });