/** * 用户同步管理接口(对齐 @photo/contracts tags [admin]:getUserSyncStatus / * listUserSyncRuns / triggerUserSyncRun / listUserSyncErrors) * * - status/runs/errors 为纯读;runs 为 startedAt+ID 倒序键集游标 * - POST runs → 202 受理(异步执行;运行中批次复用其 runId),结果经 * status/runs 轮询查询——页面侧的等待/轮询逻辑见 utils/system/syncPolling * - errors 按 runId 查单批次坏行明细(未知批次=空数组,契约无 404) */ import request from '@/utils/http' /** 同步引擎状态 + 最近批次计数 */ export function fetchUserSyncStatus() { return request.get({ url: '/v1/admin/user-sync/status' }) } /** 运行历史(游标分页) */ export function fetchUserSyncRuns(params: { cursor?: string; limit?: number }) { return request.get({ url: '/v1/admin/user-sync/runs', params }) } /** 手动触发同步补拉(202 受理;与定时共用互斥锁) */ export function fetchTriggerUserSyncRun() { return request.post({ url: '/v1/admin/user-sync/runs' }) } /** 单批次失败明细(runId 必填) */ export function fetchUserSyncErrors(runId: string) { return request.get({ url: '/v1/admin/user-sync/errors', params: { runId } }) }