import fs from "node:fs/promises";
import path from "node:path";
import { Document, HeadingLevel, ImageRun, Packer, Paragraph, TextRun } from "docx";

const root = process.cwd();
const outputDirectory = path.join(root, "tests", "fixtures");
const imageFile = path.join(root, "pic", "智引未来GEO_原始版本_渐变背景.png");
const marker = "ZHIYIN-PRODUCTION-IMPORT-20260811";

await fs.mkdir(outputDirectory, { recursive: true });
await fs.writeFile(path.join(outputDirectory, "import-test.md"), [
  "# 企业开始GEO诊断前，建议先准备这五类信息",
  "",
  "一次有效的GEO诊断，需要把品牌事实、用户问题和当前AI可见结果放在同一个框架中观察。准备资料不必复杂，但应尽量准确。",
  "",
  "![智引未来品牌示意图]({{TEST_IMAGE_URL}})",
  "",
  "## 一、品牌与业务简介",
  "",
  "用简洁语言说明企业是谁、服务谁、解决什么问题，以及当前最重要的产品与市场。",
  "",
  "## 二、核心品牌与品类关键词",
  "",
  "整理用户可能主动搜索的品牌词、品类词、场景词和问题词，作为诊断范围的初始输入。",
  "",
  "## 三、重点竞品与替代方案",
  "",
  "列出用户在比较阶段可能同时考虑的品牌或方案，便于观察AI回答中的推荐结构。",
  "",
  "## 四、现有官方内容",
  "",
  "准备官网、公众号、产品资料和权威报道等内容入口，确认品牌事实是否统一。",
  "",
  "## 五、当前最关心的问题",
  "",
  "说明品牌是完全没有被提及、描述不准确，还是在关键问题中被竞品压制。",
  "",
  "智引未来会基于真实可见结果建立诊断基线，让后续优化有明确方向和可追溯依据。",
  "",
  `测试标记：${marker}-MARKDOWN`,
  "",
].join("\n"));

const image = await fs.readFile(imageFile);
const heading = (text) => new Paragraph({ text, heading: HeadingLevel.HEADING_2 });
const body = (text) => new Paragraph({ children: [new TextRun(text)] });
const document = new Document({
  sections: [{
    children: [
      new Paragraph({ text: "企业如何开始一次AI搜索可见度诊断", heading: HeadingLevel.HEADING_1 }),
      body("AI搜索可见度诊断的目标，是确认品牌在哪些问题中出现、如何被描述，以及信息来自哪些引用来源。"),
      new Paragraph({ children: [new ImageRun({ data: image, transformation: { width: 320, height: 320 }, type: "png", altText: { title: "智引未来测试图片", description: "用于验证Word导入图片提取", name: "test.png" } })] }),
      heading("建立品牌事实基线"),
      body("先确认企业名称、业务定位、产品服务、联系方式和官方表达，避免不同内容入口相互矛盾。"),
      heading("定义用户问题集合"),
      body("围绕认知、比较、验证和决策阶段整理问题，观察品牌和竞品在回答中的真实位置。"),
      heading("记录引用与推荐语境"),
      body("不仅记录是否被提及，还要确认引用来源、描述准确性和推荐理由。"),
      heading("形成可持续监测范围"),
      body("平台和回答会持续变化，因此诊断基线应能进入后续监测、优化与复盘。"),
      body(`测试标记：${marker}-WORD`),
    ],
  }],
});
await fs.writeFile(path.join(outputDirectory, "import-test.docx"), await Packer.toBuffer(document));

console.log(`Created fixtures in ${outputDirectory}`);
