#!/usr/bin/env python
# -*- coding: UTF-8 -*-

"""
@Project: NarratoAI
@File   : plot_analysis.py
@Author : viccy同学
@Date   : 2025/1/7
@Description: 短剧剧情分析提示词
"""

from ..base import TextPrompt, PromptMetadata, ModelType, OutputFormat


class PlotAnalysisPrompt(TextPrompt):
    """短剧剧情分析提示词"""
    
    def __init__(self):
        metadata = PromptMetadata(
            name="plot_analysis",
            category="short_drama_narration",
            version="v1.0",
            description="分析短剧字幕内容，提供详细的剧情分析和分段解析",
            model_type=ModelType.TEXT,
            output_format=OutputFormat.TEXT,
            tags=["短剧", "剧情分析", "字幕解析", "分段分析"],
            parameters=["subtitle_content"]
        )
        super().__init__(metadata)
        
        self._system_prompt = "你是一位专业的剧本分析师和剧情概括助手。"
        
    def get_template(self) -> str:
        return """# 角色
你是一位专业的剧本分析师和剧情概括助手。

# 任务
我将为你提供一部短剧的完整字幕文本。请你基于这些字幕，完成以下任务：
1.  **整体剧情分析**：简要概括整个短剧的核心剧情脉络、主要冲突和结局（如果有的话）。
2.  **分段剧情解析与时间戳定位**：
    *   将整个短剧划分为若干个关键的剧情段落（例如：开端、发展、转折、高潮、结局，或根据具体情节自然划分）。
    *   段落数应该与字幕长度成正比。
    *   对于每一个剧情段落：
        *   **概括该段落的主要内容**：用简洁的语言描述这段剧情发生了什么。
        *   **标注对应的时间戳范围**：明确指出该剧情段落对应的开始字幕时间戳和结束字幕时间戳。请直接从字幕中提取时间信息。

# 输入格式
字幕内容通常包含时间戳和对话，例如：
```
00:00:05,000 --> 00:00:10,000
[角色A]: 你好吗？
00:00:10,500 --> 00:00:15,000
[角色B]: 我很好，谢谢。发生了一些有趣的事情。
... (更多字幕内容) ...
```
我将把实际字幕粘贴在下方。

# 输出格式要求
请按照以下格式清晰地呈现分析结果：

**一、整体剧情概括：**
[此处填写对整个短剧剧情的概括]

**二、分段剧情解析：**

**剧情段落 1：[段落主题/概括，例如：主角登场与背景介绍]**
*   **时间戳：** [开始时间戳] --> [结束时间戳]
*   **内容概要：** [对这段剧情的详细描述]

**剧情段落 2：[段落主题/概括，例如：第一个冲突出现]**
*   **时间戳：** [开始时间戳] --> [结束时间戳]
*   **内容概要：** [对这段剧情的详细描述]

... (根据实际剧情段落数量继续) ...

**剧情段落 N：[段落主题/概括，例如：结局与反思]**
*   **时间戳：** [开始时间戳] --> [结束时间戳]
*   **内容概要：** [对这段剧情的详细描述]

# 注意事项
*   请确保时间戳的准确性，直接引用字幕中的时间。
*   剧情段落的划分应合乎逻辑，能够反映剧情的起承转合。
*   语言表达应简洁、准确、客观。

# 限制
1. 严禁输出与分析结果无关的内容
2. 时间戳必须严格按照字幕中的实际时间

# 请处理以下字幕：
${subtitle_content}"""
