Fix API compatibility and add user/role/permission and asset import/export

This commit is contained in:
2026-01-25 23:36:23 +08:00
commit 501d11e14e
371 changed files with 68853 additions and 0 deletions

284
backend_new/README.md Normal file
View File

@@ -0,0 +1,284 @@
# 资产管理系统 - 后端API
基于 FastAPI + SQLAlchemy + PostgreSQL 的企业级资产管理系统后端API
## 技术栈
- **框架**: FastAPI 0.104+
- **ORM**: SQLAlchemy 2.0+ (异步模式)
- **数据库**: PostgreSQL 14+
- **缓存**: Redis
- **认证**: JWT (python-jose)
- **密码加密**: bcrypt
- **数据验证**: Pydantic v2
- **数据库迁移**: Alembic
- **测试**: pytest
- **ASGI服务器**: Uvicorn
## 项目结构
```
asset_management_backend/
├── app/
│ ├── api/ # API路由
│ │ └── v1/
│ │ ├── auth.py # 认证相关API
│ │ └── __init__.py
│ ├── core/ # 核心模块
│ │ ├── config.py # 配置管理
│ │ ├── security.py # 安全相关
│ │ ├── deps.py # 依赖注入
│ │ ├── exceptions.py # 自定义异常
│ │ └── response.py # 统一响应
│ ├── crud/ # 数据库CRUD操作
│ │ ├── user.py # 用户CRUD
│ │ └── ...
│ ├── db/ # 数据库相关
│ │ ├── base.py # 模型基类
│ │ └── session.py # 会话管理
│ ├── models/ # SQLAlchemy模型
│ │ ├── user.py # 用户模型
│ │ └── ...
│ ├── schemas/ # Pydantic Schema
│ │ ├── user.py # 用户Schema
│ │ └── ...
│ ├── services/ # 业务逻辑层
│ │ ├── auth_service.py # 认证服务
│ │ └── ...
│ └── utils/ # 工具函数
│ └── ...
├── alembic/ # 数据库迁移
│ └── versions/
├── tests/ # 测试
├── logs/ # 日志文件
├── uploads/ # 上传文件
├── .env.example # 环境变量示例
├── requirements.txt # 依赖包
├── run.py # 开发服务器启动脚本
└── README.md # 项目说明
```
## 快速开始
### 1. 环境准备
确保已安装:
- Python 3.10+
- PostgreSQL 14+
- Redis
### 2. 安装依赖
```bash
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 安装依赖包
pip install -r requirements.txt
```
### 3. 配置环境变量
```bash
# 复制环境变量示例文件
cp .env.example .env
# 编辑 .env 文件,配置数据库等信息
```
### 4. 初始化数据库
```bash
# 创建数据库
createdb asset_management
# 运行数据库迁移
alembic upgrade head
# 或在开发环境直接初始化(会自动创建表)
# 修改 app/main.py 中的 lifespan 函数,取消注释 init_db()
```
### 5. 启动服务
```bash
# 开发模式(支持热重载)
python run.py
# 或使用 uvicorn
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
### 6. 访问API文档
启动成功后,访问以下地址:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- OpenAPI JSON: http://localhost:8000/openapi.json
## API端点
### 认证模块
- `POST /api/v1/auth/login` - 用户登录
- `POST /api/v1/auth/refresh` - 刷新令牌
- `POST /api/v1/auth/logout` - 用户登出
- `PUT /api/v1/auth/change-password` - 修改密码
- `GET /api/v1/auth/captcha` - 获取验证码
### 用户管理
- `GET /api/v1/users` - 用户列表
- `POST /api/v1/users` - 创建用户
- `GET /api/v1/users/{user_id}` - 获取用户详情
- `PUT /api/v1/users/{user_id}` - 更新用户
- `DELETE /api/v1/users/{user_id}` - 删除用户
- `POST /api/v1/users/{user_id}/reset-password` - 重置密码
- `GET /api/v1/users/me` - 获取当前用户信息
### 角色权限
- `GET /api/v1/roles` - 角色列表
- `POST /api/v1/roles` - 创建角色
- `GET /api/v1/roles/{role_id}` - 获取角色详情
- `PUT /api/v1/roles/{role_id}` - 更新角色
- `DELETE /api/v1/roles/{role_id}` - 删除角色
- `GET /api/v1/permissions/tree` - 权限树列表
更多API请查看Swagger文档。
## 开发规范
请参考 `development_standards_guide.md` 文件。
### 代码风格
- 遵循 PEP 8 规范
- 使用 Black 进行代码格式化
- 使用 isort 管理导入
- 使用 flake8 进行代码检查
- 使用 mypy 进行类型检查
### 提交规范
遵循 Conventional Commits 规范:
```
feat: 新功能
fix: Bug修复
docs: 文档更新
style: 代码格式
refactor: 重构
perf: 性能优化
test: 测试
chore: 构建/工具
```
示例:
```bash
git commit -m "feat(auth): 实现用户登录功能"
git commit -m "fix(asset): 修复资产状态转换问题"
```
## 测试
```bash
# 运行所有测试
pytest
# 运行特定测试文件
pytest tests/api/test_auth.py
# 生成覆盖率报告
pytest --cov=app --cov-report=html
# 查看覆盖率报告
open htmlcov/index.html
```
## 数据库迁移
```bash
# 创建新的迁移
alembic revision --autogenerate -m "描述信息"
# 执行迁移
alembic upgrade head
# 回滚迁移
alembic downgrade -1
# 查看迁移历史
alembic history
# 查看当前版本
alembic current
```
## 生产部署
### 使用 Docker
```bash
# 构建镜像
docker build -t asset-management-backend .
# 运行容器
docker run -d \
--name asset-backend \
-p 8000:8000 \
--env-file .env \
asset-management-backend
```
### 使用 Gunicorn + Uvicorn
```bash
pip install gunicorn
gunicorn app.main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000 \
--access-logfile - \
--error-logfile -
```
## 常见问题
### 数据库连接失败
检查 `DATABASE_URL` 是否正确配置确保PostgreSQL服务正在运行。
### Redis连接失败
检查 `REDIS_URL` 是否正确配置确保Redis服务正在运行。
### Token验证失败
确保 `SECRET_KEY` 配置正确并检查Token是否过期。
## 贡献指南
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 许可证
本项目采用 MIT 许可证。
## 联系方式
- 项目负责人: 老王
- 创建时间: 2025-01-24
- 版本: v1.0.0