# 资产管理系统后端开发文档

## 项目进度追踪

### Phase 1: 基础框架 ✅ (已完成)
- [x] 项目结构搭建
- [x] 统一响应封装 (app/core/response.py)
- [x] 异常处理中间件 (app/core/exceptions.py)
- [x] JWT认证服务 (app/core/security.py)
- [x] 数据库连接和Session管理 (app/db/session.py)
- [x] 依赖注入系统 (app/core/deps.py)

### Phase 2: 认证与用户管理 🚧 (进行中)
- [x] 认证模块API (app/api/v1/auth.py)
- [x] 用户管理模型 (app/models/user.py)
- [x] 用户管理Schema (app/schemas/user.py)
- [x] 用户CRUD操作 (app/crud/user.py)
- [x] 认证服务 (app/services/auth_service.py)
- [ ] 用户管理API
- [ ] 角色权限API
- [ ] RBAC权限控制中间件

### Phase 3-7: 待开发
- Phase 3: 基础数据管理
- Phase 4: 资产管理核心
- Phase 5: 资产分配
- Phase 6: 维修与统计
- Phase 7: 系统管理

## 快速开始

### 1. 安装依赖

```bash
pip install -r requirements.txt
```

### 2. 配置环境变量

```bash
cp .env.example .env
# 编辑 .env 文件
```

### 3. 初始化数据库

```bash
# 方式1: 使用 Alembic (推荐)
alembic upgrade head

# 方式2: 开发环境自动初始化
# 已在 app/main.py 的 lifespan 中实现
```

### 4. 启动服务

```bash
python run.py
```

### 5. 访问API文档

http://localhost:8000/docs

## 开发指南

### 添加新的API端点

1. 在 `app/models/` 中定义数据模型
2. 在 `app/schemas/` 中定义Pydantic Schema
3. 在 `app/crud/` 中实现CRUD操作
4. 在 `app/services/` 中实现业务逻辑
5. 在 `app/api/v1/` 中创建路由

示例：

```python
# app/api/v1/assets.py
from fastapi import APIRouter, Depends
from app.core.deps import get_db, get_current_user
from app.schemas.asset import AssetCreate, AssetResponse
from app.services.asset_service import asset_service

router = APIRouter()

@router.get("/")
async def get_assets(
    skip: int = 0,
    limit: int = 20,
    db: AsyncSession = Depends(get_db),
    current_user = Depends(get_current_user)
):
    """获取资产列表"""
    items, total = await asset_service.get_assets(db, skip, limit)
    return success_response(data={"items": items, "total": total})
```

### 数据库迁移

```bash
# 创建迁移
alembic revision --autogenerate -m "描述"

# 执行迁移
alembic upgrade head

# 回滚
alembic downgrade -1
```

### 运行测试

```bash
# 所有测试
pytest

# 特定测试文件
pytest tests/api/test_auth.py

# 带覆盖率
pytest --cov=app --cov-report=html
```

## API规范

### 统一响应格式

成功响应：
```json
{
  "code": 200,
  "message": "success",
  "data": {},
  "timestamp": 1706092800
}
```

错误响应：
```json
{
  "code": 400,
  "message": "参数验证失败",
  "errors": [
    {"field": "username", "message": "用户名不能为空"}
  ],
  "timestamp": 1706092800
}
```

### 认证方式

使用JWT Token认证：

```http
Authorization: Bearer {access_token}
```

## 代码规范

### 命名规范

- 类名：大驼峰 (PascalCase) - `UserService`
- 函数名：小写+下划线 (snake_case) - `get_user_by_id`
- 变量名：小写+下划线 - `user_id`
- 常量：大写+下划线 (UPPER_CASE) - `MAX_RETRY_COUNT`

### Docstring规范

```python
async def get_user(db: AsyncSession, user_id: int) -> Optional[User]:
    """
    根据ID获取用户

    Args:
        db: 数据库会话
        user_id: 用户ID

    Returns:
        User: 用户对象或None

    Raises:
        NotFoundException: 用户不存在
    """
    pass
```

## 常见问题

### 数据库连接失败

检查 `DATABASE_URL` 配置是否正确

### Token过期

Access Token有效期15分钟，Refresh Token有效期7天

### 异步函数报错

确保所有数据库操作都使用 `await` 关键字

## 下一步计划

1. 完成用户管理API
2. 实现角色权限管理
3. 开发设备类型管理
4. 开发机构网点管理
5. 开发资产管理核心功能

## 联系方式

- 开发组: 后端API开发组
- 负责人: 老王
- 创建时间: 2025-01-24
