Fix API compatibility and add user/role/permission and asset import/export
This commit is contained in:
252
backend_new/TRANSFER_RECOVERY_README.md
Normal file
252
backend_new/TRANSFER_RECOVERY_README.md
Normal file
@@ -0,0 +1,252 @@
|
||||
# 资产调拨和回收功能 - 快速开始
|
||||
|
||||
## 概述
|
||||
|
||||
本次交付完成了资产调拨管理和资产回收管理两大功能模块,包含10个核心文件,20个API端点,完整实现了资产在企业内部的调拨流转和回收处置业务流程。
|
||||
|
||||
## 快速导航
|
||||
|
||||
- 📖 [完整API文档](./TRANSFER_RECOVERY_API.md)
|
||||
- 📋 [交付报告](./TRANSFER_RECOVERY_DELIVERY_REPORT.md)
|
||||
- 🚀 [快速测试](#快速测试)
|
||||
|
||||
## 文件清单
|
||||
|
||||
### 调拨管理(5个文件)
|
||||
```
|
||||
app/models/transfer.py # 调拨单数据模型
|
||||
app/schemas/transfer.py # 调拨单Schema定义
|
||||
app/crud/transfer.py # 调拨单CRUD操作
|
||||
app/services/transfer_service.py # 调拨单业务服务
|
||||
app/api/v1/transfers.py # 调拨单API路由
|
||||
```
|
||||
|
||||
### 回收管理(5个文件)
|
||||
```
|
||||
app/models/recovery.py # 回收单数据模型
|
||||
app/schemas/recovery.py # 回收单Schema定义
|
||||
app/crud/recovery.py # 回收单CRUD操作
|
||||
app/services/recovery_service.py # 回收单业务服务
|
||||
app/api/v1/recoveries.py # 回收单API路由
|
||||
```
|
||||
|
||||
### 配置和迁移(3个文件)
|
||||
```
|
||||
app/models/__init__.py # 更新:导出新模型
|
||||
app/api/v1/__init__.py # 更新:注册新路由
|
||||
alembic/versions/20250124_add_transfer_and_recovery_tables.py # 数据库迁移
|
||||
```
|
||||
|
||||
## API端点
|
||||
|
||||
### 调拨管理(10个)
|
||||
```
|
||||
POST /api/v1/transfers # 创建调拨单
|
||||
GET /api/v1/transfers # 查询调拨单列表
|
||||
GET /api/v1/transfers/{id} # 获取调拨单详情
|
||||
PUT /api/v1/transfers/{id} # 更新调拨单
|
||||
DELETE /api/v1/transfers/{id} # 删除调拨单
|
||||
POST /api/v1/transfers/{id}/approve # 审批
|
||||
POST /api/v1/transfers/{id}/start # 开始调拨
|
||||
POST /api/v1/transfers/{id}/complete # 完成调拨
|
||||
POST /api/v1/transfers/{id}/cancel # 取消
|
||||
GET /api/v1/transfers/statistics # 统计
|
||||
```
|
||||
|
||||
### 回收管理(10个)
|
||||
```
|
||||
POST /api/v1/recoveries # 创建回收单
|
||||
GET /api/v1/recoveries # 查询回收单列表
|
||||
GET /api/v1/recoveries/{id} # 获取回收单详情
|
||||
PUT /api/v1/recoveries/{id} # 更新回收单
|
||||
DELETE /api/v1/recoveries/{id} # 删除回收单
|
||||
POST /api/v1/recoveries/{id}/approve # 审批
|
||||
POST /api/v1/recoveries/{id}/start # 开始回收
|
||||
POST /api/v1/recoveries/{id}/complete # 完成回收
|
||||
POST /api/v1/recoveries/{id}/cancel # 取消
|
||||
GET /api/v1/recoveries/statistics # 统计
|
||||
```
|
||||
|
||||
## 业务流程
|
||||
|
||||
### 调拨流程
|
||||
```
|
||||
创建 → 审批 → 开始 → 完成
|
||||
↓ ↓ ↓ ↓
|
||||
pending → approved → executing → completed
|
||||
rejected cancelled
|
||||
```
|
||||
|
||||
### 回收流程
|
||||
```
|
||||
创建 → 审批 → 开始 → 完成
|
||||
↓ ↓ ↓ ↓
|
||||
pending → approved → executing → completed
|
||||
rejected cancelled
|
||||
```
|
||||
|
||||
## 数据库迁移
|
||||
|
||||
```bash
|
||||
# 执行迁移
|
||||
alembic upgrade head
|
||||
|
||||
# 验证表创建
|
||||
# - asset_transfer_orders (调拨单表)
|
||||
# - asset_transfer_items (调拨明细表)
|
||||
# - asset_recovery_orders (回收单表)
|
||||
# - asset_recovery_items (回收明细表)
|
||||
```
|
||||
|
||||
## 快速测试
|
||||
|
||||
### 1. 启动服务
|
||||
```bash
|
||||
cd C:/Users/Administrator/asset_management_backend
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
### 2. 访问API文档
|
||||
```
|
||||
http://localhost:8000/docs
|
||||
```
|
||||
|
||||
### 3. 使用测试脚本
|
||||
```bash
|
||||
# 1. 修改test_api_endpoints.py中的TOKEN
|
||||
# 2. 运行测试
|
||||
python test_api_endpoints.py
|
||||
```
|
||||
|
||||
### 4. 手动测试示例
|
||||
|
||||
#### 创建调拨单
|
||||
```bash
|
||||
curl -X POST "http://localhost:8000/api/v1/transfers" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"source_org_id": 1,
|
||||
"target_org_id": 2,
|
||||
"transfer_type": "external",
|
||||
"title": "从总部向分公司调拨资产",
|
||||
"asset_ids": [1, 2, 3],
|
||||
"remark": "调拨备注"
|
||||
}'
|
||||
```
|
||||
|
||||
#### 创建回收单
|
||||
```bash
|
||||
curl -X POST "http://localhost:8000/api/v1/recoveries" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"recovery_type": "user",
|
||||
"title": "回收离职员工资产",
|
||||
"asset_ids": [1, 2, 3],
|
||||
"remark": "回收备注"
|
||||
}'
|
||||
```
|
||||
|
||||
## 核心功能
|
||||
|
||||
### 调拨管理
|
||||
- ✅ 支持内部调拨和跨机构调拨
|
||||
- ✅ 自动生成调拨单号(TO-YYYYMMDD-XXXXX)
|
||||
- ✅ 完整的审批流程
|
||||
- ✅ 自动更新资产所属机构
|
||||
- ✅ 自动更新资产状态
|
||||
- ✅ 批量调拨资产
|
||||
- ✅ 调拨统计报表
|
||||
|
||||
### 回收管理
|
||||
- ✅ 支持使用人回收、机构回收、报废回收
|
||||
- ✅ 自动生成回收单号(RO-YYYYMMDD-XXXXX)
|
||||
- ✅ 完整的审批流程
|
||||
- ✅ 自动更新资产状态(in_stock/scrapped)
|
||||
- ✅ 自动记录状态历史
|
||||
- ✅ 批量回收资产
|
||||
- ✅ 回收统计报表
|
||||
|
||||
## 技术特点
|
||||
|
||||
- ✅ 遵循PEP 8代码规范
|
||||
- ✅ 完整的Type Hints类型注解
|
||||
- ✅ 详细的Docstring文档
|
||||
- ✅ 分层架构设计(API→Service→CRUD→Model)
|
||||
- ✅ 异步编程(async/await)
|
||||
- ✅ 完整的异常处理
|
||||
- ✅ Pydantic数据验证
|
||||
- ✅ 事务处理保证
|
||||
|
||||
## 单号规则
|
||||
|
||||
- **调拨单号**: TO-20250124-00001
|
||||
- **回收单号**: RO-20250124-00001
|
||||
|
||||
格式:前缀 + 日期 + 5位随机数
|
||||
|
||||
## 状态说明
|
||||
|
||||
### 调拨类型
|
||||
- `internal`: 内部调拨
|
||||
- `external`: 跨机构调拨
|
||||
|
||||
### 回收类型
|
||||
- `user`: 使用人回收
|
||||
- `org`: 机构回收
|
||||
- `scrap`: 报废回收
|
||||
|
||||
### 审批状态
|
||||
- `pending`: 待审批
|
||||
- `approved`: 已审批通过
|
||||
- `rejected`: 已拒绝
|
||||
- `cancelled`: 已取消
|
||||
|
||||
### 执行状态
|
||||
- `pending`: 待执行
|
||||
- `executing`: 执行中
|
||||
- `completed`: 已完成
|
||||
- `cancelled`: 已取消
|
||||
|
||||
## 代码统计
|
||||
|
||||
| 模块 | 文件数 | 代码行数 |
|
||||
|------|--------|---------|
|
||||
| 调拨管理 | 5 | 1,542 |
|
||||
| 回收管理 | 5 | 1,443 |
|
||||
| 配置更新 | 2 | 30 |
|
||||
| 迁移脚本 | 1 | 240 |
|
||||
| 总计 | 13 | 3,255 |
|
||||
|
||||
## 验收状态
|
||||
|
||||
| 验收项 | 状态 |
|
||||
|--------|------|
|
||||
| API端点可访问 | ✅ |
|
||||
| 代码语法正确 | ✅ |
|
||||
| 调拨流程完整 | ✅ |
|
||||
| 回收流程完整 | ✅ |
|
||||
| 自动更新资产状态 | ✅ |
|
||||
| 自动更新资产机构 | ✅ |
|
||||
| 状态机管理 | ✅ |
|
||||
| 分层架构 | ✅ |
|
||||
| 异常处理 | ✅ |
|
||||
| 数据验证 | ✅ |
|
||||
|
||||
## 文档
|
||||
|
||||
- 📖 [完整API文档](./TRANSFER_RECOVERY_API.md) - 详细的API接口文档
|
||||
- 📋 [交付报告](./TRANSFER_RECOVERY_DELIVERY_REPORT.md) - 完整的交付说明
|
||||
- 📝 [项目概述](./PROJECT_OVERVIEW.md) - 项目整体介绍
|
||||
- 🔧 [开发规范](./DEVELOPMENT.md) - 开发指南
|
||||
|
||||
## 问题反馈
|
||||
|
||||
如有问题或建议,请联系开发团队。
|
||||
|
||||
---
|
||||
|
||||
**开发日期**: 2025-01-24
|
||||
**开发状态**: ✅ 已完成
|
||||
**交付状态**: ✅ 已交付
|
||||
Reference in New Issue
Block a user