From cdb5f8bf45f117831959291c89e0694606ebb479 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 04 十二月 2024 17:28:58 +0800
Subject: [PATCH] 增加公开api
---
app/service/common/api_token.py | 48 ++++++
app/api/chat.py | 22 ++
app/service/common/app_register.py | 53 +++++
app/service/user.py | 4
app/models/public_api_model.py | 61 +++++++
app/api/public_api.py | 62 +++++++
app/api/user.py | 2
app/task/sync_resources.py | 2
app/api/auth.py | 81 +++++++--
app/models/user.py | 1
app/models/postgresql_base_model.py | 2
/dev/null | 32 ----
app/config/const.py | 11 +
main.py | 6
app/api/files.py | 8
app/models/token_model.py | 36 ++++
16 files changed, 361 insertions(+), 70 deletions(-)
diff --git a/app/api/auth.py b/app/api/auth.py
index 6e74966..f0c6fce 100644
--- a/app/api/auth.py
+++ b/app/api/auth.py
@@ -1,18 +1,23 @@
import json
+from Tools.scripts.mailerdaemon import emparse_list_from
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from sqlalchemy.ext.asyncio import AsyncSession
+
+from Log import logger
from app.api import Response, pwd_context, get_current_user
from app.config.config import settings
+from app.config.const import RAGFLOW, BISHENG, DIFY
from app.models.app_token_model import AppToken
from app.models.base_model import get_db
from app.models.postgresql_base_model import get_pdb
-from app.models.token_model import upsert_token, get_token
+from app.models.token_model import upsert_token, get_token, update_token
from app.models.user import UserCreate, LoginData
from app.models.user_model import UserModel
from app.service.auth import authenticate_user, create_access_token
from app.service.bisheng import BishengService
+from app.service.common.app_register import AppRegisterDao
from app.service.ragflow import RagflowService
from sqlalchemy.future import select
@@ -102,30 +107,32 @@
user = authenticate_user(db, login_data.username, login_data.password)
if not user:
return Response(code=400, msg="Incorrect username or password")
-
- bisheng_service = BishengService(settings.sgb_base_url)
- ragflow_service = RagflowService(settings.fwr_base_url)
-
- # 鐧诲綍鍒版瘯鏄�
- try:
- bisheng_token = await bisheng_service.login(login_data.username, login_data.password)
- except Exception as e:
- return Response(code=500, msg=f"Failed to login with Bisheng: {str(e)}")
-
- # 鐧诲綍鍒皉agflow
- try:
- ragflow_token = await ragflow_service.login(login_data.username, login_data.password)
- except Exception as e:
- return Response(code=500, msg=f"Failed to login with Ragflow: {str(e)}")
+ app_register = AppRegisterDao(db).get_apps()
+ token_dict = {}
+ for app in app_register:
+ if app["id"] == RAGFLOW:
+ service = RagflowService(settings.fwr_base_url)
+ elif app["id"] == BISHENG:
+ service = BishengService(settings.sgb_base_url)
+ elif app["id"] == DIFY:
+ continue
+ else:
+ logger.error("鏈煡娉ㄥ唽搴旂敤---")
+ continue
+ try:
+ token = await service.login(login_data.username, login_data.password)
+ token_dict[app["id"]] = token
+ except Exception as e:
+ return Response(code=500, msg=f"Failed to login with {app['id']}: {str(e)}")
# 鍒涘缓鏈湴token
access_token = create_access_token(data={"sub": user.username, "user_id": user.id})
- upsert_token(db, user.id, access_token, bisheng_token, ragflow_token)
+ await update_token(db, user.id, access_token, token_dict)
result = await pdb.execute(select(AppToken).where(AppToken.id == user.id))
db_app_token = result.scalars().first()
if not db_app_token:
- app_token_str = json.dumps({"rag_token": ragflow_token, "bs_token":bisheng_token})
+ app_token_str = json.dumps(token_dict)
# print(app_token_str)
app_token = AppToken(id=user.id, token=access_token.decode(), app_token=app_token_str)
pdb.add(app_token)
@@ -133,7 +140,7 @@
await pdb.refresh(app_token)
else:
db_app_token.token = access_token.decode()
- db_app_token.app_token = json.dumps({"rag_token": ragflow_token, "bs_token":bisheng_token})
+ db_app_token.app_token = json.dumps(token_dict)
await pdb.commit()
await pdb.refresh(db_app_token)
return Response(code=200, msg="Login successful", data={
@@ -143,3 +150,39 @@
"nickname": "",
# "user": user.to_login_json()
})
+
+
+
+@router.post("/register_test", response_model=Response)
+async def register_test(user: UserCreate, db=Depends(get_db)):
+ db_user = db.query(UserModel).filter(UserModel.username == user.username).first()
+ if db_user:
+ return Response(code=200, msg="Username already registered")
+ app_register = AppRegisterDao(db).get_apps()
+ register_dict = {}
+ for app in app_register:
+ if app["id"] == RAGFLOW:
+ service = RagflowService(settings.fwr_base_url)
+ elif app["id"] == BISHENG:
+ service = BishengService(settings.sgb_base_url)
+ elif app["id"] == DIFY:
+ continue
+ else:
+ logger.error("鏈煡娉ㄥ唽搴旂敤---")
+ continue
+ try:
+ register_info = await service.register(user.username, user.password)
+ register_dict[app['id']] = register_info.get("id") if app['id'] == RAGFLOW else register_info.get("user_id") if app['id'] == BISHENG else ""
+ except Exception as e:
+ return Response(code=500, msg=f"Failed to register with {app['id']}: {str(e)}")
+
+ # 瀛樺偍鐢ㄦ埛淇℃伅
+ hashed_password = pwd_context.hash(user.password)
+ db_user = UserModel(username=user.username, hashed_password=hashed_password, email=user.email)
+ db_user.password = db_user.encrypted_password(user.password)
+ for k, v in register_dict.items():
+ setattr(db_user, k.replace("app", "id"), v)
+ db.add(db_user)
+ db.commit()
+ db.refresh(db_user)
+ return Response(code=200, msg="User registered successfully",data={"username": db_user.username})
\ No newline at end of file
diff --git a/app/api/chat.py b/app/api/chat.py
index 3b14b8b..4344b62 100644
--- a/app/api/chat.py
+++ b/app/api/chat.py
@@ -10,9 +10,11 @@
from Log import logger
from app.api import get_current_user_websocket
from app.config.config import settings
+from app.config.const import IMAGE_TO_TEXT, DOCUMENT_TO_REPORT, DOCUMENT_TO_CLEANING
from app.models.agent_model import AgentModel, AgentType
from app.models.base_model import get_db
from app.models.user_model import UserModel
+from app.service.common.api_token import DfTokenDao
from app.service.dialog import update_session_history
from app.service.basic import BasicService
from app.service.difyService import DifyService
@@ -310,7 +312,10 @@
try:
async def forward_to_dify():
if agent.type == "imageTalk":
- token = settings.dify_api_token
+ token = DfTokenDao(db).get_token_by_id(IMAGE_TO_TEXT)
+ if not token:
+ await websocket.send_json({"message": "Invalid token", "type": "error"})
+
while True:
image_list = []
is_image = False
@@ -334,9 +339,11 @@
except Exception as e:
logger.error(e)
# complete_response = ""
+
answer_str = ""
async for rag_response in dify_service.chat(token, current_user.id, question, upload_file_id,
conversation_id):
+ # print(rag_response)
try:
if rag_response[:5] == "data:":
# 濡傛灉鏄紝鍒欐埅鍙栨帀鍓�5涓瓧绗︼紝骞跺幓闄ら灏剧┖鐧界
@@ -403,8 +410,10 @@
await websocket.send_json(result)
print(f"Error process message of ragflow: {e2}")
elif agent.type == "reportWorkflow":
- print(2323333232)
- token = settings.dify_workflow_clean
+
+ token = DfTokenDao(db).get_token_by_id(DOCUMENT_TO_CLEANING)
+ if not token:
+ await websocket.send_json({"message": "Invalid token document_to_cleaning", "type": "error"})
while True:
receive_message = await websocket.receive_json()
print(f"Received from client {chat_id}: {receive_message}")
@@ -440,10 +449,13 @@
if workflow_type == 2:
inputs["file_list"] = files
inputs["Completion_of_main_indicators"] = title
- token = settings.dify_workflow_report
+ token = DfTokenDao(db).get_token_by_id(DOCUMENT_TO_REPORT)
+ if not token:
+ await websocket.send_json(
+ {"message": "Invalid token document_to_cleaning", "type": "error"})
complete_response = ""
async for rag_response in dify_service.workflow(token, current_user.id, inputs):
- print(rag_response)
+ # print(rag_response)
try:
if rag_response[:5] == "data:":
# 濡傛灉鏄紝鍒欐埅鍙栨帀鍓�5涓瓧绗︼紝骞跺幓闄ら灏剧┖鐧界
diff --git a/app/api/files.py b/app/api/files.py
index 4be3304..dca7d3c 100644
--- a/app/api/files.py
+++ b/app/api/files.py
@@ -15,6 +15,7 @@
from app.models.user_model import UserModel
from app.service.basic import BasicService
from app.service.bisheng import BishengService
+from app.service.common.api_token import DfTokenDao
from app.service.difyService import DifyService
from app.service.ragflow import RagflowService
from app.service.service_token import get_ragflow_token, get_bisheng_token
@@ -96,9 +97,11 @@
# result = await service.paper_file_upload(chat_id, file.filename, file_content)
elif agent.agent_type == AgentType.DIFY:
- token = settings.dify_api_token
dify_service = DifyService(base_url=settings.dify_base_url)
if agent.type == "imageTalk":
+ token = DfTokenDao(db).get_token_by_id("image_and_text_conversion")
+ if not token:
+ raise HTTPException(status_code=500, detail="鑾峰彇token澶辫触锛宨mage_and_text_conversion锛�")
file = file[0]
# 璇诲彇涓婁紶鐨勬枃浠跺唴瀹�
try:
@@ -110,6 +113,9 @@
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
elif agent.type == "reportWorkflow":
+ token = DfTokenDao(db).get_token_by_id("document_to_report")
+ if not token:
+ raise HTTPException(status_code=500, detail="鑾峰彇token澶辫触锛宒ocument_to_report锛�")
result = []
for f in file:
try:
diff --git a/app/api/public_api.py b/app/api/public_api.py
new file mode 100644
index 0000000..06a37dc
--- /dev/null
+++ b/app/api/public_api.py
@@ -0,0 +1,62 @@
+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.common.api_token import DfTokenDao
+from app.service.common.app_register import AppRegisterDao
+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 user_group_list(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={})
\ No newline at end of file
diff --git a/app/api/sync_data.py b/app/api/sync_data.py
deleted file mode 100644
index 30bfbe3..0000000
--- a/app/api/sync_data.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# coding:utf-8
-
-from fastapi import APIRouter, Depends
-from app.api import Response, get_current_user
-from app.models.base_model import get_db
-from app.models.user_model import UserModel
-from app.task.sync_resources import sync_knowledge, sync_dialog, sync_agent, sync_resource, sync_llm
-
-sync_router = APIRouter()
-
-
-@sync_router.get("/data", response_model=Response)
-async def user_group_list(resource_type:int, current_user: UserModel = Depends(get_current_user),
- 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={})
\ No newline at end of file
diff --git a/app/api/user.py b/app/api/user.py
index 6b6c866..e9d34b3 100644
--- a/app/api/user.py
+++ b/app/api/user.py
@@ -1,6 +1,6 @@
from fastapi import APIRouter, Depends
from app.api import Response, pwd_context, get_current_user
-from app.models.app_model import AppRegisterModel
+from app.models.public_api_model import AppRegisterModel
from app.models.base_model import get_db
from app.models.user import PageParameter, UserStatus, UserInfo, LoginData
from app.models.user_model import UserModel
diff --git a/app/config/const.py b/app/config/const.py
new file mode 100644
index 0000000..007e8e4
--- /dev/null
+++ b/app/config/const.py
@@ -0,0 +1,11 @@
+
+### ----------dify------api token
+DOCUMENT_TO_CLEANING = "document_to_cleaning"
+DOCUMENT_TO_REPORT = "document_to_report"
+IMAGE_TO_TEXT = "image_and_text_conversion"
+
+
+### -----------app register --------------
+RAGFLOW = "ragflow_app"
+BISHENG = "bisheng_app"
+DIFY = "dify_app"
\ No newline at end of file
diff --git a/app/models/app_model.py b/app/models/app_model.py
deleted file mode 100644
index 46e9caf..0000000
--- a/app/models/app_model.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from datetime import datetime
-from enum import IntEnum
-from sqlalchemy import Column, String, Enum as SQLAlchemyEnum, Integer, BigInteger, DateTime, Text, Float, Boolean
-from app.models.base_model import Base
-
-class AppType(IntEnum):
- BASIC = 0
- RAGFLOW = 1
- BISHENG = 2
-
-
-
-class AppRegisterModel(Base):
- __tablename__ = "app_register"
- id = Column(Integer, primary_key=True)
- name = Column(String(255))
- app_type = Column(Integer, nullable=False)
- status = Column(Integer, nullable=False, default=1)
- created_at = Column(DateTime, default=datetime.now())
- updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
-
-
- # to_dict 鏂规硶
- def to_dict(self):
- return {
- 'id': self.id,
- 'name': self.name,
- 'agent_type': self.agent_type,
- 'type': self.type
- }
-
-
diff --git a/app/models/postgresql_base_model.py b/app/models/postgresql_base_model.py
index f139db8..b4b244e 100644
--- a/app/models/postgresql_base_model.py
+++ b/app/models/postgresql_base_model.py
@@ -7,7 +7,7 @@
DATABASE_URL = os.getenv('POSTGRESQL_DATABASE_URL') or settings.postgresql_database_url
-engine = create_async_engine(DATABASE_URL, echo=True)
+engine = create_async_engine(DATABASE_URL, echo=False)
PostgresqlSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, class_=AsyncSession)
PostgresqlBase = declarative_base()
diff --git a/app/models/public_api_model.py b/app/models/public_api_model.py
new file mode 100644
index 0000000..8edffde
--- /dev/null
+++ b/app/models/public_api_model.py
@@ -0,0 +1,61 @@
+from datetime import datetime
+from enum import IntEnum
+from typing import Optional
+
+from pydantic import BaseModel
+from sqlalchemy import Column, String, Enum as SQLAlchemyEnum, Integer, BigInteger, DateTime, Text, Float, Boolean
+from app.models.base_model import Base
+
+class AppType(IntEnum):
+ BASIC = 0
+ RAGFLOW = 1
+ BISHENG = 2
+
+
+
+class AppRegisterModel(Base):
+ __tablename__ = "app_register"
+ id = Column(String(36), primary_key=True)
+ name = Column(String(255))
+ status = Column(Integer, nullable=False, default=1)
+ created_at = Column(DateTime, default=datetime.now())
+ updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
+
+
+ # to_dict 鏂规硶
+ def to_dict(self):
+ return {
+ 'id': self.id,
+ 'name': self.name,
+ 'status': self.status
+ }
+
+
+class DfTokenModel(Base):
+ __tablename__ = "df_api_token"
+ id = Column(String(36), primary_key=True)
+ token = Column(String(36))
+ created_at = Column(DateTime, default=datetime.now())
+ updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
+
+
+ # to_dict 鏂规硶
+ def to_dict(self):
+ return {
+ 'id': self.id,
+ 'token': self.token,
+ 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
+ # 'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S')
+ }
+
+
+class DfToken(BaseModel):
+ image: Optional[str] = ""
+ clean: Optional[str] = ""
+ report: Optional[str] = ""
+
+
+class AppRegister(BaseModel):
+ rg: Optional[int] = 0
+ bs: Optional[int] = 0
+ df: Optional[int] = 0
diff --git a/app/models/token_model.py b/app/models/token_model.py
index 066c73e..2b50bfd 100644
--- a/app/models/token_model.py
+++ b/app/models/token_model.py
@@ -4,6 +4,8 @@
from sqlalchemy import Column, Integer, DateTime, Text
from sqlalchemy.orm import Session
+from Log import logger
+from app.config.const import RAGFLOW
from app.models.base_model import Base
@@ -52,5 +54,39 @@
db.rollback() # 鍥炴粴浜嬪姟
+async def update_token(db: Session, user_id: int, access_token: str, token: dict):
+ # 鍙傛暟楠岃瘉
+ if not isinstance(user_id, int) or user_id <= 0:
+ return
+ db_token = None
+ print(token)
+ try:
+ # 鏌ヨ鐜版湁璁板綍
+ db_token = db.query(TokenModel).filter_by(user_id=user_id).first()
+ if db_token:
+ # 璁板綍瀛樺湪锛岃繘琛屾洿鏂�
+ db_token.token = access_token
+ for k, v in token.items():
+ setattr(db_token, k.replace("app", "token"), v)
+ else:
+ # 璁板綍涓嶅瓨鍦紝杩涜鎻掑叆
+ db_token = TokenModel(
+ user_id=user_id,
+ token=access_token,
+ )
+ for k, v in token.items():
+ setattr(db_token, k.replace("app", "token"), v)
+ db.add(db_token)
+
+ # 鎻愪氦浜嬪姟
+ db.commit()
+ db.refresh(db_token)
+
+ except Exception as e:
+ logger.error(e)
+ # 寮傚父澶勭悊
+ db.rollback() # 鍥炴粴浜嬪姟
+
+
def get_token(db: Session, user_id: int) -> Type[TokenModel] | None:
return db.query(TokenModel).filter_by(user_id=user_id).first()
diff --git a/app/models/user.py b/app/models/user.py
index ab53067..daff50c 100644
--- a/app/models/user.py
+++ b/app/models/user.py
@@ -6,6 +6,7 @@
class UserCreate(BaseModel):
username: str
password: str
+ email: Optional[str] = ""
# 瀹氫箟璇锋眰浣撴ā鍨�
diff --git a/app/service/common/api_token.py b/app/service/common/api_token.py
new file mode 100644
index 0000000..636babb
--- /dev/null
+++ b/app/service/common/api_token.py
@@ -0,0 +1,48 @@
+from Log import logger
+from app.models import current_time
+from app.models.public_api_model import DfTokenModel
+from sqlalchemy.orm import Session
+from typing import Type
+
+
+class DfTokenDao:
+ def __init__(self, db: Session):
+ self.db = db
+
+ def get_token_by_id(self, api_id: str) -> Type[DfTokenModel] | None:
+ session = self.db.query(DfTokenModel).filter_by(id=api_id).first()
+ if session:
+ return session.token
+ return None
+
+ def update_token(self, api_id: str, token: str):
+
+ logger.error("鏇存柊鏁版嵁df api token---------------------------")
+ try:
+ self.db.query(DfTokenModel).filter(DfTokenModel.id==api_id).update({"token":token, "updated_at": current_time()})
+ self.db.commit()
+ except Exception as e:
+ logger.error(e)
+ self.db.rollback()
+ raise Exception("鏇存柊澶辫触锛�")
+
+ def insert_token(self, api_id: str, token: str):
+ logger.error("鏂板鏁版嵁df api token---------------------------")
+ new_session = DfTokenModel(
+ id=api_id,
+ token=token
+ )
+ self.db.add(new_session)
+ self.db.commit()
+ self.db.refresh(new_session)
+ return new_session
+
+
+ def update_and_insert_token(self, api_id: str, token: str):
+
+ logger.error("鏇存柊鎴栬�呮坊鍔犳暟鎹甦f api token---------------------------")
+ token_boj = self.get_token_by_id(api_id)
+ if token_boj:
+ self.update_token(api_id, token)
+ else:
+ self.insert_token(api_id, token)
diff --git a/app/service/common/app_register.py b/app/service/common/app_register.py
index 1ea947c..e30816b 100644
--- a/app/service/common/app_register.py
+++ b/app/service/common/app_register.py
@@ -1,12 +1,53 @@
-from app.models.app_model import AppRegisterModel
+from app.models.public_api_model import AppRegisterModel
+from Log import logger
+from app.models import current_time
+from sqlalchemy.orm import Session
+from typing import Type
-class AppRegister:
- app = AppRegisterModel
- def __init__(self, db):
+class AppRegisterDao:
+ def __init__(self, db: Session):
self.db = db
+ def get_app_by_id(self, api_id: str) -> Type[AppRegisterModel] | None:
+ session = self.db.query(AppRegisterModel).filter_by(id=api_id).first()
- def get_app(self):
+ return session
- return [i.app_type for i in self.db.query(self.app).filter_by(status=1).all()]
\ No newline at end of file
+ def update_app(self, app_id: str, status: int):
+
+ logger.error("鏇存柊鏁版嵁: app register---------------------------")
+ try:
+ self.db.query(AppRegisterModel).filter(AppRegisterModel.id==app_id).update({"status":status, "updated_at": current_time()})
+ self.db.commit()
+ except Exception as e:
+ logger.error(e)
+ self.db.rollback()
+ raise Exception("鏇存柊澶辫触锛�")
+
+ def insert_app(self, app_id: str, status: int):
+ logger.error("鏂板鏁版嵁: app register---------------------------")
+ new_session = AppRegisterModel(
+ id=app_id,
+ status=status
+ )
+ self.db.add(new_session)
+ self.db.commit()
+ self.db.refresh(new_session)
+ return new_session
+
+
+ def update_and_insert_app(self, app_id: str, status: int):
+
+ logger.error("鏇存柊鎴栬�呮坊鍔犳暟鎹�: app register---------------------------")
+ token_boj = self.get_app_by_id(app_id)
+ if token_boj:
+ self.update_app(app_id, status)
+ else:
+ self.insert_app(app_id, status)
+
+
+ def get_apps(self):
+ app_list = self.db.query(AppRegisterModel).filter_by(status=1).all()
+
+ return [i.to_dict() for i in app_list]
\ No newline at end of file
diff --git a/app/service/user.py b/app/service/user.py
index f5cc7ea..cd7a053 100644
--- a/app/service/user.py
+++ b/app/service/user.py
@@ -6,7 +6,7 @@
from app.models.user_model import UserModel
from Log import logger
from app.service.bisheng import BishengService
-from app.service.common.app_register import AppRegister
+from app.service.common.app_register import AppRegisterDao
from app.service.ragflow import RagflowService
from app.service.service_token import get_ragflow_token, get_bisheng_token, get_ragflow_new_token
@@ -104,7 +104,7 @@
try:
user = db.query(UserModel).filter(UserModel.id == user_id).first()
pwd = user.decrypted_password()
- for app_type in AppRegister(db).get_app():
+ for app_type in AppRegisterDao(db).get_app():
if app_type == AgentType.RAGFLOW:
token = await get_ragflow_new_token(db, user_id, app_type)
ragflow_service = RagflowService(settings.fwr_base_url)
diff --git a/app/task/sync_resources.py b/app/task/sync_resources.py
index 15ed55d..fca2ae8 100644
--- a/app/task/sync_resources.py
+++ b/app/task/sync_resources.py
@@ -5,7 +5,7 @@
from Log import logger
from app.config.config import settings
from app.models import AgentType
-from app.models.app_model import AppRegisterModel
+from app.models.public_api_model import AppRegisterModel
from app.models.base_model import get_db
from app.service.bisheng import BishengService
from app.service.ragflow import RagflowService
diff --git a/main.py b/main.py
index f07896a..ea704da 100644
--- a/main.py
+++ b/main.py
@@ -13,9 +13,10 @@
from app.api.files import router as files_router
from app.api.knowledge import knowledge_router
from app.api.organization import dept_router
+from app.api.public_api import public_api
from app.api.report import router as report_router
from app.api.resource import menu_router
-from app.api.sync_data import sync_router
+# from app.api.sync_data import sync_router
from app.api.user import user_router
from app.api.group import group_router
from app.api.role import role_router
@@ -71,7 +72,8 @@
app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
-app.include_router(sync_router, prefix='/api/sync', tags=["sync"])
+# app.include_router(sync_router, prefix='/api/sync', tags=["sync"])
+app.include_router(public_api, prefix='/v1/api', tags=["public_api"])
app.mount("/static", StaticFiles(directory="app/images"), name="static")
if __name__ == "__main__":
--
Gitblit v1.8.0