debug_excel_value_added_rules.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const { chromium } = require('playwright');
  2. (async () => {
  3. const browser = await chromium.launch({
  4. headless: true,
  5. executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'
  6. });
  7. const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
  8. const errors = [];
  9. page.on('pageerror', error => errors.push(error.message));
  10. 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=excel-rules-20260805', { waitUntil: 'load' });
  11. await page.evaluate(() => { switchView('rules'); renderRules(); });
  12. const result = await page.evaluate(() => {
  13. const wardrobeExpected = {
  14. '板门补差价': 538, '玻璃门补差价': 1852, '灯带': 386, '变压器+开关': 536,
  15. '自弹器': 115, '见光板': 1138, '铰链': 40, '护墙板': 1852, '拉手': 226,
  16. '抽屉': 1300, '金属拉手': 225, '铝格栅金属拉手': 680, '衣杆': 288, '圆弧': 1560
  17. };
  18. const kitchenExpected = {
  19. '地柜': 2380, '吊柜': 1748, '冰箱吊柜': 2622, '高柜': 5950, '见光板×2': 1138,
  20. '台面': 1480, '台面超出部分': 2480, '碗篮': 1268, '锅篮': 1628,
  21. '自弹': 115, '切角': 500, '台下盆': 500, '包管': 500
  22. };
  23. const wardrobe = DEFAULT_RULES.wardrobe;
  24. const kitchen = DEFAULT_RULES.kitchen;
  25. const validate = (rules, expected, method, unit) => Object.entries(expected).every(([name, value]) => {
  26. const rule = rules.find(item => item.name === name);
  27. return rule && Number(rule.value) === value && rule.method === method && rule.unit === unit;
  28. });
  29. return {
  30. wardrobeCount: wardrobe.length,
  31. kitchenCount: kitchen.length,
  32. wardrobeValid: validate(wardrobe, wardrobeExpected, '按投影面积', '元/㎡'),
  33. kitchenValid: validate(kitchen, kitchenExpected, '按延米', '元/m'),
  34. wardrobeButtons: document.querySelectorAll('#rule-table-wardrobe .btn').length,
  35. kitchenButtons: document.querySelectorAll('#rule-table-kitchen .btn').length,
  36. headers: [...document.querySelectorAll('#view-rules table thead th')].map(el => el.textContent.trim())
  37. };
  38. });
  39. console.log(JSON.stringify({ ...result, errors }));
  40. await browser.close();
  41. })().catch(error => { console.error(error); process.exit(1); });