Skip to content

Commit 8b9e03d

Browse files
committed
feat: update knowledge retrieval logic and optimize SQL queries for application listing
1 parent 40137f1 commit 8b9e03d

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

apps/knowledge/serializers/knowledge.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -236,31 +236,28 @@ def generate_related(self, instance: Dict, with_valid=True):
236236
def list_application(self, with_valid=True):
237237
if with_valid:
238238
self.is_valid(raise_exception=True)
239-
knowledge = QuerySet(Knowledge).get(id=self.data.get("knowledge_id"))
239+
# knowledge = QuerySet(Knowledge).get(id=self.data.get("knowledge_id"))
240240
return select_list(
241241
get_file_content(
242242
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge_application.sql')
243243
),
244244
[
245-
self.data.get('user_id') if self.data.get('user_id') == str(knowledge.user_id) else None,
246-
knowledge.user_id,
247-
self.data.get('user_id')
245+
self.data.get('user_id'),
248246
]
249247
)
250248

251249
def one(self):
252250
self.is_valid()
253251
query_set_dict = {
254252
'default_sql': QuerySet(
255-
model=get_dynamics_model({'temp.id': models.UUIDField()})
253+
model=get_dynamics_model({'temp.id': models.CharField()})
256254
).filter(**{'temp.id': self.data.get("knowledge_id")}),
257255
'knowledge_custom_sql': QuerySet(
258256
model=get_dynamics_model({'knowledge.user_id': models.CharField()})
259257
).filter(**{'knowledge.user_id': self.data.get("user_id")}),
258+
'folder_query_set': QuerySet(KnowledgeFolder)
260259
}
261-
# todo 这里需要优化
262-
# all_application_list = [str(adm.get('id')) for adm in self.list_application(with_valid=False)]
263-
all_application_list = []
260+
all_application_list = [str(adm.get('id')) for adm in self.list_application(with_valid=False)]
264261
return {
265262
**native_search(query_set_dict, select_string=get_file_content(
266263
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')), with_search_one=True),
@@ -555,7 +552,7 @@ def handler(child_link: ChildLink, response: Fork.Response):
555552
{'name': document_name, 'paragraphs': paragraphs,
556553
'meta': {'source_url': child_link.url.strip(),
557554
'selector': knowledge.meta.get('selector')},
558-
'type': Knowledge.WEB}, with_valid=True)
555+
'type': KnowledgeType.WEB}, with_valid=True)
559556
except Exception as e:
560557
logging.getLogger("max_kb_error").error(f'{str(e)}:{traceback.format_exc()}')
561558

apps/knowledge/sql/list_knowledge_application.sql

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,4 @@ SELECT
99
FROM
1010
application
1111
WHERE
12-
"id" IN (
13-
SELECT
14-
team_member_permission.target
15-
FROM
16-
team_member team_member
17-
LEFT JOIN team_member_permission team_member_permission ON team_member_permission.member_id = team_member."id"
18-
WHERE
19-
( "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 )
20-
)
12+
"id" in (select target from workspace_user_resource_permission where auth_target_type = 'APPLICATION' and 'VIEW' = any (permission_list))

0 commit comments

Comments
 (0)