"""
Prompt templates for code generation using Claude
"""


class CodeGenerationTemplates:
    """
    Collection of prompt templates for code generation tasks

    These templates are used to guide Claude in generating high-quality,
    PEP8-compliant Python code for strategy modifications.
    """

    GENERATE_CODE = """你是一个专业的 Python 量化交易开发工程师。请根据以下要求修改代码：

文件路径：{file_path}

当前代码：
```python
{current_code}
```

修改要求：
{modification_description}

修改类型：{modification_type}
目标组件：{target_component}
当前值：{current_value}
新值：{new_value}

请生成修改后的完整代码，要求：
1. 符合 PEP8 规范
2. 添加详细的 docstring 注释
3. 保持与其他模块的接口一致性
4. 确保代码可读性和可维护性
5. 添加必要的类型注解
6. 保持现有的导入语句和整体结构
7. 只修改必要的部分，不要改动无关代码

只返回修改后的完整代码，不要包含其他说明。使用 ```python 代码块格式。
"""

    ADD_DOCSTRING = """为以下代码添加详细的 docstring 注释：

```python
{code}
```

要求：
1. 使用 Google 风格的 docstring
2. 包含函数/类的功能描述
3. 列出所有参数及其类型和说明
4. 说明返回值类型和含义
5. 列出可能抛出的异常
6. 添加使用示例（如适用）
7. 保持代码的其他部分不变

只返回添加注释后的完整代码，使用 ```python 代码块格式。
"""

    VALIDATE_INTERFACE = """检查以下代码修改是否保持了接口一致性：

原始代码：
```python
{original_code}
```

修改后代码：
```python
{modified_code}
```

依赖此接口的文件：
{dependent_files}

请检查：
1. 函数签名是否改变（参数名称、类型、顺序、默认值）
2. 返回值类型是否改变
3. 是否有破坏性变更（删除公共方法、改变类名等）
4. 是否需要更新依赖文件

以 JSON 格式返回检查结果，格式如下：
{{
    "is_compatible": true/false,
    "breaking_changes": ["变更描述1", "变更描述2"],
    "signature_changes": [
        {{
            "component": "函数/类名",
            "change_type": "parameter_added/parameter_removed/return_type_changed/etc",
            "description": "详细描述"
        }}
    ],
    "affected_files": ["需要更新的文件1", "需要更新的文件2"],
    "recommendations": ["建议1", "建议2"]
}}
"""

    REFACTOR_CODE = """请重构以下代码以提高质量和可维护性：

```python
{code}
```

重构目标：
{refactor_goals}

要求：
1. 保持功能不变
2. 提高代码可读性
3. 减少代码重复
4. 优化性能（如适用）
5. 改进错误处理
6. 添加必要的注释
7. 符合 PEP8 规范

只返回重构后的完整代码，使用 ```python 代码块格式。
"""

    FIX_CODE_ISSUES = """请修复以下代码中的问题：

```python
{code}
```

已识别的问题：
{issues}

要求：
1. 修复所有列出的问题
2. 保持代码功能不变
3. 确保修复后代码符合最佳实践
4. 添加必要的错误处理
5. 保持代码风格一致

只返回修复后的完整代码，使用 ```python 代码块格式。
"""

    OPTIMIZE_PERFORMANCE = """请优化以下代码的性能：

```python
{code}
```

性能问题：
{performance_issues}

优化目标：
{optimization_goals}

要求：
1. 保持功能不变
2. 提高执行效率
3. 减少内存使用（如适用）
4. 优化算法复杂度
5. 添加性能相关的注释
6. 保持代码可读性

只返回优化后的完整代码，使用 ```python 代码块格式。
"""

    ADD_ERROR_HANDLING = """为以下代码添加完善的错误处理：

```python
{code}
```

需要处理的场景：
{error_scenarios}

要求：
1. 添加适当的 try-except 块
2. 定义或使用合适的异常类
3. 添加错误日志记录
4. 提供有意义的错误消息
5. 确保资源正确清理
6. 保持代码逻辑清晰

只返回添加错误处理后的完整代码，使用 ```python 代码块格式。
"""

    GENERATE_TESTS = """为以下代码生成单元测试：

```python
{code}
```

测试要求：
1. 使用 pytest 框架
2. 测试所有公共方法/函数
3. 包含正常情况和边界情况
4. 包含错误情况测试
5. 使用清晰的测试名称
6. 添加必要的 fixtures
7. 达到高代码覆盖率

只返回测试代码，使用 ```python 代码块格式。
"""

    IMPLEMENT_FEATURE = """请实现以下功能：

功能描述：
{feature_description}

技术要求：
{technical_requirements}

接口规范：
{interface_specification}

参考代码（如有）：
```python
{reference_code}
```

要求：
1. 完整实现所有功能
2. 符合接口规范
3. 添加完整的 docstring
4. 包含错误处理
5. 符合 PEP8 规范
6. 添加类型注解
7. 代码清晰易懂

只返回实现代码，使用 ```python 代码块格式。
"""

    EXPLAIN_CODE = """请详细解释以下代码的功能和实现：

```python
{code}
```

请提供：
1. 代码的整体功能描述
2. 主要组件和它们的作用
3. 关键算法或逻辑的解释
4. 数据流和控制流
5. 潜在的问题或改进点
6. 使用示例

以清晰的中文返回解释。
"""


