Merge remote-tracking branch 'origin/master'

master
zc 5 months ago
commit 6eacb3fc3b
  1. 1
      packages/dbgpt-serve/src/dbgpt_serve/agent/app/recommend_question/controller.py
  2. 24
      packages/dbgpt-serve/src/dbgpt_serve/agent/db/gpts_app.py
  3. 10
      packages/dbgpt-serve/src/dbgpt_serve/utils/auth.py
  4. 1
      packages/dbgpt-system/src/dbgpt_system/dept/dept_controller.py
  5. 32
      packages/dbgpt-system/src/dbgpt_system/dept/dept_db.py
  6. 2
      packages/dbgpt-system/src/dbgpt_system/login.py

@ -42,6 +42,7 @@ async def query(
RecommendQuestion(
valid=valid,
app_code=app_code,
user_code=user_info.user_id,
chat_mode=chat_mode,
is_hot_question=is_hot_question,
)

@ -1093,44 +1093,44 @@ class GptsAppDao(BaseDao):
"chat_dba", "chat_dashboard", "chat_excel"
"""
chat_normal_ctx = NativeTeamContext(
chat_scene="大模型问答",
scene_name="Chat Normal",
chat_scene="Chat Normal",
scene_name="大模型问答",
scene_describe="本地LLM对话",
param_title="",
show_disable=False,
)
chat_knowledge_ctx = NativeTeamContext(
chat_scene="知识库问答",
scene_name="Chat Knowledge",
chat_scene="Chat Knowledge",
scene_name="知识库问答",
scene_describe="私人知识库问答",
param_title="",
show_disable=False,
)
chat_with_db_qa_ctx = NativeTeamContext(
chat_scene="数据库问答",
scene_name="Chat DB",
chat_scene="Chat DB",
scene_name="数据库问答",
scene_describe="数据库元数据问答",
param_title="",
show_disable=False,
)
chat_with_db_execute_ctx = NativeTeamContext(
chat_scene="数据问答",
scene_name="chat_with_db_execute",
chat_scene="chat_with_db_execute",
scene_name="数据问答",
scene_describe="通过自然方式与您的私人数据进行对话"
" language",
param_title="",
show_disable=False,
)
chat_dashboard_ctx = NativeTeamContext(
chat_scene="数据仪表盘问答",
scene_name="Chat Dashboard",
chat_scene="Chat Dashboard",
scene_name="数据仪表盘问答",
scene_describe="为您提供专业的数据分析报告",
param_title="",
show_disable=False,
)
chat_excel_ctx = NativeTeamContext(
chat_scene="excel问答",
scene_name="Chat Excel",
chat_scene="Chat Excel",
scene_name="excel问答",
scene_describe="Excel自然语言分析",
param_title="",
show_disable=False,

@ -1,7 +1,7 @@
import logging
from typing import Optional
import json
from fastapi import Header
from fastapi import Header,HTTPException
from dataclasses import dataclass
from dbgpt._private.pydantic import BaseModel
from dbgpt.redis.redis import redis_add,redis_expire,redis_get
@ -20,7 +20,7 @@ class UserRequest(BaseModel):
email: Optional[str] = None
avatar_url: Optional[str] = None
nick_name_like: Optional[str] = None
dept_id: Optional[int] = None
@dataclass
class User:
@ -37,11 +37,11 @@ class User:
def get_user_from_headers(user_id: Optional[str] = Header(None),Authorization: Optional[str] = Header(None)):
try:
if Authorization is None:
raise Exception(f"登录已失效,请重新登录")
raise HTTPException(401,"登录已失效,请重新登录")
# 查询缓存信息
redis_data = redis_get("oauth_access_token:"+Authorization.replace("Bearer ", ""))
if redis_data is None:
raise Exception(f"登录已失效,请重新登录")
raise HTTPException(401,"登录已失效,请重新登录")
data_dict = json.loads(redis_data)
@ -60,4 +60,4 @@ def get_user_from_headers(user_id: Optional[str] = Header(None),Authorization: O
# )
except Exception as e:
logging.exception("Authentication failed!")
raise Exception(f"Authentication failed. {str(e)}")
raise HTTPException(401, "登录已失效,请重新登录")

@ -12,6 +12,7 @@ async def select_dept_list(
user_info: UserRequest = Depends(get_user_from_headers)
):
try:
dept.id = user_info.dept_id
res = deptDao.select_dept_list(dept)
return Result.succ(res)
except Exception as ex:

@ -7,10 +7,11 @@ from datetime import datetime
deptEntity = DeptEntity
userDao = UserDao
class DeptDao(BaseDao):
def select_dept_list( self,dept: Dept):
def select_dept_list(self, dept: Dept):
session = self.get_raw_session()
try:
dept_qry = session.query(DeptEntity).filter(DeptEntity.deleted == 0)
# 查询本级单位
dept_qry = session.query(DeptEntity).filter(DeptEntity.deleted == 0, DeptEntity.id == dept.id,)
if dept.name:
dept_qry = dept_qry.filter(
DeptEntity.name.like(f"%{dept.name}%")
@ -19,14 +20,35 @@ class DeptDao(BaseDao):
dept_qry = dept_qry.filter(
DeptEntity.status == dept.status
)
results = dept_qry.all()
parent_results = dept_qry.all()
# 初始化结果列表
all_depts = []
# 定义递归函数来查找子部门
def find_subdepartments(parent_id):
subdept_qry = session.query(DeptEntity).filter(
DeptEntity.parent_id == parent_id,
DeptEntity.deleted == 0
)
subdepts = subdept_qry.all()
for subdept in subdepts:
all_depts.append(subdept)
find_subdepartments(subdept.id)
# 遍历父部门并查找其子部门
for parent_dept in parent_results:
all_depts.append(parent_dept)
find_subdepartments(parent_dept.id)
finally:
session.close()
if results is not None:
if all_depts:
depts = []
dept_resp = DeptResponse()
for dept in results:
for dept in all_depts:
depts.append(
Dept.from_dict({
"id": dept.id,

@ -50,6 +50,8 @@ async def dologin( authLogin :AuthLogin):
# 验证密码
if not bcrypt.checkpw(authLogin.password.encode('utf-8'), rt.password.encode('utf-8')):
return Result.failed(code="301", msg=f"账号或密码错误,请重新输入")
# 获取用户权限
loginUser = {
"id": rt.id,
"username": rt.username,

Loading…
Cancel
Save