hongcheng-gen-hongcheng.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env node
  2. // ==============================================================================
  3. // 洪城到家 · VOC 深度洞察报告生成入口
  4. // ==============================================================================
  5. const fs = require('fs');
  6. const path = require('path');
  7. const { buildHTML } = require('./hongcheng-render.js');
  8. const HA = require('./hongcheng-analyze.js');
  9. const ROOT = path.resolve(__dirname, '..', '..');
  10. const OUT_DIR = path.join(ROOT, 'reports');
  11. const OUT_FILE = path.join(OUT_DIR, 'hongcheng-voc-insight-report.html');
  12. if (!fs.existsSync(OUT_DIR)) fs.mkdirSync(OUT_DIR, { recursive: true });
  13. const data = HA.loadMerged();
  14. const meta = HA.getMeta(data);
  15. console.log('╔═══════════════════════════════════════════════════════════╗');
  16. console.log('║ 洪城到家 · VOC 深度洞察报告生成 ║');
  17. console.log('╚═══════════════════════════════════════════════════════════╝');
  18. console.log(` 采集阶段: ${meta.stage}`);
  19. console.log(` VOC数据: ${meta.comments} 条`);
  20. console.log(` 输出: ${path.relative(ROOT, OUT_FILE)}`);
  21. const start = Date.now();
  22. const html = buildHTML({
  23. product: '洪城到家',
  24. collectedAt: meta.collectedAt || new Date().toISOString().slice(0, 10),
  25. });
  26. fs.writeFileSync(OUT_FILE, html, 'utf8');
  27. const elapsedMs = Date.now() - start;
  28. const sizeKB = (fs.statSync(OUT_FILE).size / 1024).toFixed(1);
  29. const SLIDES = (html.match(/<section class="report-section"/g) || []).length;
  30. console.log(` ✅ 生成完成`);
  31. console.log(` 路径: ${path.relative(ROOT, OUT_FILE)}`);
  32. console.log(` 大小: ${sizeKB} KB`);
  33. console.log(` 耗时: ${elapsedMs} ms`);
  34. console.log(` VOC: ${meta.comments} 条 / ${Object.keys(meta.platforms).length} 平台`);