ソースを参照

Merge branch 'master' of http://192.168.5.5:10010/r/rag-gateway

zhaoqingang 1 年間 前
コミット
b2a5cf3f47

+ 2 - 1
app/service/role.py

@@ -1,6 +1,7 @@
 import uuid
 
 from Log import logger
+from app.config.const import DEPT_STATUS_ON
 from app.models import OrganizationModel
 from app.models.resource_model import ResourceModel
 from app.models.role_model import RoleModel
@@ -16,7 +17,7 @@ async def role_list(db, page_size: int, page_index: int, keyword: str, role_key:
     total = query.count()
     roles = query.order_by(RoleModel.created_at.desc()).limit(page_size).offset(
         (page_index - 1) * page_size).all()
-    return {"total": total, "rows":  [role.to_json() for role in roles]}
+    return {"total": total, "rows":  [role.to_json() for role in roles if role.status == DEPT_STATUS_ON]}
 
 
 async def create_role(db, role_name: str, description: str, role_key, data_scope, user_id):

+ 9 - 10
app/service/user.py

@@ -332,8 +332,8 @@ async def get_user_permission(db,  user_id):
     knowledge_dict = {}
     user = db.query(UserModel).filter_by(id=user_id).first()
     parent_id = ""
-    # print(111111111111111)
-    async def role_resource(role_set, permissions, roles):
+
+    async def role_resource_type(role_set, permissions, roles, type):
         nonlocal parent_id
         for role in roles:
             if role.id not in role_set:
@@ -341,20 +341,19 @@ async def get_user_permission(db,  user_id):
 
                 for r in role.resources:
                     if r.resource_type_id != "1":
-                    #     if not r.resource_id:
-                    #         parent_id = r.id
-                    #         continue
-                        permissions[r.id] = r.to_router_dict()
+                        permission_dict = r.to_router_dict()
+                        permission_dict["type"] = type
+                        permissions[r.id] = permission_dict
 
-    await role_resource(role_set, permissions, user.roles)
+    await role_resource_type(role_set, permissions, user.roles, "user")
     for ogt in user.organizations:
         if ogt.roles:
-            await role_resource(role_set, permissions, ogt.roles)
+            await role_resource_type(role_set, permissions, ogt.roles, "org")
         parent_ogt = ogt.parent
         while parent_ogt:
 
             if parent_ogt.id not in dept_set:
-                await role_resource(role_set, permissions, parent_ogt.roles)
+                await role_resource_type(role_set, permissions, parent_ogt.roles, "org")
                 dept_set.add(parent_ogt.id)
 
                 parent_ogt = parent_ogt.parent
@@ -385,7 +384,7 @@ async def get_user_permission(db,  user_id):
 async def get_user_dept(db, user_id):
     res = {}
     user = db.query(UserModel).filter_by(id=user_id).first()
-    res["rows"] = [i.to_dict() for i in user.organizations]
+    res["rows"] = [i.to_dict() for i in user.organizations if i.status == DEPT_STATUS_ON]
     return res
 
 

+ 21 - 0
app/task/delete_execl_file.py

@@ -0,0 +1,21 @@
+import os.path
+from datetime import datetime, timedelta
+
+
+def delete_file_after_delay():
+    path = "data/output"
+    data_dir = os.path.dirname(path)
+    if not os.path.exists(data_dir):
+        return
+    if not os.path.exists(path):
+        return
+    now = datetime.now()
+    five_minutes_ago = now - timedelta(minutes=5)
+    for filename in os.listdir(path):
+        file_path = os.path.join(path, filename)
+        if os.path.isfile(file_path):
+            creation_time = os.path.getctime(file_path)
+            file_creation_datetime = datetime.fromtimestamp(creation_time)
+            if file_creation_datetime < five_minutes_ago:
+                os.remove(file_path)
+                print(f"定时删除文件: {file_path}")

+ 1 - 1
app/task/fetch_agent.py

@@ -483,7 +483,7 @@ def sync_resources_from_json():
                 import_type_table(db, node)
             print("add resourceType record successfully")
         else:
-            print("sync resources successfully")
+            print("sync resourcesType successfully")
         if db.query(ResourceModel).count() == 0:
             with open(os.path.join(ENV_CONF_PATH, "resource.json"), 'r', encoding='utf-8') as file:
                 json_data = json.load(file)

+ 7 - 8
app/utils/excelmerge/conformity.py

@@ -2,8 +2,8 @@ import os
 import random
 import shutil
 import string
-from datetime import datetime
 
+from datetime import datetime
 from openpyxl import load_workbook
 
 
@@ -65,17 +65,16 @@ def run_conformity(file_path, print_path):
         template_excel.save(output_path)
         template_excel.close()
 
-        # 合并完成后删除无用文件
-        for filename in os.listdir(file_path):
-            file_path_full = os.path.join(file_path, filename)
-            try:
+        try:
+            for filename in os.listdir(file_path):
+                file_path_full = os.path.join(file_path, filename)
                 if os.path.isfile(file_path_full) or os.path.islink(file_path_full):
                     os.unlink(file_path_full)
                 elif os.path.isdir(file_path_full):
                     shutil.rmtree(file_path_full)
-                os.rmdir(file_path)
-            except Exception as e:
-                print(f"删除文件时发生错误: {e}")
+            os.rmdir(file_path)
+        except Exception as e:
+            print(f"删除文件时发生错误: {e}")
 
         return file_name
     except Exception as e:

+ 2 - 0
main.py

@@ -23,6 +23,7 @@ from app.api.user import user_router
 from app.api.group import group_router
 from app.api.role import role_router
 from app.models.base_model import init_db
+from app.task.delete_execl_file import delete_file_after_delay
 # from app.models.base_model import init_db
 from app.task.fetch_agent import sync_agents, initialize_agents, sync_agents_v2, sync_knowledge, \
     sync_resources_from_json
@@ -66,6 +67,7 @@ app = FastAPI(
 # 创建调度器
 scheduler = BackgroundScheduler()
 scheduler.add_job(sync_agents_v2, 'interval', minutes=60, id="sync_resource_data")
+scheduler.add_job(delete_file_after_delay, 'interval', minutes=10, id="delete_file_after_delay")
 scheduler.start()
 
 app.include_router(auth_router, prefix='/api/auth', tags=["auth"])