|
| 1 | +## Objetivo do desafio |
| 2 | + |
| 3 | +Construir uma API Restful em python que atinja o seguinte objetivo: dois metodos get onde será executado um processamento em cima de uma base de dados local localizada no diretório /src/datasets/ e retornará o resultado desse processamento. |
| 4 | + |
| 5 | +## Como começar o desafio |
| 6 | + |
| 7 | +Dar um fork no projeto, clonar o repositório em sua máquina local e criar um branch novo para o seu código. |
| 8 | + |
| 9 | +## Histórias |
| 10 | + |
| 11 | +• Ao utilizar o método get_list_of_constructions_form_ref eu preciso que seja retornado uma lista do campo "Ref" somente onde o campo "Report Forms Status" for "Closed" usando a dataset denominado "construction_data_forms.csv" |
| 12 | + |
| 13 | +• Ao utilizar o método get_constructions_tasks_date_range eu preciso que seja retornado três valores referentes ao campo "Status Changed" do dataset denominado "construction_data_tasks.csv": a data mais antiga do conjunto, a data mais recente do conjunto e total de dias entre as duas datas, Exemplo: start_date: 01/01/2023; end_date: 31/01/2023; total_in_days: 30 |
| 14 | + |
| 15 | +• Você precisa disponibilziar a documentação básica da API para que possa ser utilizada por um terceiro que não conhece seu código. |
| 16 | + |
| 17 | +• É necessário que a API possa ser testada através de um método interativo, como por exemplo, usando Swagger UI. |
| 18 | + |
| 19 | +• Eu preciso ter um arquivo dockerfile para poder virtualizar a aplicação, gerando uma imagem dela para rodar com docker. Importante enviar as orientações de "docker run" para rodar o projeto. |
| 20 | + |
| 21 | +## Referências |
| 22 | + |
| 23 | +• Os datasets necessário para o teste se encontram no diretório /src/datasets/ dentro do projeto. |
| 24 | + |
| 25 | +• Os datasets trazidos nesse projeto são abertos e originados do link: https://www.kaggle.com/datasets/claytonmiller/construction-and-project-management-example-data |
| 26 | + |
| 27 | +## Observações |
| 28 | + |
| 29 | +1. Utilize CORS aberto para qualquer origem de requisições. |
| 30 | + |
| 31 | +2. Não é necessário criar metodos de autenticação, nesse momento você pode criar uma API de consulta pública e aberta. |
| 32 | + |
| 33 | +## Requisitos Técnicos para a entrega do teste |
| 34 | + |
| 35 | +• Sugerimos a utilização do FastAPI para criação da aplicação. |
| 36 | + |
| 37 | +• Utilize seus padrões de organização de projeto, documentação e código. |
| 38 | + |
| 39 | +• Pode ser utilizada qualquer lib adicional que julgar importante para o bom funcionamento da aplicação, mas não se esqueça de dar as orientações de instalação delas (caso seja necessário) |
| 40 | + |
| 41 | +• A aplicação será rodada em localhost. |
| 42 | + |
| 43 | +• Ainda na documentação, explicar a sua motivação de escolha das libs e frameworks (ou o motivo de ter feito na mão). Uma explicação sobre a estrutura do projeto também será bem vinda. |
| 44 | + |
| 45 | +• É imprescindível que o teste desenvolvido funcione corretamente em qualquer máquina. |
| 46 | + |
| 47 | + |
| 48 | +## Observações importantes |
| 49 | + |
| 50 | +A ideia deste desafio é entender como você domina os conceitos de desenvolvimento de APIs, serviços, processamentos, virtualização e documentação. |
| 51 | + |
| 52 | +Não é pra ser um teste exaustivo. Objetivo é entregar a solução proposta de forma direta mas de forma replicavel, funcional e documentada para uso. |
| 53 | + |
| 54 | +Além do que foi pedido nos requisitos técnicos acima, não existe “certo e errado”, da mesma forma que não vamos levar tudo ao pé da letra nos mínimos detalhes. |
| 55 | + |
| 56 | +## Considerações finais |
| 57 | + |
| 58 | +Buscamos entender seu perfil de desenvolvimento, resolução de problemas, raciocinio lógico e boas práticas de desenvolvimento. O papel desse profissional dentro do time é desenvolver serviços específicos da camada analítica e automação da empresa, dessa forma, buscamos profissionais criativos e orientados a solução. |
| 59 | + |
| 60 | +Esperamos que você vá além do mínimo proposto e demostre o conhecimento que tem. O teste tem gaps propositais para você sugerir soluções, desenvolver ideias e provar na prática o porque a sua decisão pode ter um impacto positivo nessa tarefa. |
| 61 | + |
| 62 | +No demais, o diálogo é sempre bem-vindo e incentivado, principalmente sugestões e discussões. Caso surjam dúvidas no processo, sintam-se à vontade para nos perguntar. |
| 63 | + |
| 64 | +Boa sorte no teste! |
| 65 | + |
| 66 | +Abraço! |
0 commit comments