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", "主页大图素材-1.png");
const marker = "QIYOUXUE-PRODUCTION-IMPORT-20260812";

await fs.mkdir(outputDirectory, { recursive: true });
await fs.writeFile(path.join(outputDirectory, "import-test.md"), [
  "# 开始学情沟通前，建议家长准备这四类信息",
  "",
  "一次有效的学情沟通，需要把年级、教材进度、近期试卷和阶段目标放在一起观察。资料不必复杂，但应尽量准确。",
  "",
  "![启优学在线一对一课堂示意图]({{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: "家长如何准备一次学情沟通", heading: HeadingLevel.HEADING_1 }),
      body("AI搜索可见度诊断的目标，是确认品牌在哪些问题中出现、如何被描述，以及信息来自哪些引用来源。"),
      new Paragraph({ children: [new ImageRun({ data: image, transformation: { width: 320, height: 240 }, 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}`);
