Configurando projeto
O Alfred consiste em um projeto que atende as empresas parceiras da Beep Saúde. Para isso, é um projeto multi-tenancy, ou seja, cada empresa tem sua propria plataforma Alfred, com suas respectivas particularidades (paleta de cores, BUs e entre outras funcionalidades).
Atualmente o nosso projeto Alfred está divido em duas tecnologias: Rails e Nuxt. A parte do Rails controla a parte de vacinação particular. A parte do Nuxt controla todos os outrs 3 fluxos (exames sem e com anexo e vacina com anexo).
Clonando o projeto
- SSH
- HTTPS
git clone git@github.com:beep-saude/beep-b2b.git
git clone https://github.com/beep-saude/beep-b2b.git
Configurações Iniciais
Para funcionar corretamente estes passos, certifique-se que o server local também esteja rodando.
Versões do ruby e node
O projeto está contruído atualmente em Ruby 2.6.6 e node 16.
rvm use 2.6.6
nvm use 16
Criação via Seeds (Company, PortalConfig e User)
rails db:seed
Após rodar as seeds é preciso atualizar a senha direto no console do Server. Vá para o console do server e faça:
user = User.find_by_username "b2b@connect.com.br"
user.password = "MinhaSenhaSegura@124"
user.save!
Criação das models manualmente
Passo 1 - Criando uma Company
Crie uma Company na sua base de dados.
Company.create(
slug: "connect",
object_id: 6,
transport_price: nil,
attachment_config: { host: "http://localhost:3002/v1", api_key: "uoRQCJEGRgSg5UINe", secret_key: "secret"},
show_product_services: true,
accept_pay_by_credit_card: true,
accept_pay_by_bill: true,
show_only_operator_history: false
)
Passo 2 - Criando um PortalConfig
Crie um PortalConfig para esta Company criada no passo 1
company = Company.last
PortalConfig.create(
company: company,
title: "Connect",
logo_bar: "/path/to/file",
show_partner_price: false,
allowed_flows: ['vaccines']
)
O PortalConfig vai conter todas as particularidades de uma empresa/alfred.
Passo 3 - Criando um usuário
Cada usuário cadastrado no nosso server, tem um tipo. Seja do tipo Patient, ou Backoffice. No caso b2b precisa ter um usuário de um tipo específico, seria esse um organization. Podemos criar esse usuário no server pelo console do alfred, da seguinte forma:
user_repository = Authentication::Repositories::UserRepository.build
operator_repository = Portal::Repositories::OperatorRepository.build
company = Company.last
user = Authentication::UseCases::CreateUser.new(
name: "B2b",
username: "b2b@connect.com.br",
company: company,
is_admin: true,
user_repository: user_repository,
operator_repository: operator_repository).execute
Após criar um usuário, é preciso atualizar a senha direto no console do Server. Vá para o console do server e faça:
user = User.find_by_username "b2b@connect.com.br"
user.password = "MinhaSenhaSegura@124"
user.update!
Passo 4 - Ajustando app.yml do Server
É preciso ter atenção as chaves referentes ao b2b no app.yml do server. Ajuste a seguinte chave:
b2b:
api_key: "uoRQCJEGRgSg5UINe"
Passo 5 - Start do projeto 🚀
- Iniciando B2B (Alfred)
rails s -p 3004
- Acesse o link
connect.localhost:3004.
connect-> Slug da company criada no passo 1;localhost-> Host onde o projeto está rodando;3004-> Porta em que o projeto está rodando.
Fluxos permitidos (allowed_flows)
A Forma de indicação de fluxos de BUs mudou!
Temos uma nova forma de liberar/remover uma BU para um Portal/Alfred. Agora temos 4 tipos de fluxos:
| Slug | Título do Fluxo | Resultado |
|---|---|---|
vaccines | Fluxo de Vacina sem Anexo | O Agendamento não irá para a tela de transcrição |
vaccines_with_attachments | Fluxo de Vacina com Anexo | Agendamento cairá na tela de transcrição |
laboratories | Fluxo de Exame sem Anexo | O Agendamento não irá para a tela de transcrição |
laboratories_with_attachments | Fluxo de Exame com Anexo | Agendamento cairá na tela de transcrição |
Para liberar um fluxo basta adicionar um destes fluxos na coluna allowed_flows, contida na model de PortalConfig
portal = Portal.find PORTAL_ID
portal.allowed_flows = ['vaccines', 'laboratories', 'laboratories_with_attachments']
portal.save!
No exemplo acima, a empresa pode criar apenas agendamentos de vacina e exames sem anexos e laboratórios com anexo
Sobre Estilos
- Por convenção utilizamos o nome do slug da compania como nome do arquivo do css. O arquivo fica guardado no host da amazon configurado app.yml. Ele deve ficar na past b2b/companies/slug-company.css
- Utilizar a estrutura do modelo de css que está na pasta companies/example.scss. Ele define as variaveis de brand-color e importa os 3 arquivos principais de layout. ( Vendor, Elephant e Application)
- Qualquer estilo que seja generico para todas as tenancies, criar um novo .scss e importar direto no html.