Tarefa para Desenvolvedor: Atualização do Módulo blue_n8n
Objetivo: Atualizar o módulo blue_n8n com as principais funcionalidades relacionadas ao N8N, focando na automação de processos de vendas no CRM (crm.team), de acordo com as melhores práticas do N8N.
Instruções:
- Localização do Módulo:
- O módulo está localizado no servidor loki, no diretório:
repositorio/BlueApps5/blue_n8n.
- O módulo está localizado no servidor loki, no diretório:
- Principais Funcionalidades a Serem Implementadas:
- Sincronização de Usuários:
- Implementar a função de sincronização de usuários entre o Odoo (res.users) e o N8N, garantindo que os usuários em ambos os sistemas estejam sincronizados.
- Função para enviar usuários novos do Odoo para o N8N.
- Função para sincronizar e importar usuários existentes do N8N para o Odoo.
- Sincronização de Usuários:
Para sincronizar usuários entre o N8N e o modelo res.users do Odoo, podemos criar duas funções principais: uma para enviar novos usuários do Odoo para o N8N e outra para sincronizar usuários existentes do N8N no Odoo. Essas funções irão integrar-se à API do N8N para garantir que os usuários em ambos os sistemas estejam atualizados.
1. Função para Enviar Usuários do Odoo para o N8N
Essa função irá criar um novo usuário no N8N sempre que um usuário for criado no Odoo.
Exemplo de Código Python:
#python Copiar código
import requests from odoo import models, fields, api from odoo.exceptions import UserError class ResUsers(models.Model): _inherit = 'res.users' n8n_user_id = fields.Char(string='N8N User ID') @api.model def create(self, vals): # Criação do usuário no Odoo user = super(ResUsers, self).create(vals) # Verificar se a sincronização com o N8N está habilitada n8n_record = self.env['blue.n8n'].search([('company_id', '=', user.company_id.id)], limit=1) if not n8n_record: raise UserError("Nenhuma configuração do N8N encontrada para esta empresa.") # Criar usuário no N8N url = f"{n8n_record.url_n8n}/users" headers = { 'Authorization': f'Bearer {n8n_record.n8n_api_token}', 'Content-Type': 'application/json' } data = { "email": user.email, "firstName": user.name.split()[0], "lastName": ' '.join(user.name.split()[1:]) if len(user.name.split()) > 1 else '', "password": "defaultPassword123", # Opcional: alterar ou gerar senha automaticamente "isAdmin": False # Define se o usuário será admin no N8N } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: n8n_user = response.json() user.n8n_user_id = n8n_user.get('id') else: raise UserError(f"Erro ao criar o usuário no N8N: {response.text}") return user
2. Função para Sincronizar Usuários do N8N com o Odoo
Essa função irá buscar todos os usuários cadastrados no N8N e sincronizá-los no Odoo.
Exemplo de Código Python:
pythonCopiar códig
oclass ResUsers(models.Model): _inherit = 'res.users' @api.model def synchronize_users_from_n8n(self): # Buscar a configuração do N8N n8n_record = self.env['blue.n8n'].search([('company_id', '=', self.env.user.company_id.id)], limit=1) if not n8n_record: raise UserError("Nenhuma configuração do N8N encontrada para esta empresa.") # Buscar usuários no N8N url = f"{n8n_record.url_n8n}/users" headers = { 'Authorization': f'Bearer {n8n_record.n8n_api_token}', 'Content-Type': 'application/json' } response = requests.get(url, headers=headers) if response.status_code == 200: n8n_users = response.json() for n8n_user in n8n_users: # Sincronizar ou criar usuário no Odoo odoo_user = self.env['res.users'].search([('n8n_user_id', '=', n8n_user['id'])], limit=1) if not odoo_user: # Criar novo usuário no Odoo self.create({ 'name': f"{n8n_user['firstName']} {n8n_user['lastName']}", 'email': n8n_user['email'], 'n8n_user_id': n8n_user['id'], }) else: # Atualizar informações do usuário no Odoo odoo_user.write({ 'name': f"{n8n_user['firstName']} {n8n_user['lastName']}", 'email': n8n_user['email'], }) else: raise UserError(f"Erro ao sincronizar usuários do N8N: {response.text}")
3. Visão para Sincronizar Usuários Manualmente
Para que o administrador possa sincronizar usuários manualmente, você pode adicionar um botão na visão de usuários do Odoo para executar a função de sincronização.
Arquivo XML:
xmlCopiar código
<record id="view_res_users_form_inherit_n8n" model="ir.ui.view"> <field name="name">res.users.form.inherit.n8n</field> <field name="model">res.users</field> <field name="inherit_id" ref="base.view_users_form"/> <field name="arch" type="xml"> <xpath expr="//header" position="inside"> <button name="synchronize_users_from_n8n" type="object" string="Sincronizar Usuários do N8N" class="btn-primary"/> </xpath> </field> </record>
Considerações Finais:
- Autenticação: Certifique-se de que o token da API do N8N esteja devidamente configurado no modelo blue_n8n.
- Senha Padrão: Para novos usuários criados no N8N, você pode usar uma senha padrão ou um sistema de geração de senha personalizada.
- Sincronização Bidirecional: Este exemplo mostra apenas a sincronização de N8N para Odoo e Odoo para N8N. Você pode expandir isso para manter a sincronização bidirecional de alterações de dados.
- Automação de Processos de Vendas:
- Criar/Atualizar workflows no N8N diretamente a partir de crm.team, criando fluxos automáticos para cada equipe de vendas.
- Utilizar as melhores práticas descritas na documentação da API do N8N (documentação N8N API).
- Gerenciamento de Tokens e URL:
- Configurar a URL padrão https://conector.conexaoazul.com.br/ e o token padrão n8n_api_8cffd19a2909fb1510886015ac2cb2564394fbb0aabfddc7fa7a5a33b61d0bf7ebad9822f29c3ad6 no modelo blue_n8n para autenticação automática.
- Integração com CRM:
- Adicionar um botão em crm.team para criar ou atualizar workflows do N8N, utilizando a função de sincronização.
- Automação de Processos de Vendas:
- Melhores Práticas:
- Utilize as melhores práticas do N8N, com foco em automação, desempenho e segurança.
- Certifique-se de que as requisições HTTP estão otimizadas e seguras, utilizando tokens e chaves da API.
Se houver dúvidas, estou à disposição para discutir mais detalhes ou esclarecer requisitos adicionais.