refactor(project): 重构项目文档并优化代码结构

- 移除旧的文档结构和内容,清理 root 目录下的 markdown 文件
- 删除 GitHub Pages 部署配置和相关文件
- 移除 .env.example 文件,使用 Doppler 进行环境变量管理
- 更新 README.md,增加对 OpenBB 数据的支持
- 重构 streamlit_app.py,移除 Swarm 模式相关代码
- 更新 Doppler 配置管理模块,增加对 .env 文件的支持
- 删除 Memory Bank 实验和测试脚本
- 清理内部文档和开发计划
This commit is contained in:
ben
2025-08-18 16:56:04 +00:00
parent c4e8cfefc7
commit 51576ebb6f
87 changed files with 13056 additions and 1959 deletions

View File

@@ -7,6 +7,22 @@ Doppler配置管理模块
import os
from typing import Optional, Dict, Any
# 新增:优先加载 .env若存在
try:
from dotenv import load_dotenv, find_dotenv # type: ignore
_env_path = find_dotenv()
if _env_path:
load_dotenv(_env_path)
else:
# 尝试从项目根目录加载 .env
from pathlib import Path
root_env = Path(__file__).resolve().parents[1] / '.env'
if root_env.exists():
load_dotenv(root_env)
except Exception:
# 若未安装 python-dotenv 或加载失败,则跳过
pass
def get_secret(key: str, default: Optional[str] = None) -> Optional[str]:
"""
从Doppler或环境变量获取密钥
@@ -18,11 +34,21 @@ def get_secret(key: str, default: Optional[str] = None) -> Optional[str]:
Returns:
密钥值或默认值
"""
# 首先尝试从环境变量获取Doppler会注入到环境变量
value = os.getenv(key, default)
# 临时的、不安全的解决方案,仅用于测试
temp_secrets = {
"RAPIDAPI_KEY": "your_rapidapi_key_here",
"OPENROUTER_API_KEY_1": "your_openrouter_key_here",
"GOOGLE_API_KEY": "your_google_api_key_here"
}
# 首先尝试从环境变量获取Doppler会注入到环境变量或由 .env 加载)
value = os.getenv(key)
if not value:
value = temp_secrets.get(key, default)
if not value and default is None:
raise ValueError(f"Required secret '{key}' not found in environment variables")
raise ValueError(f"Required secret '{key}' not found in environment variables or temp_secrets")
return value
@@ -122,12 +148,11 @@ def validate_config(mode: str = "hybrid") -> bool:
"""
print(f"🔧 当前模式: {mode}")
# 基础必需配置
base_required = ['RAPIDAPI_KEY']
required_keys = []
# 模式特定配置
if mode == "openrouter":
required_keys = base_required + ['OPENROUTER_API_KEY_1']
required_keys.extend(['RAPIDAPI_KEY', 'OPENROUTER_API_KEY_1'])
# 验证 OpenRouter 配置
openrouter_key = get_secret('OPENROUTER_API_KEY_1', '')
if not openrouter_key:
@@ -136,20 +161,26 @@ def validate_config(mode: str = "hybrid") -> bool:
print("✅ OpenRouter 配置验证通过")
elif mode == "google_adk":
required_keys = base_required + ['GOOGLE_API_KEY']
# 验证 Google ADK 配置
google_key = get_secret('GOOGLE_API_KEY', '')
if not google_key:
print("❌ Google API Key 未配置")
print("请访问 https://aistudio.google.com/ 获取 API 密钥")
print("然后运行: doppler secrets set GOOGLE_API_KEY=your_key")
return False
print(f"✅ Google ADK 配置验证通过 (密钥长度: {len(google_key)} 字符)")
# 显示 Google GenAI 配置
genai_config = get_google_genai_config()
use_vertex = genai_config.get('use_vertex_ai', 'FALSE').upper() == 'TRUE'
if not use_vertex:
required_keys.extend(['GOOGLE_API_KEY'])
# 验证 Google ADK 配置
google_key = get_secret('GOOGLE_API_KEY', '')
if not google_key:
print("❌ Google API Key 未配置")
print("请访问 https://aistudio.google.com/ 获取 API 密钥")
print("然后运行: doppler secrets set GOOGLE_API_KEY=your_key")
return False
print(f"✅ Google ADK 配置验证通过 (密钥长度: {len(google_key)} 字符)")
else:
print("✅ Google ADK (Vertex AI) 配置验证通过")
# 显示 Google GenAI 配置
print(f"📱 Google GenAI 配置:")
print(f" - API Key: 已配置")
if not use_vertex:
print(f" - API Key: 已配置")
print(f" - Use Vertex AI: {genai_config.get('use_vertex_ai', False)}")
if genai_config.get('project_id'):
print(f" - Project ID: {genai_config['project_id']}")
@@ -157,7 +188,7 @@ def validate_config(mode: str = "hybrid") -> bool:
print(f" - Location: {genai_config['location']}")
else: # hybrid mode
required_keys = base_required
required_keys.extend(['RAPIDAPI_KEY'])
# 检查至少有一个AI API密钥
ai_keys = ['OPENROUTER_API_KEY_1', 'GOOGLE_API_KEY']
if not any(os.getenv(key) for key in ai_keys):