@hed-hog/ticket 0.0.285
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +480 -0
- package/dist/dto/assign-ticket-owner.dto.d.ts +4 -0
- package/dist/dto/assign-ticket-owner.dto.d.ts.map +1 -0
- package/dist/dto/assign-ticket-owner.dto.js +7 -0
- package/dist/dto/assign-ticket-owner.dto.js.map +1 -0
- package/dist/dto/create-ticket-channel-account.dto.d.ts +10 -0
- package/dist/dto/create-ticket-channel-account.dto.d.ts.map +1 -0
- package/dist/dto/create-ticket-channel-account.dto.js +7 -0
- package/dist/dto/create-ticket-channel-account.dto.js.map +1 -0
- package/dist/dto/create-ticket-channel.dto.d.ts +7 -0
- package/dist/dto/create-ticket-channel.dto.d.ts.map +1 -0
- package/dist/dto/create-ticket-channel.dto.js +7 -0
- package/dist/dto/create-ticket-channel.dto.js.map +1 -0
- package/dist/dto/create-ticket-internal-note.dto.d.ts +4 -0
- package/dist/dto/create-ticket-internal-note.dto.d.ts.map +1 -0
- package/dist/dto/create-ticket-internal-note.dto.js +7 -0
- package/dist/dto/create-ticket-internal-note.dto.js.map +1 -0
- package/dist/dto/create-ticket-reply.dto.d.ts +5 -0
- package/dist/dto/create-ticket-reply.dto.d.ts.map +1 -0
- package/dist/dto/create-ticket-reply.dto.js +7 -0
- package/dist/dto/create-ticket-reply.dto.js.map +1 -0
- package/dist/dto/update-ticket-channel-account.dto.d.ts +8 -0
- package/dist/dto/update-ticket-channel-account.dto.d.ts.map +1 -0
- package/dist/dto/update-ticket-channel-account.dto.js +7 -0
- package/dist/dto/update-ticket-channel-account.dto.js.map +1 -0
- package/dist/dto/update-ticket-channel.dto.d.ts +5 -0
- package/dist/dto/update-ticket-channel.dto.d.ts.map +1 -0
- package/dist/dto/update-ticket-channel.dto.js +7 -0
- package/dist/dto/update-ticket-channel.dto.js.map +1 -0
- package/dist/dto/update-ticket-priority.dto.d.ts +4 -0
- package/dist/dto/update-ticket-priority.dto.d.ts.map +1 -0
- package/dist/dto/update-ticket-priority.dto.js +7 -0
- package/dist/dto/update-ticket-priority.dto.js.map +1 -0
- package/dist/dto/update-ticket-settings.dto.d.ts +13 -0
- package/dist/dto/update-ticket-settings.dto.d.ts.map +1 -0
- package/dist/dto/update-ticket-settings.dto.js +7 -0
- package/dist/dto/update-ticket-settings.dto.js.map +1 -0
- package/dist/dto/update-ticket-status.dto.d.ts +4 -0
- package/dist/dto/update-ticket-status.dto.d.ts.map +1 -0
- package/dist/dto/update-ticket-status.dto.js +7 -0
- package/dist/dto/update-ticket-status.dto.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/ticket-ai-review.controller.d.ts +9 -0
- package/dist/ticket-ai-review.controller.d.ts.map +1 -0
- package/dist/ticket-ai-review.controller.js +36 -0
- package/dist/ticket-ai-review.controller.js.map +1 -0
- package/dist/ticket-channel-accounts.controller.d.ts +24 -0
- package/dist/ticket-channel-accounts.controller.d.ts.map +1 -0
- package/dist/ticket-channel-accounts.controller.js +72 -0
- package/dist/ticket-channel-accounts.controller.js.map +1 -0
- package/dist/ticket-channels.controller.d.ts +21 -0
- package/dist/ticket-channels.controller.d.ts.map +1 -0
- package/dist/ticket-channels.controller.js +72 -0
- package/dist/ticket-channels.controller.js.map +1 -0
- package/dist/ticket-data.controller.d.ts +24 -0
- package/dist/ticket-data.controller.d.ts.map +1 -0
- package/dist/ticket-data.controller.js +81 -0
- package/dist/ticket-data.controller.js.map +1 -0
- package/dist/ticket-items.controller.d.ts +35 -0
- package/dist/ticket-items.controller.d.ts.map +1 -0
- package/dist/ticket-items.controller.js +100 -0
- package/dist/ticket-items.controller.js.map +1 -0
- package/dist/ticket-settings.controller.d.ts +11 -0
- package/dist/ticket-settings.controller.d.ts.map +1 -0
- package/dist/ticket-settings.controller.js +50 -0
- package/dist/ticket-settings.controller.js.map +1 -0
- package/dist/ticket.module.d.ts +3 -0
- package/dist/ticket.module.d.ts.map +1 -0
- package/dist/ticket.module.js +45 -0
- package/dist/ticket.module.js.map +1 -0
- package/dist/ticket.service.d.ts +88 -0
- package/dist/ticket.service.d.ts.map +1 -0
- package/dist/ticket.service.js +83 -0
- package/dist/ticket.service.js.map +1 -0
- package/hedhog/data/menu.yaml +164 -0
- package/hedhog/data/role.yaml +23 -0
- package/hedhog/data/route.yaml +225 -0
- package/hedhog/data/setting_group.yaml +574 -0
- package/hedhog/frontend/app/[id]/page.tsx.ejs +360 -0
- package/hedhog/frontend/app/_components/ai-draft-editor-dialog.tsx.ejs +67 -0
- package/hedhog/frontend/app/_components/ticket-badges.tsx.ejs +65 -0
- package/hedhog/frontend/app/_components/ticket-context-card.tsx.ejs +80 -0
- package/hedhog/frontend/app/_components/ticket-timeline.tsx.ejs +59 -0
- package/hedhog/frontend/app/_lib/mock-data.ts.ejs +474 -0
- package/hedhog/frontend/app/_lib/types.ts.ejs +134 -0
- package/hedhog/frontend/app/ai-review/page.tsx.ejs +205 -0
- package/hedhog/frontend/app/channel-accounts/page.tsx.ejs +476 -0
- package/hedhog/frontend/app/channels/page.tsx.ejs +406 -0
- package/hedhog/frontend/app/dashboard/page.tsx.ejs +178 -0
- package/hedhog/frontend/app/inbox/page.tsx.ejs +500 -0
- package/hedhog/frontend/app/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/reports/page.tsx.ejs +151 -0
- package/hedhog/frontend/app/roles/page.tsx.ejs +110 -0
- package/hedhog/frontend/app/settings/page.tsx.ejs +484 -0
- package/hedhog/frontend/messages/en.json +412 -0
- package/hedhog/frontend/messages/pt.json +412 -0
- package/hedhog/table/channel.yaml +23 -0
- package/hedhog/table/channel_account.yaml +34 -0
- package/hedhog/table/ticket.yaml +73 -0
- package/hedhog/table/ticket_ai_draft.yaml +51 -0
- package/hedhog/table/ticket_attachment.yaml +40 -0
- package/hedhog/table/ticket_category.yaml +22 -0
- package/hedhog/table/ticket_context.yaml +64 -0
- package/hedhog/table/ticket_message.yaml +49 -0
- package/hedhog/table/ticket_message_source.yaml +50 -0
- package/hedhog/table/ticket_metadata.yaml +21 -0
- package/hedhog/table/ticket_participant.yaml +25 -0
- package/hedhog/table/ticket_source.yaml +43 -0
- package/hedhog/table/ticket_tag.yaml +22 -0
- package/package.json +40 -0
- package/src/dto/assign-ticket-owner.dto.ts +3 -0
- package/src/dto/create-ticket-channel-account.dto.ts +9 -0
- package/src/dto/create-ticket-channel.dto.ts +6 -0
- package/src/dto/create-ticket-internal-note.dto.ts +3 -0
- package/src/dto/create-ticket-reply.dto.ts +4 -0
- package/src/dto/update-ticket-channel-account.dto.ts +7 -0
- package/src/dto/update-ticket-channel.dto.ts +4 -0
- package/src/dto/update-ticket-priority.dto.ts +3 -0
- package/src/dto/update-ticket-settings.dto.ts +12 -0
- package/src/dto/update-ticket-status.dto.ts +3 -0
- package/src/index.ts +19 -0
- package/src/language/en.json +8 -0
- package/src/language/pt.json +8 -0
- package/src/ticket-ai-review.controller.ts +14 -0
- package/src/ticket-channel-accounts.controller.ts +34 -0
- package/src/ticket-channels.controller.ts +31 -0
- package/src/ticket-data.controller.ts +39 -0
- package/src/ticket-items.controller.ts +56 -0
- package/src/ticket-settings.controller.ts +20 -0
- package/src/ticket.module.ts +32 -0
- package/src/ticket.service.ts +102 -0
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
{
|
|
2
|
+
"TicketModule": {
|
|
3
|
+
"common": {
|
|
4
|
+
"home": "Inicio",
|
|
5
|
+
"tickets": "Tickets",
|
|
6
|
+
"all": "Todos",
|
|
7
|
+
"yes": "Sim",
|
|
8
|
+
"no": "Nao",
|
|
9
|
+
"actions": "Acoes",
|
|
10
|
+
"status": "Status",
|
|
11
|
+
"priority": "Prioridade",
|
|
12
|
+
"channel": "Canal",
|
|
13
|
+
"context": "Contexto",
|
|
14
|
+
"owner": "Responsavel",
|
|
15
|
+
"requester": "Solicitante",
|
|
16
|
+
"code": "Codigo",
|
|
17
|
+
"name": "Nome",
|
|
18
|
+
"edit": "Editar",
|
|
19
|
+
"disabled": "desabilitado",
|
|
20
|
+
"enabled": "habilitado"
|
|
21
|
+
},
|
|
22
|
+
"badges": {
|
|
23
|
+
"status": {
|
|
24
|
+
"open": "Aberto",
|
|
25
|
+
"pending": "Pendente",
|
|
26
|
+
"waiting_customer": "Aguardando Cliente",
|
|
27
|
+
"resolved": "Resolvido",
|
|
28
|
+
"closed": "Fechado",
|
|
29
|
+
"spam": "Spam"
|
|
30
|
+
},
|
|
31
|
+
"priority": {
|
|
32
|
+
"low": "Baixa",
|
|
33
|
+
"normal": "Normal",
|
|
34
|
+
"high": "Alta",
|
|
35
|
+
"urgent": "Urgente"
|
|
36
|
+
},
|
|
37
|
+
"aiReviewMode": {
|
|
38
|
+
"disabled": "Desabilitado",
|
|
39
|
+
"optional": "Opcional",
|
|
40
|
+
"required": "Obrigatorio"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"dashboard": {
|
|
44
|
+
"title": "Dashboard de Tickets",
|
|
45
|
+
"description": "Visao operacional e executiva omnichannel para o suporte Hcode",
|
|
46
|
+
"breadcrumb": "Dashboard",
|
|
47
|
+
"stats": {
|
|
48
|
+
"totalOpen": "Total Abertos",
|
|
49
|
+
"pending": "Pendentes",
|
|
50
|
+
"resolvedToday": "Resolvidos Hoje",
|
|
51
|
+
"aiPendingReview": "IA Aguardando Revisao",
|
|
52
|
+
"waitingCustomer": "Aguardando Cliente",
|
|
53
|
+
"urgent": "Urgentes"
|
|
54
|
+
},
|
|
55
|
+
"cards": {
|
|
56
|
+
"byChannel": "Tickets por Canal",
|
|
57
|
+
"byCourse": "Tickets por Curso",
|
|
58
|
+
"byOwner": "Tickets por Responsavel",
|
|
59
|
+
"latestActivity": "Ultimas Atividades"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"inbox": {
|
|
63
|
+
"title": "Caixa de Tickets",
|
|
64
|
+
"description": "Caixa operacional com filtros omnichannel para o time de suporte",
|
|
65
|
+
"breadcrumb": "Inbox",
|
|
66
|
+
"newTicket": "Novo Ticket",
|
|
67
|
+
"stats": {
|
|
68
|
+
"open": "Abertos",
|
|
69
|
+
"pending": "Pendentes",
|
|
70
|
+
"waitingCustomer": "Aguardando Cliente",
|
|
71
|
+
"urgent": "Urgentes"
|
|
72
|
+
},
|
|
73
|
+
"quick": {
|
|
74
|
+
"all": "Todos",
|
|
75
|
+
"my": "Meus Tickets",
|
|
76
|
+
"open": "Abertos",
|
|
77
|
+
"waiting_customer": "Aguardando Cliente",
|
|
78
|
+
"resolved": "Resolvidos",
|
|
79
|
+
"urgent": "Urgentes"
|
|
80
|
+
},
|
|
81
|
+
"searchPlaceholder": "Buscar por codigo, assunto, solicitante, aula",
|
|
82
|
+
"filters": {
|
|
83
|
+
"status": "Status",
|
|
84
|
+
"allStatus": "Todos os Status",
|
|
85
|
+
"priority": "Prioridade",
|
|
86
|
+
"allPriority": "Todas as Prioridades",
|
|
87
|
+
"channel": "Canal",
|
|
88
|
+
"allChannels": "Todos os Canais",
|
|
89
|
+
"owner": "Responsavel",
|
|
90
|
+
"allOwners": "Todos os Responsaveis",
|
|
91
|
+
"requester": "Solicitante",
|
|
92
|
+
"allRequesters": "Todos os Solicitantes",
|
|
93
|
+
"course": "Curso",
|
|
94
|
+
"allCourses": "Todos os Cursos",
|
|
95
|
+
"section": "Secao",
|
|
96
|
+
"allSections": "Todas as Secoes",
|
|
97
|
+
"lesson": "Aula",
|
|
98
|
+
"allLessons": "Todas as Aulas",
|
|
99
|
+
"video": "Video",
|
|
100
|
+
"allVideos": "Todos os Videos",
|
|
101
|
+
"aiStatus": "Status IA",
|
|
102
|
+
"allAiStatus": "Todos os Status IA",
|
|
103
|
+
"pendingReview": "Aguardando Revisao",
|
|
104
|
+
"approved": "Aprovado",
|
|
105
|
+
"tags": "Tags",
|
|
106
|
+
"allTags": "Todas as Tags",
|
|
107
|
+
"categories": "Categorias",
|
|
108
|
+
"allCategories": "Todas as Categorias"
|
|
109
|
+
},
|
|
110
|
+
"table": {
|
|
111
|
+
"title": "Inbox Operacional",
|
|
112
|
+
"subject": "Assunto",
|
|
113
|
+
"channelAccount": "Conta do Canal",
|
|
114
|
+
"lastActivity": "Ultima Atividade",
|
|
115
|
+
"aiReview": "Revisao IA"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"detail": {
|
|
119
|
+
"description": "Detalhe operacional do ticket com contexto omnichannel e assistente de IA",
|
|
120
|
+
"takeOwnership": "Assumir Atendimento",
|
|
121
|
+
"assign": "Atribuir",
|
|
122
|
+
"changeStatus": "Alterar Status",
|
|
123
|
+
"ownerBadge": "Responsavel: {name}",
|
|
124
|
+
"requesterCard": {
|
|
125
|
+
"title": "Solicitante",
|
|
126
|
+
"role": "Papel: {role}"
|
|
127
|
+
},
|
|
128
|
+
"sourceCard": {
|
|
129
|
+
"title": "Origem e Rotulos",
|
|
130
|
+
"channel": "Canal:",
|
|
131
|
+
"account": "Conta:",
|
|
132
|
+
"tag": "tag: {value}",
|
|
133
|
+
"category": "categoria: {value}"
|
|
134
|
+
},
|
|
135
|
+
"reply": {
|
|
136
|
+
"title": "Compositor de Resposta Publica",
|
|
137
|
+
"subjectPlaceholder": "Assunto",
|
|
138
|
+
"bodyPlaceholder": "Digite uma resposta publica para o solicitante...",
|
|
139
|
+
"send": "Enviar Resposta"
|
|
140
|
+
},
|
|
141
|
+
"internalNote": {
|
|
142
|
+
"title": "Compositor de Nota Interna",
|
|
143
|
+
"bodyPlaceholder": "Adicione nota interna para operadores e admins...",
|
|
144
|
+
"save": "Salvar Nota Interna"
|
|
145
|
+
},
|
|
146
|
+
"validation": {
|
|
147
|
+
"replySubjectRequired": "Informe o assunto da resposta.",
|
|
148
|
+
"replyBodyRequired": "Informe o conteudo da resposta.",
|
|
149
|
+
"internalNoteBodyRequired": "Informe o conteudo da nota interna."
|
|
150
|
+
},
|
|
151
|
+
"messages": {
|
|
152
|
+
"replySendSuccess": "Resposta enviada com sucesso.",
|
|
153
|
+
"internalNoteSaveSuccess": "Nota interna salva com sucesso."
|
|
154
|
+
},
|
|
155
|
+
"aiPanel": {
|
|
156
|
+
"title": "Painel do Assistente IA",
|
|
157
|
+
"draftTitle": "Rascunho aguardando revisao",
|
|
158
|
+
"approve": "Aprovar e Enviar",
|
|
159
|
+
"edit": "Editar Rascunho",
|
|
160
|
+
"reject": "Rejeitar Rascunho",
|
|
161
|
+
"participants": "Participantes",
|
|
162
|
+
"attachments": "Anexos",
|
|
163
|
+
"participantRequester": "{name} (solicitante)",
|
|
164
|
+
"participantAgent": "{name} (agente)",
|
|
165
|
+
"participantCollaborator": "Bruno Araujo (colaborador)"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"aiReview": {
|
|
169
|
+
"title": "Fila de Revisao IA",
|
|
170
|
+
"description": "Revise, edite e aprove sugestoes de IA antes do envio",
|
|
171
|
+
"breadcrumb": "Revisao IA",
|
|
172
|
+
"searchPlaceholder": "Buscar por codigo do ticket, canal ou contexto",
|
|
173
|
+
"allStatus": "Todos os Status",
|
|
174
|
+
"pendingReview": "Aguardando Revisao",
|
|
175
|
+
"approved": "Aprovado",
|
|
176
|
+
"rejected": "Rejeitado",
|
|
177
|
+
"tableTitle": "Rascunhos Pendentes",
|
|
178
|
+
"columns": {
|
|
179
|
+
"ticket": "Ticket",
|
|
180
|
+
"channel": "Canal",
|
|
181
|
+
"context": "Contexto",
|
|
182
|
+
"model": "Modelo",
|
|
183
|
+
"status": "Status",
|
|
184
|
+
"original": "Mensagem Original",
|
|
185
|
+
"suggestion": "Sugestao de IA",
|
|
186
|
+
"actions": "Acoes"
|
|
187
|
+
},
|
|
188
|
+
"actions": {
|
|
189
|
+
"approve": "Aprovar",
|
|
190
|
+
"reject": "Rejeitar",
|
|
191
|
+
"edit": "Editar"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"reports": {
|
|
195
|
+
"title": "Relatorios de Tickets",
|
|
196
|
+
"description": "Indicadores operacionais por canal, curso, aula e operador",
|
|
197
|
+
"breadcrumb": "Relatorios",
|
|
198
|
+
"stats": {
|
|
199
|
+
"firstResponse": "Tempo Medio 1a Resposta",
|
|
200
|
+
"resolution": "Tempo Medio Resolucao",
|
|
201
|
+
"approvalRate": "Taxa de Aprovacao IA",
|
|
202
|
+
"usageByChannel": "Uso de IA por Canal"
|
|
203
|
+
},
|
|
204
|
+
"cards": {
|
|
205
|
+
"byChannel": "Volume por Canal",
|
|
206
|
+
"byCourse": "Volume por Curso",
|
|
207
|
+
"byLesson": "Volume por Aula",
|
|
208
|
+
"byOperator": "Volume por Operador",
|
|
209
|
+
"summary": "Resumo Operacional"
|
|
210
|
+
},
|
|
211
|
+
"summary": {
|
|
212
|
+
"open": "Tickets abertos: {value}",
|
|
213
|
+
"pending": "Tickets pendentes: {value}",
|
|
214
|
+
"waiting": "Aguardando cliente: {value}",
|
|
215
|
+
"resolved": "Resolvidos hoje: {value}",
|
|
216
|
+
"urgent": "Backlog urgente: {value}",
|
|
217
|
+
"aiPending": "IA aguardando revisao: {value}"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"channels": {
|
|
221
|
+
"title": "Canais",
|
|
222
|
+
"description": "Catalogo de tipos de canal usados nas operacoes omnichannel de tickets",
|
|
223
|
+
"breadcrumb": "Canais",
|
|
224
|
+
"new": "Novo Canal",
|
|
225
|
+
"searchPlaceholder": "Buscar por codigo, nome ou tipo...",
|
|
226
|
+
"tableTitle": "Tipos de Canal",
|
|
227
|
+
"kind": "Tipo",
|
|
228
|
+
"disable": "Desabilitar",
|
|
229
|
+
"emptyState": {
|
|
230
|
+
"title": "Nenhum canal encontrado",
|
|
231
|
+
"description": "Ajuste sua busca ou crie um novo canal.",
|
|
232
|
+
"action": "Novo Canal"
|
|
233
|
+
},
|
|
234
|
+
"sheet": {
|
|
235
|
+
"createTitle": "Novo Canal",
|
|
236
|
+
"createDescription": "Preencha os dados para cadastrar um novo canal.",
|
|
237
|
+
"editTitle": "Editar Canal",
|
|
238
|
+
"editDescription": "Atualize os dados do canal selecionado."
|
|
239
|
+
},
|
|
240
|
+
"form": {
|
|
241
|
+
"codePlaceholder": "ex: portal",
|
|
242
|
+
"namePlaceholder": "ex: Hcode Class",
|
|
243
|
+
"submitCreate": "Cadastrar Canal",
|
|
244
|
+
"submitUpdate": "Salvar Alteracoes"
|
|
245
|
+
},
|
|
246
|
+
"validation": {
|
|
247
|
+
"codeRequired": "Informe o codigo do canal.",
|
|
248
|
+
"nameRequired": "Informe o nome do canal."
|
|
249
|
+
},
|
|
250
|
+
"messages": {
|
|
251
|
+
"created": "Canal criado com sucesso.",
|
|
252
|
+
"updated": "Canal atualizado com sucesso."
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"channelAccounts": {
|
|
256
|
+
"title": "Contas de Canal",
|
|
257
|
+
"description": "Integracoes concretas de canal usadas pelo suporte Hcode",
|
|
258
|
+
"breadcrumb": "Contas de Canal",
|
|
259
|
+
"new": "Nova Conta de Canal",
|
|
260
|
+
"searchPlaceholder": "Buscar por codigo, canal, nome ou identificador...",
|
|
261
|
+
"tableTitle": "Contas Configuradas",
|
|
262
|
+
"externalIdentifier": "Identificador Externo",
|
|
263
|
+
"aiEnabled": "IA Habilitada",
|
|
264
|
+
"testConnection": "Testar Conexao",
|
|
265
|
+
"emptyState": {
|
|
266
|
+
"title": "Nenhuma conta de canal encontrada",
|
|
267
|
+
"description": "Ajuste sua busca ou crie uma nova conta.",
|
|
268
|
+
"action": "Nova Conta de Canal"
|
|
269
|
+
},
|
|
270
|
+
"sheet": {
|
|
271
|
+
"createTitle": "Nova Conta de Canal",
|
|
272
|
+
"createDescription": "Preencha os dados para cadastrar uma conta de canal.",
|
|
273
|
+
"editTitle": "Editar Conta de Canal",
|
|
274
|
+
"editDescription": "Atualize os dados da conta de canal selecionada."
|
|
275
|
+
},
|
|
276
|
+
"form": {
|
|
277
|
+
"codePlaceholder": "ex: suporte_hcode_com_br",
|
|
278
|
+
"namePlaceholder": "ex: Suporte Hcode",
|
|
279
|
+
"externalIdentifierPlaceholder": "ex: mailbox_support_prod",
|
|
280
|
+
"submitCreate": "Cadastrar Conta",
|
|
281
|
+
"submitUpdate": "Salvar Alteracoes"
|
|
282
|
+
},
|
|
283
|
+
"validation": {
|
|
284
|
+
"codeRequired": "Informe o codigo da conta.",
|
|
285
|
+
"channelRequired": "Selecione um canal.",
|
|
286
|
+
"nameRequired": "Informe o nome da conta.",
|
|
287
|
+
"externalIdentifierRequired": "Informe o identificador externo."
|
|
288
|
+
},
|
|
289
|
+
"messages": {
|
|
290
|
+
"created": "Conta de canal criada com sucesso.",
|
|
291
|
+
"updated": "Conta de canal atualizada com sucesso.",
|
|
292
|
+
"connectionTested": "Conexao testada com sucesso."
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"settings": {
|
|
296
|
+
"title": "Configuracoes de Tickets",
|
|
297
|
+
"description": "Controles globais, de canal e de conta de canal para operacoes omnichannel de tickets",
|
|
298
|
+
"breadcrumb": "Configuracoes",
|
|
299
|
+
"general": "Geral",
|
|
300
|
+
"groups": {
|
|
301
|
+
"email": "Email",
|
|
302
|
+
"whatsapp": "WhatsApp",
|
|
303
|
+
"portal": "Portal / Hcode Class",
|
|
304
|
+
"marketplace": "Marketplace / Udemy",
|
|
305
|
+
"social": "Social / YouTube",
|
|
306
|
+
"accounts": "Contas Configuradas",
|
|
307
|
+
"help": "Ajuda"
|
|
308
|
+
},
|
|
309
|
+
"rows": {
|
|
310
|
+
"enabledTitle": "ticket.enabled",
|
|
311
|
+
"enabledDesc": "Habilitar modulo de tickets e telas operacionais",
|
|
312
|
+
"codePrefixTitle": "ticket.code_prefix",
|
|
313
|
+
"codePrefixDesc": "Prefixo usado para gerar codigo do ticket",
|
|
314
|
+
"aiModeTitle": "ticket.default_ai_review_mode",
|
|
315
|
+
"aiModeDesc": "Politica padrao para revisao de rascunho IA",
|
|
316
|
+
"visibilityTitle": "ticket.default_visibility",
|
|
317
|
+
"visibilityDesc": "Visibilidade padrao para novos tickets",
|
|
318
|
+
"autoAssignTitle": "ticket.auto_assign_enabled",
|
|
319
|
+
"autoAssignDesc": "Atribuir automaticamente novos tickets aos operadores",
|
|
320
|
+
"ownerTitle": "ticket.default_owner_person_id",
|
|
321
|
+
"ownerDesc": "Identificador da pessoa responsavel de fallback",
|
|
322
|
+
"publicReplyTitle": "ticket.allow_public_reply",
|
|
323
|
+
"publicReplyDesc": "Permitir respostas publicas de saida",
|
|
324
|
+
"internalNotesTitle": "ticket.allow_internal_notes",
|
|
325
|
+
"internalNotesDesc": "Permitir notas internas na timeline",
|
|
326
|
+
"reopenTitle": "ticket.default_reopen_on_customer_reply",
|
|
327
|
+
"reopenDesc": "Reabrir ticket quando o cliente responder",
|
|
328
|
+
"closeAfterTitle": "ticket.default_close_after_days_without_reply",
|
|
329
|
+
"closeAfterDesc": "Fechamento automatico por inatividade"
|
|
330
|
+
},
|
|
331
|
+
"values": {
|
|
332
|
+
"disabled": "desabilitado",
|
|
333
|
+
"optional": "opcional",
|
|
334
|
+
"required": "obrigatorio",
|
|
335
|
+
"private": "privado",
|
|
336
|
+
"public": "publico"
|
|
337
|
+
},
|
|
338
|
+
"actions": {
|
|
339
|
+
"save": "Salvar configuracoes"
|
|
340
|
+
},
|
|
341
|
+
"messages": {
|
|
342
|
+
"saved": "Configuracoes salvas com sucesso."
|
|
343
|
+
},
|
|
344
|
+
"validation": {
|
|
345
|
+
"codePrefixRequired": "Informe o prefixo do codigo.",
|
|
346
|
+
"ownerRequired": "Informe o identificador do responsavel.",
|
|
347
|
+
"ownerNumeric": "O identificador do responsavel deve ser numerico.",
|
|
348
|
+
"closeAfterRequired": "Informe os dias para fechamento automatico.",
|
|
349
|
+
"closeAfterNumeric": "Os dias para fechamento devem ser numericos."
|
|
350
|
+
},
|
|
351
|
+
"descriptions": {
|
|
352
|
+
"emailControls": "Controles: enabled, inbound_enabled, outbound_enabled, ai_enabled, ai_model, ai_auto_send, ai_require_human_review, append_ticket_code_to_subject, create_new_ticket_if_no_match.",
|
|
353
|
+
"whatsappControls": "Controles: enabled, inbound_enabled, outbound_enabled, ai_enabled, ai_model, ai_auto_send, ai_require_human_review, reopen_last_open_ticket, open_new_ticket_after_hours, window_hours.",
|
|
354
|
+
"portalControls": "Controles: enabled, ai_enabled, ai_model.",
|
|
355
|
+
"marketplaceControls": "Controles: enabled, ai_enabled, ai_model.",
|
|
356
|
+
"socialControls": "Controles: enabled, ai_enabled, ai_model.",
|
|
357
|
+
"accountsControls": "Overrides por conta para enabled, ai_enabled, ai_model e ai_auto_send.",
|
|
358
|
+
"helpLine1": "O auto envio por IA deve ser usado com cautela. Se ai_require_human_review estiver habilitado, o auto envio deve permanecer desabilitado para manter aprovacao do operador no fluxo.",
|
|
359
|
+
"helpLine2": "Overrides de conta de canal tem precedencia sobre defaults de canal quando ambos estiverem configurados."
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"roles": {
|
|
363
|
+
"title": "Papeis e Permissoes",
|
|
364
|
+
"description": "Matriz de permissao para ticket_admin, ticket_operator e ticket_analyst",
|
|
365
|
+
"breadcrumb": "Papeis",
|
|
366
|
+
"cards": {
|
|
367
|
+
"adminTitle": "ticket_admin",
|
|
368
|
+
"adminDesc": "Acesso administrativo e operacional completo incluindo canais, configuracoes, atribuicao, relatorios e governanca de IA.",
|
|
369
|
+
"operatorTitle": "ticket_operator",
|
|
370
|
+
"operatorDesc": "Acesso operacional para inbox, respostas, notas internas e atualizacao de status sem gestao de configuracoes globais.",
|
|
371
|
+
"analystTitle": "ticket_analyst",
|
|
372
|
+
"analystDesc": "Acesso somente leitura com foco em dashboards, relatorios e visibilidade de tickets."
|
|
373
|
+
},
|
|
374
|
+
"tableTitle": "Matriz de Permissao",
|
|
375
|
+
"columns": {
|
|
376
|
+
"permission": "Permissao",
|
|
377
|
+
"admin": "ticket_admin",
|
|
378
|
+
"operator": "ticket_operator",
|
|
379
|
+
"analyst": "ticket_analyst"
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"contextCard": {
|
|
383
|
+
"title": "Contexto",
|
|
384
|
+
"empty": "Nenhum contexto estruturado anexado ainda.",
|
|
385
|
+
"type": "Tipo:",
|
|
386
|
+
"source": "Origem:",
|
|
387
|
+
"course": "Curso:",
|
|
388
|
+
"section": "Secao:",
|
|
389
|
+
"lesson": "Aula:",
|
|
390
|
+
"video": "Video:",
|
|
391
|
+
"page": "Pagina:",
|
|
392
|
+
"openSource": "Abrir referencia da origem"
|
|
393
|
+
},
|
|
394
|
+
"timeline": {
|
|
395
|
+
"title": "Timeline",
|
|
396
|
+
"internalNote": "nota interna",
|
|
397
|
+
"directions": {
|
|
398
|
+
"inbound": "entrada",
|
|
399
|
+
"outbound": "saida",
|
|
400
|
+
"system": "sistema"
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"draftDialog": {
|
|
404
|
+
"title": "Editar Rascunho IA",
|
|
405
|
+
"description": "Revise e ajuste a sugestao antes de aprovar e enviar.",
|
|
406
|
+
"originalTitle": "Mensagem original do solicitante",
|
|
407
|
+
"placeholder": "Refine a sugestao de IA...",
|
|
408
|
+
"cancel": "Cancelar",
|
|
409
|
+
"save": "Salvar Rascunho"
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: code
|
|
4
|
+
type: varchar
|
|
5
|
+
length: 64
|
|
6
|
+
- name: name
|
|
7
|
+
type: varchar
|
|
8
|
+
length: 160
|
|
9
|
+
- name: kind
|
|
10
|
+
type: enum
|
|
11
|
+
values: [portal, marketplace, social, form, email, whatsapp, api, other]
|
|
12
|
+
- name: status
|
|
13
|
+
type: enum
|
|
14
|
+
values: [active, inactive]
|
|
15
|
+
default: active
|
|
16
|
+
- type: created_at
|
|
17
|
+
- type: updated_at
|
|
18
|
+
|
|
19
|
+
indices:
|
|
20
|
+
- columns: [code]
|
|
21
|
+
isUnique: true
|
|
22
|
+
- columns: [kind]
|
|
23
|
+
- columns: [status]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: channel_id
|
|
4
|
+
type: fk
|
|
5
|
+
references:
|
|
6
|
+
table: channel
|
|
7
|
+
column: id
|
|
8
|
+
onDelete: RESTRICT
|
|
9
|
+
- name: code
|
|
10
|
+
type: varchar
|
|
11
|
+
length: 80
|
|
12
|
+
- name: name
|
|
13
|
+
type: varchar
|
|
14
|
+
length: 180
|
|
15
|
+
- name: external_identifier
|
|
16
|
+
type: varchar
|
|
17
|
+
length: 255
|
|
18
|
+
isNullable: true
|
|
19
|
+
- name: status
|
|
20
|
+
type: enum
|
|
21
|
+
values: [active, inactive]
|
|
22
|
+
default: active
|
|
23
|
+
- name: settings_json
|
|
24
|
+
type: json
|
|
25
|
+
isNullable: true
|
|
26
|
+
- type: created_at
|
|
27
|
+
- type: updated_at
|
|
28
|
+
|
|
29
|
+
indices:
|
|
30
|
+
- columns: [code]
|
|
31
|
+
isUnique: true
|
|
32
|
+
- columns: [channel_id]
|
|
33
|
+
- columns: [status]
|
|
34
|
+
- columns: [external_identifier]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: code
|
|
4
|
+
type: varchar
|
|
5
|
+
length: 40
|
|
6
|
+
- name: subject
|
|
7
|
+
type: varchar
|
|
8
|
+
length: 255
|
|
9
|
+
- name: status
|
|
10
|
+
type: enum
|
|
11
|
+
values: [open, pending, waiting_customer, resolved, closed, spam]
|
|
12
|
+
default: open
|
|
13
|
+
- name: priority
|
|
14
|
+
type: enum
|
|
15
|
+
values: [low, normal, high, urgent]
|
|
16
|
+
default: normal
|
|
17
|
+
- name: visibility
|
|
18
|
+
type: enum
|
|
19
|
+
values: [private, public]
|
|
20
|
+
default: private
|
|
21
|
+
- name: ai_review_mode
|
|
22
|
+
type: enum
|
|
23
|
+
values: [disabled, optional, required]
|
|
24
|
+
default: optional
|
|
25
|
+
- name: requester_person_id
|
|
26
|
+
type: fk
|
|
27
|
+
isNullable: true
|
|
28
|
+
references:
|
|
29
|
+
table: person
|
|
30
|
+
column: id
|
|
31
|
+
onDelete: SET NULL
|
|
32
|
+
- name: owner_person_id
|
|
33
|
+
type: fk
|
|
34
|
+
isNullable: true
|
|
35
|
+
references:
|
|
36
|
+
table: person
|
|
37
|
+
column: id
|
|
38
|
+
onDelete: SET NULL
|
|
39
|
+
- name: first_message_at
|
|
40
|
+
type: datetime
|
|
41
|
+
isNullable: true
|
|
42
|
+
- name: last_message_at
|
|
43
|
+
type: datetime
|
|
44
|
+
isNullable: true
|
|
45
|
+
- name: last_customer_message_at
|
|
46
|
+
type: datetime
|
|
47
|
+
isNullable: true
|
|
48
|
+
- name: last_agent_message_at
|
|
49
|
+
type: datetime
|
|
50
|
+
isNullable: true
|
|
51
|
+
- name: resolved_at
|
|
52
|
+
type: datetime
|
|
53
|
+
isNullable: true
|
|
54
|
+
- name: closed_at
|
|
55
|
+
type: datetime
|
|
56
|
+
isNullable: true
|
|
57
|
+
- type: created_at
|
|
58
|
+
- type: updated_at
|
|
59
|
+
|
|
60
|
+
indices:
|
|
61
|
+
- columns: [code]
|
|
62
|
+
isUnique: true
|
|
63
|
+
- columns: [status]
|
|
64
|
+
- columns: [priority]
|
|
65
|
+
- columns: [visibility]
|
|
66
|
+
- columns: [ai_review_mode]
|
|
67
|
+
- columns: [requester_person_id]
|
|
68
|
+
- columns: [owner_person_id]
|
|
69
|
+
- columns: [created_at]
|
|
70
|
+
- columns: [last_message_at]
|
|
71
|
+
- columns: [owner_person_id, status]
|
|
72
|
+
- columns: [requester_person_id, status]
|
|
73
|
+
- columns: [status, last_message_at]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: ticket_id
|
|
4
|
+
type: fk
|
|
5
|
+
references:
|
|
6
|
+
table: ticket
|
|
7
|
+
column: id
|
|
8
|
+
onDelete: CASCADE
|
|
9
|
+
- name: ticket_message_id
|
|
10
|
+
type: fk
|
|
11
|
+
isNullable: true
|
|
12
|
+
references:
|
|
13
|
+
table: ticket_message
|
|
14
|
+
column: id
|
|
15
|
+
onDelete: SET NULL
|
|
16
|
+
- name: model_name
|
|
17
|
+
type: varchar
|
|
18
|
+
length: 120
|
|
19
|
+
- name: status
|
|
20
|
+
type: enum
|
|
21
|
+
values: [draft, pending_review, approved, rejected, sent]
|
|
22
|
+
default: draft
|
|
23
|
+
- name: suggestion_html
|
|
24
|
+
type: text
|
|
25
|
+
isNullable: true
|
|
26
|
+
- name: suggestion_text
|
|
27
|
+
type: text
|
|
28
|
+
isNullable: true
|
|
29
|
+
- name: feedback
|
|
30
|
+
type: text
|
|
31
|
+
isNullable: true
|
|
32
|
+
- name: reviewed_by_person_id
|
|
33
|
+
type: fk
|
|
34
|
+
isNullable: true
|
|
35
|
+
references:
|
|
36
|
+
table: person
|
|
37
|
+
column: id
|
|
38
|
+
onDelete: SET NULL
|
|
39
|
+
- name: reviewed_at
|
|
40
|
+
type: datetime
|
|
41
|
+
isNullable: true
|
|
42
|
+
- type: created_at
|
|
43
|
+
- type: updated_at
|
|
44
|
+
|
|
45
|
+
indices:
|
|
46
|
+
- columns: [ticket_id]
|
|
47
|
+
- columns: [ticket_message_id]
|
|
48
|
+
- columns: [status]
|
|
49
|
+
- columns: [reviewed_by_person_id]
|
|
50
|
+
- columns: [created_at]
|
|
51
|
+
- columns: [ticket_id, status]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: ticket_message_id
|
|
4
|
+
type: fk
|
|
5
|
+
references:
|
|
6
|
+
table: ticket_message
|
|
7
|
+
column: id
|
|
8
|
+
onDelete: CASCADE
|
|
9
|
+
- name: kind
|
|
10
|
+
type: enum
|
|
11
|
+
values: [image, file, link]
|
|
12
|
+
- name: storage
|
|
13
|
+
type: enum
|
|
14
|
+
values: [upload, external_url]
|
|
15
|
+
- name: file_name
|
|
16
|
+
type: varchar
|
|
17
|
+
length: 255
|
|
18
|
+
isNullable: true
|
|
19
|
+
- name: mime_type
|
|
20
|
+
type: varchar
|
|
21
|
+
length: 120
|
|
22
|
+
isNullable: true
|
|
23
|
+
- name: url
|
|
24
|
+
type: varchar
|
|
25
|
+
length: 500
|
|
26
|
+
isNullable: true
|
|
27
|
+
- name: size_bytes
|
|
28
|
+
type: int
|
|
29
|
+
isNullable: true
|
|
30
|
+
- name: content
|
|
31
|
+
type: text
|
|
32
|
+
isNullable: true
|
|
33
|
+
- type: created_at
|
|
34
|
+
- type: updated_at
|
|
35
|
+
|
|
36
|
+
indices:
|
|
37
|
+
- columns: [ticket_message_id]
|
|
38
|
+
- columns: [kind]
|
|
39
|
+
- columns: [storage]
|
|
40
|
+
- columns: [created_at]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
columns:
|
|
2
|
+
- type: pk
|
|
3
|
+
- name: ticket_id
|
|
4
|
+
type: fk
|
|
5
|
+
references:
|
|
6
|
+
table: ticket
|
|
7
|
+
column: id
|
|
8
|
+
onDelete: CASCADE
|
|
9
|
+
- name: category_id
|
|
10
|
+
type: fk
|
|
11
|
+
references:
|
|
12
|
+
table: category
|
|
13
|
+
column: id
|
|
14
|
+
onDelete: CASCADE
|
|
15
|
+
- type: created_at
|
|
16
|
+
- type: updated_at
|
|
17
|
+
|
|
18
|
+
indices:
|
|
19
|
+
- columns: [ticket_id, category_id]
|
|
20
|
+
isUnique: true
|
|
21
|
+
- columns: [ticket_id]
|
|
22
|
+
- columns: [category_id]
|