fastapi-proxy-test / memory-bank /activeContext.md
tanbushi's picture
Sun Jun 8 15:02:12 CST 2025
b7791c2
|
raw
history blame
2.25 kB

当前背景 (Active Context)

当前工作重点

实现基于数据库的 API Key 管理和代理规则配置,并集成到核心代理转发逻辑中。

最近的变更

  • 讨论并设计了使用 SQLite 数据库存储 Key 类别、API Key 实例和代理规则的 Schema (三表设计: key_categories, api_keys, proxy_rules)。
  • 安装了 SQLAlchemy 和 aiosqlite 库。
  • 创建了 app/database.py 文件,定义了 Key 类别 (KeyCategory) 和 API Key 实例 (APIKey) 的 SQLAlchemy 模型。
  • 使用 sqlite3 命令成功创建了数据库表 (api_proxy.db)。
  • 创建了 app/crud.py 文件,实现了 Key 类别和 API Key 实例的基本 CRUD (创建、读取、更新、删除) 操作函数。
  • 创建了 tests/test_crud.py 文件,为 CRUD 函数编写了单元测试。
  • 成功运行了所有单元测试 (14 个通过)。
  • 解决了 Python 包导入 (ModuleNotFoundError, NameError) 和文件创建 (__init__.py 未成功创建) 等环境和代码问题。

下一步计划

  • 实现 Key 管理相关的 API 路由 (/api/keys/...),使用 app/crud.py 中的函数与数据库交互。
  • 完善 Key 选择逻辑 (app/crud.py 中的 select_key_from_pool),实现 Key 池的轮询或其他策略。
  • 设计并实现代理规则的数据库存储和加载逻辑(proxy_rules 表的 CRUD 和查询)。
  • 将 Key 选择和代理规则查找逻辑集成到核心代理转发路由 (app/routers/proxy.py) 中。
  • 实现前端/静态文件路由 (app/routers/frontend.py) (如果需要)。
  • 编写其他功能的单元测试和集成测试。

重要的模式和偏好

  • 优先使用异步编程。
  • 保持代码简洁和模块化。
  • 遵循 FastAPI 的最佳实践。
  • 使用数据库进行配置管理以提高灵活性。
  • 通过单元测试验证核心逻辑。

学习和项目洞察

  • 确认了使用 SQLite 和 SQLAlchemy 进行数据库操作的可行性。
  • 解决了在当前环境中进行 Python 包导入和文件创建时遇到的具体问题。
  • 明确了 Key 的应用方式应与代理规则关联,而非 Key 本身。
  • 数据库三表设计 (key_categories, api_keys, proxy_rules) 能够更好地组织 Key 和规则信息。