Implementa sistema de chat em tempo real entre agente e cliente
- Adiciona tabela liveChatSessions no schema Convex - Cria convex/liveChat.ts com mutations e queries para chat - Adiciona API routes para maquinas (sessions, messages, poll) - Cria modulo chat.rs no Tauri com ChatRuntime e polling - Adiciona comandos de chat no lib.rs (start/stop polling, open/close window) - Cria componentes React do chat widget (ChatWidget, types) - Adiciona botao "Iniciar Chat" no dashboard (ticket-chat-panel) - Implementa menu de chat no system tray - Polling de 2 segundos para maior responsividade - Janela de chat flutuante, frameless, always-on-top 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
0c8d53c0b6
commit
ba91c1e0f5
15 changed files with 2004 additions and 15 deletions
|
|
@ -410,6 +410,31 @@ export default defineSchema({
|
|||
.index("by_ticket_created", ["ticketId", "createdAt"])
|
||||
.index("by_tenant_created", ["tenantId", "createdAt"]),
|
||||
|
||||
// Sessoes de chat ao vivo entre agente (dashboard) e cliente (Raven desktop)
|
||||
liveChatSessions: defineTable({
|
||||
tenantId: v.string(),
|
||||
ticketId: v.id("tickets"),
|
||||
machineId: v.id("machines"),
|
||||
agentId: v.id("users"),
|
||||
agentSnapshot: v.optional(
|
||||
v.object({
|
||||
name: v.string(),
|
||||
email: v.optional(v.string()),
|
||||
avatarUrl: v.optional(v.string()),
|
||||
})
|
||||
),
|
||||
status: v.string(), // ACTIVE | ENDED
|
||||
startedAt: v.number(),
|
||||
endedAt: v.optional(v.number()),
|
||||
lastActivityAt: v.number(),
|
||||
unreadByMachine: v.optional(v.number()),
|
||||
unreadByAgent: v.optional(v.number()),
|
||||
})
|
||||
.index("by_ticket", ["ticketId"])
|
||||
.index("by_machine_status", ["machineId", "status"])
|
||||
.index("by_tenant_machine", ["tenantId", "machineId"])
|
||||
.index("by_tenant_status", ["tenantId", "status"]),
|
||||
|
||||
commentTemplates: defineTable({
|
||||
tenantId: v.string(),
|
||||
kind: v.optional(v.string()),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue