Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
import { ConvexHttpClient } from "convex/browser"
|
|
|
|
const CONVEX_URL = process.env.NEXT_PUBLIC_CONVEX_URL
|
|
const TENANT_ID = process.env.SEED_TENANT_ID ?? "tenant-atlas"
|
|
|
|
if (!CONVEX_URL) {
|
|
console.error("NEXT_PUBLIC_CONVEX_URL não definido. Configure o endpoint do Convex e execute novamente.")
|
|
process.exit(1)
|
|
}
|
|
|
|
const TARGET_NAMES = new Set(["Ana Souza", "Bruno Lima"])
|
|
const REPLACEMENT = {
|
|
name: "Rever",
|
|
email: "renan.pac@paulicon.com.br",
|
|
}
|
|
|
|
async function main() {
|
|
const client = new ConvexHttpClient(CONVEX_URL)
|
|
|
|
const admin = await client.mutation("users:ensureUser", {
|
|
tenantId: TENANT_ID,
|
|
email: "admin@sistema.dev",
|
|
name: "Administrador",
|
|
role: "ADMIN",
|
|
})
|
|
|
|
if (!admin?._id) {
|
|
throw new Error("Não foi possível garantir o usuário administrador")
|
|
}
|
|
|
|
const replacementUser = await client.mutation("users:ensureUser", {
|
|
tenantId: TENANT_ID,
|
|
email: REPLACEMENT.email,
|
|
name: REPLACEMENT.name,
|
|
role: "AGENT",
|
|
})
|
|
|
|
if (!replacementUser?._id) {
|
|
throw new Error("Não foi possível garantir o usuário Rever")
|
|
}
|
|
|
|
const agents = await client.query("users:listAgents", { tenantId: TENANT_ID })
|
|
const targets = agents.filter((agent) => TARGET_NAMES.has(agent.name))
|
|
|
|
if (targets.length === 0) {
|
|
console.log("Nenhum responsável legado encontrado. Nada a atualizar.")
|
|
}
|
|
|
|
const targetIds = new Set(targets.map((agent) => agent._id))
|
|
|
|
const tickets = await client.query("tickets:list", {
|
|
tenantId: TENANT_ID,
|
|
viewerId: admin._id,
|
|
})
|
|
|
|
let reassignedCount = 0
|
|
for (const ticket of tickets) {
|
|
if (ticket.assignee && targetIds.has(ticket.assignee.id)) {
|
|
await client.mutation("tickets:changeAssignee", {
|
|
ticketId: ticket.id,
|
|
assigneeId: replacementUser._id,
|
|
actorId: admin._id,
|
|
})
|
|
reassignedCount += 1
|
|
console.log(`Ticket ${ticket.reference} reatribuído para ${replacementUser.name}`)
|
|
}
|
|
}
|
|
|
|
for (const agent of targets) {
|
|
try {
|
|
await client.mutation("users:deleteUser", {
|
|
userId: agent._id,
|
|
actorId: admin._id,
|
|
})
|
|
console.log(`Usuário removido: ${agent.name}`)
|
|
} catch (error) {
|
|
console.error(`Falha ao remover ${agent.name}:`, error)
|
|
}
|
|
}
|
|
|
|
console.log(`Total de tickets reatribuídos: ${reassignedCount}`)
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error("Erro ao reatribuir responsáveis legacy:", error)
|
|
process.exitCode = 1
|
|
})
|