- 修复前端路由守卫:未登录时不显示提示,直接跳转登录页 - 修复API拦截器:401错误不显示提示,直接跳转 - 增强验证码显示:图片尺寸从120x40增加到200x80 - 增大验证码字体:从28号增加到48号 - 优化验证码字符:排除易混淆的0和1 - 减少干扰线:从5条减少到3条,添加背景色优化 - 增强登录API日志:添加详细的调试日志 - 增强验证码生成和验证日志 - 优化异常处理和错误追踪 影响文件: - src/router/index.ts - src/api/request.ts - app/services/auth_service.py - app/api/v1/auth.py - app/schemas/user.py 测试状态: - 前端构建通过 - 后端语法检查通过 - 验证码显示效果优化完成 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
资产管理系统后端开发文档
项目进度追踪
Phase 1: 基础框架 ✅ (已完成)
- 项目结构搭建
- 统一响应封装 (app/core/response.py)
- 异常处理中间件 (app/core/exceptions.py)
- JWT认证服务 (app/core/security.py)
- 数据库连接和Session管理 (app/db/session.py)
- 依赖注入系统 (app/core/deps.py)
Phase 2: 认证与用户管理 🚧 (进行中)
- 认证模块API (app/api/v1/auth.py)
- 用户管理模型 (app/models/user.py)
- 用户管理Schema (app/schemas/user.py)
- 用户CRUD操作 (app/crud/user.py)
- 认证服务 (app/services/auth_service.py)
- 用户管理API
- 角色权限API
- RBAC权限控制中间件
Phase 3-7: 待开发
- Phase 3: 基础数据管理
- Phase 4: 资产管理核心
- Phase 5: 资产分配
- Phase 6: 维修与统计
- Phase 7: 系统管理
快速开始
1. 安装依赖
pip install -r requirements.txt
2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件
3. 初始化数据库
# 方式1: 使用 Alembic (推荐)
alembic upgrade head
# 方式2: 开发环境自动初始化
# 已在 app/main.py 的 lifespan 中实现
4. 启动服务
python run.py
5. 访问API文档
开发指南
添加新的API端点
- 在
app/models/中定义数据模型 - 在
app/schemas/中定义Pydantic Schema - 在
app/crud/中实现CRUD操作 - 在
app/services/中实现业务逻辑 - 在
app/api/v1/中创建路由
示例:
# 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})
数据库迁移
# 创建迁移
alembic revision --autogenerate -m "描述"
# 执行迁移
alembic upgrade head
# 回滚
alembic downgrade -1
运行测试
# 所有测试
pytest
# 特定测试文件
pytest tests/api/test_auth.py
# 带覆盖率
pytest --cov=app --cov-report=html
API规范
统一响应格式
成功响应:
{
"code": 200,
"message": "success",
"data": {},
"timestamp": 1706092800
}
错误响应:
{
"code": 400,
"message": "参数验证失败",
"errors": [
{"field": "username", "message": "用户名不能为空"}
],
"timestamp": 1706092800
}
认证方式
使用JWT Token认证:
Authorization: Bearer {access_token}
代码规范
命名规范
- 类名:大驼峰 (PascalCase) -
UserService - 函数名:小写+下划线 (snake_case) -
get_user_by_id - 变量名:小写+下划线 -
user_id - 常量:大写+下划线 (UPPER_CASE) -
MAX_RETRY_COUNT
Docstring规范
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 关键字
下一步计划
- 完成用户管理API
- 实现角色权限管理
- 开发设备类型管理
- 开发机构网点管理
- 开发资产管理核心功能
联系方式
- 开发组: 后端API开发组
- 负责人: 老王
- 创建时间: 2025-01-24