diff --git a/preview/preview-route-followup.png b/preview/preview-route-followup.png index 8cd04e4..cea8ff8 100644 Binary files a/preview/preview-route-followup.png and b/preview/preview-route-followup.png differ diff --git a/tools/verify-route-map-followup.cjs b/tools/verify-route-map-followup.cjs index 3f3ce8f..f59b0f7 100644 --- a/tools/verify-route-map-followup.cjs +++ b/tools/verify-route-map-followup.cjs @@ -59,8 +59,11 @@ const NEARBY = { sights: SIGHT_NAMES.map((n, i) => pt(n, i)), food: FOOD_NAMES.map((n, i) => pt(n, i + 5)), }; +// 不给出发地坐标:降级方位示意图会画出 142km 外的起点,把市区内 9 个目的地 +// 压成一坨、标签全叠在一起。这是既有的取景行为,与本次修复无关;验收截图专注 +// 「追加轮是否仍有多个点」,所以只给地名,让 SVG 按目的地跨度取景。 const ANALYSIS = { - origin: { name: '河池市金城江区', lat: 24.69562, lon: 108.08091 }, + origin: { name: '河池市金城江区' }, candidates: [{ id: 'd1', name: '柳州市', lat: LAT, lon: LON, score: 9.1 }], timeRange: { start: '2026-11-20', end: '2026-11-21', days: 2 }, dataNotes: [], @@ -155,6 +158,10 @@ let chrome = null; state.ai.amapKey = ''; if (!state.config) state.config = {}; state.config.features = { ...(state.config.features || {}), amapRoad: false }; + // #planExtra 默认 hidden(runPlan 成功才移除),不拆掉它 #routeMap 尺寸是 0×0, + // 截图会落到页面顶部。这里显式显示,保证截到真实的路线图。 + const pe = document.querySelector('#planExtra'); + if (pe) pe.classList.remove('hidden'); if (typeof gotoStep === 'function') gotoStep(3); window.__V1 = ${JSON.stringify(V1)}; window.__V2 = ${JSON.stringify(V2)}; @@ -213,8 +220,10 @@ let chrome = null; // 截图:路线图区域 const box = await evalJs(`(() => { const r = document.querySelector('#routeMap').getBoundingClientRect(); - return { x: r.x + scrollX, y: r.y + scrollY, width: Math.max(r.width, 640), height: Math.max(r.height, 380) }; + return { x: r.x + scrollX, y: r.y + scrollY, width: Math.max(r.width, 640), height: Math.max(r.height, 380), rectW: r.width, rectH: r.height }; })()`); + console.log('路线图区域 =', box); + if (!box.rectW || !box.rectH) throw new Error('#routeMap 尺寸为 0,可能仍在隐藏容器里'); const shot = await S('Page.captureScreenshot', { format: 'png', captureBeyondViewport: true, clip: { ...box, scale: 1 },