删除库存和旧回调管理
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user