mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-07-09 06:21:35 +08:00
feat: 添加人脸探索功能,支持用户查看和管理人脸聚类
This commit is contained in:
66
Web/src/api/faceExploreApi.ts
Normal file
66
Web/src/api/faceExploreApi.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { fetchApi, type BaseResult } from './fetchClient';
|
||||
import type { FaceClusterResponse, UpdateClusterRequest } from './faceManagementApi';
|
||||
|
||||
// 获取当前用户的人脸聚类列表
|
||||
export async function getMyFaceClusters(
|
||||
page: number = 1,
|
||||
pageSize: number = 20
|
||||
): Promise<any> {
|
||||
const queryParams = new URLSearchParams();
|
||||
queryParams.append('page', page.toString());
|
||||
queryParams.append('pageSize', pageSize.toString());
|
||||
const url = `/face/clusters?${queryParams.toString()}`;
|
||||
const result = await fetchApi(url);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 根据聚类获取当前用户的图片
|
||||
export async function getMyPicturesByCluster(
|
||||
clusterId: number,
|
||||
page: number = 1,
|
||||
pageSize: number = 20
|
||||
): Promise<any> {
|
||||
const queryParams = new URLSearchParams();
|
||||
queryParams.append('page', page.toString());
|
||||
queryParams.append('pageSize', pageSize.toString());
|
||||
const url = `/face/clusters/${clusterId}/pictures?${queryParams.toString()}`;
|
||||
const result = await fetchApi(url);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 更新当前用户的人脸聚类信息
|
||||
export async function updateMyCluster(
|
||||
clusterId: number,
|
||||
data: UpdateClusterRequest
|
||||
): Promise<BaseResult<FaceClusterResponse>> {
|
||||
return fetchApi<FaceClusterResponse>(`/face/clusters/${clusterId}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
// 开始当前用户的人脸聚类
|
||||
export async function startMyFaceClustering(): Promise<BaseResult<boolean>> {
|
||||
return fetchApi<boolean>('/face/clusters/analyze', {
|
||||
method: 'POST',
|
||||
});
|
||||
}
|
||||
|
||||
// 合并当前用户的聚类
|
||||
export async function mergeMyUserClusters(
|
||||
targetClusterId: number,
|
||||
sourceClusterId: number
|
||||
): Promise<BaseResult<boolean>> {
|
||||
const data = { sourceClusterId };
|
||||
return fetchApi<boolean>(`/face/clusters/${targetClusterId}/merge`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
// 从聚类中移除人脸
|
||||
export async function removeFaceFromCluster(faceId: number): Promise<BaseResult<boolean>> {
|
||||
return fetchApi<boolean>(`/face/faces/${faceId}/cluster`, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user