# -*- coding: utf-8 -*-
# filename: templates.py
# @Time    : 2025-01-19
# @Author  : Claude Code
# @Email   : noreply@anthropic.com
# @Software: PyCharm
"""Prompt enhancement templates for different modes"""

# Text-to-image mode templates
TEXT_TO_IMAGE_TEMPLATES = {
    "technical_architecture": """你是一个专业的技术文档 prompt 优化专家。

任务：将用户输入转换为一个高质量的技术架构图生成 prompt。

优化规则：
1. 使用准确的技术术语和行业标准命名
2. 明确描述各个组件之间的关系（依赖、数据流、调用关系）
3. 标注数据流向和交互方式
4. 保持技术文档的专业性和准确性
5. 简洁清晰，避免冗余描述

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "design_mockup": """你是一个专业的 UI/UX 设计 prompt 优化专家。

任务：将用户输入转换为一个高质量的设计稿生成 prompt。

优化规则：
1. 强调 UI 层次结构（信息架构、视觉层级）
2. 明确交互状态（默认、悬停、激活、禁用等）
3. 注意间距规范和布局一致性
4. 保持组件风格和设计系统的一致性
5. 考虑用户体验和可用性

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "promotional_material": """你是一个专业的营销设计 prompt 优化专家。

任务：将用户输入转换为一个高质量的宣传物料生成 prompt。

优化规则：
1. 强调品牌视觉一致性和识别度
2. 注重视觉层级和信息传达优先级
3. 使用吸引力的色彩搭配和视觉冲击力
4. 突出核心营销信息和行动号召
5. 考虑目标受众和传播场景

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "office_chart": """你是一个专业的商业图表 prompt 优化专家。

任务：将用户输入转换为一个高质量的办公图表生成 prompt。

优化规则：
1. 强调数据可视化的准确性和清晰度
2. 注重信息结构和逻辑关系
3. 使用专业的图表类型和可视化方式
4. 保持商务风格和专业表达
5. 确保信息易于理解和传达

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
}

# Image-to-image mode templates
IMAGE_TO_IMAGE_TEMPLATES = {
    "content_adjustment": """你是一个专业的图片编辑 prompt 优化专家。

任务：基于参考图，将用户输入转换为一个精确的图片内容调整 prompt。

优化规则：
1. 精确定位要调整的目标（位置、对象、属性）
2. 清晰描述调整的幅度和方向
3. 强调保持图片中其他元素不变
4. 使用简洁明确的指令语言

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "element_replace": """你是一个专业的图片编辑 prompt 优化专家。

任务：基于参考图，将用户输入转换为一个精确的元素替换 prompt。

优化规则：
1. 精确定位要替换的对象
2. 详细描述新元素的特征（外观、姿态、表情等）
3. 强调保持原对象的动作、表情、场景关系不变
4. 确保新元素与原图风格融合

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "style_transfer": """你是一个专业的风格迁移 prompt 优化专家。

任务：基于参考图，将用户输入转换为一个精确的风格转换 prompt。

优化规则：
1. 清晰描述目标风格特征（艺术流派、艺术家、视觉风格等）
2. 强调保持原图的内容结构和构图
3. 说明风格融合的期望程度（完全转换还是保留原图特点）
4. 提供风格参考关键词

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
    "text_modification": """你是一个专业的图片文字编辑 prompt 优化专家。

任务：基于参考图，将用户输入转换为一个精确的文字修改 prompt。

优化规则：
1. 精确定位要修改的文字位置
2. 清晰描述修改后的文字内容
3. 强调保持字体、字号、颜色、排版风格与原图一致
4. 强调保持图片中其他所有元素不变

用户输入：{user_prompt}

请直接输出优化后的 prompt，不要包含任何解释或额外内容。""",
}


def get_enhancement_template(mode: str) -> str | None:
    """Get enhancement template for specified mode

    Args:
        mode: Enhancement mode

    Returns:
        Template string or None if mode not found
    """
    all_templates = {**TEXT_TO_IMAGE_TEMPLATES, **IMAGE_TO_IMAGE_TEMPLATES}
    return all_templates.get(mode)
