Skip to content

Commit 2abf05f

Browse files
Merge branch 'main' of https://github.com/maxkb-dev/maxkb
2 parents f38af7f + 72db45b commit 2abf05f

File tree

37 files changed

+421
-169
lines changed

37 files changed

+421
-169
lines changed

apps/application/flow/step_node/document_extract_node/impl/base_document_extract_node.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ def bytes_to_uploaded_file(file_bytes, file_name="file.txt"):
4040
class BaseDocumentExtractNode(IDocumentExtractNode):
4141
def save_context(self, details, workflow_manage):
4242
self.context['content'] = details.get('content')
43-
self.answer_text = details.get('content')
4443

4544

4645
def execute(self, document, chat_id, **kwargs):

apps/application/flow/step_node/search_dataset_node/i_search_dataset_node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def _run(self):
6666
if self.flow_params_serializer.data.get('re_chat', False):
6767
history_chat_record = self.flow_params_serializer.data.get('history_chat_record', [])
6868
paragraph_id_list = [p.get('id') for p in flat_map(
69-
[get_paragraph_list(chat_record, self.node.id) for chat_record in history_chat_record if
69+
[get_paragraph_list(chat_record, self.runtime_node_id) for chat_record in history_chat_record if
7070
chat_record.problem_text == question])]
7171
exclude_paragraph_id_list = list(set(paragraph_id_list))
7272

apps/locales/en_US/LC_MESSAGES/django.po

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6761,3 +6761,6 @@ msgstr ""
67616761

67626762
msgid "AI reply: "
67636763
msgstr ""
6764+
6765+
msgid "The network is busy, try again later."
6766+
msgstr ""

apps/locales/zh_CN/LC_MESSAGES/django.po

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6900,3 +6900,6 @@ msgstr "思考过程: "
69006900

69016901
msgid "AI reply: "
69026902
msgstr "AI 回复: "
6903+
6904+
msgid "The network is busy, try again later."
6905+
msgstr "网络繁忙,请稍后再试。"

apps/locales/zh_Hant/LC_MESSAGES/django.po

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6911,4 +6911,7 @@ msgid "Think: "
69116911
msgstr "思考過程: "
69126912

69136913
msgid "AI reply: "
6914-
msgstr "AI 回覆: "
6914+
msgstr "AI 回覆: "
6915+
6916+
msgid "The network is busy, try again later."
6917+
msgstr "網絡繁忙,請稍後再試。"

ui/src/components/ai-chat/component/answer-content/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ function showSource(row: any) {
122122
return false
123123
}
124124
const regenerationChart = (chat: chatType) => {
125-
props.sendMessage(chat.problem_text, { rechat: true })
125+
props.sendMessage(chat.problem_text, { re_chat: true })
126126
}
127127
const stopChat = (chat: chatType) => {
128128
props.chatManagement.stop(chat.id)

ui/src/components/ai-chat/component/operation-button/ChatOperationButton.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ import applicationApi from '@/api/application'
8686
import { datetimeFormat } from '@/utils/time'
8787
import { MsgError } from '@/utils/message'
8888
import { t } from '@/locales'
89+
import bus from '@/bus'
8990
const route = useRoute()
9091
const {
9192
params: { id }
@@ -277,6 +278,11 @@ const pausePlayAnswerText = () => {
277278
}
278279
279280
onMounted(() => {
281+
bus.on('pause-autoplay', () => {
282+
pausePlayAnswerText()
283+
// console.log(1234)
284+
})
285+
bus.emit('pause-autoplay')
280286
// 第一次回答后自动播放, 打开历史记录不自动播放
281287
if (props.tts && props.tts_autoplay && buttonData.value.write_ed && !buttonData.value.update_time) {
282288
playAnswerText(buttonData.value.answer_text)

ui/src/components/ai-chat/component/user-form/index.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
<el-icon class="mr-8 arrow-icon" :class="showUserInput ? 'rotate-90' : ''"
1717
><CaretRight
1818
/></el-icon>
19+
<span class="break-all ellipsis-1 mr-16" :title="inputFieldConfig.title">
1920
{{ inputFieldConfig.title }}
21+
</span>
2022
</div>
2123
<el-scrollbar max-height="160">
2224
<el-collapse-transition>

ui/src/components/dynamics-form/constructor/data.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ const input_type_list = [
44
label: t('dynamicsForm.input_type_list.TextInput'),
55
value: 'TextInput'
66
},
7+
{
8+
label: t('dynamicsForm.input_type_list.PasswordInput'),
9+
value: 'PasswordInput'
10+
},
711
{
812
label: t('dynamicsForm.input_type_list.Slider'),
913
value: 'Slider'
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
<template>
2+
<el-form-item :label="$t('dynamicsForm.TextInput.length.label')" required>
3+
<el-row class="w-full">
4+
<el-col :span="11">
5+
<el-form-item
6+
:rules="[
7+
{
8+
required: true,
9+
message: $t('dynamicsForm.TextInput.length.minRequired'),
10+
trigger: 'change'
11+
}
12+
]"
13+
prop="minlength"
14+
>
15+
<el-input-number
16+
style="width: 100%"
17+
:min="1"
18+
:step="1"
19+
step-strictly
20+
v-model="formValue.minlength"
21+
controls-position="right"
22+
/>
23+
</el-form-item>
24+
</el-col>
25+
<el-col :span="2" class="text-center">
26+
<span>-</span>
27+
</el-col>
28+
<el-col :span="11">
29+
<el-form-item
30+
:rules="[
31+
{
32+
required: true,
33+
message: $t('dynamicsForm.TextInput.length.maxRequired'),
34+
trigger: 'change'
35+
}
36+
]"
37+
prop="maxlength"
38+
>
39+
<el-input-number
40+
style="width: 100%"
41+
:min="formValue.minlength > formValue.maxlength ? formValue.minlength : 1"
42+
step-strictly
43+
:step="1"
44+
v-model="formValue.maxlength"
45+
controls-position="right"
46+
/>
47+
</el-form-item>
48+
</el-col>
49+
</el-row>
50+
</el-form-item>
51+
52+
<el-form-item
53+
class="defaultValueItem"
54+
:required="formValue.required"
55+
prop="default_value"
56+
:label="$t('dynamicsForm.default.label')"
57+
:rules="
58+
formValue.required ? [{ required: true, message: `${$t('dynamicsForm.default.label')}${$t('dynamicsForm.default.requiredMessage')}` }, ...rules] : rules
59+
"
60+
>
61+
<div class="defaultValueCheckbox">
62+
<el-checkbox
63+
v-model="formValue.show_default_value"
64+
:label="$t('dynamicsForm.default.show')"
65+
/>
66+
</div>
67+
68+
<el-input
69+
v-model="formValue.default_value"
70+
:maxlength="formValue.maxlength"
71+
:minlength="formValue.minlength"
72+
:placeholder="$t('dynamicsForm.default.placeholder')"
73+
show-word-limit
74+
type="password"
75+
show-password
76+
/>
77+
</el-form-item>
78+
</template>
79+
<script setup lang="ts">
80+
import { computed, onMounted, watch } from 'vue'
81+
import { t } from '@/locales'
82+
83+
const props = defineProps<{
84+
modelValue: any
85+
}>()
86+
const emit = defineEmits(['update:modelValue'])
87+
const formValue = computed({
88+
set: (item) => {
89+
emit('update:modelValue', item)
90+
},
91+
get: () => {
92+
return props.modelValue
93+
}
94+
})
95+
watch(
96+
() => formValue.value.minlength,
97+
() => {
98+
if (formValue.value.minlength > formValue.value.maxlength) {
99+
formValue.value.maxlength = formValue.value.minlength
100+
}
101+
}
102+
)
103+
const getData = () => {
104+
return {
105+
input_type: 'PasswordInput',
106+
attrs: {
107+
maxlength: formValue.value.maxlength,
108+
minlength: formValue.value.minlength,
109+
'show-word-limit': true,
110+
type: 'password',
111+
'show-password': true
112+
},
113+
default_value: formValue.value.default_value,
114+
show_default_value: formValue.value.show_default_value,
115+
props_info: {
116+
rules: formValue.value.required
117+
? [
118+
{
119+
required: true,
120+
message: `${formValue.value.label} ${t('dynamicsForm.default.requiredMessage')}`
121+
},
122+
{
123+
min: formValue.value.minlength,
124+
max: formValue.value.maxlength,
125+
message: `${formValue.value.label}${t('dynamicsForm.TextInput.length.requiredMessage1')} ${formValue.value.minlength} ${t('dynamicsForm.TextInput.length.requiredMessage2')} ${formValue.value.maxlength} ${t('dynamicsForm.TextInput.length.requiredMessage3')}`,
126+
trigger: 'blur'
127+
}
128+
]
129+
: [
130+
{
131+
min: formValue.value.minlength,
132+
max: formValue.value.maxlength,
133+
message: `${formValue.value.label}${t('dynamicsForm.TextInput.length.requiredMessage1')} ${formValue.value.minlength} ${t('dynamicsForm.TextInput.length.requiredMessage2')} ${formValue.value.maxlength} ${t('dynamicsForm.TextInput.length.requiredMessage3')}`,
134+
trigger: 'blur'
135+
}
136+
]
137+
}
138+
}
139+
}
140+
const rander = (form_data: any) => {
141+
const attrs = form_data.attrs || {}
142+
formValue.value.minlength = attrs.minlength
143+
formValue.value.maxlength = attrs.maxlength
144+
formValue.value.default_value = form_data.default_value
145+
formValue.value.show_default_value = form_data.show_default_value
146+
formValue.value.show_password = attrs['show-password']
147+
}
148+
const rangeRules = [
149+
{
150+
required: true,
151+
validator: (rule: any, value: any, callback: any) => {
152+
if (!formValue.value.minlength) {
153+
callback(new Error(t('dynamicsForm.TextInput.length.requiredMessage4')))
154+
}
155+
if (!formValue.value.maxlength) {
156+
callback(new Error(t('dynamicsForm.TextInput.length.requiredMessage4')))
157+
}
158+
return true
159+
},
160+
message: `${formValue.value.label} ${t('dynamicsForm.default.requiredMessage')}`
161+
}
162+
]
163+
const rules = computed(() => [
164+
{
165+
min: formValue.value.minlength,
166+
max: formValue.value.maxlength,
167+
message: `${t('dynamicsForm.TextInput.length.requiredMessage1')} ${formValue.value.minlength} ${t('dynamicsForm.TextInput.length.requiredMessage2')} ${formValue.value.maxlength} ${t('dynamicsForm.TextInput.length.requiredMessage3')}`,
168+
trigger: 'blur'
169+
}
170+
])
171+
172+
defineExpose({ getData, rander })
173+
onMounted(() => {
174+
formValue.value.minlength = 0
175+
formValue.value.maxlength = 20
176+
formValue.value.default_value = ''
177+
formValue.value.show_password = true
178+
179+
if (formValue.value.show_default_value === undefined) {
180+
formValue.value.show_default_value = true
181+
}
182+
})
183+
</script>
184+
<style lang="scss" scoped>
185+
.defaultValueItem {
186+
position: relative;
187+
188+
.defaultValueCheckbox {
189+
position: absolute;
190+
right: 0;
191+
top: -35px;
192+
}
193+
}
194+
</style>

0 commit comments

Comments
 (0)