|
1 | | -import json |
2 | 1 | import os |
| 2 | +import platform |
3 | 3 | from datetime import UTC, datetime |
4 | 4 |
|
5 | | -from fastapi import APIRouter, Request |
| 5 | +from fastapi import APIRouter, HTTPException, Request |
6 | 6 | from slowapi import Limiter |
7 | 7 | from slowapi.util import get_remote_address |
8 | 8 |
|
|
17 | 17 | RefreshTokenRequest, |
18 | 18 | TokenRefreshOut, |
19 | 19 | ) |
20 | | -from schemas.response import ( |
21 | | - CurrentUserResponse, |
22 | | - HealthInfo, |
23 | | - HealthResponse, |
24 | | - TokenResponse, |
25 | | - VersionInfo, |
26 | | - VersionResponse, |
27 | | -) |
| 20 | +from schemas.response import CurrentUserResponse, TokenResponse |
28 | 21 | from settings import settings |
29 | 22 | from utils.jwt import create_token_pair, verify_token |
30 | 23 |
|
@@ -63,8 +56,7 @@ async def login_access_token(request: Request, credentials: CredentialsSchema): |
63 | 56 | username=user.username, |
64 | 57 | expires_in=settings.JWT_ACCESS_TOKEN_EXPIRE_MINUTES * 60, |
65 | 58 | ) |
66 | | - result = Success(data=data.model_dump()) |
67 | | - return json.loads(result.body) |
| 59 | + return Success(data=data.model_dump()) |
68 | 60 |
|
69 | 61 |
|
70 | 62 | @router.post("/refresh_token", summary="刷新token", response_model=TokenResponse) |
@@ -93,45 +85,46 @@ async def refresh_access_token(request: Request, refresh_request: RefreshTokenRe |
93 | 85 | expires_in=settings.JWT_ACCESS_TOKEN_EXPIRE_MINUTES * 60, |
94 | 86 | ) |
95 | 87 |
|
96 | | - result = Success(data=data.model_dump()) |
97 | | - return json.loads(result.body) |
| 88 | + return Success(data=data.model_dump()) |
98 | 89 |
|
99 | | - except Exception: |
100 | | - result = Fail(code=401, msg="令牌无效或已过期") |
101 | | - return json.loads(result.body) |
| 90 | + except Exception as exc: # noqa: BLE001 - propagate as HTTP error for clarity |
| 91 | + raise HTTPException(status_code=401, detail="令牌无效或已过期") from exc |
102 | 92 |
|
103 | 93 |
|
104 | 94 | @router.get("/userinfo", summary="查看用户信息", response_model=CurrentUserResponse) |
105 | 95 | async def get_userinfo(current_user: User = DependAuth): |
106 | 96 | user_id = CTX_USER_ID.get() |
107 | 97 | user_obj = await user_repository.get(id=user_id) |
108 | 98 | user_dict = await user_obj.to_dict() |
109 | | - result = Success(data=user_dict) |
110 | | - return json.loads(result.body) |
| 99 | + return Success(data=user_dict) |
111 | 100 |
|
112 | 101 |
|
113 | | -@router.get("/health", summary="健康检查", response_model=HealthResponse) |
| 102 | +@router.get("/health", summary="健康检查") |
114 | 103 | async def health_check(): |
115 | 104 | """系统健康检查""" |
116 | | - health_data = HealthInfo( |
117 | | - status="healthy", |
118 | | - timestamp=datetime.now(UTC), |
119 | | - environment=settings.APP_ENV, |
120 | | - database="connected" |
121 | | - ) |
122 | | - return HealthResponse(code=200, msg="OK", data=health_data) |
| 105 | + |
| 106 | + return { |
| 107 | + "status": "healthy", |
| 108 | + "timestamp": datetime.now(UTC).isoformat(), |
| 109 | + "version": settings.VERSION, |
| 110 | + "environment": settings.APP_ENV, |
| 111 | + "service": settings.PROJECT_NAME, |
| 112 | + "database": "connected", |
| 113 | + } |
123 | 114 |
|
124 | 115 |
|
125 | | -@router.get("/version", summary="版本信息", response_model=VersionResponse) |
| 116 | +@router.get("/version", summary="版本信息") |
126 | 117 | async def get_version(): |
127 | 118 | """获取API版本信息""" |
128 | | - version_data = VersionInfo( |
129 | | - app_name=settings.APP_TITLE, |
130 | | - version=settings.VERSION, |
131 | | - api_version="v1", |
132 | | - environment=settings.APP_ENV |
133 | | - ) |
134 | | - return VersionResponse(code=200, msg="OK", data=version_data) |
| 119 | + |
| 120 | + return { |
| 121 | + "version": settings.VERSION, |
| 122 | + "app_title": settings.APP_TITLE, |
| 123 | + "project_name": settings.PROJECT_NAME, |
| 124 | + "build": os.getenv("APP_BUILD", "dev"), |
| 125 | + "commit": os.getenv("GIT_COMMIT", "unknown"), |
| 126 | + "python_version": platform.python_version(), |
| 127 | + } |
135 | 128 |
|
136 | 129 |
|
137 | 130 | # @router.get("/usermenu", summary="查看用户菜单", dependencies=[DependAuth]) |
|
0 commit comments