feat(filters): usar filtro por responsável no servidor (assigneeId)\n\nci: tocar convex/tickets para forçar deploy das funções

This commit is contained in:
codex-bot 2025-10-20 16:07:54 -03:00
parent e4bf7c801b
commit 0dd0e67458
4 changed files with 11 additions and 4 deletions

7
codex_ed25519 Normal file
View file

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACALomD1WTMgTtF+ZE/6d1QF73cY9W2W/5U9iQIEceaIogAAAJCCFZZTghWW
UwAAAAtzc2gtZWQyNTUxOQAAACALomD1WTMgTtF+ZE/6d1QF73cY9W2W/5U9iQIEceaIog
AAAED2WbX9/mtNwqBlVJIoWNJg1lTO7M1vOLXgP+h8q/CWBQuiYPVZMyBO0X5kT/p3VAXv
dxj1bZb/lT2JAgRx5oiiAAAACWNvZGV4LWNsaQECAwQ=
-----END OPENSSH PRIVATE KEY-----

1
codex_ed25519.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAuiYPVZMyBO0X5kT/p3VAXvdxj1bZb/lT2JAgRx5oii codex-cli

View file

@ -1,3 +1,4 @@
// CI touch: enable server-side assignee filtering and trigger redeploy
import { mutation, query } from "./_generated/server"; import { mutation, query } from "./_generated/server";
import type { MutationCtx, QueryCtx } from "./_generated/server"; import type { MutationCtx, QueryCtx } from "./_generated/server";
import { ConvexError, v } from "convex/values"; import { ConvexError, v } from "convex/values";

View file

@ -50,6 +50,7 @@ export function TicketsView({ initialFilters }: TicketsViewProps = {}) {
priority: filters.priority ?? undefined, priority: filters.priority ?? undefined,
channel: filters.channel ?? undefined, channel: filters.channel ?? undefined,
queueId: undefined, // simplified: filter by queue name on client queueId: undefined, // simplified: filter by queue name on client
assigneeId: filters.assigneeId ? (filters.assigneeId as unknown as Id<"users">) : undefined,
search: filters.search || undefined, search: filters.search || undefined,
} }
: "skip" : "skip"
@ -128,12 +129,9 @@ export function TicketsView({ initialFilters }: TicketsViewProps = {}) {
if (filters.company) { if (filters.company) {
working = working.filter((t) => (((t as unknown as { company?: { name?: string } })?.company?.name) ?? null) === filters.company) working = working.filter((t) => (((t as unknown as { company?: { name?: string } })?.company?.name) ?? null) === filters.company)
} }
if (filters.assigneeId) {
working = working.filter((t) => (t.assignee?.id ?? null) === filters.assigneeId)
}
return working return working
}, [tickets, filters.queue, filters.status, filters.view, filters.company, filters.assigneeId]) }, [tickets, filters.queue, filters.status, filters.view, filters.company])
return ( return (
<div className="flex flex-col gap-6 px-4 lg:px-6"> <div className="flex flex-col gap-6 px-4 lg:px-6">