# Ames3
## Dar a possibilidade de criar sub-pipelines com múltiplas ferramentas
### Criar comportamentos para o pipeline. Ex: Parar ao dar erro, parar ao sucesso ou falha, nunca parar.
```ruby
BuildRequestPipelineService
- unauthorized_to_continue? (valida se analise pode ser analisada)
-- podemos extrair essa parte para um service? (Validator)
- Alterar PipelineOrderService
-- Receber services_list_order parametrizado
-- Extract SERVICES to util
- Alterar BuildRequestPipelineService
-- reduce_service_name_list instanciar as services com os parâmetros
-- call_services alterar para service.call
- Criar Comportamentos de Pipeline
-- RunForFirstSuccessOrFail (End Status)
- Para medir sucesso:
-- Acompanhar comportamento do pipeline de base de faces
- Esforco:
-- 3 semanas
```
## Transformar a execução da pipeline ordenável, porém ainda hardcoded (Isolar estas responsabilidades em caixas pretas) -> Tipo hash
```ruby
- Refatorar outros services de ferramentas para retornar o status
- Implementar comportamento RunAll
- Alterar call_services para criar uma classe BuildRequestPipelineJob
- Esforco:
-- 2 semanas
```
## Transformar a execução da pipeline completa em uma pipeline que só continua a execução caso o “serviço de af” não tenha dado falha.
```ruby
- Implementar comportamento RunForFirstFail
- Esforco:
-- 2 semanas
```
## Transformar as configurações efêmeras de provedores em configurações mais “consistentes” (Entidades da aplicação, talvez?)
```ruby
- Criar entidade ferramentas (Nome, Servico, Ativo?)
- Alterar reduce_service_name_list para buscar serviço na entidade Ferramenta do mongo
- Esforco:
-- 3 semanas
```
## Criar “planos” iniciais com as configurações de create e de update para cada campo alterado, porem ainda fixos. -> Componente do sistema
### E também configura para outras aplicações utilizarem quando necessário
```ruby
- Criar estrutura:
-- Criar entidade pipelines (Nome, Ferramentas, modo)
-- Criar entidade planos (Nome, create_pipeline, update_pipelines, modo)
- Esforco:
-- 3 semanas
- Adequar ames para nova estrutura:
-- Para utilizar o create_pipeline, vamos precisar alterar o BuildRequestPipelineJob para executar o plano slecionado.
-- Para utilizar o update_pipelines, vamos precisar alterar o FilterProvidersByChangedParamsService para executar o plano slecionado.
- Alterar ames para receber plano parametrizado
- Esforco:
-- 5 semanas
```
## Criar a possibilidade de customizar os planos via interface de admin da ames.
```ruby
- Definição de UX/Design de Ferramentas (list, show, add, update, delete)
- Definição de UX/Design Cadastro de Planos (list, show, add, update, delete)
- Esforco:
-- 2 semanas
- Criar controllers Ferramentas (list, show, add, update, delete)
- Criar views Ferramentas (list, show, add, update, delete)
- Esforco:
-- 3 semanas
- Criar controllers Planos (list, show, add, update, delete)
- Criar views Planos (list, show, add, update, delete)
- Esforco:
-- 3 semanas
```
## Permitir que outras aplicações “vejam os planos da ames” e possam ser configuradas pelo usuário em certos cenários
## Mockar os provedores em homolog