import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function main() {
  console.log('Expanding content...\n');

  // ===== 1. Add more prompts (to reach 30+) =====
  console.log('Seeding additional prompts...');
  
  const catIds: Record<string, number> = {};
  const cats = await prisma.category.findMany();
  for (const c of cats) {
    catIds[c.slug] = c.id;
  }

  const additionalPrompts = [
    // Creative Design
    { title: 'Logo 设计需求说明生成', content: '请帮我生成一份 AI  Logo 设计需求说明。\n\n品牌名称：[品牌名]\n行业：[行业]\n品牌调性：[现代/传统/科技/自然]\n偏好颜色：[颜色/风格]\n\n请输出：\n1. 3 个设计方向关键词\n2. 详细的设计需求描述（供设计师/Midjourney 使用）\n3. 参考风格建议\n4. 避免的设计风格', description: '用 AI 生成专业的 Logo 设计需求说明', categoryId: catIds['creative-design'], tags: '设计,Logo,品牌', model: '通用', status: 'PUBLISHED' as const },
    { title: '视频脚本生成器', content: '请为我生成一个短视频脚本。\n\n主题：[视频主题]\n目标受众：[描述受众]\n视频时长：[15秒/30秒/60秒]\n风格：[教育/搞笑/感人/促销]\n平台：[抖音/小红书/YouTube Shorts]\n\n脚本结构：\n1. 前 3 秒钩子（吸引注意力）\n2. 正文内容（3-5 个要点）\n3. 结尾 Call-to-Action\n4. 画面描述和字幕建议', description: 'AI 帮你写短视频脚本', categoryId: catIds['creative-design'], tags: '视频,脚本,短视频,抖音', model: 'GPT-5', status: 'PUBLISHED' as const },
    { title: '配色方案生成器', content: '请根据以下信息生成配色方案。\n\n品牌/项目：[名称]\n行业：[行业]\n基调：[活泼/专业/奢华/清新]\n主要受众：[用户群体]\n\n请生成：\n1. 主色（1 个 HEX 色值）\n2. 辅助色（2-3 个）\n3. 强调色（1-2 个）\n4. 背景色（1-2 个）\n5. 文字色（深色/浅色各 1 个）\n6. 这套方案的心理学依据', description: 'AI 帮你设计配色方案', categoryId: catIds['creative-design'], tags: '设计,配色,UI', model: '通用', status: 'PUBLISHED' as const },
    
    // Office Productivity
    { title: '会议议程生成器', content: '请帮我制定一个[会议主题]的议程。\n\n会议主题：[描述]\n参会人员：[角色列表]\n会议时长：[多少分钟]\n会议目标：[要达成的目标]\n\n请输出：\n1. 会议目标（清晰可衡量）\n2. 时间分配表（每个环节的时长和负责人）\n3. 前置准备工作\n4. 预期产出\n5. 跟进方式', description: 'AI 帮你制定高效的会议议程', categoryId: catIds['office-productivity'], tags: '会议,效率,办公', model: '通用', status: 'PUBLISHED' as const },
    { title: 'OKR 制定助手', content: '请帮我制定 OKR（目标和关键结果）。\n\n团队/个人：[名称]\n周期：[2026 Q3/Q4/年度]\n公司目标：[如是团队 OKR，需对齐的上级目标]\n\n请输出：\n1. 2-3 个 Objectives（目标，有挑战性但可达）\n2. 每个 O 下 3-4 个 Key Results（可量化）\n3. 每个 KR 的信心指数（5/10 → 10/10）\n4. KR 的衡量标准', description: 'AI 辅助制定 OKR', categoryId: catIds['office-productivity'], tags: 'OKR,目标管理,效率', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: '项目复盘模板', content: '请根据以下信息生成项目复盘报告模板。\n\n项目名称：[项目名]\n项目周期：[起止时间]\n团队成员：[角色列表]\n\n请按以下结构输出复盘框架：\n1. 项目概况（目标、范围、里程碑）\n2. 数据回顾（完成度、进度偏差、质量指标）\n3. 亮点（What went well）\n4. 改进点（What could be improved）\n5. 行动计划（具体负责人和截止时间）\n6. 经验沉淀（可复用的最佳实践）', description: 'AI 帮你做项目复盘', categoryId: catIds['office-productivity'], tags: '项目,复盘,管理', model: '通用', status: 'PUBLISHED' as const },
    
    // Programming
    { title: 'Python 脚本生成助手', content: '请帮我写一个 Python 脚本来完成以下任务。\n\n任务描述：[详细描述]\n输入格式：[CSV/JSON/...]\n输出格式：[CSV/JSON/打印/...]\n依赖要求：[允许/不允许使用哪些库]\n\n请生成：\n1. 完整的 Python 脚本\n2. 使用方法和参数说明\n3. 错误处理逻辑\n4. 测试用例示例', description: 'AI 帮你写 Python 工具脚本', categoryId: catIds['programming'], tags: 'Python,脚本,自动化', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: 'React 组件生成器', content: '请帮我生成一个 React 组件。\n\n组件描述：[组件功能]\nProps：[输入参数列表]\nUI 框架：[shadcn/ui / Material UI / Antd / 无]\n状态管理：[useState / zustand / redux / 无]\n\n请生成：\n1. 完整的组件代码（TypeScript）\n2. Props 类型定义\n3. 使用示例\n4. 边缘情况处理', description: 'AI 帮你生成 React 组件', categoryId: catIds['programming'], tags: 'React,组件,前端,TypeScript', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: 'Git 命令顾问', content: '请告诉我如何用 Git 完成以下操作。\n\n我需要：[描述你要用 Git 做什么，如：撤销上 3 次提交但保留工作区修改]\n\n请给出：\n1. 具体的 Git 命令序列\n2. 每个命令的作用\n3. 是否有风险（如：会丢失未提交的修改）\n4. 更安全的替代方案（如果有）', description: 'AI Git 命令顾问', categoryId: catIds['programming'], tags: 'Git,版本控制,开发', model: '通用', status: 'PUBLISHED' as const },
    
    // Prompt Engineering
    { title: 'Prompt 优化器', content: '请帮我优化以下提示词，使其效果更好。\n\n原始提示词：\n[粘贴你的原始提示词]\n\n使用场景：[描述你用它做什么]\n目前问题：[效果不好/结果不稳定/格式不对]\n\n请输出：\n1. 优化后的提示词\n2. 做了哪些改进（角色设定/格式约束/示例添加等）\n3. 为什么这样改有效\n4. 备选方案', description: 'AI 帮你优化提示词', categoryId: catIds['prompt-engineering'], tags: 'Prompt,提示词,优化', model: 'GPT-5', status: 'PUBLISHED' as const },
    { title: '结构化输出生成器', content: '请生成一个提示词模板，让 AI 总是按指定结构输出。\n\n任务：[AI 要完成的任务]\n输出字段：\n- [字段1]：[类型和说明]\n- [字段2]：[类型和说明]\n- [字段3]：[类型和说明]\n\n请生成：\n1. 完整的系统提示词（System Prompt）\n2. 输出格式定义（JSON Schema 或 Markdown 模板）\n3. 示例输出\n4. 处理 AI 不遵循格式的降级策略', description: 'AI 帮你设计结构化输出模板', categoryId: catIds['prompt-engineering'], tags: 'Prompt,结构化,JSON,输出', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: 'Prompt 链设计器', content: '请帮我设计一个多步骤的 Prompt 链（Chain of Prompts）。\n\n最终目标：[描述最终要完成的任务]\n\n请设计：\nStep 1: [分析/理解] - 提示词 + 预期输出\nStep 2: [规划/构思] - 提示词 + 预期输出\nStep 3: [生成/执行] - 提示词 + 预期输出\nStep 4: [优化/完善] - 提示词 + 预期输出\n\n每个 Step 包含：\n- 提示词内容\n- 输入来源（上一步的输出）\n- 输出格式\n- 质量检查方式', description: 'AI 设计多步骤 Prompt 工作流', categoryId: catIds['prompt-engineering'], tags: 'Prompt链,工作流,高级', model: 'GPT-5', status: 'PUBLISHED' as const },
    
    // AI Basics category
    { title: 'AI 工具选型指南', content: '请帮我选择最适合的 AI 工具。\n\n使用场景：[描述你要用 AI 做什么]\n预算：[每月预算]\n技术能力：[无/基础/中级/高级]\n主要需求：[功能列表]\n\n请推荐：\n1. 最佳选择（推荐工具 + 理由）\n2. 性价比选择（如果预算有限）\n3. 免费替代方案\n4. 多工具组合建议', description: 'AI 帮你选合适的 AI 工具', categoryId: catIds['ai-basics'], tags: 'AI,选型,工具推荐', model: '通用', status: 'PUBLISHED' as const },
    { title: 'AI 风险自查表', content: '请帮我评估使用 [AI 工具/模型] 的潜在风险。\n\n使用的 AI：\n用途：\n涉及数据类型：[公开/内部/机密/个人隐私]\n\n请评估以下风险：\n1. 数据隐私风险（数据是否会上传到第三方）\n2. 输出可靠性风险（幻觉倾向）\n3. 合规风险（是否符合行业法规）\n4. 供应商锁定风险\n5. 降低风险的措施建议', description: 'AI 使用风险评估', categoryId: catIds['ai-basics'], tags: 'AI,风险,安全,合规', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: 'AI 学习路径规划', content: '请帮我制定一个 AI 学习路径。\n\n当前水平：[零基础/有编程基础/有 ML 基础]\n学习目标：[想成为 AI 产品经理/AI 工程师/AI 应用开发者]\n可用时间：[每周多少小时]\n学习周期：[几个月]\n\n请输出：\n1. 按月划分的学习路线图\n2. 每月核心学习目标\n3. 推荐课程/资源（优先免费）\n4. 实践项目建议\n5. 常见误区提醒', description: 'AI 帮你规划 AI 学习路径', categoryId: catIds['ai-basics'], tags: 'AI,学习,路径,教程', model: '通用', status: 'PUBLISHED' as const },
    
    // Education
    { title: '教案生成助手', content: '请帮我生成一份教案。\n\n课程主题：[主题]\n适用年级/对象：[年级或人群]\n课时长度：[多少分钟]\n学生基础：[已有知识]\n\n教案结构：\n1. 教学目标（知识/技能/素养三个维度）\n2. 教学重难点\n3. 教学过程（导入→新授→练习→总结，含时间分配）\n4. 教学资源清单\n5. 评价方式\n6. 备选活动（如果时间有余）', description: 'AI 帮你写教案', categoryId: catIds['education'], tags: '教育,教案,教学', model: 'GPT-5', status: 'PUBLISHED' as const },
    { title: '考试题生成器', content: '请根据以下内容生成考试题目。\n\n知识点：[列出知识点]\n题型：[选择题/填空题/简答题/编程题]\n难度：[简单/中等/困难]\n题量：[多少道]\n对象：[学生/求职者/培训学员]\n\n要求：\n1. 每道题附参考答案\n2. 选择题需 4 个选项\n3. 标明每题考察的知识点\n4. 简单:中等:困难 = 3:5:2 的比例', description: 'AI 自动生成考试题目', categoryId: catIds['education'], tags: '教育,考试,题目', model: 'Claude 4', status: 'PUBLISHED' as const },
    { title: '论文摘要改写', content: '请帮我改写/润色以下论文摘要。\n\n原文摘要：\n[粘贴摘要]\n\n目标期刊：[期刊名称/风格]\n字数限制：[多少字]\n是否需要突出创新点：[是/否]\n\n请输出：\n1. 改写后的摘要\n2. 改写说明（改了什么、为什么改）\n3. 关键词建议（3-5 个）\n4. 投稿建议', description: 'AI 帮你改写论文摘要', categoryId: catIds['education'], tags: '论文,学术,写作', model: 'GPT-5', status: 'PUBLISHED' as const },
  ];

  for (const p of additionalPrompts) {
    await prisma.prompt.create({ data: p });
  }
  console.log(`  ✓ ${additionalPrompts.length} additional prompts created`);

  // ===== 2. Expand courses to match descriptions =====
  console.log('\nSeeding additional course chapters & lessons...');

  const [course1, course2, course3] = await prisma.course.findMany({ orderBy: { id: 'asc' } });

  // Course 1: Prompt Engineering - Add practice chapters
  const course1Ch1 = await prisma.chapter.findFirst({ where: { courseId: course1.id, sortOrder: 1 } });
  const course1Ch2 = await prisma.chapter.findFirst({ where: { courseId: course1.id, sortOrder: 2 } });

  if (course1Ch2) {
    // Add Chapter 3: 实战案例（写作场景）
    const ch3 = await prisma.chapter.create({
      data: { courseId: course1.id, title: '第三章：写作场景实战', sortOrder: 3, lessons: { create: [
        { title: 'AI 辅助博客文章写作', content: '# AI 辅助博客文章写作\n\n## 场景描述\n作为技术博主，每周需要产出 2-3 篇高质量文章。AI 可以帮助你完成选题、提纲、初稿和润色全流程。\n\n## Prompt 模板\n\n```\n你是一位资深技术博主，擅长用通俗易懂的语言解释复杂概念。\n\n请帮我写一篇关于[主题]的博客文章。\n\n目标读者：[描述读者背景]\n文章目的：[教学/观点/教程]\n字数：约 1500 字\n\n要求：\n1. 开头用一个引人入胜的问题或故事\n2. 正文分 3-4 个小节，每节有小标题\n3. 包含实际的代码/案例\n4. 结尾有总结和行动建议\n```\n\n## 实战技巧\n\n1. **选题阶段**：让 AI 帮你想 10 个选题，选最有共鸣的\n2. **提纲阶段**：先让 AI 出提纲，你调整后再写正文\n3. **润色阶段**：完成初稿后，让 AI 优化可读性和 SEO\n\n## 练习\n\n用上面的模板，让 AI 写一篇"2026 年 AI 编程工具对比"的博客文章。', sortOrder: 1, status: 'PUBLISHED' as const },
        { title: 'AI 辅助营销文案写作', content: '# AI 辅助营销文案写作\n\n## 场景描述\n营销文案的 ROI 直接取决于文案质量。AI 可以帮助你快速生成 A/B 测试文案、优化转化率。\n\n## 核心框架：AIDA\n\n- **Attention**（注意）：吸引眼球的标题\n- **Interest**（兴趣）：让读者产生兴趣\n- **Desire**（欲望）：激发购买欲望\n- **Action**（行动）：明确的 Call-to-Action\n\n## Prompt 模板\n\n```\n你是一位资深文案撰稿人，擅长 AIDA 框架。\n\n产品：[产品名]\n目标用户：[用户画像]\n核心卖点：[3 个卖点]\n\n请用 AIDA 框架写一篇推广文案：\n1. 3 个备选标题（制造好奇或紧迫感）\n2. 正文（200 字，引发情感共鸣）\n3. 行动号召（紧迫感 + 低门槛）\n```\n\n## 练习\n\n选择一款你熟悉的产品，用 AIDA 框架让 AI 生成 3 版不同风格的推广文案。', sortOrder: 2, status: 'PUBLISHED' as const },
      ]}},
    });
    console.log(`  ✓ Added chapter "写作场景实战" to "${course1.title}"`);

    // Chapter 4: 实战案例（编程与分析）
    const ch4 = await prisma.chapter.create({
      data: { courseId: course1.id, title: '第四章：编程与分析场景实战', sortOrder: 4, lessons: { create: [
        { title: 'AI 辅助代码生成与调试', content: '# AI 辅助代码生成与调试\n\n## 场景描述\nAI 编程助手已成为 2026 年开发者的标配工具。掌握与 AI 协作编程的技巧，可以提升 2-3 倍开发效率。\n\n## Prompt 模式\n\n### 模式 1：从零生成\n```\n请用 [语言] 写一个 [功能]。[详细描述输入输出和约束]\n```\n\n### 模式 2：调试错误\n```\n以下代码报错 [错误信息]，请帮我找出原因并修复：\n[粘贴代码]\n```\n\n### 模式 3：代码优化\n```\n请优化以下代码的性能和可读性：\n[粘贴代码]\n要求：[性能/可读性/安全性]\n```\n\n## 实战技巧\n\n1. **小步迭代**：每次只让 AI 写一个函数，而不是整个系统\n2. **明确约束**：说明语言版本、框架、性能要求\n3. **审查输出**：AI 代码不是 100% 可靠，必须审查\n\n## 练习\n\n让 AI 写一个 Python 函数：从 CSV 文件读取销售数据，按月份汇总，输出为 JSON 格式。', sortOrder: 1, status: 'PUBLISHED' as const },
        { title: 'AI 辅助数据分析报告', content: '# AI 辅助数据分析报告\n\n## 场景描述\n数据分析是 AI 最擅长的领域之一。用自然语言就能完成过去需要半天才能完成的数据分析工作。\n\n## 工作流\n\n1. **数据导入**：上传 CSV/Excel 或粘贴数据\n2. **AI 探索**："分析这份数据的总体趋势"、"找出异常值"\n3. **深度分析**："按地区分组计算增长率"\n4. **可视化**："生成趋势图，按季度分面"\n5. **报告生成**："写一份数据分析报告，包含关键发现和建议"\n\n## Prompt 模板\n\n```\n你是一位数据分析师。以下是 [数据集描述] 的数据：\n\n[粘贴数据或描述]\n\n请帮我：\n1. 数据概览（行数、列数、缺失值、基本统计量）\n2. 发现 3 个最重要的洞察\n3. 给出 2 个可执行的建议\n4. 如果要可视化，推荐哪种图表类型\n```\n\n## 练习\n\n找一份你手头的数据集，让 AI 生成分析报告。注意对比 AI 的分析结果和你的直觉判断是否一致。', sortOrder: 2, status: 'PUBLISHED' as const },
      ]}},
    });
    console.log(`  ✓ Added chapter "编程与分析场景实战" to "${course1.title}"`);
  }

  // Course 2: AI Office - Add missing meeting & email chapters  
  const course2Ch2 = await prisma.chapter.findFirst({ where: { courseId: course2.id, sortOrder: 2 } });

  if (course2Ch2) {
    // Add Chapter 3: 会议管理
    const ch3 = await prisma.chapter.create({
      data: { courseId: course2.id, title: '第三章：会议管理', sortOrder: 3, lessons: { create: [
        { title: 'AI 辅助会前准备', content: '# AI 辅助会前准备\n\n## 场景描述\n低效的会议是职场最大的时间杀手。AI 可以帮助你做好会前准备，让会议时间减半、效率翻倍。\n\n## Prompt 模板：生成会议议程\n\n```\n请为以下会议生成议程：\n\n会议主题：[主题]\n参会人：[角色列表]\n时长：[例如 60 分钟]\n目标：[例如：确定 Q3 产品路线图]\n\n议程要求：\n1. 每个环节标注时间（含 buffer）\n2. 标注每个环节的负责人\n3. 标注前置准备工作\n4. 标注期望产出\n```\n\n## 其他会前任务\n\n1. **背景资料总结**：让 AI 总结上次会议的纪要\n2. **参会人角色分析**：让 AI 分析各参会人的立场和关注点\n3. **问题预演**：让 AI 模拟可能的质疑和提问\n\n## 练习\n\n用模板为你的下一次团队周会生成议程，然后对比实际会议效果。', sortOrder: 1, status: 'PUBLISHED' as const },
        { title: 'AI 会中记录与会后跟进', content: '# AI 会中记录与会后跟进\n\n## 场景描述\n好的会议记录是团队执行力的保障。AI 可以将会议录音转文字、提取行动项、自动生成会议纪要。\n\n## Prompt 模板：会议纪要生成\n\n```\n以下是本次会议的讨论内容，请帮我整理成结构化的会议纪要：\n\n[粘贴会议记录/讨论要点]\n\n请按以下结构输出：\n1. 会议信息（时间、参会人、主题）\n2. 关键讨论（每个议题的讨论摘要）\n3. 达成的共识（各方一致同意的结论）\n4. 行动项（负责人、截止时间、交付物）\n5. 下次会议计划（时间、议题）\n```\n\n## 跟进技巧\n\n1. 会后 24 小时内发出纪要\n2. 行动项标注优先级（P0/P1/P2）\n3. 下次会议前回顾上次行动项的完成情况\n\n## 练习\n\n在你下次会议后，用 AI 生成会议纪要，看是否比你手写的更完整。', sortOrder: 2, status: 'PUBLISHED' as const },
      ]}},
    });
    console.log(`  ✓ Added chapter "会议管理" to "${course2.title}"`);

    // Chapter 4: 邮件处理
    const ch4 = await prisma.chapter.create({
      data: { courseId: course2.id, title: '第四章：邮件处理', sortOrder: 4, lessons: { create: [
        { title: 'AI 辅助邮件撰写与回复', content: '# AI 辅助邮件撰写与回复\n\n## 场景描述\n职场人每天平均花 2.5 小时处理邮件。AI 可以帮助你将邮件处理时间缩短 50% 以上。\n\n## Prompt 模板\n\n### 写邮件\n```\n请帮我写一封 [目的] 邮件。\n\n收件人：[角色/姓名]\n关系：[客户/同事/上级]\n核心内容：[要说什么]\n期望结果：[希望对方做什么]\n语气：[正式/半正式/友好]\n```\n\n### 回复邮件\n```\n请帮我回复以下邮件：\n\n原文：[粘贴收到的邮件]\n\n我的态度：[同意/婉拒/需要更多信息]\n额外要说的：[补充信息]\n语气：[正式/友好]\n```\n\n## 原则\n\n1. **明确主题行**：让收件人一眼知道邮件核心\n2. **结论先行**：第一句就说重点\n3. **行动项清晰**：明确告诉对方下一步\n4. **简洁**：能用 5 句说清不用 10 句', sortOrder: 1, status: 'PUBLISHED' as const },
        { title: 'AI 辅助邮件批量处理与分类', content: '# AI 辅助邮件批量处理与分类\n\n## 场景描述\n每天收到几十封邮件，哪些需要立即回复？哪些可以稍后处理？AI 可以帮助你分类和排序。\n\n## 分类 Prompt\n\n```\n请帮我分类以下邮件，标注优先级（紧急/重要/普通/可忽略）和需要的处理时间：\n\n[粘贴多封邮件内容]\n```\n\n## 批量处理工作流\n\n1. **批量分类**：让 AI 按紧急度排序所有未读邮件\n2. **自动起草**：让 AI 为每个分类生成回复草稿\n3. **人工审核**：只需要审核关键邮件，其余直接发送\n\n## 邮件自动化技巧\n\n1. 创建常用回复模板（请假、感谢、确认等）\n2. 让 AI 学习你的回复风格，保持一致性\n3. 用 AI 检查邮件语气，避免误发敏感内容\n\n## 练习\n\n整理你本周收到的 10 封邮件，让 AI 分类并排序，看是否符合你的判断。', sortOrder: 2, status: 'PUBLISHED' as const },
      ]}},
    });
    console.log(`  ✓ Added chapter "邮件处理" to "${course2.title}"`);
  }

  // Course 3: AI Programming - Add advanced practice chapter
  const course3Ch1 = await prisma.chapter.findFirst({ where: { courseId: course3.id, sortOrder: 1 } });

  if (course3Ch1) {
    const ch2 = await prisma.chapter.create({
      data: { courseId: course3.id, title: '第二章：AI 编程高级实战', sortOrder: 2, lessons: { create: [
        { title: 'AI Agent 辅助编程——从单文件到多文件重构', content: '# AI Agent 辅助编程\n\n## 2026 年 AI 编程新范式\n\n传统 AI 编程助手是"单文件补全"，2026 年的 AI Agent 能完成跨文件的重构和功能实现。\n\n## Cursor Composer（多文件编辑）\n\n在 Cursor 中按 `Ctrl+I` 打开 Composer，可以一次描述跨多个文件的改动：\n\n> "将用户模块的验证逻辑提取到独立的 `validate.ts` 文件中，更新所有引用"\n\nComposer 会自动：\n1. 创建新文件\n2. 修改引用文件\n3. 保持类型安全\n\n## Agent Mode 使用技巧\n\n1. **任务拆分**：把一个功能拆成 3-5 个原子任务\n2. **逐步确认**：每完成一个任务检查结果\n3. **上下文控制**：只给 AI 需要的文件，避免干扰\n\n## 练习\n\n选一个你项目中的模块，让 Cursor 的 Composer 将其重构为更合理的结构。', sortOrder: 1, status: 'PUBLISHED' as const },
        { title: 'AI 测试生成与代码审查', content: '# AI 测试生成与代码审查\n\n## AI 生成单元测试\n\n这是提升代码质量的杀手级应用。AI 可以自动生成的测试覆盖边界情况和异常流程。\n\n## Prompt 模板\n\n```\n请为以下函数生成全面的单元测试：\n\n[粘贴函数代码]\n\n要求：\n1. 测试正常路径\n2. 测试边界条件（空值、极限值）\n3. 测试错误处理\n4. 使用 [Jest/Vitest] 框架\n5. 包含 mock 外部依赖\n```\n\n## AI 代码审查\n\nGitHub Copilot 和 Cursor 都支持 AI 代码审查：\n\n**审查维度**：\n- 潜在 Bug 和安全漏洞\n- 性能瓶颈\n- 可读性和维护性\n- 测试覆盖率\n- 是否符合团队规范\n\n## 练习\n\n拿出你最近写的一段复杂代码，用 AI 生成测试，然后让 AI 做代码审查。对比 AI 发现的你和 AI 自己错过的点。', sortOrder: 2, status: 'PUBLISHED' as const },
      ]}},
    });
    console.log(`  ✓ Added chapter "AI 编程高级实战" to "${course3.title}"`);
  }

  // ===== 3. Summary =====
  const [promptCount, lessonCount, chapterCount] = await Promise.all([
    prisma.prompt.count(),
    prisma.lesson.count(),
    prisma.chapter.count(),
  ]);
  console.log(`\n✓ Expansion complete!`);
  console.log(`  Total prompts: ${promptCount}`);
  console.log(`  Total chapters: ${chapterCount}`);
  console.log(`  Total lessons: ${lessonCount}`);
}

main().catch((e) => { console.error(e); process.exit(1); });
