import re with open('D:/workAI/OpenCode/WorkSpace/backend-service/server.js', 'r', encoding='utf-8') as f: content = f.read() # Clean _renderFullHtml: replace entire debug-heavy section with clean version # Find from setViewport to dataUrl assignment pattern = r"( await page\.setViewport\(\{ width: 800, height: 500 \}\);).*?(const dataUrl = `data:image/png;base64,\$\{screenshot\.toString\('base64'\)\}`;)" replacement = r""" await page.setViewport({ width: 800, height: 500 }); await page.setContent(htmlContent, { waitUntil: 'networkidle0', timeout: 15000 }); const rendered = await page.waitForFunction( () => window._widgetRendered === true, { timeout: renderTimeout } ).catch(() => null); if (!rendered) { console.log(`[WIDGET] _renderFullHtml timeout after ${renderTimeout}ms, trying screenshot anyway`); await new Promise(r => setTimeout(r, 1000)); } const container = await page.$('#widget-container'); let screenshot; if (container) { screenshot = await container.screenshot({ type: 'png', omitBackground: false }); } else { screenshot = await page.screenshot({ type: 'png', fullPage: true, omitBackground: false }); } const dataUrl = `data:image/png;base64,${screenshot.toString('base64')}`;""" content = re.sub(pattern, replacement, content, flags=re.DOTALL) print("CLEANED: _renderFullHtml debug blocks") # Remove debugId from _renderFullHtml call content = content.replace( "return this._renderFullHtml(html, chartTitle, 8000, chartType, debugId);", "return this._renderFullHtml(html, chartTitle, 8000, chartType);" ) print("CLEANED: Removed debugId from _renderFullHtml call") # Remove debugId from method signature content = content.replace( "async _renderFullHtml(htmlContent, title, renderTimeout, chartType, debugId)", "async _renderFullHtml(htmlContent, title, renderTimeout, chartType)" ) print("CLEANED: Removed debugId from _renderFullHtml signature") # Remove redundant fs require in renderChatGPTChart (already partially cleaned) old_debug = """ const html = this.buildChatGPTChartHtml(chartType, series, data, xKey, nameKey, valueKey, formattedData, axes, chartTitle, chartDesc); // DEBUG: Write HTML to disk for inspection const fs = require('fs'); const debugId = `${chartType}-${Date.now()}`; fs.writeFileSync(`/tmp/chart-debug-${debugId}.html`, html); // DO NOT use renderWidgetPuppeteer""" if old_debug in content: content = content.replace(old_debug, " const html = this.buildChatGPTChartHtml(chartType, series, data, xKey, nameKey, valueKey, formattedData, axes, chartTitle, chartDesc);") print("CLEANED: Removed /tmp debug HTML write") else: print("INFO: /tmp debug write already cleaned or not found") with open('D:/workAI/OpenCode/WorkSpace/backend-service/server.js', 'w', encoding='utf-8') as f: f.write(content) print("Done.")