Skip to content

Commit 11d8c6f

Browse files
authored
fix: 修改已知bug(#30)
* fix: 刷新公共访问链接后,客户端统计重置 * fix: 导出未提交的sql文件 * fix: 创建 MaxKB 在线文档的知识库,只能获取根地址数据,子地址数据无法获取
1 parent 8e018a1 commit 11d8c6f

File tree

8 files changed

+96
-27
lines changed

8 files changed

+96
-27
lines changed

apps/application/serializers/application_serializers.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -209,15 +209,16 @@ def auth(self, request, with_valid=True):
209209
access_token = self.data.get("access_token")
210210
application_access_token = QuerySet(ApplicationAccessToken).filter(access_token=access_token).first()
211211
if application_access_token is not None and application_access_token.is_active:
212-
if token is None or (token_details is not None and 'client_id' not in token_details) or (
213-
token_details is not None and token_details.get(
214-
'access_token') != application_access_token.access_token):
212+
if token_details is not None and 'client_id' in token_details and token_details.get(
213+
'client_id') is not None:
214+
client_id = token_details.get('client_id')
215+
else:
215216
client_id = str(uuid.uuid1())
216-
token = signing.dumps({'application_id': str(application_access_token.application_id),
217-
'user_id': str(application_access_token.application.user.id),
218-
'access_token': application_access_token.access_token,
219-
'type': AuthenticationType.APPLICATION_ACCESS_TOKEN.value,
220-
'client_id': client_id})
217+
token = signing.dumps({'application_id': str(application_access_token.application_id),
218+
'user_id': str(application_access_token.application.user.id),
219+
'access_token': application_access_token.access_token,
220+
'type': AuthenticationType.APPLICATION_ACCESS_TOKEN.value,
221+
'client_id': client_id})
221222
return token
222223
else:
223224
raise NotFound404(404, "无效的access_token")
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
SELECT
2+
application_chat."id" as chat_id,
3+
application_chat.abstract as abstract,
4+
application_chat_record_temp.problem_text as problem_text,
5+
application_chat_record_temp.answer_text as answer_text,
6+
application_chat_record_temp.message_tokens as message_tokens,
7+
application_chat_record_temp.answer_tokens as answer_tokens,
8+
application_chat_record_temp.run_time as run_time,
9+
application_chat_record_temp.details::JSON as details,
10+
application_chat_record_temp."index" as "index",
11+
application_chat_record_temp.improve_paragraph_list as improve_paragraph_list,
12+
application_chat_record_temp.vote_status as vote_status,
13+
application_chat_record_temp.create_time as create_time
14+
FROM
15+
application_chat application_chat
16+
LEFT JOIN (
17+
SELECT COUNT
18+
( "id" ) AS chat_record_count,
19+
SUM ( CASE WHEN "vote_status" = '0' THEN 1 ELSE 0 END ) AS star_num,
20+
SUM ( CASE WHEN "vote_status" = '1' THEN 1 ELSE 0 END ) AS trample_num,
21+
SUM ( CASE WHEN array_length( application_chat_record.improve_paragraph_id_list, 1 ) IS NULL THEN 0 ELSE array_length( application_chat_record.improve_paragraph_id_list, 1 ) END ) AS mark_sum,
22+
chat_id
23+
FROM
24+
application_chat_record
25+
GROUP BY
26+
application_chat_record.chat_id
27+
) chat_record_temp ON application_chat."id" = chat_record_temp.chat_id
28+
LEFT JOIN (
29+
SELECT
30+
*,
31+
CASE
32+
WHEN array_length( application_chat_record.improve_paragraph_id_list, 1 ) IS NULL THEN
33+
'{}' ELSE ( SELECT ARRAY_AGG ( row_to_json ( paragraph ) ) FROM paragraph WHERE "id" = ANY ( application_chat_record.improve_paragraph_id_list ) )
34+
END as improve_paragraph_list
35+
FROM
36+
application_chat_record application_chat_record
37+
) application_chat_record_temp ON application_chat_record_temp.chat_id = application_chat."id"

apps/common/handle/impl/text_split_handle.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import re
1010
from typing import List
1111

12-
import chardet
12+
from charset_normalizer import detect
1313

1414
from common.handle.base_split_handle import BaseSplitHandle
1515
from common.util.split_model import SplitModel
@@ -26,7 +26,7 @@ def support(self, file, get_buffer):
2626
file_name: str = file.name.lower()
2727
if file_name.endswith(".md") or file_name.endswith('.txt'):
2828
return True
29-
result = chardet.detect(buffer)
29+
result = detect(buffer)
3030
if result['encoding'] != 'ascii' and result['confidence'] > 0.5:
3131
return True
3232
return False
@@ -38,7 +38,7 @@ def handle(self, file, pattern_list: List, with_filter: bool, limit: int, get_bu
3838
else:
3939
split_model = SplitModel(default_pattern_list, with_filter=with_filter, limit=limit)
4040
try:
41-
content = buffer.decode(chardet.detect(buffer)['encoding'])
41+
content = buffer.decode(detect(buffer)['encoding'])
4242
except BaseException as e:
4343
return {'name': file.name,
4444
'content': []}

apps/common/util/fork.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
import traceback
55
from functools import reduce
66
from typing import List, Set
7-
from urllib.parse import urljoin, urlparse, ParseResult, urlsplit
7+
from urllib.parse import urljoin, urlparse, ParseResult, urlsplit, urlunparse
88

9-
import chardet
109
import html2text as ht
1110
import requests
1211
from bs4 import BeautifulSoup
@@ -44,6 +43,13 @@ def fork_child(child_link: ChildLink, selector_list: List[str], level: int, excl
4443
ForkManage.fork_child(child_link, selector_list, level - 1, exclude_link_url, fork_handler)
4544

4645

46+
def remove_fragment(url: str) -> str:
47+
parsed_url = urlparse(url)
48+
modified_url = ParseResult(scheme=parsed_url.scheme, netloc=parsed_url.netloc, path=parsed_url.path,
49+
params=parsed_url.params, query=parsed_url.query, fragment=None)
50+
return urlunparse(modified_url)
51+
52+
4753
class Fork:
4854
class Response:
4955
def __init__(self, content: str, child_link_list: List[ChildLink], status, message: str):
@@ -61,6 +67,7 @@ def error(message: str):
6167
return Fork.Response('', [], 500, message)
6268

6369
def __init__(self, base_fork_url: str, selector_list: List[str]):
70+
base_fork_url = remove_fragment(base_fork_url)
6471
self.base_fork_url = urljoin(base_fork_url if base_fork_url.endswith("/") else base_fork_url + '/', '.')
6572
parsed = urlsplit(base_fork_url)
6673
query = parsed.query
@@ -74,9 +81,11 @@ def __init__(self, base_fork_url: str, selector_list: List[str]):
7481
fragment='').geturl()
7582

7683
def get_child_link_list(self, bf: BeautifulSoup):
77-
pattern = "^((?!(http:|https:|tel:/|#|mailto:|javascript:))|" + self.base_fork_url + ").*"
84+
pattern = "^((?!(http:|https:|tel:/|#|mailto:|javascript:))|" + self.base_fork_url + "|/).*"
7885
link_list = bf.find_all(name='a', href=re.compile(pattern))
79-
result = [ChildLink(link.get('href'), link) for link in link_list]
86+
result = [ChildLink(link.get('href'), link) if link.get('href').startswith(self.base_url) else ChildLink(
87+
self.base_url + link.get('href'), link) for link in link_list]
88+
result = [row for row in result if row.url.startswith(self.base_fork_url)]
8089
return result
8190

8291
def get_content_html(self, bf: BeautifulSoup):
@@ -122,9 +131,18 @@ def reset_beautiful_soup(self, bf: BeautifulSoup):
122131

123132
@staticmethod
124133
def get_beautiful_soup(response):
125-
encoding = response.encoding if response.encoding and response.encoding != 'ISO-8859-1' is not None else response.apparent_encoding
134+
encoding = response.encoding if response.encoding is not None and response.encoding != 'ISO-8859-1' else response.apparent_encoding
126135
html_content = response.content.decode(encoding)
127-
return BeautifulSoup(html_content, "html.parser")
136+
beautiful_soup = BeautifulSoup(html_content, "html.parser")
137+
meta_list = beautiful_soup.find_all('meta')
138+
charset_list = [meta.attrs.get('charset') for meta in meta_list if
139+
meta.attrs is not None and 'charset' in meta.attrs]
140+
if len(charset_list) > 0:
141+
charset = charset_list[0]
142+
if charset != encoding:
143+
html_content = response.content.decode(charset)
144+
return BeautifulSoup(html_content, "html.parser")
145+
return beautiful_soup
128146

129147
def fork(self):
130148
try:

apps/dataset/serializers/document_serializers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@
3030
from common.util.field_message import ErrMessage
3131
from common.util.file_util import get_file_content
3232
from common.util.fork import Fork
33-
from common.util.split_model import SplitModel, get_split_model
33+
from common.util.split_model import get_split_model
3434
from dataset.models.data_set import DataSet, Document, Paragraph, Problem, Type, Status, ProblemParagraphMapping
3535
from dataset.serializers.common_serializers import BatchSerializer, MetaSerializer
3636
from dataset.serializers.paragraph_serializers import ParagraphSerializers, ParagraphInstanceSerializer
3737
from smartdoc.conf import PROJECT_DIR
38-
import chardet
3938

4039

4140
class DocumentEditInstanceSerializer(ApiMixin, serializers.Serializer):

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ jieba = "^0.42.1"
1717
diskcache = "^5.6.3"
1818
pillow = "^10.2.0"
1919
filetype = "^1.2.0"
20-
chardet = "^5.2.0"
2120
torch = "^2.2.1"
2221
sentence-transformers = "^2.2.2"
2322
blinker = "^1.6.3"
@@ -30,7 +29,6 @@ html2text = "^2024.2.26"
3029
langchain-openai = "^0.0.8"
3130
django-ipware = "^6.0.4"
3231
django-apscheduler = "^0.6.2"
33-
chardet2 = "^2.0.3"
3432
pymupdf = "^1.24.0"
3533
python-docx = "^1.1.0"
3634
xlwt = "^1.3.0"

ui/src/api/log.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ const exportChatLog: (
3838
exportExcel(applicantion_name, `${prefix}/${applicaiton_id}/chat/export`, param, loading)
3939
}
4040

41+
const exportChatLog: (
42+
applicaiton_id: string,
43+
applicantion_name: string,
44+
param: any,
45+
loading?: Ref<boolean>
46+
) => void = (applicaiton_id, applicantion_name, param, loading) => {
47+
exportExcel(applicantion_name, `${prefix}/${applicaiton_id}/chat/export`, param, loading)
48+
}
49+
4150
/**
4251
* 删除日志
4352
* @param 参数 applicaiton_id, chat_id,

ui/src/components/app-charts/components/LineCharts.vue

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<script lang="ts" setup>
55
import { onMounted, nextTick, watch, onBeforeUnmount } from 'vue'
66
import * as echarts from 'echarts'
7+
import { numberFormat } from '@/utils/utils'
78
const props = defineProps({
89
id: {
910
type: String,
@@ -57,12 +58,13 @@ function initChart() {
5758
},
5859
tooltip: {
5960
trigger: 'axis',
60-
axisPointer: {
61-
type: 'cross',
62-
label: {
63-
backgroundColor: '#6a7985'
64-
}
65-
}
61+
valueFormatter: (value: any) => numberFormat(value)
62+
// axisPointer: {
63+
// type: 'cross',
64+
// label: {
65+
// backgroundColor: '#6a7985'
66+
// }
67+
// }
6668
},
6769
legend: {
6870
right: 0,
@@ -89,6 +91,11 @@ function initChart() {
8991
lineStyle: {
9092
color: '#EFF0F1'
9193
}
94+
},
95+
axisLabel: {
96+
formatter: (value: any) => {
97+
return numberFormat(value)
98+
}
9299
}
93100
},
94101
series: series

0 commit comments

Comments
 (0)