import json from fastapi import APIRouter, Depends from Log import logger from app.api import Response from app.api.auth import login from app.config.const import IMAGE_TO_TEXT, DOCUMENT_TO_CLEANING, DOCUMENT_TO_REPORT, DIFY, BISHENG, RAGFLOW from app.models.base_model import get_db from app.models.public_api_model import DfToken, AppRegister from app.service.v2.api_token import DfTokenDao from app.service.v2.app_register import AppRegisterDao from app.service.v2.initialize_data import dialog_menu_sync from app.task.sync_resources import sync_knowledge, sync_dialog, sync_agent, sync_llm, sync_resource public_api = APIRouter() @public_api.post("/sync/df_token", response_model=Response) async def sync_df_token(df: DfToken, db=Depends(get_db)): token_dict = {IMAGE_TO_TEXT: df.image, DOCUMENT_TO_CLEANING: df.clean, DOCUMENT_TO_REPORT: df.report} try: for api_id, token in token_dict.items(): if not token: continue DfTokenDao(db).update_and_insert_token(api_id, token) except Exception as e: logger.error(e) return Response(code=500, msg="failed", data={}) return Response(code=200, msg="successfully", data={}) @public_api.post("/sync/app_register", response_model=Response) async def sync_app_register(apr: AppRegister, db=Depends(get_db)): app_dict = {RAGFLOW: apr.rg, BISHENG: apr.bs, DIFY: apr.df} try: for app_id, status in app_dict.items(): AppRegisterDao(db).update_and_insert_app(app_id, status) except Exception as e: logger.error(e) return Response(code=500, msg="failed", data={}) return Response(code=200, msg="successfully", data={}) @public_api.get("/sync/resource", response_model=Response) async def sync_resource_data(resource_type:int, db=Depends(get_db)): if resource_type == 1: await sync_knowledge() elif resource_type == 2: await sync_dialog() elif resource_type == 3: await sync_agent() elif resource_type == 4: await sync_llm() else: await sync_resource() return Response(code=200, msg="", data={}) @public_api.get("/sync/dialog_menu", response_model=Response) async def sync_dialog_menu(db=Depends(get_db)): try: await dialog_menu_sync(db) except Exception as e: logger.error(e) return Response(code=500, msg="failed", data={}) return Response(code=200, msg="success", data={})