# Agent-Auth 依赖关系 ## 依赖概览 Agent-Auth是基础模块,**不依赖其他业务模块**,但依赖系统基础设施。 ## 输入依赖 ### 1. 系统基础设施 - `app/config/settings.py` - 系统配置 - `app/config/database.py` - 数据库连接 - `app/core/logger.py` - 日志系统 - `app/models/base.py` - 基础模型类 - `app/schemas/base.py` - 基础Schema类 ### 2. 第三方库 - `fastapi` - Web框架 - `sqlalchemy` - ORM - `passlib[bcrypt]` - 密码加密 - `python-jose[cryptography]` - JWT处理 - `redis` - 缓存(用于Token黑名单) ### 3. 环境变量 ```bash SECRET_KEY=必需 ALGORITHM=可选(默认HS256) ACCESS_TOKEN_EXPIRE_MINUTES=可选(默认30) REFRESH_TOKEN_EXPIRE_DAYS=可选(默认7) ``` ## 输出接口 ### 1. 依赖注入函数 其他所有模块都会使用这些函数: ```python # app/api/deps.py 或 app/core/deps.py async def get_current_user() -> User async def get_current_active_user() -> User async def get_optional_current_user() -> Optional[User] # 角色检查器 require_admin = RoleChecker(["admin"]) require_manager = RoleChecker(["admin", "manager"]) require_trainer = RoleChecker(["admin", "manager", "trainer"]) ``` ### 2. 安全工具函数 ```python # app/core/security.py def verify_password(plain_password: str, hashed_password: str) -> bool def get_password_hash(password: str) -> str def create_access_token(subject: int, **kwargs) -> str def create_refresh_token(subject: int) -> str def verify_token(token: str) -> dict ``` ### 3. 数据模型 ```python # app/models/user.py class User(BaseModel, AuditMixin): # 被所有其他模块引用的用户模型 pass ``` ### 4. API端点 ``` POST /api/v1/auth/login POST /api/v1/auth/register POST /api/v1/auth/logout POST /api/v1/auth/refresh POST /api/v1/auth/reset-password ``` ## 被依赖情况 以下模块依赖Auth模块: - **所有模块** - 使用认证和权限检查 - Agent-User - 使用User模型 - Agent-Course - 使用get_current_user - Agent-Exam - 使用get_current_user - Agent-Training - 使用get_current_user - Agent-Analytics - 使用权限检查 - Agent-Admin - 使用require_admin ## 接口稳定性 ⚠️ **关键接口,需保持稳定** - 修改认证逻辑会影响所有模块 - Token格式变更需要通知所有模块 - User模型字段变更需要评估影响 ## 测试依赖 - 需要模拟Redis服务 - 需要测试数据库 - 需要模拟邮件服务(密码重置)