nex_docus/backend/README.md

159 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# NEX Docus Backend
NEX Docus 后端服务 - 基于 FastAPI 构建的高性能文档管理平台。
## 技术栈
- **框架**: FastAPI 0.109+
- **数据库**: MySQL 5.7.5+ (通过 SQLAlchemy 2.0 异步 ORM)
- **缓存**: Redis
- **认证**: JWT (python-jose)
- **密码加密**: bcrypt (passlib)
- **文件处理**: aiofiles (异步文件 I/O)
## 项目结构
```
backend/
├── app/
│ ├── api/
│ │ └── v1/ # API 路由v1 版本)
│ │ ├── auth.py # 用户认证
│ │ ├── projects.py # 项目管理
│ │ └── files.py # 文件系统
│ ├── core/ # 核心配置
│ │ ├── config.py # 应用配置
│ │ ├── database.py # 数据库连接
│ │ ├── security.py # 安全工具
│ │ └── deps.py # 依赖注入
│ ├── models/ # 数据库模型
│ ├── schemas/ # Pydantic Schemas
│ ├── services/ # 业务逻辑
│ ├── middleware/ # 中间件
│ └── utils/ # 工具函数
├── scripts/ # 脚本文件
│ ├── init_database.sql # 数据库初始化 SQL
│ └── init_db.py # 数据库初始化 Python 脚本
├── tests/ # 测试文件
├── main.py # 应用入口
├── requirements.txt # 依赖包
└── .env # 环境配置
```
## 快速开始
### 1. 安装依赖
```bash
# 激活虚拟环境
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
```
### 2. 配置环境变量
编辑 `.env` 文件,配置数据库连接等信息。
### 3. 初始化数据库
```bash
# 方式一:使用 SQL 脚本(推荐)
mysql -h10.100.51.51 -uroot -pUnis@321 < scripts/init_database.sql
# 方式二:使用 Python 脚本(仅创建表结构)
python scripts/init_db.py
```
### 4. 启动服务
```bash
# 开发模式(自动重载)
python main.py
# 或使用 uvicorn
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
服务启动后,访问:
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
## API 接口
### 认证相关 (`/api/v1/auth`)
- `POST /register` - 用户注册
- `POST /login` - 用户登录
- `GET /me` - 获取当前用户信息
- `POST /change-password` - 修改密码
### 项目管理 (`/api/v1/projects`)
- `GET /` - 获取我的项目列表
- `POST /` - 创建新项目
- `GET /{project_id}` - 获取项目详情
- `PUT /{project_id}` - 更新项目信息
- `DELETE /{project_id}` - 删除项目(归档)
- `GET /{project_id}/members` - 获取项目成员
- `POST /{project_id}/members` - 添加项目成员
### 文件系统 (`/api/v1/files`)
- `GET /{project_id}/tree` - 获取项目目录树
- `GET /{project_id}/file?path=xxx` - 获取文件内容
- `POST /{project_id}/file` - 保存文件内容
- `POST /{project_id}/file/operate` - 文件操作(重命名/删除/创建)
- `POST /{project_id}/upload` - 上传文件(图片/附件)
- `GET /{project_id}/assets/{subfolder}/{filename}` - 获取资源文件
## 默认账号
初始化数据库后,会创建默认管理员账号:
- 用户名: `admin`
- 密码: `admin123`
**⚠️ 生产环境请立即修改默认密码!**
## 开发指南
### 代码风格
遵循 PEP 8 代码规范。
### 添加新的 API 端点
1.`app/api/v1/` 下创建新的路由文件
2.`app/api/v1/__init__.py` 中注册路由
3.`app/schemas/` 中定义 Pydantic Schema
4.`app/services/` 中实现业务逻辑
### 数据库迁移
使用 Alembic 进行数据库迁移:
```bash
# 生成迁移脚本
alembic revision --autogenerate -m "描述"
# 执行迁移
alembic upgrade head
```
## 安全说明
1. **路径安全**: 所有文件系统操作都经过路径安全检查,防止路径穿越攻击
2. **认证鉴权**: 使用 JWT Token 认证,所有需要登录的接口都受保护
3. **权限控制**: 实现了项目级别的权限控制owner/admin/editor/viewer
4. **密码加密**: 使用 bcrypt 加密存储密码
5. **SQL 注入**: 使用 SQLAlchemy ORM自动防止 SQL 注入
## 许可证
Copyright © 2023 Mula.liu