Files
crawler-plugin/frontend-vue/src/shared/api/endpoints.ts
T
huangzd1997 82a782550e feat(密钥): 用户 API 密钥服务端化——V115 按账号绑定存储 + 后台密钥管理页 + 桌面端全站拦截与配置引导
- 新增 usersecret 模块:外观专利/货源查询密钥从本地 localStorage 迁移至 biz_user_api_secret(AES 加密、按 uid 绑定)
- 后台「密钥管理」页:脱敏展示、立即检测、清空;每日 04:30 分布式锁定时巡检
- 桌面端:密钥设置面板走服务端、未配齐引导 /setup-secrets、代理余量展示
- 删除专利汇令牌全链路与密钥保留时长选择器
2026-09-13 10:03:59 +08:00

264 lines
12 KiB
TypeScript

/** Java 主后端 API 路径常量表(不含 /newApi/api 前缀,前缀由 buildJavaUrl 统一加) */
export const API_ENDPOINTS = {
files: {
upload: '/api/files/upload',
excelInfo: '/api/files/excel-info',
},
dedupe: {
run: '/api/dedupe/run',
runProgress: '/api/dedupe/run/{runId}/progress',
history: '/api/dedupe/history',
historyDelete: '/api/dedupe/history/{resultId}',
resultDownload: '/api/dedupe/results/{resultId}/download',
},
split: {
run: '/api/split/run',
history: '/api/split/history',
historyDelete: '/api/split/history/{resultId}',
resultDownload: '/api/split/results/{resultId}/download',
},
convert: {
run: '/api/convert/run',
history: '/api/convert/history',
historyDelete: '/api/convert/history/{resultId}',
templates: '/api/convert/templates',
templatesImport: '/api/convert/templates/import',
templateDefault: '/api/convert/templates/{templateCode}/default',
templateDelete: '/api/convert/templates/{templateCode}',
resultDownload: '/api/convert/results/{resultId}/download',
},
publish: {
parse: '/api/publish/parse',
taskActivate: '/api/publish/tasks/{taskId}/activate',
fileActivate: '/api/publish/tasks/{taskId}/files/{fileId}/activate',
items: '/api/publish/tasks/{taskId}/items',
progressBatch: '/api/publish/tasks/progress/batch',
progressLight: '/api/publish/tasks/progress/light',
result: '/api/publish/tasks/{taskId}/result',
dashboard: '/api/publish/dashboard',
history: '/api/publish/history',
taskDelete: '/api/publish/tasks/{taskId}',
},
deleteBrand: {
run: '/api/delete-brand/run',
history: '/api/delete-brand/history',
historyDelete: '/api/delete-brand/history/{resultId}',
taskDetail: '/api/delete-brand/tasks/{taskId}',
taskDetails: '/api/delete-brand/tasks/batch',
taskDownload: '/api/delete-brand/tasks/{taskId}/download',
resultDownload: '/api/delete-brand/results/{resultId}/download',
resultSubmit: '/api/delete-brand/tasks/{taskId}/result',
progressBatch: '/api/delete-brand/tasks/progress/batch',
progressLight: '/api/delete-brand/tasks/progress/light',
},
productRisk: {
candidates: '/api/product-risk-resolve/candidates',
candidateAdd: '/api/product-risk-resolve/candidates',
candidateDelete: '/api/product-risk-resolve/candidates/{id}',
countryPreference: '/api/product-risk-resolve/country-preference',
matchShops: '/api/product-risk-resolve/match-shops',
dashboard: '/api/product-risk-resolve/dashboard',
history: '/api/product-risk-resolve/history',
historyDelete: '/api/product-risk-resolve/history/{resultId}',
taskCreate: '/api/product-risk-resolve/tasks',
taskDelete: '/api/product-risk-resolve/tasks/{taskId}',
taskBatch: '/api/product-risk-resolve/tasks/batch',
progressBatch: '/api/product-risk-resolve/tasks/progress/batch',
progressLight: '/api/product-risk-resolve/tasks/progress/light',
pendingShopResult: '/api/product-risk-resolve/pending-shop-result',
resultDownload: '/api/product-risk-resolve/results/{resultId}/download',
},
shopMatch: {
candidates: '/api/shop-match/candidates',
candidateAdd: '/api/shop-match/candidates',
candidateDelete: '/api/shop-match/candidates/{id}',
countryPreference: '/api/shop-match/country-preference',
matchShops: '/api/shop-match/match-shops',
dashboard: '/api/shop-match/dashboard',
history: '/api/shop-match/history',
historyDelete: '/api/shop-match/history/{resultId}',
taskCreate: '/api/shop-match/tasks',
taskDelete: '/api/shop-match/tasks/{taskId}',
taskActivate: '/api/shop-match/tasks/{taskId}/activate',
stageFinished: '/api/shop-match/tasks/{taskId}/stage-finished',
taskBatch: '/api/shop-match/tasks/batch',
progressBatch: '/api/shop-match/tasks/progress/batch',
progressLight: '/api/shop-match/tasks/progress/light',
skipAsins: '/api/shop-match/tasks/{taskId}/skip-asins/paginated',
resultDownload: '/api/shop-match/results/{resultId}/download',
},
patrolDelete: {
candidates: '/api/patrol-delete/candidates',
candidateAdd: '/api/patrol-delete/candidates',
candidateDelete: '/api/patrol-delete/candidates/{id}',
conditions: '/api/patrol-delete/conditions',
conditionAdd: '/api/patrol-delete/conditions',
conditionDelete: '/api/patrol-delete/conditions/{id}',
matchShops: '/api/patrol-delete/match-shops',
dashboard: '/api/patrol-delete/dashboard',
history: '/api/patrol-delete/history',
historyDelete: '/api/patrol-delete/history/{resultId}',
progressBatch: '/api/patrol-delete/tasks/progress/batch',
progressLight: '/api/patrol-delete/tasks/progress/light',
taskCreate: '/api/patrol-delete/tasks',
taskDelete: '/api/patrol-delete/tasks/{taskId}',
taskResult: '/api/patrol-delete/tasks/{taskId}/result',
resultDownload: '/api/patrol-delete/results/{resultId}/download',
},
queryAsin: {
candidates: '/api/query-asin/candidates',
candidateAdd: '/api/query-asin/candidates',
candidateDelete: '/api/query-asin/candidates/{id}',
matchShops: '/api/query-asin/match-shops',
dashboard: '/api/query-asin/dashboard',
history: '/api/query-asin/history',
historyDelete: '/api/query-asin/history/{resultId}',
progressBatch: '/api/query-asin/tasks/progress/batch',
progressLight: '/api/query-asin/tasks/progress/light',
taskCreate: '/api/query-asin/tasks',
taskDelete: '/api/query-asin/tasks/{taskId}',
taskResult: '/api/query-asin/tasks/{taskId}/result',
resultDownload: '/api/query-asin/results/{resultId}/download',
},
shopDataCrawl: {
candidates: '/api/shop-data-crawl/candidates',
candidateAdd: '/api/shop-data-crawl/candidates',
candidateDelete: '/api/shop-data-crawl/candidates/{id}',
countryPreference: '/api/shop-data-crawl/country-preference',
matchShops: '/api/shop-data-crawl/match-shops',
dashboard: '/api/shop-data-crawl/dashboard',
history: '/api/shop-data-crawl/history',
historyDelete: '/api/shop-data-crawl/history/{resultId}',
progressBatch: '/api/shop-data-crawl/tasks/progress/batch',
progressLight: '/api/shop-data-crawl/tasks/progress/light',
taskCreate: '/api/shop-data-crawl/tasks',
taskDelete: '/api/shop-data-crawl/tasks/{taskId}',
resultDownload: '/api/shop-data-crawl/results/{resultId}/download',
},
withdraw: {
candidates: '/api/withdraw/candidates',
candidateAdd: '/api/withdraw/candidates',
candidateDelete: '/api/withdraw/candidates/{id}',
candidatesClear: '/api/withdraw/candidates/clear',
matchShops: '/api/withdraw/match-shops',
dashboard: '/api/withdraw/dashboard',
history: '/api/withdraw/history',
historyDelete: '/api/withdraw/history/{resultId}',
progressBatch: '/api/withdraw/tasks/progress/batch',
progressLight: '/api/withdraw/tasks/progress/light',
taskCreate: '/api/withdraw/tasks',
taskDelete: '/api/withdraw/tasks/{taskId}',
taskResult: '/api/withdraw/tasks/{taskId}/result',
resultDownload: '/api/withdraw/results/{resultId}/download',
},
priceTrack: {
candidates: '/api/price-track/candidates',
candidateAdd: '/api/price-track/candidates',
candidateDelete: '/api/price-track/candidates/{id}',
countryPreference: '/api/price-track/country-preference',
matchShops: '/api/price-track/match-shops',
taskCreate: '/api/price-track/tasks',
taskDelete: '/api/price-track/tasks/{taskId}',
tasksBatch: '/api/price-track/tasks/batch',
progressBatch: '/api/price-track/tasks/progress/batch',
progressLight: '/api/price-track/tasks/progress/light',
loopRuns: '/api/price-track/loop-runs',
loopRunDetail: '/api/price-track/loop-runs/{loopRunId}',
loopRunStop: '/api/price-track/loop-runs/{loopRunId}/stop',
loopRunDispatchNext: '/api/price-track/loop-runs/{loopRunId}/dispatch-next',
loopRunChildFinished: '/api/price-track/loop-runs/{loopRunId}/child-finished',
skipAsinCheck: '/api/price-track/tasks/{taskId}/skip-asin/check',
skipAsins: '/api/price-track/tasks/{taskId}/skip-asins/paginated',
pendingShopResult: '/api/price-track/pending-shop-result',
dispatchFailed: '/api/price-track/tasks/{taskId}/dispatch-failed',
dashboard: '/api/price-track/dashboard',
history: '/api/price-track/history',
historyDelete: '/api/price-track/history/{resultId}',
resultDownload: '/api/price-track/results/{resultId}/download',
},
similarAsin: {
parse: '/api/similar-asin/parse',
dashboard: '/api/similar-asin/dashboard',
history: '/api/similar-asin/history',
historyDelete: '/api/similar-asin/history/{resultId}',
progressBatch: '/api/similar-asin/tasks/progress/batch',
progressLight: '/api/similar-asin/tasks/progress/light',
taskActivate: '/api/similar-asin/tasks/{taskId}/activate',
taskDelete: '/api/similar-asin/tasks/{taskId}',
resultDownload: '/api/similar-asin/results/{resultId}/download',
},
appearancePatent: {
parse: '/api/appearance-patent/parse',
parsedPayload: '/api/appearance-patent/tasks/{taskId}/parsed-payload',
queuePayload: '/api/appearance-patent/tasks/{taskId}/queue-payload',
dashboard: '/api/appearance-patent/dashboard',
history: '/api/appearance-patent/history',
historyDelete: '/api/appearance-patent/history/{resultId}',
progressBatch: '/api/appearance-patent/tasks/progress/batch',
progressLight: '/api/appearance-patent/tasks/progress/light',
taskActivate: '/api/appearance-patent/tasks/{taskId}/activate',
taskDelete: '/api/appearance-patent/tasks/{taskId}',
resultDownload: '/api/appearance-patent/results/{resultId}/download',
},
userSecret: {
bundle: '/api/user-secrets',
save: '/api/user-secrets/{moduleKey}',
clear: '/api/user-secrets/{moduleKey}',
check: '/api/user-secrets/{moduleKey}/check',
migrate: '/api/user-secrets/migrate',
proxyBalance: '/api/user-secrets/proxy-balance',
},
collectData: {
parse: '/api/collect-data/parse',
countryPreference: '/api/collect-data/country-preference',
dashboard: '/api/collect-data/dashboard',
history: '/api/collect-data/history',
historyDelete: '/api/collect-data/history/{resultId}',
progressBatch: '/api/collect-data/tasks/progress/batch',
progressLight: '/api/collect-data/tasks/progress/light',
taskActivate: '/api/collect-data/tasks/{taskId}/activate',
taskDelete: '/api/collect-data/tasks/{taskId}',
fail: '/api/collect-data/tasks/{taskId}/fail',
items: '/api/collect-data/tasks/{taskId}/items',
resultDownload: '/api/collect-data/results/{resultId}/download',
},
imageVideo: {
workflowRun: '/api/image-video/workflow/run',
workflowResult: '/api/image-video/workflow/result',
secrets: '/api/image-video/secrets',
taskDetail: '/api/image-video/tasks/{taskId}',
voiceClone: '/api/image-video/voice/clone',
voiceList: '/api/image-video/voice/list',
voiceDelete: '/api/image-video/voice/delete',
voiceSynthesis: '/api/image-video/voice/synthesis',
douyinCopy: '/api/image-video/douyin-copy',
},
brand: {
run: '/api/brand/run',
expandFolder: '/api/brand/expand-folder',
expandFolderRecursive: '/api/brand/expand-folder-recursive',
taskDetail: '/api/brand/tasks/{taskId}',
taskCancel: '/api/brand/tasks/{taskId}/cancel',
taskDownload: '/api/brand/tasks/{taskId}/download',
taskEvents: '/api/brand/tasks/{taskId}/events',
},
permission: {
columnPermissions: '/api/admin/permission-users/{uid}/column-permissions',
},
digitalHuman: {
versions: '/api/digital-human/versions',
upload: '/api/digital-human/versions/upload',
latest: '/api/digital-human/versions/latest',
detail: '/api/digital-human/versions/{version}',
release: '/api/digital-human/versions/{version}/release',
setLatest: '/api/digital-human/versions/{version}/set-latest',
delete: '/api/digital-human/versions/{version}',
downloadUrl: '/api/digital-human/versions/{version}/download-url',
},
} as const
export type ApiEndpointGroup = {
[K in keyof typeof API_ENDPOINTS]: (typeof API_ENDPOINTS)[K][keyof (typeof API_ENDPOINTS)[K]]
}