Refa: Searches /search API to RESTFul (#13770)

### What problem does this PR solve?

Searches /search API to RESTFul

### Type of change

- [x] Documentation Update
- [x] Refactoring

Co-authored-by: Jin Hai <haijin.chn@gmail.com>
Co-authored-by: Yingfeng <yingfeng.zhang@gmail.com>
This commit is contained in:
Yongteng Lei
2026-03-26 01:07:41 +08:00
committed by GitHub
parent ea1430bec5
commit d19ca71b43
10 changed files with 494 additions and 218 deletions

View File

@ -4,7 +4,7 @@ import message from '@/components/ui/message';
import { useSetModalState } from '@/hooks/common-hooks';
import { useHandleSearchChange } from '@/hooks/logic-hooks';
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
import searchService, { searchServiceNext } from '@/services/search-service';
import searchService from '@/services/search-service';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { useDebounce } from 'ahooks';
import { useCallback, useState } from 'react';
@ -103,14 +103,13 @@ export const useFetchSearchList = () => {
},
],
queryFn: async () => {
const { data: response } = await searchServiceNext.getSearchList(
const { data: response } = await searchService.getSearchList(
{
params: {
keywords: debouncedSearchString,
page_size: pagination.pageSize,
page: pagination.current,
},
data: {},
},
true,
);
@ -203,24 +202,21 @@ export const useFetchSearchDetail = (tenantId?: string) => {
const [searchParams] = useSearchParams();
const shared_id = searchParams.get('shared_id');
const searchId = id || shared_id;
let param: { search_id: string | null; tenant_id?: string } = {
search_id: searchId,
};
if (shared_id) {
param = {
search_id: searchId,
tenant_id: tenantId,
};
}
const fetchSearchDetailFunc = shared_id
? searchService.getSearchDetailShare
: searchService.getSearchDetail;
const { data, isLoading, isError } = useQuery<SearchDetailResponse, Error>({
queryKey: ['searchDetail', searchId],
enabled: !shared_id || !!tenantId,
queryFn: async () => {
const { data: response } = await fetchSearchDetailFunc(param);
let res;
if (shared_id) {
res = await searchService.getSearchDetailShare(
{ params: { search_id: searchId, tenant_id: tenantId } },
true,
);
} else {
res = await searchService.getSearchDetail({ search_id: searchId });
}
const response = res.data;
if (response.code !== 0) {
throw new Error(response.message || 'Failed to fetch search detail');
}

View File

@ -1,6 +1,5 @@
import api from '@/utils/api';
import registerServer, { registerNextServer } from '@/utils/register-server';
import request from '@/utils/request';
import { registerNextServer } from '@/utils/register-server';
const {
createSearch,
@ -13,6 +12,7 @@ const {
getRelatedQuestionsShare,
getSearchDetailShare,
} = api;
const methods = {
createSearch: {
url: createSearch,
@ -20,16 +20,16 @@ const methods = {
},
getSearchList: {
url: getSearchList,
method: 'post',
method: 'get',
},
deleteSearch: { url: deleteSearch, method: 'post' },
deleteSearch: { url: deleteSearch, method: 'delete' },
getSearchDetail: {
url: getSearchDetail,
method: 'get',
},
updateSearchSetting: {
url: updateSearchSetting,
method: 'post',
method: 'put',
},
askShare: {
url: askShare,
@ -43,14 +43,13 @@ const methods = {
url: getRelatedQuestionsShare,
method: 'post',
},
getSearchDetailShare: {
url: getSearchDetailShare,
method: 'get',
},
} as const;
const searchService = registerServer<keyof typeof methods>(methods, request);
export const searchServiceNext =
registerNextServer<keyof typeof methods>(methods);
const searchService = registerNextServer<keyof typeof methods>(methods);
export const searchServiceNext = searchService;
export default searchService;

View File

@ -237,12 +237,15 @@ export default {
testMcpServer: `${api_host}/mcp_server/test_mcp`,
// next-search
createSearch: `${api_host}/search/create`,
getSearchList: `${api_host}/search/list`,
deleteSearch: `${api_host}/search/rm`,
getSearchDetail: `${api_host}/search/detail`,
createSearch: `${ExternalApi}${api_host}/searches`,
getSearchList: `${ExternalApi}${api_host}/searches`,
deleteSearch: (params: { search_id: string }) =>
`${ExternalApi}${api_host}/searches/${params.search_id}`,
getSearchDetail: (params: { search_id: string }) =>
`${ExternalApi}${api_host}/searches/${params.search_id}`,
getSearchDetailShare: `${ExternalApi}${api_host}/searchbots/detail`,
updateSearchSetting: `${api_host}/search/update`,
updateSearchSetting: (params: { search_id: string }) =>
`${ExternalApi}${api_host}/searches/${params.search_id}`,
askShare: `${ExternalApi}${api_host}/searchbots/ask`,
mindmapShare: `${ExternalApi}${api_host}/searchbots/mindmap`,
getRelatedQuestionsShare: `${ExternalApi}${api_host}/searchbots/related_questions`,

View File

@ -82,7 +82,7 @@ const API_WHITELIST = [
'/v1/dialog/set',
'/v1/canvas/set',
'/v1/canvas/setting',
'/v1/search/update',
'/api/v1/searches/',
'/api/v1/memories',
'/v1/kb/create',
'/v1/kb/update',