拆分快手轻量后端入口

This commit is contained in:
yml
2026-05-25 20:42:27 +08:00
parent d58d483944
commit db22ff691b
23 changed files with 1146 additions and 13 deletions
@@ -13,7 +13,6 @@ import { listTaskEventsByTaskId } from '../../repositories/task-event-repo.js'
import { getWebhookEventById, listWebhookEvents, listWebhookEventsByOrderId } from '../../repositories/webhook-event-repo.js'
import { createHttpError } from '../../utils/http.js'
import { formatFenToAmount, normalizeFen } from '../../utils/money.js'
import { getTencentBrowserSessionReviewScreenshotPath } from '../session/session.js'
import { normalizeDateQuery, normalizePage, normalizePageSize, safeParseJson } from './admin-query-utils.js'
import {
canViewerCloseTask,
@@ -322,10 +321,6 @@ export async function getAdminTaskScreenshotPath(
return task.screenshot_path
}
if (task.browser_session_id) {
return getTencentBrowserSessionReviewScreenshotPath(task.browser_session_id)
}
throw createHttpError('当前任务还没有可查看截图', {
statusCode: 404,
errorCode: 'admin_task_screenshot_not_found',
@@ -0,0 +1,28 @@
import { getTencentBrowserSessionReviewScreenshotPath } from '../session/session.js'
import { createHttpError } from '../../utils/http.js'
import { getRequiredTask } from './admin-task-read-helpers.js'
import type {
AdminEntityIdInput,
AdminViewerSessionInput,
} from '../../types/admin-read-inputs.js'
export async function getAdminTaskScreenshotPathWithTencentFallback(
taskId: AdminEntityIdInput,
_session: AdminViewerSessionInput | null = null,
): Promise<string> {
const task = await getRequiredTask(taskId)
if (task.screenshot_path) {
return task.screenshot_path
}
if (task.browser_session_id) {
return getTencentBrowserSessionReviewScreenshotPath(task.browser_session_id)
}
throw createHttpError('当前任务还没有可查看截图', {
statusCode: 404,
errorCode: 'admin_task_screenshot_not_found',
})
}
@@ -18,7 +18,9 @@ import {
prepareKuaishouCloudFulfillmentTask,
refreshKuaishouCloudTaskRoleInfo,
} from '../fulfillment/kuaishou-cloud-task-service.js'
import { getClaimContext, getClaimDetail } from './claim-session-service.js'
import { buildClaimDetailPayload } from './session/shared.js'
import { getClaimContext } from './session/context.js'
import { syncKuaishouCloudRoleInfo } from './kuaishou-cloud-sync-service.js'
const KUAISHOU_CLOUD_GUIDE_DIR = path.resolve(PROJECT_ROOT, '../../tems/imgs')
const ALLOWED_GUIDE_FILES = new Set(['1.png', '2.png', '3.png'])
@@ -132,7 +134,7 @@ export async function verifyKuaishouCloudClaimTicket(token: unknown, payload: Js
goodsTitle: String(detailResult.goods?.itemTitle || '').trim(),
}, now)
return getClaimDetail(token, { includeQrImage: false })
return getKuaishouCloudClaimDetail(token)
}
export async function getKuaishouCloudClaimGuideAssetPath(filename) {
@@ -155,6 +157,23 @@ export async function getKuaishouCloudClaimGuideAssetPath(filename) {
return filePath
}
export async function getKuaishouCloudClaimDetail(token: unknown) {
const context = await getClaimContext(token)
let task = context.task
if (String(task.executor_key || '').trim() === 'kuaishou_ct_assisted') {
task = await syncKuaishouCloudRoleInfo(task)
}
return buildClaimDetailPayload({
claimToken: context.claimToken,
task,
order: context.order,
orderItem: context.orderItem,
session: null,
})
}
function parseTaskContext(task) {
const rawValue = task?.context_json
if (!rawValue) {
@@ -184,7 +203,7 @@ export async function confirmKuaishouCloudClaimRole(token) {
}
if (['role_confirmed', 'dispatched_pending_return', 'completed'].includes(String(context.task.task_status || '').trim())) {
return getClaimDetail(token, { includeQrImage: false })
return getKuaishouCloudClaimDetail(token)
}
const refreshed = await refreshKuaishouCloudTaskRoleInfo(context.task, {
@@ -225,7 +244,7 @@ export async function confirmKuaishouCloudClaimRole(token) {
roleId: flow.binding.roleId,
}, now)
return getClaimDetail(token, { includeQrImage: false })
return getKuaishouCloudClaimDetail(token)
}
export async function redeemKuaishouCloudClaim(token) {
@@ -252,5 +271,5 @@ export async function redeemKuaishouCloudClaim(token) {
autoFinalize: true,
})
return getClaimDetail(token, { includeQrImage: false })
return getKuaishouCloudClaimDetail(token)
}