可信代码库-AI大模型首页推荐问题接口及对话搜索功能对接

This commit is contained in:
付民康
2025-06-09 16:42:07 +08:00
parent 582c2f377d
commit 79d9f23326
3 changed files with 75 additions and 34 deletions

View File

@@ -19,7 +19,8 @@
</template>
<script setup>
import { ref } from 'vue';
import { nextTick, onMounted, ref } from 'vue';
import axios from 'axios';
const emits = defineEmits(['submit']);
@@ -28,26 +29,51 @@ const iconUrl = 'https://example.com/icon.png';
// 初始化问题列表
const questions = ref([
'获取代码行数超过100万行的前10款软件',
'查找v0.15.5版本的livebook软件详情',
'获取5个安全评分低于30的高风险软件',
'查询下载量前10的恶意包',
'查询金融行业软件的高危漏洞修复方案',
'统计不同业务领域的平均安全评分',
// '获取代码行数超过100万行的前10款软件',
// '查找v0.15.5版本的livebook软件详情',
// '获取5个安全评分低于30的高风险软件',
// '查询下载量前10的恶意包',
// '查询金融行业软件的高危漏洞修复方案',
// '统计不同业务领域的平均安全评分',
// '危险和严重的个人预警通知',
// '我的订阅列表'
]);
// 换一批问题的函数
const changeQuestions = () => {
// 这里可以实现从后端获取新问题列表的逻辑
// 示例中简单地更新问题列表
questions.value = [
'热门数据库软件有哪些',
'数据库软件的选型',
'代码漏洞检测方法',
'性能优化策略'
];
fetchFollowupQuestions()
};
onMounted(() => {
fetchFollowupQuestions()
})
const VITE_AI_API_HOST = import.meta.env.VITE_AI_API_HOST;
// 猜你想问接口
const fetchFollowupQuestions = async (question,df_id,sql_id='') => {
debugger
try {
// 构造请求参数(需根据实际文档补充 df_id 和 sql_id示例中使用空字符串占位
const params = {
questions: questions.value,
// df_id: df_id || '', // 使用当前会话ID若无则为空
// sql_id: sql_id || '' // 同上
};
const response = await axios.post(
`${VITE_AI_API_HOST}/api/v0/update_recommend_questions`,
params
);
debugger
const createRes = response.data;
if (createRes&&createRes.questions) {
questions.value = createRes.questions
} else {
// Message.error('创建会话失败未获取到会话ID');
}
} catch (error) {
console.error('查询相关问题失败:', error);
// Message.error('创建会话失败,请重试');
}
};
</script>

View File

@@ -14,8 +14,8 @@
v-if="dhlsList.length>0"
class="jyh-table"
:data="dhlsList"
row-key="id"
@check-change="handleCheckChange('dhls')"
row-key="conversationId"
@check-change="handleCheckChange"
:pagination="false"
:indent="32"
>
@@ -60,8 +60,8 @@
v-if="collectionList.length>0"
class="jyh-table"
:data="collectionList"
row-key="id"
@check-change="handleCheckChange('scdh')"
row-key="conversationId"
@check-change="handleCheckChange"
:pagination="false"
:indent="32"
>
@@ -107,6 +107,20 @@
<d-button @click="handleCancel">取消</d-button>
</div>
</template>
<!-- 删除组件 -->
<GModal
v-model="deletevModels"
ref="deleteModal"
title="删除?"
@confirm="confirmDelete"
showWarnIcon
confirmColor="danger"
>
<span class="inline-block text-G900 text-sm font-normal leading-[20px] break-all"
>你确认批量删除对话 </span
>
</GModal>
</d-modal>
</template>
@@ -115,9 +129,11 @@ import { ref, computed, watch } from 'vue';
import axios from 'axios';
import { Message } from 'vue-devui/message';
import NoData from '@/components/NoData/NoData.vue';
import { GModal } from '@/components/Setting/index';
// 接收父组件传递的用户名
const props = defineProps(['username']);
const emits = defineEmits(['loadData']);
// 模态框状态
const visible = ref(false);
@@ -250,8 +266,9 @@ const handlePageChange = async (page) => {
// 选中的行ID
const selectedRowKeys = ref([]);
// 复选框选中状态变化
const handleCheckChange = (tabType, checkedKeys) => {
selectedRowKeys.value = checkedKeys;
const handleCheckChange = (checked, row, selection) => {
debugger
selectedRowKeys.value = selection.map(i=> i.conversationId);
};
const initData = async () => {
@@ -279,6 +296,7 @@ const handleDelete = async (conversationIds, tabType) => {
// 刷新当前标签页的数据
initData()
selectedRowKeys.value = []; // 清空选中项
emits('loadData')
} else {
Message.error(res.data.message || '删除失败');
}
@@ -288,22 +306,19 @@ const handleDelete = async (conversationIds, tabType) => {
}
};
const deletevModels = ref(false);
// 批量删除
const handleBatchDelete = () => {
if (!selectedRowKeys.value.length) {
Message.warning('请先选择要删除的对话');
return;
}
// 确认删除提示
Message.confirm({
title: '确认删除',
content: `确定要删除选中的 ${selectedRowKeys.value.length} 条对话吗?`,
onConfirm: async () => {
await handleDelete(selectedRowKeys.value, selectTab.value === 'dhls' ? 'history' : 'collection');
}
});
deletevModels.value = true
};
const confirmDelete = async () => {
await handleDelete(selectedRowKeys.value, selectTab.value === 'dhls' ? 'history' : 'collection');
};
// 关闭模态框
const handleCancel = () => {

View File

@@ -2,7 +2,7 @@
<Card class="ViewHistoryAside">
<d-tabs class="jyh-tabs-4" type="wrapped" v-model="selectTab">
<d-tab id="dhls" title="对话历史">
<d-search icon-position="left" style="width: 100%" placeholder="请输入搜索软件名称" v-model="searchText" @change="loadData"></d-search>
<d-search icon-position="left" style="width: 100%" placeholder="请输入搜索软件名称" v-model="searchText" @change="loadData" @search="loadData"></d-search>
<!-- 可滚动内容区域 -->
<div class="scrollable-content">
<d-collapse class="jyh-collapse" v-model="collapseValue">
@@ -116,12 +116,12 @@
</template>
批量管理
</d-button>
<BatchManageModal :username="props.username" ref="BatchManageModalRef"/>
<BatchManageModal :username="props.username" @loadData="loadData" ref="BatchManageModalRef"/>
</div>
</div>
</d-tab>
<d-tab id="scdh" title="收藏对话">
<d-search icon-position="left" style="width: 100%" placeholder="请输入搜索软件名称" v-model="searchText" @change="loadData"></d-search>
<d-search icon-position="left" style="width: 100%" placeholder="请输入搜索软件名称" v-model="searchText" @change="loadData" @search="loadData"></d-search>
<!-- 可滚动内容区域 -->
<div class="scrollable-content">
<d-collapse class="jyh-collapse" v-model="collapseValue">
@@ -230,7 +230,7 @@
</template>
批量管理
</d-button>
<BatchManageModal :username="props.username" ref="BatchManageModalRef"/>
<BatchManageModal :username="props.username" @loadData="loadData" ref="BatchManageModalRef"/>
</div>
</div>
</d-tab>