core: expandir NLP
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
c4df157dd4
commit
7aad2f17b6
1 file changed
+166
-31
+166
-31
@@ -2,38 +2,36 @@ class NLPProcessor {
|
||||
constructor() {
|
||||
// Dicionário de sinônimos para ações
|
||||
this.actionSynonyms = {
|
||||
'desconectar': ['desconectar', 'desligar', 'parar', 'stop', 'disconnect', 'kick', 'expulsar'],
|
||||
'desconectar_usuario': ['desconectar cliente', 'desconectar usuário', 'desconectar user', 'kick cliente', 'kick usuário', 'expulsar cliente', 'remover cliente'],
|
||||
'conectar': ['conectar', 'ligar', 'iniciar', 'start', 'connect'],
|
||||
'reiniciar': ['reiniciar', 'restart', 'reboot', 'reset'],
|
||||
'status': ['status', 'estado', 'verificar', 'check', 'info'],
|
||||
'help': ['ajuda', 'help', 'socorro', 'comandos'],
|
||||
'ssh': ['ssh', 'acessar', 'entrar', 'login'],
|
||||
'lista': ['lista', 'listar', 'equipamentos', 'devices', 'list'],
|
||||
'listar_usuarios': ['listar usuários', 'listar clientes', 'usuarios conectados', 'clientes conectados', 'show users'],
|
||||
'ver_sinal': ['ver sinal', 'verificar sinal', 'sinal', 'check signal', 'signal'],
|
||||
'remover_onu': ['remover onu', 'deletar onu', 'apagar onu', 'remove onu', 'delete onu'],
|
||||
'adicionar_onu': ['adicionar onu', 'add onu', 'criar onu', 'cadastrar onu', 'registrar onu'],
|
||||
'adicionar_onu_vlan': ['adicionar onu vlan', 'add onu vlan', 'criar onu vlan', 'cadastrar onu vlan'],
|
||||
'adicionar_onu_fiberhome': ['adicionar onu fiberhome', 'add onu fiberhome', 'criar onu fiberhome', 'cadastrar onu fiberhome', 'registrar onu fiberhome'],
|
||||
'remover_onu_fiberhome': ['remover onu fiberhome', 'deletar onu fiberhome', 'apagar onu fiberhome', 'remove onu fiberhome', 'delete onu fiberhome'],
|
||||
'ping': ['ping', 'testar', 'test', 'conectividade'],
|
||||
'admin': ['admin', 'administração', 'administracao', 'painel'],
|
||||
'desconectar': ['desconectar', 'desligar', 'parar', 'stop', 'disconnect', 'kick', 'expulsar', 'encerrar', 'fechar conexão', 'fechar conexao'],
|
||||
'desconectar_usuario': ['desconectar cliente', 'desconectar usuário', 'desconectar usuario', 'desconectar user', 'kick cliente', 'kick usuário', 'kick usuario', 'expulsar cliente', 'remover cliente', 'tirar cliente', 'cortar usuário', 'cortar usuario'],
|
||||
'conectar': ['conectar', 'ligar', 'iniciar', 'start', 'connect', 'abrir conexão', 'abrir conexao', 'entrar em', 'acessar'],
|
||||
'reiniciar': ['reiniciar', 'restart', 'reboot', 'reset', 'reinicializar', 'rebotar', 'rebootar', 'dar reboot', 'resetar'],
|
||||
'status': ['status', 'estado', 'verificar', 'check', 'info', 'situação', 'situacao', 'checar'],
|
||||
'help': ['ajuda', 'help', 'socorro', 'comandos', 'menu', 'opções', 'opcoes', 'o que posso fazer'],
|
||||
'ssh': ['ssh', 'acessar', 'entrar', 'login', 'terminal', 'acesso remoto', 'shell'],
|
||||
'lista': ['lista', 'listar', 'equipamentos', 'devices', 'list', 'dispositivos', 'mostrar equipamentos'],
|
||||
'listar_usuarios': ['listar usuários', 'listar usuarios', 'listar clientes', 'usuarios conectados', 'usuarios ativos', 'clientes conectados', 'show users', 'ver usuarios', 'mostrar usuários', 'mostrar usuarios', 'quem está conectado', 'quem ta conectado', 'quem esta conectado', 'ppp active', 'ativos no concentrador'],
|
||||
'ver_sinal': ['ver sinal', 'verificar sinal', 'sinal', 'check signal', 'signal', 'potência onu', 'potencia onu', 'nivel de sinal', 'nível de sinal', 'rx onu', 'ver onu sinal'],
|
||||
'remover_onu': ['remover onu', 'deletar onu', 'apagar onu', 'remove onu', 'delete onu', 'tirar onu', 'excluir onu', 'retirar onu', 'desconfigurar onu', 'del onu'],
|
||||
'adicionar_onu': ['adicionar onu', 'add onu', 'criar onu', 'cadastrar onu', 'registrar onu', 'configurar onu', 'provisionar onu', 'instalar onu', 'nova onu', 'provisionar'],
|
||||
'adicionar_onu_vlan': ['adicionar onu vlan', 'add onu vlan', 'criar onu vlan', 'cadastrar onu vlan', 'adicionar com vlan', 'add com vlan'],
|
||||
'adicionar_onu_fiberhome': ['adicionar onu fiberhome', 'add onu fiberhome', 'criar onu fiberhome', 'cadastrar onu fiberhome', 'registrar onu fiberhome', 'fiberhome onu', 'onu fiberhome'],
|
||||
'remover_onu_fiberhome': ['remover onu fiberhome', 'deletar onu fiberhome', 'apagar onu fiberhome', 'remove onu fiberhome', 'delete onu fiberhome', 'tirar onu fiberhome'],
|
||||
'ping': ['ping', 'testar', 'test', 'conectividade', 'alcançável', 'alcancavel', 'latência', 'latencia'],
|
||||
'admin': ['admin', 'administração', 'administracao', 'painel', 'configurações', 'configuracoes', 'gerenciar'],
|
||||
'usuarios_autorizados': ['usuarios autorizados', 'users autorizados', 'lista usuarios', 'listar usuarios autorizados'],
|
||||
'meu_id': ['meu id', 'meu user id', 'my id', 'user id', 'minha id'],
|
||||
'buscar_cliente': ['buscar cliente', 'procurar cliente', 'encontrar cliente', 'search cliente', 'cliente'],
|
||||
'ver_faturas': ['ver faturas', 'ver fatura', 'faturas', 'fatura', 'boletos', 'boleto', 'contas'],
|
||||
'gerar_boleto': ['gerar boleto', 'boleto', 'criar boleto', 'pdf boleto', 'imprimir boleto'],
|
||||
'bloquear_cliente': ['bloquear cliente', 'bloquear', 'suspender cliente', 'cortar cliente'],
|
||||
'liberar_cliente': ['liberar cliente', 'liberar', 'desbloquear cliente', 'reconectar cliente'],
|
||||
'meu_id': ['meu id', 'meu user id', 'my id', 'user id', 'minha id', 'qual meu id', 'meu telegram id'],
|
||||
'buscar_cliente': ['buscar cliente', 'procurar cliente', 'encontrar cliente', 'search cliente', 'cliente', 'ver cliente', 'consultar cliente', 'pesquisar cliente', 'localizar cliente', 'achar cliente'],
|
||||
'ver_faturas': ['ver faturas', 'ver fatura', 'faturas', 'fatura', 'boletos', 'boleto', 'contas', 'débitos', 'debitos', 'pendências', 'pendencias', 'financeiro cliente', 'em aberto', 'inadimplência', 'inadimplencia', 'mensalidade', 'vencimento', 'segunda via'],
|
||||
'gerar_boleto': ['gerar boleto', 'boleto', 'criar boleto', 'pdf boleto', 'imprimir boleto', 'emitir boleto', 'segunda via boleto', 'segunda via fatura'],
|
||||
'bloquear_cliente': ['bloquear cliente', 'bloquear', 'suspender cliente', 'cortar cliente', 'cortar internet', 'suspender acesso', 'desativar cliente', 'suspender internet'],
|
||||
'liberar_cliente': ['liberar cliente', 'liberar', 'desbloquear cliente', 'reconectar cliente', 'reativar cliente', 'religar cliente', 'reativar', 'religar internet', 'tirar bloqueio', 'desbloquear'],
|
||||
'status_topsapp': ['status topsapp', 'verificar topsapp', 'topsapp status', 'topsapp'],
|
||||
'status_onu': ['status onu', 'verificar onu', 'onu status', 'check onu', 'status ont', 'ont status'],
|
||||
'fiberhome_status': ['fiberhome status', 'status fiberhome', 'conexões fiberhome', 'fiberhome conexoes'],
|
||||
'dados_cliente': ['dados cliente', 'dados cadastrais', 'cadastro cliente', 'informações cliente', 'info cliente'],
|
||||
'listar_servicos': ['listar serviços', 'servicos cliente', 'planos cliente', 'contratos cliente', 'ver servicos'],
|
||||
'abrir_suporte': ['abrir suporte', 'criar suporte', 'adicionar suporte', 'novo suporte', 'suporte', 'atendimento', 'chamado', 'ticket'],
|
||||
'adicionar_suporte': ['abrir suporte', 'criar suporte', 'adicionar suporte', 'novo suporte', 'suporte tecnico', 'atendimento tecnico'],
|
||||
'abrir_suporte': ['abrir suporte', 'criar suporte', 'adicionar suporte', 'novo suporte', 'suporte', 'chamado', 'ticket', 'atendimento']
|
||||
'status_onu': ['status onu', 'verificar onu', 'onu status', 'check onu', 'status ont', 'ont status', 'checar onu', 'info onu', 'informações onu', 'informacoes onu', 'dados onu'],
|
||||
'fiberhome_status': ['fiberhome status', 'status fiberhome', 'conexões fiberhome', 'fiberhome conexoes', 'fiberhome conectado'],
|
||||
'dados_cliente': ['dados cliente', 'dados cadastrais', 'cadastro cliente', 'informações cliente', 'info cliente', 'perfil cliente', 'ficha cliente', 'registro cliente', 'ver dados'],
|
||||
'listar_servicos': ['listar serviços', 'servicos cliente', 'planos cliente', 'contratos cliente', 'ver servicos', 'plano cliente', 'assinaturas', 'planos', 'serviços ativos', 'ver plano'],
|
||||
'abrir_suporte': ['abrir suporte', 'criar suporte', 'adicionar suporte', 'novo suporte', 'suporte', 'chamado', 'ticket', 'atendimento', 'suporte tecnico', 'atendimento tecnico', 'abrir chamado', 'registrar chamado', 'criar chamado', 'visita tecnica', 'agendar visita', 'reclamação', 'reclamacao']
|
||||
};
|
||||
|
||||
// Padrões de comandos
|
||||
@@ -86,7 +84,21 @@ class NLPProcessor {
|
||||
/^(reiniciar|restart)\s+(.+)$/i,
|
||||
/^(verificar|check)\s+(status\s+)?(.+)$/i,
|
||||
/^ssh\s+(.+)$/i,
|
||||
/^ping\s+(.+)$/i
|
||||
/^ping\s+(.+)$/i,
|
||||
// Segunda via / emitir boleto com identificador
|
||||
/^(segunda\s+via|emitir\s+boleto|2[aª]?\s*via)\s+(.+)$/i,
|
||||
// Reativar / religar / desbloquear → liberar_cliente
|
||||
/^(reativar|religar|ativar|desbloquear)\s+(.+)$/i,
|
||||
// Cortar / suspender com alvo (exceto "usuario/user/cliente")
|
||||
/^(cortar|suspender)\s+(?!usu|cli|sess)(.+)$/i,
|
||||
// Plano / serviço / contrato de cliente → listar_servicos
|
||||
/^(planos?|servi[çc]os?|contratos?)\s+(?:de\s+|do\s+|da\s+)?(.+)$/i,
|
||||
// Ficha / perfil de cliente → dados_cliente
|
||||
/^(ficha|perfil)\s+(?:de\s+|do\s+|da\s+)?(.+)$/i,
|
||||
// Consultar / pesquisar / localizar / achar cliente
|
||||
/^(consultar|pesquisar|localizar|achar)\s+(?:cliente|user)\s+(.+)$/i,
|
||||
// Quem está conectado → listar_usuarios
|
||||
/^(quem)\s+(?:está|esta|tá|ta)\s+conectado.*$/i
|
||||
];
|
||||
}
|
||||
|
||||
@@ -501,6 +513,82 @@ class NLPProcessor {
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar segunda via / emitir boleto
|
||||
if (/segunda\s*via|emitir\s*boleto|2[aª]?\s*via/i.test(action) || /segunda\s*via|2[aª]?\s*via/i.test(fullMatch)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'gerar_boleto',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'segunda_via_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar reativar / religar / desbloquear → liberar_cliente
|
||||
if (/^(reativar|religar|ativar|desbloquear)$/i.test(action)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'liberar_cliente',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'liberar_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar cortar / suspender → bloquear_cliente
|
||||
if (/^(cortar|suspender)$/i.test(action)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'bloquear_cliente',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'bloquear_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar plano / serviço / contrato → listar_servicos
|
||||
if (/^(planos?|servi[çc]os?|contratos?)$/i.test(action)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'listar_servicos',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'servicos_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar ficha / perfil → dados_cliente
|
||||
if (/^(ficha|perfil)$/i.test(action)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'dados_cliente',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'dados_perfil_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar quem está conectado → listar_usuarios
|
||||
if (/^quem$/i.test(action) && /conectado/i.test(fullMatch)) {
|
||||
return {
|
||||
action: 'listar_usuarios',
|
||||
target: 'concentrador',
|
||||
confidence: 0.95,
|
||||
type: 'list_users_quem_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar consultar / pesquisar / localizar / achar → buscar_cliente
|
||||
if (/^(consultar|pesquisar|localizar|achar)$/i.test(action) && /cliente|user/i.test(fullMatch)) {
|
||||
const query = match[2] || match[1];
|
||||
return {
|
||||
action: 'buscar_cliente',
|
||||
target: query ? query.trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'buscar_cliente_extra_pattern'
|
||||
};
|
||||
}
|
||||
|
||||
// Padrões gerais
|
||||
const normalizedAction = this.normalizeAction(action);
|
||||
const target = match[match.length - 1]; // Último grupo capturado
|
||||
@@ -558,6 +646,53 @@ class NLPProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
// Detectar reativar / religar / desbloquear → liberar_cliente
|
||||
if (/reativar|religar|desbloquear|tirar\s+bloqueio/i.test(text)) {
|
||||
const rlMatch = text.match(/(?:reativar|religar|desbloquear)\s+(.+)/i);
|
||||
if (rlMatch) {
|
||||
return {
|
||||
action: 'liberar_cliente',
|
||||
target: rlMatch[1].trim(),
|
||||
confidence: 0.85,
|
||||
type: 'keyword_liberar'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Detectar "quem está/ta conectado" → listar_usuarios
|
||||
if (/quem\s+(?:está|esta|tá|ta)\s+conectado/i.test(text)) {
|
||||
return {
|
||||
action: 'listar_usuarios',
|
||||
target: 'concentrador',
|
||||
confidence: 0.95,
|
||||
type: 'keyword_quem_conectado'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar segunda via → gerar_boleto
|
||||
if (/segunda\s*via|2[aª]\s*via/i.test(text)) {
|
||||
const svMatch = text.match(/(?:segunda\s*via|2[aª]\s*via)\s*(.*)/i);
|
||||
return {
|
||||
action: 'gerar_boleto',
|
||||
target: svMatch && svMatch[1] ? svMatch[1].trim() : null,
|
||||
confidence: 0.9,
|
||||
type: 'keyword_segunda_via'
|
||||
};
|
||||
}
|
||||
|
||||
// Detectar cortar internet / suspender acesso → bloquear_cliente
|
||||
if (/cortar\s+internet|suspender\s+(?:cliente|acesso|internet)/i.test(text)) {
|
||||
const blMatch = text.match(/(?:cortar|suspender)\s+(?:internet|acesso|cliente)?\s*(.+)?/i);
|
||||
if (blMatch && blMatch[1]) {
|
||||
return {
|
||||
action: 'bloquear_cliente',
|
||||
target: blMatch[1].trim(),
|
||||
confidence: 0.85,
|
||||
type: 'keyword_bloquear'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Procurar por ações conhecidas
|
||||
for (const [action, synonyms] of Object.entries(this.actionSynonyms)) {
|
||||
for (const synonym of synonyms) {
|
||||
|
||||
Reference in new issue
Block a user