增加 语法检验

This commit is contained in:
Twilight 2024-08-04 23:09:34 +08:00
parent faa846abdc
commit 2f9744d5a8
3 changed files with 128 additions and 3 deletions

View File

@ -4,6 +4,9 @@
<v-btn class="mt-3 mb-3" color="primary" @click="to('/tools/create')"
>创建工具</v-btn
>
<v-btn class="mt-3 mb-3 ml-3" color="primary" @click="to('/tools/validate')"
>工具语法检查</v-btn
>
<div class="mt-3">
<v-row>
@ -23,9 +26,9 @@
<p>主页地址: {{ tool.data?.homepage_url }}</p>
</v-card-text>
<v-card-actions>
<!-- <v-btn color="primary" @click="editAssistant(assistant)"
>编辑</v-btn
> -->
<v-btn color="primary" @click="updateToolData(tool.id ?? 0)"
>更新数据</v-btn
>
<v-btn color="error" @click="deleteTool(tool.id ?? 0)">
删除
</v-btn>
@ -60,6 +63,19 @@
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="toolUpdate.show" max-width="290" persistent>
<v-card>
<v-card-title class="headline">{{ toolUpdate.title }}</v-card-title>
<v-card-text>{{ toolUpdate.message }}</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="green darken-1" @click="toolUpdate.show = false"
>关闭</v-btn
>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script setup lang="ts">
@ -82,6 +98,11 @@ const failedDialog = ref({
show: false,
message: "创建失败",
});
const toolUpdate = ref({
show: false,
title: "",
message: "",
});
const selectedId = ref(0);
function deleteTool(id: number) {
@ -101,6 +122,26 @@ function deleteId() {
dialog.value = false;
}
function updateToolData(toolId: number) {
api.Tool.apiV1ToolsIdUpdatePost(toolId)
.then(() => {
toolUpdate.value.title = "更新成功";
toolUpdate.value.message = "工具数据已更新";
})
.catch((e) => {
console.error(e.response.data.error);
toolUpdate.value.title = "更新失败";
toolUpdate.value.message =
"工具数据更新失败,请打开开发者工具查看详细信息。";
})
.finally(() => {
toolUpdate.value.show = true;
refresh();
});
}
function to(path: string) {
router.push(path);
}

View File

@ -0,0 +1,83 @@
<template>
<h3>验证语法</h3>
<p>目前处于测试阶段不一定准确但是能保证你添加成功</p>
<!-- input -->
<v-textarea v-model="input" label="你的 JSON 数据"></v-textarea>
<v-btn color="primary" class="mt-3 mb-3" @click="validate()">验证</v-btn>
<div v-show="checked">
<p v-show="error" class="text-danger">错误{{ errorReason }}</p>
<p v-show="!error" class="text-success">正确</p>
</div>
</template>
<script setup lang="ts">
import { RagNewInternalSchemaToolDiscoveryInput } from '@/api'
import { api } from '@/plugins/api'
const exampleJSON = {
"name": "My Functions",
"description": "My Functions",
"homepage_url": "https://ivampiresp.com/test",
"callback_url": "https://ivampiresp.com/files/tool_test/index.php",
"functions": [
{
"name": "get_current_time",
"description": "当你想知道现在的时间时非常有用。",
"parameters": {}
},
{
"name": "get_current_weather",
"description": "当你想查询指定城市的天气时非常有用。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市或县区,比如北京市、杭州市、余杭区等。"
}
}
},
"required": [
"location"
]
}
]
}
const input = ref("")
const checked = ref(false)
const error = ref(false)
const errorReason = ref("")
// unmashal
input.value = JSON.stringify(exampleJSON, null, 4)
function validate() {
checked.value = true
// json
try {
JSON.parse(input.value)
} catch (e) {
error.value = true
errorReason.value = "JSON 格式错误"
return
}
//
const data: RagNewInternalSchemaToolDiscoveryInput = JSON.parse(input.value)
api.Tool.apiV1ToolsSyntaxPost(data).then((res) => {
error.value = false
errorReason.value = ""
}).catch((e) => {
error.value = true
errorReason.value = e.response.data.error
})
}
</script>

View File

@ -29,5 +29,6 @@ declare module 'vue-router/auto-routes' {
'/ping/': RouteRecordInfo<'/ping/', '/ping', Record<never, never>, Record<never, never>>,
'/tools/': RouteRecordInfo<'/tools/', '/tools', Record<never, never>, Record<never, never>>,
'/tools/create': RouteRecordInfo<'/tools/create', '/tools/create', Record<never, never>, Record<never, never>>,
'/tools/validate': RouteRecordInfo<'/tools/validate', '/tools/validate', Record<never, never>, Record<never, never>>,
}
}