# Pull Request 模板

## 📋 PR 类型
请标记此 PR 的类型：

- [ ] 🌟 新功能 (feature)
- [ ] 🐛 Bug 修复 (bugfix)
- [ ] 🧹 代码重构 (refactor)
- [ ] 📝 文档更新 (documentation)
- [ ] 🎨 样式优化 (style)
- [ ] ⚡ 性能优化 (performance)
- [ ] 🔧 配置/构建 (config/build)
- [ ] 🧪 测试相关 (test)
- [ ] 🤖 LLM 适配器集成 (llm-adapter)

## 📖 PR 描述

### 变更摘要
<!-- 请简要描述此 PR 的主要变更 -->

### 变更详情
<!-- 请详细描述具体的改动内容 -->

### 相关 Issue
<!-- 如果此 PR 解决了某个 Issue，请链接：Fixes #issue_number -->

## 🤖 LLM 适配器集成检查清单

> **注意**: 如果此 PR 涉及 LLM 适配器集成，请完成以下检查清单。如果不涉及，可以跳过此部分。

### ✅ 代码实现检查

- [ ] **适配器类实现**
  - [ ] 创建了继承自 `OpenAICompatibleBase` 的适配器类
  - [ ] 正确设置了 `provider_name`、`api_key_env_var`、`base_url`
  - [ ] 实现了必要的模型配置

- [ ] **注册和集成**
  - [ ] 在 `OPENAI_COMPATIBLE_PROVIDERS` 字典中注册了提供商
  - [ ] 在 `__init__.py` 中添加了适配器导出
  - [ ] 在前端 `sidebar.py` 中添加了提供商选项

- [ ] **环境变量配置**
  - [ ] 在 `.env.example` 中添加了 API Key 示例
  - [ ] 环境变量命名遵循 `{PROVIDER}_API_KEY` 格式
  - [ ] 提供了正确的 `base_url` 配置

### ✅ 测试和验证

- [ ] **基础功能测试**
  - [ ] API 连接测试通过
  - [ ] 简单文本生成功能正常
  - [ ] 错误处理机制有效

- [ ] **工具调用测试**
  - [ ] Function calling 功能正常工作
  - [ ] 工具参数解析正确
  - [ ] 复杂工具调用场景稳定

- [ ] **集成测试**
  - [ ] 前端界面显示正常
  - [ ] 模型选择器工作正确
  - [ ] TradingGraph 集成成功
  - [ ] 端到端分析流程正常

- [ ] **性能和稳定性测试**
  - [ ] 响应时间合理（< 30秒）
  - [ ] 连续运行测试通过（> 30分钟）
  - [ ] 内存使用稳定
  - [ ] 并发请求处理正确

### ✅ 文档和配置

- [ ] **代码文档**
  - [ ] 适配器类包含完整的 docstring
  - [ ] 关键方法有适当的注释
  - [ ] 参数说明清晰

- [ ] **用户文档**
  - [ ] 更新了相关的用户指南（如果需要）
  - [ ] 提供了配置示例
  - [ ] 包含故障排除信息（如果适用）

### 📝 测试报告

如果这是 LLM 适配器 PR，请提供以下信息：

**提供商信息**:
- 提供商名称: 
- 官方网站: 
- API 文档: 
- 支持的模型: 

**测试结果**:
- 基础连接: ✅/❌
- 工具调用: ✅/❌ 
- Web 集成: ✅/❌
- 端到端: ✅/❌

**性能指标**:
- 平均响应时间: ___ 秒
- 工具调用成功率: ___%
- 内存使用: ___ MB

**已知问题**:
<!-- 列出任何已知的问题或限制 -->

## 🧪 测试说明

### 如何测试此 PR
<!-- 请提供测试此 PR 的步骤 -->

1. 
2. 
3. 

### 测试环境
- [ ] 本地开发环境
- [ ] Docker 环境
- [ ] 生产环境

### 破坏性变更
- [ ] 此 PR 包含破坏性变更
- [ ] 此 PR 不包含破坏性变更

如果包含破坏性变更，请说明：
<!-- 描述破坏性变更的影响和迁移指南 -->

## 📊 影响范围

请标记此 PR 影响的组件：

- [ ] 核心交易逻辑
- [ ] LLM 适配器
- [ ] Web 界面
- [ ] 数据获取
- [ ] 配置系统
- [ ] 测试框架
- [ ] 文档
- [ ] 部署配置

## 🔗 相关链接

- 相关文档: 
- 参考资料: 
- 相关 PR: 

## 📷 截图/演示

<!-- 如果涉及 UI 变更，请提供截图或演示视频 -->

## ✅ 检查清单

请确认以下项目：

### 代码质量
- [ ] 代码遵循项目的编码规范
- [ ] 没有不必要的调试代码或注释
- [ ] 变量和函数命名清晰明确
- [ ] 代码复用性良好，避免重复代码

### 测试覆盖
- [ ] 新功能有相应的测试用例
- [ ] 所有测试通过
- [ ] 手动测试已完成
- [ ] 边界情况已考虑

### 文档更新
- [ ] README 已更新（如果需要）
- [ ] API 文档已更新（如果需要）
- [ ] 变更日志已更新（如果需要）
- [ ] 配置文档已更新（如果需要）

### 安全考虑
- [ ] 没有硬编码的密钥或敏感信息
- [ ] 输入验证充分
- [ ] 错误处理不泄露敏感信息
- [ ] 第三方依赖安全可靠

### 性能考虑
- [ ] 新功能不会显著影响性能
- [ ] 内存使用合理
- [ ] 网络请求优化
- [ ] 数据库查询优化（如果适用）

## 🏷️ 标签建议

请为此 PR 建议适当的标签：

- [ ] `enhancement` - 新功能或改进
- [ ] `bug` - Bug 修复
- [ ] `documentation` - 文档相关
- [ ] `refactor` - 代码重构
- [ ] `performance` - 性能优化
- [ ] `security` - 安全相关
- [ ] `llm-adapter` - LLM 适配器
- [ ] `ui/ux` - 用户界面/体验
- [ ] `config` - 配置相关
- [ ] `testing` - 测试相关

## 👥 审查者

建议的审查者：
<!-- @mention 建议的审查者 -->

## 📝 额外说明

<!-- 任何其他需要审查者知道的信息 -->

---

**感谢您的贡献！** 🎉

请确保您已经阅读并遵循了我们的 [贡献指南](../docs/LLM_INTEGRATION_GUIDE.md)。如果您有任何问题，请随时在 PR 中提问或联系维护者。