优化项目结构
This commit is contained in:
@@ -4,14 +4,33 @@
|
||||
|
||||
## 代码结构
|
||||
|
||||
- `routes.py`:集中定义所有 HTTP 路由。
|
||||
- `auth.py`:根据 `user_id` 识别当前用户,校验请求 `X-API-Key`。
|
||||
- `schemas.py`:集中定义 API 请求和响应结构。
|
||||
- `users.py`:基于 SQLite 的用户注册、登录与 API Key 持久化。
|
||||
- `domain.py`:定义会话、消息和工具调用的持久化模型。
|
||||
- `tools.py`:集中定义工具注册表、参数结构和工具函数。
|
||||
- `service.py`:处理对话、Agent 循环和业务规则。
|
||||
- `app.py`:创建 FastAPI 应用并管理生命周期。
|
||||
采用 `src/` 布局,所有业务代码收纳在 `src/chat_api/` 包内,按职责分模块/子包,根目录只保留 `main.py` 入口。
|
||||
|
||||
```
|
||||
src/chat_api/
|
||||
├── app.py 应用工厂 + 生命周期(组装各层)
|
||||
├── config.py Settings:从 .env 读取配置
|
||||
├── auth.py API Key 鉴权依赖项(CurrentUser)
|
||||
├── routes.py 所有 HTTP 路由
|
||||
├── domain/ 持久化模型(不依赖任何其它层)
|
||||
│ ├── messages.py UserMessage / AssistantMessage / ToolMessage / ToolCall
|
||||
│ └── session.py Session(含旧数据兼容校验器)
|
||||
├── schemas/ API 请求/响应模型(按接口分组)
|
||||
│ ├── session.py 创建会话 / 历史查询
|
||||
│ ├── message.py 发送消息 / TokenUsage
|
||||
│ ├── auth.py 注册 / 登录
|
||||
│ └── usage.py 用量查询
|
||||
├── storage/ 持久化实现
|
||||
│ ├── sessions.py JsonSessionStorage(会话 JSON)
|
||||
│ └── users.py UserStore(SQLite 用户 + bcrypt + AuthenticatedUser)
|
||||
├── service/
|
||||
│ └── chat.py ChatService:Agent 循环与业务规则
|
||||
└── tools/
|
||||
├── registry.py ToolRegistry / ToolSpec 注册表基础设施
|
||||
└── time_tools.py get_current_time 内置工具
|
||||
```
|
||||
|
||||
分层依赖方向:`domain` ← `schemas`/`storage` ← `service`/`auth` ← `routes` ← `app`。各子包 `__init__.py` 做重导出,跨层引用形如 `from chat_api.storage import JsonSessionStorage, UserStore`。
|
||||
|
||||
## 启动
|
||||
|
||||
@@ -19,7 +38,7 @@
|
||||
uv sync
|
||||
cp .env.example .env
|
||||
# 编辑 .env 并填写 DEEPSEEK_API_KEY
|
||||
uv run uvicorn main:app --reload
|
||||
uv run python main.py # 或:uv run uvicorn main:app --reload --reload-dir src
|
||||
```
|
||||
|
||||
服务默认运行在 `http://127.0.0.1:8000`,交互式 API 文档位于 `/docs`。
|
||||
|
||||
Reference in New Issue
Block a user