mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-30 09:42:48 +00:00
feat: update knowledge retrieval logic and optimize SQL queries for application listing
This commit is contained in:
parent
40137f147b
commit
8b9e03d7cf
|
|
@ -236,15 +236,13 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||
def list_application(self, with_valid=True):
|
||||
if with_valid:
|
||||
self.is_valid(raise_exception=True)
|
||||
knowledge = QuerySet(Knowledge).get(id=self.data.get("knowledge_id"))
|
||||
# knowledge = QuerySet(Knowledge).get(id=self.data.get("knowledge_id"))
|
||||
return select_list(
|
||||
get_file_content(
|
||||
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge_application.sql')
|
||||
),
|
||||
[
|
||||
self.data.get('user_id') if self.data.get('user_id') == str(knowledge.user_id) else None,
|
||||
knowledge.user_id,
|
||||
self.data.get('user_id')
|
||||
self.data.get('user_id'),
|
||||
]
|
||||
)
|
||||
|
||||
|
|
@ -252,15 +250,14 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||
self.is_valid()
|
||||
query_set_dict = {
|
||||
'default_sql': QuerySet(
|
||||
model=get_dynamics_model({'temp.id': models.UUIDField()})
|
||||
model=get_dynamics_model({'temp.id': models.CharField()})
|
||||
).filter(**{'temp.id': self.data.get("knowledge_id")}),
|
||||
'knowledge_custom_sql': QuerySet(
|
||||
model=get_dynamics_model({'knowledge.user_id': models.CharField()})
|
||||
).filter(**{'knowledge.user_id': self.data.get("user_id")}),
|
||||
'folder_query_set': QuerySet(KnowledgeFolder)
|
||||
}
|
||||
# todo 这里需要优化
|
||||
# all_application_list = [str(adm.get('id')) for adm in self.list_application(with_valid=False)]
|
||||
all_application_list = []
|
||||
all_application_list = [str(adm.get('id')) for adm in self.list_application(with_valid=False)]
|
||||
return {
|
||||
**native_search(query_set_dict, select_string=get_file_content(
|
||||
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')), with_search_one=True),
|
||||
|
|
@ -555,7 +552,7 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||
{'name': document_name, 'paragraphs': paragraphs,
|
||||
'meta': {'source_url': child_link.url.strip(),
|
||||
'selector': knowledge.meta.get('selector')},
|
||||
'type': Knowledge.WEB}, with_valid=True)
|
||||
'type': KnowledgeType.WEB}, with_valid=True)
|
||||
except Exception as e:
|
||||
logging.getLogger("max_kb_error").error(f'{str(e)}:{traceback.format_exc()}')
|
||||
|
||||
|
|
|
|||
|
|
@ -9,12 +9,4 @@ SELECT
|
|||
FROM
|
||||
application
|
||||
WHERE
|
||||
"id" IN (
|
||||
SELECT
|
||||
team_member_permission.target
|
||||
FROM
|
||||
team_member team_member
|
||||
LEFT JOIN team_member_permission team_member_permission ON team_member_permission.member_id = team_member."id"
|
||||
WHERE
|
||||
( "team_member_permission"."auth_target_type" = 'APPLICATION' AND "team_member_permission"."operate"::text[] @> ARRAY['USE'] AND team_member.team_id = %s AND team_member.user_id =%s )
|
||||
)
|
||||
"id" in (select target from workspace_user_resource_permission where auth_target_type = 'APPLICATION' and 'VIEW' = any (permission_list))
|
||||
Loading…
Reference in New Issue