From 8dd46ee860752b70ff87a0c05cc92d341c4f89ab Mon Sep 17 00:00:00 2001 From: junjun Date: Tue, 15 Jul 2025 17:50:32 +0800 Subject: [PATCH] feat: data permission --- backend/apps/chat/task/llm.py | 4 ++-- frontend/src/views/ds/DatasourceForm.vue | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/apps/chat/task/llm.py b/backend/apps/chat/task/llm.py index ffb4736b..9a7b5613 100644 --- a/backend/apps/chat/task/llm.py +++ b/backend/apps/chat/task/llm.py @@ -497,7 +497,7 @@ class LLMService: filters.append({"table": table.table_name, "filter": wheres}) filter = json.dumps(filters, ensure_ascii=False) - # filter = f"""[{{"table":"{tables[0]}","filter":"省份 = '广东省' or 销售额(万元) > 10000"}}]""" # todo get filters + self.chat_question.sql = sql self.chat_question.filter = filter msg: List[Union[BaseMessage, dict[str, Any]]] = [] @@ -746,7 +746,7 @@ def run_task(llm_service: LLMService, in_chat: bool = True): # todo row permission sql_json_str = extract_nested_json(full_sql_text) data = orjson.loads(sql_json_str) - sql_result = llm_service.generate_filter(data['sql'], data['tables']) + sql_result = llm_service.generate_filter(data['sql'], data['tables']) # maybe no sql and tables print(sql_result) sql = llm_service.check_save_sql(res=sql_result) # sql = llm_service.check_save_sql(res=full_sql_text) diff --git a/frontend/src/views/ds/DatasourceForm.vue b/frontend/src/views/ds/DatasourceForm.vue index b813b0d3..323a4c56 100644 --- a/frontend/src/views/ds/DatasourceForm.vue +++ b/frontend/src/views/ds/DatasourceForm.vue @@ -34,7 +34,11 @@ const tableList = ref([]) const excelUploadSuccess = ref(false) const tableListLoading = ref(false) const token = wsCache.get('user.token') -const headers = ref({ 'X-SQLBOT-TOKEN': `Bearer ${token}` }) +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-expect-error +// eslint-disable-next-line no-undef +const request_key = LicenseGenerator.generate() +const headers = ref({ 'X-SQLBOT-TOKEN': `Bearer ${token}`, 'X-SQLBOT-KEY': request_key }) const dialogTitle = ref('') const getUploadURL = import.meta.env.VITE_API_BASE_URL + '/datasource/uploadExcel' const saveLoading = ref(false)