Skip to main content

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).

info

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

  git clone git@github.com:beep-saude/beep-b2b.git

Configurações Iniciais

Se liga!

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)

Rodando Seed
rails db:seed
info

Após rodar as seeds é preciso atualizar a senha direto no console do Server. Vá para o console do server e faça:

Atualizando senha de usuário no server
  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.

Criação de Company
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

Criação do PortalConfig
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:

Criando um usuário através do console do alfred
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
info

Após criar um usuário, é preciso atualizar a senha direto no console do Server. Vá para o console do server e faça:

Atualizando senha de usuário no server
  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 🚀

  1. Iniciando B2B (Alfred)
iniciando o projeto rails B2B
rails s -p 3004
  1. 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)

warning

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:

SlugTítulo do FluxoResultado
vaccinesFluxo de Vacina sem AnexoO Agendamento não irá para a tela de transcrição
vaccines_with_attachmentsFluxo de Vacina com AnexoAgendamento cairá na tela de transcrição
laboratoriesFluxo de Exame sem AnexoO Agendamento não irá para a tela de transcrição
laboratories_with_attachmentsFluxo de Exame com AnexoAgendamento cairá na tela de transcrição

Para liberar um fluxo basta adicionar um destes fluxos na coluna allowed_flows, contida na model de PortalConfig

Adicionando novo fluxo
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.