Files
Memoh/packages/api/README.md
T
2026-01-10 21:55:39 +08:00

192 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# @memohome/api
API 服务器,基于 Elysia 构建。
## API 模块
### 认证模块 (`/auth`)
用户认证和授权管理。
- `POST /auth/login` - 用户登录
- `GET /auth/verify` - 验证 token
- `GET /auth/me` - 获取当前用户信息
详细文档:[AUTH_README.md](./AUTH_README.md)
### 用户管理模块 (`/user`) 🔒 仅管理员
完整的用户 CRUD 操作接口。
- `GET /user` - 获取所有用户
- `GET /user/:id` - 获取单个用户
- `POST /user` - 创建用户
- `PUT /user/:id` - 更新用户信息
- `DELETE /user/:id` - 删除用户
- `PATCH /user/:id/password` - 更新用户密码
详细文档:[USER_MANAGEMENT.md](./USER_MANAGEMENT.md)
### 模型管理模块 (`/model`)
AI 模型配置管理。
- `GET /model` - 获取所有模型
- `GET /model/:id` - 获取单个模型
- `POST /model` - 创建模型配置
- `PUT /model/:id` - 更新模型配置
- `DELETE /model/:id` - 删除模型配置
- `GET /model/chat/default` - 获取默认聊天模型
- `GET /model/summary/default` - 获取默认摘要模型
- `GET /model/embedding/default` - 获取默认嵌入模型
### 设置模块 (`/settings`) 🔒 需要认证
用户偏好设置管理(自动使用当前登录用户)。
- `GET /settings` - 获取当前用户设置
- `PUT /settings` - 更新当前用户设置(支持模型配置、Agent 参数等)
详细文档:[SETTINGS_API.md](./SETTINGS_API.md)
### 记忆模块 (`/memory`) 🔒 需要认证
用户记忆和对话历史管理(自动使用当前登录用户)。
- `POST /memory` - 添加记忆
- `GET /memory/search` - 搜索记忆
- `GET /memory/message` - 获取消息历史(分页)
- `GET /memory/message/filter` - 按日期范围过滤消息
详细文档:[API_CHANGES.md](./API_CHANGES.md)
### Agent 模块 (`/agent`) 🔒 需要认证
AI Agent 智能对话接口,支持流式响应和记忆管理。
- `POST /agent/stream` - 流式对话(Server-Sent Events
详细文档:[AGENT_API.md](./AGENT_API.md)
## 快速开始
### 安装依赖
```bash
pnpm install
```
### 配置环境变量
复制并编辑环境变量文件:
```bash
cp ../../.env.example ../../.env
```
必需配置:
- `DATABASE_URL` - PostgreSQL 连接字符串
- `ROOT_USER` - Root 超级管理员用户名
- `ROOT_USER_PASSWORD` - Root 超级管理员密码
- `JWT_SECRET` - JWT 签名密钥
### 启动开发服务器
```bash
pnpm run dev
```
服务器将在 `http://localhost:7002` 启动。
### 构建生产版本
```bash
pnpm run build
pnpm run start
```
## 认证和权限
### Bearer Token 认证
所有受保护的 API 端点需要在请求头中携带 JWT token:
```
Authorization: Bearer <your_jwt_token>
```
### 权限级别
- **公开接口**:无需认证
- **用户接口**:需要有效的 JWT token
- **管理员接口** 🔒:需要管理员角色的 JWT token
## 中间件
### `authMiddleware`
强制认证中间件,要求请求必须包含有效的 Bearer token。
```typescript
import { authMiddleware } from './middlewares'
const protectedModule = new Elysia()
.use(authMiddleware)
.get('/protected', ({ user }) => {
return { message: `Hello ${user.username}!` }
})
```
### `adminMiddleware` 🔒
管理员权限中间件,要求用户角色为 `admin`
```typescript
import { adminMiddleware } from './middlewares'
const adminModule = new Elysia()
.use(adminMiddleware)
.get('/admin-only', ({ user }) => {
return { message: 'Admin access granted' }
})
```
### `optionalAuthMiddleware`
可选认证中间件,如果有 token 则验证,没有则 `user``null`
```typescript
import { optionalAuthMiddleware } from './middlewares'
const publicModule = new Elysia()
.use(optionalAuthMiddleware)
.get('/public', ({ user }) => {
if (user) {
return { message: `Welcome back, ${user.username}!` }
}
return { message: 'Welcome, guest!' }
})
```
## 运行测试
```bash
pnpm test
```
## 技术栈
- **Elysia** - 高性能 Web 框架
- **@elysiajs/jwt** - JWT 认证插件
- **@elysiajs/bearer** - Bearer token 提取插件
- **@elysiajs/cors** - CORS 支持
- **Drizzle ORM** - 数据库 ORM
- **Zod** - 数据验证
- **Bun** - JavaScript 运行时
## 相关文档
- [认证系统](./AUTH_README.md)
- [用户管理](./USER_MANAGEMENT.md)
- [项目设置指南](../../SETUP.md)
- [数据库 Schema](../db/USERS_SCHEMA.md)