from contextlib import asynccontextmanager from fastapi import FastAPI from config.env import AppConfig from config.get_db import init_create_table from config.get_redis import RedisUtil from config.get_scheduler import SchedulerUtil from exceptions.handle import handle_exception from middlewares.handle import handle_middleware from module_admin.controller.cache_controller import cacheController from module_admin.controller.captcha_controller import captchaController from module_admin.controller.common_controller import commonController from module_admin.controller.config_controller import configController from module_admin.controller.dept_controller import deptController from module_admin.controller.dict_controller import dictController from module_admin.controller.log_controller import logController from module_admin.controller.login_controller import loginController from module_admin.controller.job_controller import jobController from module_admin.controller.menu_controller import menuController from module_admin.controller.notice_controller import noticeController from module_admin.controller.online_controller import onlineController from module_admin.controller.post_controler import postController from module_admin.controller.role_controller import roleController from module_admin.controller.server_controller import serverController from module_admin.controller.user_controller import userController from module_admin.controller.test_controller import testController from module_admin.controller.words_controller import wordsController from module_admin.controller.info_controller import infoController from module_generator.controller.gen_controller import genController from module_admin.controller.message_controller import messageController from module_admin.controller.robot_role_pairing_controller import pairingController from module_admin.controller.explanation_content_controller import explanationContentController from module_admin.controller.explanation_style_robot_pair_controller import explanation_style_robot_pairController from module_admin.controller.sys_statistics_controller import sys_statisticsController # from module_admin.controller.identify_record_controller import identify_recordController from module_admin.controller.ragflow_controller import ragflowController from module_admin.controller.robot_action_controller import robot_actionController from module_admin.controller.identification_record_controller import identification_recordController from module_admin.controller.door_controller import doorController from sub_applications.handle import handle_sub_applications from utils.common_util import worship from utils.log_util import logger # 生命周期事件 @asynccontextmanager async def lifespan(app: FastAPI): logger.info(f'{AppConfig.app_name}开始启动') worship() await init_create_table() app.state.redis = await RedisUtil.create_redis_pool() await RedisUtil.init_sys_dict(app.state.redis) await RedisUtil.init_sys_config(app.state.redis) await SchedulerUtil.init_system_scheduler() logger.info(f'{AppConfig.app_name}启动成功') yield await RedisUtil.close_redis_pool(app) await SchedulerUtil.close_system_scheduler() # 初始化FastAPI对象 app = FastAPI( title=AppConfig.app_name, description=f'{AppConfig.app_name}接口文档', version=AppConfig.app_version, lifespan=lifespan, docs_url=AppConfig.app_docs_url, redoc_url=AppConfig.app_redoc_url, openapi_url=AppConfig.app_openapi_url, ) # 挂载子应用 handle_sub_applications(app) # 加载中间件处理方法 handle_middleware(app) # 加载全局异常处理方法 handle_exception(app) # 加载路由列表 controller_list = [ {'router': loginController, 'tags': ['登录模块']}, {'router': captchaController, 'tags': ['验证码模块']}, {'router': userController, 'tags': ['系统管理-用户管理']}, {'router': roleController, 'tags': ['系统管理-角色管理']}, {'router': menuController, 'tags': ['系统管理-菜单管理']}, # {'router': deptController, 'tags': ['系统管理-部门管理']}, # {'router': postController, 'tags': ['系统管理-岗位管理']}, {'router': dictController, 'tags': ['系统管理-字典管理']}, # {'router': configController, 'tags': ['系统管理-参数管理']}, # {'router': noticeController, 'tags': ['系统管理-通知公告管理']}, {'router': logController, 'tags': ['系统管理-日志管理']}, {'router': onlineController, 'tags': ['系统监控-在线用户']}, {'router': jobController, 'tags': ['系统监控-定时任务']}, {'router': serverController, 'tags': ['系统监控-菜单管理']}, # {'router': cacheController, 'tags': ['系统监控-缓存监控']}, {'router': commonController, 'tags': ['通用模块']}, {'router': genController, 'tags': ['代码生成']}, # {'router': testController, 'tags': ['测试模块']}, {'router': wordsController, 'tags': ['引导词管理']}, {'router': infoController, 'tage':['机器人信息管理']}, {'router': messageController, 'tags': ['消息管理']}, {'router': pairingController, 'tags': ['机器人角色']}, {'router': explanationContentController, 'tags': ['讲解管理']}, {'router': explanation_style_robot_pairController, 'tags': ['讲解风格管理']}, {'router': sys_statisticsController, 'tags': ['系统统计数据管理']}, # {'router': identify_recordController, 'tags': ['识别记录管理']}, {'router': ragflowController, 'tags': ['ragflow管理']}, {'router': robot_actionController, 'tags': ['机器人动作管理']}, {'router': identification_recordController, 'tags': ['识别记录管理']}, {'router': doorController, 'tags': ['门禁设备管理']} ] for controller in controller_list: app.include_router(router=controller.get('router'), tags=controller.get('tags'))