收紧后端 TypeScript:统一 Json 类型与 TaskContext 契约

关闭 allowJs;集中 JsonObject 定义并替换分散 any 别名;parseTaskContext 返回 TaskContext;任务详情 API 标注 AdminTaskDetailView;测试减少 as any。
This commit is contained in:
yml2213
2026-07-10 15:52:05 +08:00
parent e7244eaa5e
commit 8bcd9bbd81
79 changed files with 415 additions and 259 deletions
@@ -3,6 +3,7 @@ import { getTaskById, updateTask, updateTaskStatusIfCurrent } from '../../reposi
import { createHttpError } from '../../utils/http.js'
import { parseTaskContext as parseTaskContextValue } from '../../utils/task-json.js'
import { addHours, nowIso } from '../../utils/time.js'
import { asJsonObject, type JsonObject } from '../../types/json.js'
import {
TASK_STATUS,
canRedeemKuaishouCloudClaimStatus,
@@ -29,7 +30,6 @@ import { buildClaimDetailPayload, getClaimContext } from './kuaishou-cloud-claim
import { syncKuaishouCloudRoleInfo } from './kuaishou-cloud-sync-service.js'
import type { TaskRow } from '../../types/repository/rows.js'
type JsonObject = Record<string, any>
type ClaimDetailPayload = ReturnType<typeof buildClaimDetailPayload>
async function verifyIndustryVoucherTicket(
@@ -537,9 +537,7 @@ function isKuaishouCloudMockTask(task: Partial<TaskRow> | null | undefined) {
function isKuaishouCloudMockContext(context: JsonObject = {}) {
const flow =
context.kuaishouCloudFulfillment && typeof context.kuaishouCloudFulfillment === 'object'
? context.kuaishouCloudFulfillment
: {}
asJsonObject(context.kuaishouCloudFulfillment)
const mock = flow.mock && typeof flow.mock === 'object' ? flow.mock : context.mock
return Boolean(mock && typeof mock === 'object' && mock.enabled === true)
@@ -558,7 +556,7 @@ function buildMockVerifiedKuaishouCloudFlow(value: unknown, timestamp: string) {
return {
...flow,
mock: {
...(source.mock && typeof source.mock === 'object' ? source.mock : {}),
...(asJsonObject(source.mock)),
enabled: true,
},
binding: {
@@ -593,7 +591,7 @@ async function completeMockKuaishouCloudClaimTask(task: TaskRow, timestamp: stri
const nextFlow = {
...flow,
mock: {
...(source.mock && typeof source.mock === 'object' ? source.mock : {}),
...(asJsonObject(source.mock)),
enabled: true,
},
dispatch: {