"""创建 prompt_templates 表并初始化默认数据"""
import os
import sys
from app import create_app
from models import db, PromptTemplate

# 设置输出编码为UTF-8
if sys.platform.startswith('win'):
    sys.stdout.reconfigure(encoding='utf-8')

def migrate_prompts():
    """创建表并初始化默认prompt模板"""
    app = create_app(os.getenv('FLASK_ENV', 'development'))

    with app.app_context():
        # 创建表
        print("正在创建 prompt_templates 表...")
        db.create_all()
        print("[OK] 表创建成功")

        # 检查是否已有数据
        existing_count = PromptTemplate.query.count()
        if existing_count > 0:
            print(f"[WARN] 表中已有 {existing_count} 条数据，跳过初始化")
            return

        # 初始化默认prompt模板
        print("正在初始化默认prompt模板...")

        # 1. 标签生成模板
        tags_prompt = PromptTemplate(
            key='tags',
            name='标签生成',
            description='根据网站名称和描述生成3-5个分类标签',
            system_prompt='你是一个专业的AI工具分类专家，擅长为各类AI产品生成准确的标签。',
            user_prompt_template='''你是一个AI工具导航网站的标签生成助手。根据以下产品信息，生成3-5个最合适的标签。

产品名称: {name}

产品描述: {description}
{existing_tags}

要求：
1. 标签应该准确描述产品的功能、类型或应用场景
2. 每个标签2-4个汉字
3. 标签要具体且有区分度
4. 如果是AI工具，可以标注具体的AI类型（如"GPT"、"图像生成"等）
5. 只返回标签，用逗号分隔，不要其他说明

示例输出格式：写作助手,营销,GPT,内容生成

请生成标签：''',
            is_active=True
        )

        # 2. 主要功能生成模板
        features_prompt = PromptTemplate(
            key='features',
            name='主要功能生成',
            description='根据网站名称和描述生成5-8个主要功能点',
            system_prompt='你是一个专业的AI产品文案专家，擅长提炼产品核心功能和价值点。',
            user_prompt_template='''你是一个AI工具导航网站的内容编辑助手。根据以下产品信息，生成详细的主要功能列表。

产品名称: {name}

产品描述: {description}
{url_info}

要求：
1. 生成5-8个主要功能点
2. 每个功能点要具体、清晰、有吸引力
3. 使用Markdown无序列表格式（以"- "开头）
4. 每个功能点一行，简洁有力（10-30字）
5. 突出产品的核心价值和特色功能
6. 使用专业但易懂的语言
7. 不要添加任何标题或额外说明，直接输出功能列表

示例输出格式：
- 智能文本生成，支持多种写作场景
- 实时语法检查和优化建议
- 多语言翻译，准确率高达95%
- 一键生成营销文案和广告语
- 团队协作，支持多人同时编辑

请生成功能列表：''',
            is_active=True
        )

        # 3. 详细介绍生成模板
        description_prompt = PromptTemplate(
            key='description',
            name='详细介绍生成',
            description='根据网站名称和简短描述生成200-400字的详细介绍',
            system_prompt='你是一个专业的AI产品文案专家，擅长撰写准确、客观、有吸引力的产品介绍。',
            user_prompt_template='''你是一个AI工具导航网站的内容编辑助手。根据以下产品信息，生成详细、专业且吸引人的产品介绍。

产品名称: {name}
{short_desc_info}
{url_info}

要求：
1. 生成200-400字的详细介绍
2. 包含以下内容：
   - 产品定位和核心价值（这是什么产品，解决什么问题）
   - 主要特点和优势（为什么选择这个产品）
   - 适用场景和目标用户（谁会用，用在哪里）
3. 使用Markdown格式，可以包含：
   - 段落分隔（空行）
   - 加粗重点内容（**文字**）
   - 列表（- 列表项）
4. 语言专业但易懂，突出产品价值
5. 不要添加标题，直接输出正文内容
6. 语气客观、事实性强，避免过度营销

示例输出格式：
ChatGPT是由OpenAI开发的**先进对话式AI助手**，基于GPT-4大语言模型构建。它能够理解和生成自然语言，为用户提供智能对话、内容创作、代码编写等多种服务。

**核心优势：**
- 强大的语言理解和生成能力
- 支持多轮对话，上下文连贯
- 覆盖编程、写作、翻译等多个领域

适用于内容创作者、程序员、学生等各类用户，可用于日常问答、文案撰写、学习辅导、编程助手等多种场景。

请生成详细介绍：''',
            is_active=True
        )

        # 添加到数据库
        db.session.add(tags_prompt)
        db.session.add(features_prompt)
        db.session.add(description_prompt)
        db.session.commit()

        print("[OK] 默认prompt模板初始化成功")
        print(f"  - 标签生成: {tags_prompt.id}")
        print(f"  - 主要功能生成: {features_prompt.id}")
        print(f"  - 详细介绍生成: {description_prompt.id}")

if __name__ == '__main__':
    migrate_prompts()
