refactor(*): 稳定期治理 - 收敛核心架构、错误语义并修复跨项目数据竞态

This commit is contained in:
ddCat
2026-09-09 22:02:10 +08:00
parent bacd502f5c
commit b5f3413ded
298 changed files with 12681 additions and 26428 deletions

View File

@@ -1,8 +1,7 @@
import type { Asset } from "@/stores/use-asset-store";
import type { CanvasProject } from "@/stores/canvas/use-canvas-store";
import { apiClient, compactApiParams, request } from "@/services/api/request";
import { http, compactApiParams } from "@/services/api/request";
const api = apiClient;
export type RemoteUserDataSummary = {
id: string;
@@ -43,84 +42,84 @@ export type CanvasLibrarySummary = Pick<CanvasProject, "id" | "projectId" | "tit
};
export function listRemoteCanvasProjectsPage(options: { page: number; pageSize: number; projectId?: string; query?: string; sort?: string; signal?: AbortSignal }) {
return request<{ projects: CanvasLibrarySummary[]; page: number; pageSize: number; total: number; hasMore: boolean }>(api.get("/canvas-projects", {
return http.get<{ projects: CanvasLibrarySummary[]; page: number; pageSize: number; total: number; hasMore: boolean }>("/canvas-projects", {
signal: options.signal,
params: compactApiParams({ page: options.page, page_size: options.pageSize, project_id: options.projectId, q: options.query, sort: options.sort }),
}));
params: compactApiParams({ page: options.page, pageSize: options.pageSize, projectId: options.projectId, q: options.query, sort: options.sort }),
});
}
export function getRemoteUserDataSnapshot() {
return request<RemoteUserDataSnapshot>(api.get("/user-data/snapshot"));
return http.get<RemoteUserDataSnapshot>("/user-data/snapshot");
}
export function listRemoteAssets() {
return request<{ assets: RemoteUserDataSummary[] }>(api.get("/assets"));
return http.get<{ assets: RemoteUserDataSummary[] }>("/assets");
}
export function listRemoteAssetsPage(options: { page: number; pageSize: number; kind?: string; category?: string; folderId?: string; uncategorized?: boolean; status?: string; query?: string; signal?: AbortSignal }) {
return request<RemoteAssetPage>(api.get("/assets", {
return http.get<RemoteAssetPage>("/assets", {
signal: options.signal,
params: compactApiParams({
page: options.page,
page_size: options.pageSize,
pageSize: options.pageSize,
kind: options.kind,
category: options.category,
folder_id: options.folderId,
folderId: options.folderId,
uncategorized: options.uncategorized ? 1 : undefined,
status: options.status,
q: options.query,
}),
}));
});
}
export function listAssetFolders() {
return request<{ folders: AssetFolder[] }>(api.get("/asset-folders"));
return http.get<{ folders: AssetFolder[] }>("/asset-folders");
}
export function createAssetFolder(name: string) {
return request<{ folder: AssetFolder }>(api.post("/asset-folders", { name }));
return http.post<{ folder: AssetFolder }>("/asset-folders", { name });
}
export function updateAssetFolder(id: string, name: string) {
return request<{ folder: AssetFolder }>(api.patch(`/asset-folders/${encodeURIComponent(id)}`, { name }));
return http.patch<{ folder: AssetFolder }>(`/asset-folders/${encodeURIComponent(id)}`, { name });
}
export function deleteAssetFolder(id: string) {
return request<{ id: string }>(api.delete(`/asset-folders/${encodeURIComponent(id)}`));
return http.delete<{ id: string }>(`/asset-folders/${encodeURIComponent(id)}`);
}
export function moveRemoteAssetsToFolder(assetIds: string[], folderId = "") {
return request<{ assetIds: string[]; folderId: string }>(api.patch("/assets/folder", { assetIds, folderId }));
return http.patch<{ assetIds: string[]; folderId: string }>("/assets/folder", { assetIds, folderId });
}
export function getRemoteAsset(id: string) {
return request<{ asset: Asset }>(api.get(`/assets/${encodeURIComponent(id)}`));
return http.get<{ asset: Asset }>(`/assets/${encodeURIComponent(id)}`);
}
export function getRemoteAssetsByIds(ids: string[]) {
return request<{ assets: Asset[] }>(api.post("/assets/batch", { ids }));
return http.post<{ assets: Asset[] }>("/assets/batch", { ids });
}
export function upsertRemoteAsset(asset: Asset) {
return request<{ asset: RemoteUserDataSummary }>(api.put(`/assets/${encodeURIComponent(asset.id)}`, { asset }));
return http.put<{ asset: RemoteUserDataSummary }>(`/assets/${encodeURIComponent(asset.id)}`, { asset });
}
export function deleteRemoteAsset(id: string) {
return request<{ id: string }>(api.delete(`/assets/${encodeURIComponent(id)}`));
return http.delete<{ id: string }>(`/assets/${encodeURIComponent(id)}`);
}
export function listRemoteCanvasProjects() {
return request<{ projects: RemoteUserDataSummary[] }>(api.get("/canvas-projects"));
return http.get<{ projects: RemoteUserDataSummary[] }>("/canvas-projects");
}
export function getRemoteCanvasProject(id: string) {
return request<{ project: CanvasProject }>(api.get(`/canvas-projects/${encodeURIComponent(id)}`));
return http.get<{ project: CanvasProject }>(`/canvas-projects/${encodeURIComponent(id)}`);
}
export function upsertRemoteCanvasProject(project: CanvasProject) {
return request<{ project: RemoteUserDataSummary }>(api.put(`/canvas-projects/${encodeURIComponent(project.id)}`, { project }));
return http.put<{ project: RemoteUserDataSummary }>(`/canvas-projects/${encodeURIComponent(project.id)}`, { project });
}
export function deleteRemoteCanvasProject(id: string) {
return request<{ id: string }>(api.delete(`/canvas-projects/${encodeURIComponent(id)}`));
return http.delete<{ id: string }>(`/canvas-projects/${encodeURIComponent(id)}`);
}