#!/usr/bin/env node // ============================================================================== // 洪城到家 · VOC 深度洞察报告生成入口 // ============================================================================== const fs = require('fs'); const path = require('path'); const { buildHTML } = require('./hongcheng-render.js'); const HA = require('./hongcheng-analyze.js'); const ROOT = path.resolve(__dirname, '..', '..'); const OUT_DIR = path.join(ROOT, 'reports'); const OUT_FILE = path.join(OUT_DIR, 'hongcheng-voc-insight-report.html'); if (!fs.existsSync(OUT_DIR)) fs.mkdirSync(OUT_DIR, { recursive: true }); const data = HA.loadMerged(); const meta = HA.getMeta(data); console.log('╔═══════════════════════════════════════════════════════════╗'); console.log('║ 洪城到家 · VOC 深度洞察报告生成 ║'); console.log('╚═══════════════════════════════════════════════════════════╝'); console.log(` 采集阶段: ${meta.stage}`); console.log(` VOC数据: ${meta.comments} 条`); console.log(` 输出: ${path.relative(ROOT, OUT_FILE)}`); const start = Date.now(); const html = buildHTML({ product: '洪城到家', collectedAt: meta.collectedAt || new Date().toISOString().slice(0, 10), }); fs.writeFileSync(OUT_FILE, html, 'utf8'); const elapsedMs = Date.now() - start; const sizeKB = (fs.statSync(OUT_FILE).size / 1024).toFixed(1); const SLIDES = (html.match(/