接入 ESLint 并清理未使用代码

- 前后端接入 ESLint 10 扁平配置(typescript-eslint 类型感知检查 + react-hooks/react-refresh),新增 lint / lint:check / lint:fix 脚本并纳入 check 链路
- 清理全部 no-unused-vars 与 no-useless-assignment 警告,修复 floating promises、正则转义等问题
- 删除确认无引用的死代码(markKuaishouCloudBindUrlRefreshFailed、未使用 helper 等)
This commit is contained in:
yml2213
2026-08-16 18:04:55 +08:00
parent 5c7c3e14e3
commit 81ae04dae0
55 changed files with 3031 additions and 628 deletions
@@ -1,6 +1,3 @@
import crypto from 'node:crypto'
import { runtimeConfig } from '../../config/runtime.js'
import { WORK_ORDER_STATUS } from '../../domain/work-order-status.js'
import {
acceptWorkOrderAndSettle,
@@ -9,45 +6,27 @@ import {
cancelAssignedWorkOrder,
returnAssignedWorkOrderToHall,
unassignWorkOrder,
countWorkerAcceptedOrders,
countWorkerActiveOrders,
countWorkCategoryUsages,
countWorkerLevelUsages,
countWorkOrderPendingSharingSubmissions,
countTimeoutEventsByWorkerIds,
cancelWorkerWorkOrder,
countWorkerCancellationsSince,
createWorkOrder,
createWorkOrderEvent,
createWorkerFinanceRequest,
createWorkerUser,
deductPendingDepositUnfreeze,
deleteWorkCategory,
deleteWorkProductRule,
deleteWorkOrder,
deleteWorkerLevel,
getWorkerFinanceRequestById,
getWorkerFinanceRequestSummary,
getWorkCategoryById,
getWorkCategoryByKey,
getWorkerLevelById,
getWorkerLevelByKey,
getWorkerUserByInviteCode,
getWorkerUserById,
getWorkerUserByUsername,
getWorkOrderById,
getWorkOrderByOrderItemId,
getWorkOrderShare,
getWorkProductRuleByKey,
grabWorkOrder,
incrementWorkerSessionVersion,
joinWorkOrderShare,
listAllWorkCategories,
listPendingMaterialWorkOrdersByPlatformOrderId,
listWorkerFinanceRequests,
listWorkerSharesByWorker,
listWorkerWalletLedgers,
listWorkCategories,
listWorkOrders,
listWorkProductRules,
listWorkerLevels,
@@ -57,36 +36,21 @@ import {
sumPendingUnfreezeByOrderIds,
resolveProblemWorkOrder,
reviewWorkerFinanceRequest,
submitWorkOrderShareAcceptance,
updateWorkOrder,
updateWorkOrderBasic,
updateWorkerPassword,
updateWorkerUser,
upsertWorkCategory,
upsertWorkProductRule,
upsertWorkerLevel,
type WorkCategoryRow,
type WorkerFinanceRequestRow,
type WorkOrderRow,
type WorkProductRuleRow,
type WorkerLevelRow,
type WorkOrderShareRow,
type WorkerWalletLedgerRow,
type WorkerUserRow,
type GrabWorkOrderFailureReason,
type ProblemWorkOrderResolutionAction,
} from '../../repositories/worker-platform/index.js'
import type { JsonObject } from '../../types/json.js'
import type { OrderItemRow, OrderRow } from '../../types/repository/rows.js'
import { createHttpError } from '../../utils/http.js'
import { randomId } from '../../utils/random.js'
import { nowIso, addHours } from '../../utils/time.js'
import { nowIso } from '../../utils/time.js'
import { normalizePage, normalizePageSize, safeParseJson } from '../admin/admin-query-utils.js'
import {
normalizeStoredFileUrl,
refreshStoredFileUrl,
refreshUploadedFileUrls,
} from '../file-storage/file-storage-service.js'
import { getWorkerFinanceConfig, saveWorkerFinanceConfig } from './worker-finance-config-service.js'
import {
consumeIndustryVouchersBeforeWorkOrderAssign,
@@ -1,61 +1,8 @@
import crypto from 'node:crypto'
import { runtimeConfig } from '../../config/runtime.js'
import { WORK_ORDER_STATUS } from '../../domain/work-order-status.js'
import { listOrderItemsByOrderId } from '../../repositories/order-item-repo.js'
import { findLatestOrderByAnyPlatformOrderId, getOrderById } from '../../repositories/order-repo.js'
import {
acceptWorkOrderAndSettle,
addWorkerWalletCredit,
countWorkerAcceptedOrders,
countWorkerActiveOrders,
countWorkCategoryUsages,
countWorkerLevelUsages,
countWorkOrderPendingSharingSubmissions,
cancelWorkerWorkOrder,
countWorkerCancellationsSince,
createWorkOrder,
createWorkOrderEvent,
createWorkerFinanceRequest,
createWorkerUser,
deleteWorkCategory,
deleteWorkerLevel,
getWorkerFinanceRequestById,
getWorkerFinanceRequestSummary,
getWorkCategoryById,
getWorkCategoryByKey,
getWorkerLevelById,
getWorkerLevelByKey,
getWorkerUserByInviteCode,
getWorkerUserById,
getWorkerUserByUsername,
getWorkOrderById,
getWorkOrderByOrderItemId,
getWorkOrderShare,
grabWorkOrder,
incrementWorkerSessionVersion,
joinWorkOrderShare,
listAllWorkCategories,
listPendingMaterialWorkOrdersByPlatformOrderId,
listWorkerFinanceRequests,
listWorkerSharesByWorker,
listWorkerWalletLedgers,
listWorkCategories,
listWorkOrders,
listWorkProductRules,
listWorkerLevels,
listWorkerUsers,
listWorkOrderShares,
listWorkOrderSharesByOrderIds,
resolveProblemWorkOrder,
reviewWorkerFinanceRequest,
submitWorkOrderShareAcceptance,
updateWorkOrder,
updateWorkerPassword,
updateWorkerUser,
upsertWorkCategory,
upsertWorkProductRule,
upsertWorkerLevel,
type WorkCategoryRow,
type WorkerFinanceRequestRow,
type WorkOrderRow,
@@ -70,15 +17,13 @@ import {
import type { JsonObject } from '../../types/json.js'
import type { OrderItemRow, OrderRow } from '../../types/repository/rows.js'
import { createHttpError } from '../../utils/http.js'
import { randomId } from '../../utils/random.js'
import { nowIso, addHours } from '../../utils/time.js'
import { normalizePage, normalizePageSize, safeParseJson } from '../admin/admin-query-utils.js'
import { safeParseJson } from '../admin/admin-query-utils.js'
import {
normalizeStoredFileUrl,
refreshStoredFileUrl,
refreshUploadedFileUrls,
} from '../file-storage/file-storage-service.js'
import { getWorkerFinanceConfig, saveWorkerFinanceConfig } from './worker-finance-config-service.js'
export const DEFAULT_LEVEL_KEY = 'vip1'
export const DEFAULT_LEVEL_NAME = 'VIP1'
@@ -414,8 +359,8 @@ export function mapWorkOrderForWorker(
) {
const mapped = mapWorkOrderAdmin(workOrder)
const {
requiredDepositAmount,
depositThresholdAmount,
requiredDepositAmount: _requiredDepositAmount,
depositThresholdAmount: _depositThresholdAmount,
worker: _worker,
orderId: _orderId,
orderItemId: _orderItemId,
@@ -2,32 +2,21 @@ import crypto from 'node:crypto'
import { runtimeConfig } from '../../config/runtime.js'
import { WORK_ORDER_STATUS } from '../../domain/work-order-status.js'
import { listOrderItemsByOrderId } from '../../repositories/order-item-repo.js'
import { findLatestOrderByAnyPlatformOrderId, getOrderById } from '../../repositories/order-repo.js'
import {
acceptWorkOrderAndSettle,
addWorkerWalletCredit,
countWorkerAcceptedOrders,
countWorkerActiveOrders,
countWorkerTimeoutEvents,
countWorkerWithdrawRequestsOnDay,
countWorkCategoryUsages,
countWorkerLevelUsages,
countWorkOrderPendingSharingSubmissions,
countWorkerSmsCodesOnDay,
consumeWorkerSmsCode,
createWorkerSmsCode,
createWorkOrder,
createWorkOrderEvent,
createWorkerFinanceRequest,
createWorkerUser,
deleteWorkCategory,
deleteWorkerLevel,
getWorkerFinanceRequestById,
getWorkerFinanceRequestSummary,
getWorkCategoryById,
getWorkCategoryByKey,
getWorkerLevelById,
getWorkerLevelByKey,
getLatestWorkerSmsCode,
getWorkerUserByInviteCode,
@@ -36,12 +25,10 @@ import {
getWorkerUserByUsername,
getWorkerUserByDisplayName,
getWorkOrderById,
getWorkOrderByOrderItemId,
getWorkOrderShare,
grabWorkOrder,
incrementWorkerSessionVersion,
joinWorkOrderShare,
listAllWorkCategories,
listPendingMaterialWorkOrdersByPlatformOrderId,
listWorkerFinanceRequests,
listWorkerCompletionLeaderboard,
@@ -50,16 +37,10 @@ import {
listWorkerWorkOrderNotes,
listWorkCategories,
listWorkOrders,
listWorkProductRules,
listWorkerLevels,
listWorkerUsers,
listWorkOrderShares,
listWorkOrderSharesByOrderIds,
listDueDepositUnfreezes,
listOverdueWorkOrders,
releaseDepositUnfreeze,
resolveProblemWorkOrder,
reviewWorkerFinanceRequest,
settleOverdueWorkOrder,
submitWorkOrderShareAcceptance,
updateWorkOrder,
@@ -69,34 +50,18 @@ import {
updateWorkOrderShareDraftAcceptance,
upsertWorkerWorkOrderNote,
updateWorkerPassword,
updateWorkerUser,
upsertWorkCategory,
upsertWorkProductRule,
upsertWorkerLevel,
type WorkCategoryRow,
type WorkerFinanceRequestRow,
type WorkOrderRow,
type WorkProductRuleRow,
type WorkerLevelRow,
type WorkOrderShareRow,
type WorkerWalletLedgerRow,
type WorkerUserRow,
type GrabWorkOrderFailureReason,
type ProblemWorkOrderResolutionAction,
} from '../../repositories/worker-platform/index.js'
import type { JsonObject } from '../../types/json.js'
import type { OrderItemRow, OrderRow } from '../../types/repository/rows.js'
import { createHttpError } from '../../utils/http.js'
import { randomId } from '../../utils/random.js'
import { nowIso, addHours } from '../../utils/time.js'
import { nowIso } from '../../utils/time.js'
import { normalizePage, normalizePageSize, safeParseJson } from '../admin/admin-query-utils.js'
import { getSmsProvider } from '../sms/index.js'
import {
normalizeStoredFileUrl,
refreshStoredFileUrl,
refreshUploadedFileUrls,
} from '../file-storage/file-storage-service.js'
import { getWorkerFinanceConfig, saveWorkerFinanceConfig } from './worker-finance-config-service.js'
import { getWorkerFinanceConfig } from './worker-finance-config-service.js'
import {
DEFAULT_CATEGORY_KEY,
@@ -139,7 +104,6 @@ import {
signWorkerPayload,
throwGrabWorkOrderFailure,
validateWorkerPassword,
validateWorkerUsername,
verifyWorkerPassword,
} from './mappers.js'
@@ -355,7 +319,7 @@ function hashSmsCode(code: string): string {
.digest('hex')
}
async function generateInviteCode(now: string): Promise<string> {
async function generateInviteCode(_now: string): Promise<string> {
const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'
for (let attempt = 0; attempt < INVITE_CODE_RETRY_LIMIT; attempt++) {
const candidate = Array.from(
@@ -464,7 +428,7 @@ export async function verifyWorkerSessionToken(token: unknown): Promise<WorkerSe
})
}
let payload: JsonObject = {}
let payload: JsonObject
try {
payload = JSON.parse(Buffer.from(encodedPayload, 'base64url').toString('utf8'))
} catch {