feat: seed real agents and enable comment templates
This commit is contained in:
parent
df8c4e29bb
commit
409cbea7b9
13 changed files with 1722 additions and 29 deletions
|
|
@ -61,14 +61,71 @@ export const seedDemo = mutation({
|
|||
.query("users")
|
||||
.withIndex("by_tenant_email", (q) => q.eq("tenantId", tenantId).eq("email", email))
|
||||
.first();
|
||||
if (found) return found._id;
|
||||
return await ctx.db.insert("users", { tenantId, name, email, role, avatarUrl: `https://avatar.vercel.sh/${name.split(" ")[0]}` });
|
||||
if (found) {
|
||||
const updates: Record<string, unknown> = {};
|
||||
if (found.name !== name) updates.name = name;
|
||||
if ((found.role ?? "AGENT") !== role) updates.role = role;
|
||||
const desiredAvatar = role === "CUSTOMER" ? found.avatarUrl ?? undefined : `https://avatar.vercel.sh/${name.split(" ")[0]}`;
|
||||
if (found.avatarUrl !== desiredAvatar) updates.avatarUrl = desiredAvatar;
|
||||
if (Object.keys(updates).length > 0) {
|
||||
await ctx.db.patch(found._id, updates);
|
||||
}
|
||||
return found._id;
|
||||
}
|
||||
return await ctx.db.insert("users", { tenantId, name, email, role, avatarUrl: role === "CUSTOMER" ? undefined : `https://avatar.vercel.sh/${name.split(" ")[0]}` });
|
||||
}
|
||||
const reverId = await ensureUser("Rever", "renan.pac@paulicon.com.br");
|
||||
const agenteDemoId = await ensureUser("Agente Demo", "agente.demo@sistema.dev");
|
||||
const adminId = await ensureUser("Administrador", "admin@sistema.dev", "ADMIN");
|
||||
const staffRoster = [
|
||||
{ name: "Gabriel Oliveira", email: "gabriel.oliveira@rever.com.br" },
|
||||
{ name: "George Araujo", email: "george.araujo@rever.com.br" },
|
||||
{ name: "Hugo Soares", email: "hugo.soares@rever.com.br" },
|
||||
{ name: "Julio Cesar", email: "julio@rever.com.br" },
|
||||
{ name: "Lorena Magalhães", email: "lorena@rever.com.br" },
|
||||
{ name: "Rever", email: "renan.pac@paulicon.com.br" },
|
||||
{ name: "Thiago Medeiros", email: "thiago.medeiros@rever.com.br" },
|
||||
{ name: "Weslei Magalhães", email: "weslei@rever.com.br" },
|
||||
];
|
||||
|
||||
const staffIds = await Promise.all(staffRoster.map((staff) => ensureUser(staff.name, staff.email)));
|
||||
const defaultAssigneeId = staffIds[0] ?? adminId;
|
||||
const eduardaId = await ensureUser("Eduarda Rocha", "eduarda.rocha@example.com", "CUSTOMER");
|
||||
const clienteDemoId = await ensureUser("Cliente Demo", "cliente.demo@sistema.dev", "CUSTOMER");
|
||||
|
||||
const templateDefinitions = [
|
||||
{
|
||||
title: "A Rever agradece seu contato",
|
||||
body: "<p>A Rever agradece seu contato. Recebemos sua solicitação e nossa equipe já está analisando os detalhes. Retornaremos com atualizações em breve.</p>",
|
||||
},
|
||||
{
|
||||
title: "Atualização do chamado",
|
||||
body: "<p>Seu chamado foi atualizado. Caso tenha novas informações ou dúvidas, basta responder a esta mensagem.</p>",
|
||||
},
|
||||
{
|
||||
title: "Chamado resolvido",
|
||||
body: "<p>Concluímos o atendimento deste chamado. A Rever agradece a parceria e permanecemos à disposição para novos suportes.</p>",
|
||||
},
|
||||
];
|
||||
|
||||
const existingTemplates = await ctx.db
|
||||
.query("commentTemplates")
|
||||
.withIndex("by_tenant", (q) => q.eq("tenantId", tenantId))
|
||||
.collect();
|
||||
|
||||
for (const definition of templateDefinitions) {
|
||||
const already = existingTemplates.find((template) => template?.title === definition.title);
|
||||
if (already) continue;
|
||||
const timestamp = Date.now();
|
||||
await ctx.db.insert("commentTemplates", {
|
||||
tenantId,
|
||||
title: definition.title,
|
||||
body: definition.body,
|
||||
createdBy: adminId,
|
||||
updatedBy: adminId,
|
||||
createdAt: timestamp,
|
||||
updatedAt: timestamp,
|
||||
});
|
||||
}
|
||||
|
||||
// Seed a couple of tickets
|
||||
const now = Date.now();
|
||||
const newestRef = await ctx.db
|
||||
|
|
@ -90,7 +147,7 @@ export const seedDemo = mutation({
|
|||
channel: "EMAIL",
|
||||
queueId: queue1,
|
||||
requesterId: eduardaId,
|
||||
assigneeId: reverId,
|
||||
assigneeId: defaultAssigneeId,
|
||||
createdAt: now - 1000 * 60 * 60 * 5,
|
||||
updatedAt: now - 1000 * 60 * 10,
|
||||
tags: ["portal", "cliente"],
|
||||
|
|
@ -107,7 +164,7 @@ export const seedDemo = mutation({
|
|||
channel: "WHATSAPP",
|
||||
queueId: queue2,
|
||||
requesterId: clienteDemoId,
|
||||
assigneeId: agenteDemoId,
|
||||
assigneeId: defaultAssigneeId,
|
||||
createdAt: now - 1000 * 60 * 60 * 8,
|
||||
updatedAt: now - 1000 * 60 * 30,
|
||||
tags: ["Integração", "erp"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue