From b1492434a05a163715bd8e413d9bca4d655f6cac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A6=82=E5=A8=81?= Date: Thu, 28 Aug 2025 11:12:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/main.py | 35 ++++++++++++++++++++---------- backend/app/models/db/system.py | 6 +++++ backend/app/models/schemas/user.py | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/backend/app/main.py b/backend/app/main.py index c23bf5d..a36095e 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -57,7 +57,7 @@ async def lifespan(app: FastAPI): ) logger.info("初始化数据库") # 定时器 - scheduler.add_job(clear_session, "interval", seconds=5) + scheduler.add_job(clear_session, "interval", seconds=30, misfire_grace_time=10) scheduler.start() logger.info("初始化定时器") @@ -78,7 +78,7 @@ def create_app(): return {"message": "hello"} @app.get( - "/check_init", + "/api/check_init", tags=["System"], description="系统是否初始化", response_model=InitStatusResponse, @@ -87,7 +87,7 @@ def create_app(): return InitStatusResponse(data=await is_init()) @app.post( - "/init_system", + "/api/init_system", tags=["System"], description="系统初始化", response_model=InitStatusResponse, @@ -121,7 +121,10 @@ def create_app(): return InitStatusResponse(success=False, message=str(e)) @app.post( - "/login", tags=["User"], description="用户登录", response_model=LoginResponse + "/api/login", + tags=["User"], + description="用户登录", + response_model=LoginResponse, ) async def login(login_info: LoginRequest): user = await DB.User.filter( @@ -137,15 +140,27 @@ def create_app(): return LoginResponse(success=False, message="帐号或密码错误") @app.post( - "/logout", tags=["User"], description="退出登录", response_model=BaseResponse + "/api/logout", + tags=["User"], + description="退出登录", + response_model=BaseResponse, ) async def logout(token: str): sessions.pop(token, None) logger.info(sessions) return BaseResponse() + @app.get( + "/api/current_user", + tags=["User"], + description="当前用户信息", + response_model=LoginResponse, + ) + async def current_user(user: DB.User = Depends(get_current_user)): + return LoginResponse(data=user.json(del_columns=["password"])) + @app.post( - "/run", tags=["Flow"], description="执行命令", response_model=BaseResponse + "/api/run", tags=["Flow"], description="执行命令", response_model=BaseResponse ) async def flow_run(id: int): nodes = [] @@ -167,7 +182,7 @@ def create_app(): nodes.append(cmd_node_3) # 设置依赖关系: node0 - "true" >> node1 - "true" >> node2 - for i in range(len(nodes) -1): + for i in range(len(nodes) - 1): nodes[i] - "true" >> nodes[i + 1] flow = F.AsyncFlow(git_node_0) @@ -209,10 +224,8 @@ def create_app(): ) }, "01K3JHS5HTY78Z4EYWRFW5TA77": { - "cmd": "\n".join([ - "pwd" - ]), - } + "cmd": "\n".join(["pwd"]), + }, } ) shared = {} diff --git a/backend/app/models/db/system.py b/backend/app/models/db/system.py index 57ee63e..e1a1001 100644 --- a/backend/app/models/db/system.py +++ b/backend/app/models/db/system.py @@ -8,6 +8,12 @@ class BaseModel(Model): def json(self, del_columns=None): user_json = dict(self) + user_json["create_time"] = ( + self.create_time.strftime("%Y-%m-%d %H:%M:%S") if self.create_time else "" + ) + user_json["update_time"] = ( + self.update_time.strftime("%Y-%m-%d %H:%M:%S") if self.update_time else "" + ) if del_columns is not None: for column in del_columns: try: diff --git a/backend/app/models/schemas/user.py b/backend/app/models/schemas/user.py index f70f41d..e517cce 100644 --- a/backend/app/models/schemas/user.py +++ b/backend/app/models/schemas/user.py @@ -10,4 +10,4 @@ class LoginRequest(BaseModel): return hashlib.md5(self.password.encode()).hexdigest() class LoginResponse(BaseResponse): - data: dict | None \ No newline at end of file + data: dict | None = None \ No newline at end of file