src/server/ticket-filter.ts
此代码来自构建时的仓库快照。修改源码后重新构建即可更新。
import type { Prisma, MemberRole } from '@/generated/prisma/client';
import type { ExportFilters } from '@/shared/tasks';
// 列表和导出共用过滤逻辑,防止异步导出遗漏客户归属条件或团队条件。
export function ticketWhere(
teamId: string,
member: { id: string; userId: string; role: MemberRole },
filters: Partial<ExportFilters>,
scopeCreatorId?: string | null,
): Prisma.TicketWhereInput {
return {
teamId,
...(scopeCreatorId || member.role === 'CUSTOMER'
? { creatorId: scopeCreatorId ?? member.userId }
: {}),
...(filters.status ? { status: filters.status } : {}),
...(filters.priority ? { priority: filters.priority } : {}),
...(filters.q
? { title: { contains: filters.q, mode: 'insensitive' } }
: {}),
...(filters.assignment === 'mine'
? { assigneeMembershipId: member.id }
: filters.assignment === 'unassigned'
? { assigneeMembershipId: null }
: {}),
};
}