probe-dom-diagnose2.mjs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /** 诊断 2:台账端点为什么没有 CBWS202610150001;地图覆盖层标记在 headless 里是否可点。 */
  2. import { cdpLaunch } from '../../../../cockpit-shell-panel-layout/verify/cdp-driver.mjs'
  3. const CHROME = process.env.CHROME_PATH || 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
  4. const sleep = (ms) => new Promise((r) => setTimeout(r, ms))
  5. const BASE = 'http://192.168.110.96:8301/api/cockpit/v1'
  6. const unwrap = (p) => (p && p.data && (p.code !== undefined || p.requestId) ? p.data : p)
  7. // ① 台账端点直查
  8. for (const q of ['?page=1&pageSize=20', '']) {
  9. try {
  10. const r = await fetch(`${BASE}/monitoring-points/ledger${q}`, { cache: 'no-store' })
  11. const d = unwrap(await r.json())
  12. const rows = d?.points || d?.items || d?.records || []
  13. console.log(`ledger${q || '(default)'} http=${r.status} rows=${rows.length} codes=${rows.map((x) => x.pointCode || x.code || x.monitoringPointCode).join(',')} total=${d?.total ?? d?.pagination?.total}`)
  14. } catch (e) { console.log(`ledger${q} ERR ${e.message}`) }
  15. }
  16. // ② headless 里覆盖层标记的可点性
  17. const browser = await cdpLaunch({ executablePath: CHROME, headless: true, width: 1680, height: 950 })
  18. const page = await browser.newPage()
  19. await page.goto('http://127.0.0.1:8000/#/cockpit', { timeout: 60000 })
  20. await sleep(2000)
  21. await page.click('[data-cockpit-intro]').catch(() => {})
  22. await page.waitForFunction(() => ['ready', 'failed', 'disabled'].includes(document.querySelector('.cockpit-shell__map .map-canvas')?.dataset.mapEngine || ''), { timeout: 60000 })
  23. await sleep(4000)
  24. const overlay = await page.evaluate(() => {
  25. const nodes = [...document.querySelectorAll('[data-marker-overlay-code]')]
  26. const target = nodes.find((n) => n.dataset.markerOverlayCode === 'CBWS202610150001')
  27. return {
  28. total: nodes.length,
  29. codes: nodes.map((n) => n.dataset.markerOverlayCode).slice(0, 20),
  30. targetFound: !!target,
  31. targetRect: target ? JSON.parse(JSON.stringify(target.getBoundingClientRect())) : null,
  32. }
  33. })
  34. console.log('overlay:', JSON.stringify(overlay, null, 2))
  35. if (overlay.targetFound) {
  36. await page.evaluate(() => document.querySelector('[data-marker-overlay-code="CBWS202610150001"]')?.click())
  37. await sleep(3000)
  38. const card = await page.evaluate(() => {
  39. const c = document.querySelector('[data-point-detail]')
  40. return c ? { level: c.dataset.detailLevel, point: c.dataset.pointCode } : null
  41. })
  42. console.log('after overlay click:', JSON.stringify(card))
  43. }
  44. await browser.close()