"""
双人对练评估提示词模板

功能：评估双人角色扮演对练的表现
"""

# ==================== 元数据 ====================

PROMPT_META = {
    "name": "duo_practice_analysis",
    "display_name": "双人对练评估",
    "description": "评估双人角色扮演对练中双方的表现",
    "module": "kaopeilian",
    "variables": [
        "scene_name", "scene_background", 
        "role_a_name", "role_b_name",
        "role_a_description", "role_b_description",
        "user_a_name", "user_b_name",
        "dialogue_history",
        "duration_seconds", "total_turns"
    ],
    "version": "1.0.0",
    "author": "kaopeilian-team",
}


# ==================== 系统提示词 ====================

SYSTEM_PROMPT = """你是一位资深的销售培训专家和沟通教练，擅长评估角色扮演对练的表现。
你需要观察双人对练的对话记录，分别对两位参与者的表现进行专业评估。

评估原则：
1. 客观公正，基于对话内容给出评价
2. 突出亮点，指出不足
3. 给出具体、可操作的改进建议
4. 考虑角色特点，评估角色代入度

输出格式要求：
- 必须返回有效的 JSON 格式
- 分数范围 0-100
- 建议具体可行"""


# ==================== 用户提示词模板 ====================

USER_PROMPT = """# 双人对练评估任务

## 场景信息
- **场景名称**：{scene_name}
- **场景背景**：{scene_background}

## 角色设置
### {role_a_name}
- **扮演者**：{user_a_name}
- **角色描述**：{role_a_description}

### {role_b_name}
- **扮演者**：{user_b_name}  
- **角色描述**：{role_b_description}

## 对练数据
- **对练时长**：{duration_seconds} 秒
- **总对话轮次**：{total_turns} 轮

## 对话记录
{dialogue_history}

---

## 评估要求

请按以下 JSON 格式输出评估结果：

```json
{{
  "overall_evaluation": {{
    "interaction_quality": 85,
    "scene_restoration": 80,
    "overall_comment": "整体评价..."
  }},
  "user_a_evaluation": {{
    "user_name": "{user_a_name}",
    "role_name": "{role_a_name}",
    "total_score": 85,
    "dimensions": {{
      "role_immersion": {{
        "score": 85,
        "comment": "角色代入度评价..."
      }},
      "communication": {{
        "score": 80,
        "comment": "沟通表达能力评价..."
      }},
      "professional_knowledge": {{
        "score": 75,
        "comment": "专业知识运用评价..."
      }},
      "response_quality": {{
        "score": 82,
        "comment": "回应质量评价..."
      }},
      "goal_achievement": {{
        "score": 78,
        "comment": "目标达成度评价..."
      }}
    }},
    "highlights": [
      "亮点1...",
      "亮点2..."
    ],
    "improvements": [
      {{
        "issue": "问题描述",
        "suggestion": "改进建议",
        "example": "示例话术"
      }}
    ]
  }},
  "user_b_evaluation": {{
    "user_name": "{user_b_name}",
    "role_name": "{role_b_name}",
    "total_score": 82,
    "dimensions": {{
      "role_immersion": {{
        "score": 80,
        "comment": "角色代入度评价..."
      }},
      "communication": {{
        "score": 85,
        "comment": "沟通表达能力评价..."
      }},
      "professional_knowledge": {{
        "score": 78,
        "comment": "专业知识运用评价..."
      }},
      "response_quality": {{
        "score": 80,
        "comment": "回应质量评价..."
      }},
      "goal_achievement": {{
        "score": 75,
        "comment": "目标达成度评价..."
      }}
    }},
    "highlights": [
      "亮点1...",
      "亮点2..."
    ],
    "improvements": [
      {{
        "issue": "问题描述",
        "suggestion": "改进建议",
        "example": "示例话术"
      }}
    ]
  }},
  "dialogue_annotations": [
    {{
      "sequence": 1,
      "speaker": "{role_a_name}",
      "tags": ["good_opening"],
      "comment": "开场白自然得体"
    }},
    {{
      "sequence": 3,
      "speaker": "{role_b_name}",
      "tags": ["needs_improvement"],
      "comment": "可以更主动表达需求"
    }}
  ]
}}
```

请基于对话内容，给出客观、专业的评估。"""


# ==================== 维度说明 ====================

DIMENSION_DESCRIPTIONS = {
    "role_immersion": "角色代入度：是否完全进入角色，语言风格、态度是否符合角色设定",
    "communication": "沟通表达：语言是否清晰、逻辑是否通顺、表达是否得体",
    "professional_knowledge": "专业知识：是否展现出角色应有的专业素养和知识储备",
    "response_quality": "回应质量：对对方发言的回应是否及时、恰当、有针对性",
    "goal_achievement": "目标达成：是否朝着对练目标推进，是否达成预期效果"
}


# ==================== 对话标签 ====================

DIALOGUE_TAGS = {
    # 正面标签
    "good_opening": "开场良好",
    "active_listening": "积极倾听",
    "empathy": "共情表达",
    "professional": "专业表现",
    "good_closing": "结束得体",
    "creative_response": "创意回应",
    "problem_solving": "问题解决",
    
    # 需改进标签
    "needs_improvement": "需要改进",
    "off_topic": "偏离主题",
    "too_passive": "过于被动",
    "lack_detail": "缺乏细节",
    "missed_opportunity": "错失机会",
    "unclear_expression": "表达不清"
}