class StrategyModificationTemplates:
    """
    Specialized templates for trading strategy modifications

    These templates are specifically designed for modifying quantitative
    trading strategies in the Openfund system.
    """

    MODIFY_STRATEGY_PARAMETERS = """请修改以下交易策略的参数：

策略代码：
```python
{strategy_code}
```

当前参数：
{current_parameters}

新参数：
{new_parameters}

修改原因：
{modification_reason}

要求：
1. 只修改指定的参数
2. 保持策略逻辑不变
3. 更新相关的注释和文档
4. 确保参数值在合理范围内
5. 添加参数验证（如需要）

只返回修改后的完整策略代码，使用 ```python 代码块格式。
"""

    MODIFY_ENTRY_LOGIC = """请修改以下交易策略的入场逻辑：

策略代码：
```python
{strategy_code}
```

当前入场逻辑：
{current_entry_logic}

新入场逻辑：
{new_entry_logic}

修改原因：
{modification_reason}

要求：
1. 实现新的入场逻辑
2. 保持与 Openfund-maker 接口的兼容性
3. 保留其他策略组件不变
4. 添加详细注释说明逻辑
5. 确保信号生成的正确性

只返回修改后的完整策略代码，使用 ```python 代码块格式。
"""

    MODIFY_EXIT_LOGIC = """请修改以下交易策略的出场逻辑：

策略代码：
```python
{strategy_code}
```

当前出场逻辑：
{current_exit_logic}

新出场逻辑：
{new_exit_logic}

修改原因：
{modification_reason}

要求：
1. 实现新的出场逻辑
2. 保持与 Openfund-taker 接口的兼容性
3. 正确处理止盈止损
4. 保留其他策略组件不变
5. 添加详细注释说明逻辑

只返回修改后的完整策略代码，使用 ```python 代码块格式。
"""

    ADD_RISK_MANAGEMENT = """为以下交易策略添加风险管理功能：

策略代码：
```python
{strategy_code}
```

风险管理要求：
{risk_requirements}

要求：
1. 添加仓位管理逻辑
2. 实现最大回撤控制
3. 添加单笔交易风险限制
4. 实现总体风险监控
5. 保持策略核心逻辑不变
6. 添加详细的风险管理注释

只返回添加风险管理后的完整策略代码，使用 ```python 代码块格式。
"""

    OPTIMIZE_STRATEGY = """请优化以下交易策略：

策略代码：
```python
{strategy_code}
```

当前表现：
{current_performance}

优化目标：
{optimization_goals}

已识别的问题：
{identified_issues}

要求：
1. 针对性地解决已识别的问题
2. 提高策略的收益风险比
3. 保持策略的稳定性
4. 避免过度拟合
5. 添加优化说明注释

只返回优化后的完整策略代码，使用 ```python 代码块格式。
"""
