删除库存和旧回调管理

This commit is contained in:
yml
2026-05-25 23:07:19 +08:00
parent 90ad866ecc
commit 2c7464b1eb
87 changed files with 94 additions and 5794 deletions
@@ -16,17 +16,13 @@ type TaskLike = Partial<TaskRow> & {
export type AdminViewerContext = {
role: string
allowedInventoryGroupCodes: string[] | null
restrictInventoryGroups: boolean
canViewSensitiveTaskData: boolean
canManageSensitiveInventory: boolean
canManageTaskLifecycle: boolean
canOperateAssistedTask: boolean
}
type RedeemResolutionAttempt = {
attempt: number
inventoryItemId: number | null
codeMasked: string
credentialType: string
outcome: string
@@ -166,11 +162,6 @@ export function mapRedeemResolutionContext(value: unknown): JsonRecord | null {
}
}
export function getTaskPrimaryInventoryItemId(task: TaskLike | null | undefined): number | null {
const value = Number(task?.primary_inventory_item_id || 0)
return Number.isFinite(value) && value > 0 ? value : null
}
export function getTaskPrimaryClaimTokenId(task: TaskLike | null | undefined): number | null {
const value = Number(task?.primary_claim_token_id || 0)
return Number.isFinite(value) && value > 0 ? value : null
@@ -178,16 +169,10 @@ export function getTaskPrimaryClaimTokenId(task: TaskLike | null | undefined): n
export function createAdminViewerContext(session: AdminViewerSessionInput | null = null): AdminViewerContext {
const role = normalizeAdminRole(session?.role)
const allowedInventoryGroupCodes = role === 'support'
? normalizeInventoryGroupCodes(session?.allowedInventoryGroups)
: null
return {
role,
allowedInventoryGroupCodes,
restrictInventoryGroups: role === 'support',
canViewSensitiveTaskData: role === 'admin' || role === 'operator',
canManageSensitiveInventory: role === 'admin',
canManageTaskLifecycle: role === 'admin' || role === 'operator',
canOperateAssistedTask: role === 'admin' || role === 'operator' || role === 'support',
}
@@ -297,38 +282,6 @@ export function canRegenerateClaimLinkForViewer(task: TaskLike, viewerContext: A
return false
}
export function canViewerAccessTaskInventoryGroup(
task: TaskLike,
viewerContext: AdminViewerContext = createAdminViewerContext(),
): boolean {
if (!viewerContext.restrictInventoryGroups) {
return true
}
const allowedInventoryGroupCodes = Array.isArray(viewerContext.allowedInventoryGroupCodes)
? viewerContext.allowedInventoryGroupCodes
: []
if (allowedInventoryGroupCodes.length === 0) {
return false
}
const taskContext = parseTaskContext(task)
const inventoryGroupCode = String(taskContext?.inventoryGroupCode || '').trim()
if (!inventoryGroupCode) {
return true
}
return allowedInventoryGroupCodes.includes(inventoryGroupCode)
}
export function normalizeInventoryGroupCodes(values: unknown): string[] {
return Array.from(new Set((Array.isArray(values) ? values : [])
.map((value) => String(value || '').trim())
.filter(Boolean)))
}
function mapRedeemResolutionAttempt(value: unknown): RedeemResolutionAttempt | null {
if (!value || typeof value !== 'object') {
return null
@@ -337,7 +290,6 @@ function mapRedeemResolutionAttempt(value: unknown): RedeemResolutionAttempt | n
const record = value as JsonRecord
return {
attempt: Math.max(1, Number(record.attempt || 1)),
inventoryItemId: Number(record.inventoryItemId || 0) || null,
codeMasked: String(record.codeMasked || '').trim(),
credentialType: String(record.credentialType || '').trim(),
outcome: String(record.outcome || '').trim(),