task-11: 拆分 dedupe 模块 API 至 types/modules/dedupe.ts(callJava+buildJavaUrl 化),java-modules.ts 改 re-export 保持旧 import 兼容

This commit is contained in:
2026-08-31 19:27:39 +08:00
parent 22422bc9d2
commit a4ca9d5a19
6 changed files with 240 additions and 68 deletions
@@ -0,0 +1,19 @@
import { buildJavaUrl } from './url.ts'
import { getCurrentUserId } from './user.ts'
export function getJavaDownloadUrl(path: string) {
let raw =
path.startsWith("http://") || path.startsWith("https://")
? path
: buildJavaUrl(path);
// pywebview 的 save_file_from_url_new 需要完整且带 schema 的 URL
if (
!raw.startsWith("http://") &&
!raw.startsWith("https://") &&
typeof window !== "undefined"
) {
raw = `${window.location.origin}${raw}`;
}
const separator = raw.includes("?") ? "&" : "?";
return `${raw}${separator}user_id=${encodeURIComponent(String(getCurrentUserId()))}`;
}
+5 -68
View File
@@ -6,9 +6,11 @@
put,
type JavaApiResponse,
unwrapJavaResponse,
} from "@/shared/api/http";
import { getTaskProgressCacheTtlMs, getTaskProgressTimeoutMs } from "@/shared/task-progress-config";
import { createTaskProgressRequestCache } from "@/shared/task-progress-request-cache";
} from "./http.ts";
import { getTaskProgressCacheTtlMs, getTaskProgressTimeoutMs } from "../task-progress-config.ts";
import { createTaskProgressRequestCache } from "../task-progress-request-cache.ts";
export * from "./types/modules/dedupe.ts";
const JAVA_API_PREFIX = "/newApi/api";
@@ -142,35 +144,6 @@ export async function uploadTempFileToJava(
return response.data
}
export interface DedupeResultItem {
resultId?: number;
sourceFilename: string;
outputFilename?: string;
success: boolean;
error?: string;
downloadUrl?: string;
}
export interface DedupeRunVo {
total: number;
successCount: number;
failedCount: number;
items: DedupeResultItem[];
}
export interface DedupeHistoryVo {
items: DedupeResultItem[];
}
export interface DedupeRunRequest {
files: UploadedFileRef[];
selectedColumns: string[];
keepIntegerIds: boolean;
keepUnderscoreIds: boolean;
keepIntegerMainIdsWhenNoSubIds: boolean;
archiveName?: string;
user_id: number;
}
export interface SplitArchiveEntry {
filename: string;
@@ -416,42 +389,6 @@ export function getExcelInfo(fileKey: string) {
);
}
export function runDedupe(
request: Omit<DedupeRunRequest, "user_id"> | DedupeRunRequest,
) {
return unwrapJavaResponse(
post<JavaApiResponse<DedupeRunVo>, DedupeRunRequest>(
`${JAVA_API_PREFIX}/dedupe/run`,
{
...request,
user_id: getCurrentUserId(),
},
),
);
}
export function getDedupeHistory() {
return unwrapJavaResponse(
get<JavaApiResponse<DedupeHistoryVo>>(`${JAVA_API_PREFIX}/dedupe/history`, {
params: { user_id: getCurrentUserId() },
}),
);
}
export function deleteDedupeHistory(resultId: number) {
return unwrapJavaResponse(
del<JavaApiResponse<null>>(
`${JAVA_API_PREFIX}/dedupe/history/${resultId}`,
{
params: { user_id: getCurrentUserId() },
},
),
);
}
export function getDedupeResultDownloadUrl(resultId: number) {
return getJavaDownloadUrl(`/dedupe/results/${resultId}/download`);
}
export function runSplit(
request: Omit<SplitRunRequest, "user_id"> | SplitRunRequest,
@@ -0,0 +1,78 @@
import { get, post, del, type JavaApiResponse, unwrapJavaResponse } from '../../http.ts'
import { buildJavaUrl } from '../../url.ts'
import { getCurrentUserId } from '../../user.ts'
import { getJavaDownloadUrl } from '../../download-url.ts'
import type { UploadedFileRef } from '../upload.ts'
import { API_ENDPOINTS } from '../../endpoints.ts'
export interface DedupeResultItem {
resultId?: number;
sourceFilename: string;
outputFilename?: string;
success: boolean;
error?: string;
downloadUrl?: string;
}
export interface DedupeRunVo {
total: number;
successCount: number;
failedCount: number;
items: DedupeResultItem[];
}
export interface DedupeHistoryVo {
items: DedupeResultItem[];
}
export interface DedupeRunRequest {
files: UploadedFileRef[];
selectedColumns: string[];
keepIntegerIds: boolean;
keepUnderscoreIds: boolean;
keepIntegerMainIdsWhenNoSubIds: boolean;
archiveName?: string;
user_id: number;
}
export function runDedupe(
request: Omit<DedupeRunRequest, "user_id"> | DedupeRunRequest,
) {
return unwrapJavaResponse(
post<JavaApiResponse<DedupeRunVo>, DedupeRunRequest>(
buildJavaUrl(API_ENDPOINTS.dedupe.run),
{
...request,
user_id: getCurrentUserId(),
},
),
);
}
export function getDedupeHistory() {
return unwrapJavaResponse(
get<JavaApiResponse<DedupeHistoryVo>>(
buildJavaUrl(API_ENDPOINTS.dedupe.history),
{
params: { user_id: getCurrentUserId() },
},
),
);
}
export function deleteDedupeHistory(resultId: number) {
return unwrapJavaResponse(
del<JavaApiResponse<null>>(
buildJavaUrl(API_ENDPOINTS.dedupe.historyDelete.replace('{resultId}', String(resultId))),
{
params: { user_id: getCurrentUserId() },
},
),
);
}
export function getDedupeResultDownloadUrl(resultId: number) {
return getJavaDownloadUrl(
API_ENDPOINTS.dedupe.resultDownload.replace('{resultId}', String(resultId)),
);
}
@@ -0,0 +1,5 @@
export interface UploadedFileRef {
fileKey: string;
originalFilename?: string;
relativePath?: string;
}
+11
View File
@@ -0,0 +1,11 @@
export function getCurrentUserId() {
const raw =
typeof window === "undefined"
? ""
: window.localStorage.getItem("uid") || "";
const value = Number(raw);
if (!Number.isFinite(value) || value <= 0) {
throw new Error("未获取到用户ID");
}
return value;
}