O Projeto de Mapeamento de Obras Públicas do Distrito Federal nasceu da necessidade de otimizar o acompanhamento e a transparência das obras públicas em andamento na região. Com o crescente volume de recursos públicos destinados a investimentos em infraestrutura e desenvolvimento urbano, surgiu a ideia de criar uma ferramenta que facilitasse a visibilidade dessas obras, garantindo uma maior transparência para a população do Distrito Federal.
Tecnologias Usadas
HTML5
CSS3
JavaScript (ES6+)
Python
Node.js
API Obras Gov
Axios
Tweepy
Sobre o Grupo
Nós fazemos parte do SQUAD 7 da disciplina de Métodos de Desenvolvimento de Software, ministrada pela professora Carla Rocha, que é composto por estudantes de Engenharia de Software que aplicam conceitos e metodologias de desenvolvimento em projetos reais. O grupo foca na utilização de práticas ágeis, como Scrum, e na integração de técnicas de qualidade, testes e gerenciamento de projetos. Além de promover a aprendizagem prática e colaborativa, o grupo também busca inovação e pesquisa em soluções tecnológicas. Através de projetos como o Mapeamento de Obras Públicas do DF, os alunos têm a oportunidade de aplicar seus conhecimentos em desafios reais, preparando-os para o mercado de trabalho e contribuindo para a sociedade.
Como Subir o Ambiente
Clone o Repositório
git clone https://github.com/unb-mds/2024-2-Squad07
cd 2024-2-Squad07
Configuração do Backend em Node.js
Navegue até o diretório do projeto em Node.js:
cd ObrasGov
Instale as dependências:
npm install
Configuração do Mapa
Navegue até o diretório do mapa:
cd Mapa
Instale as dependências:
npm install
Configuração do BOT
Navegue até o diretório BOT:
cd Bots
Instale as dependências do Python:
pip install -r requirements.txt
Crie um arquivo .env no diretório principal do projeto e adicione as variáveis de ambiente necessárias, como chaves de API para o Cohere e Tweepy.
Executando o Projeto
Para rodar o backend em Node.js:
npm start
Para rodar o frontend:
npm start
Para executar os scripts Python:
python bot_Twitter.py
Testes e Pull Requests
Teste suas alterações localmente para garantir que tudo funciona como esperado.
Crie uma nova branch para suas alterações:
git checkout -b minha-nova-feature
Faça commit das alterações e envie para o repositório:
Abra um Pull Request descrevendo suas contribuições.
Arquitetura
O sistema de mapeamento de obras públicas no DF foi desenvolvido para permitir que qualquer cidadão interessado tenha acesso a dados relevantes referentes ao andamento das obras públicas através de uma aplicação web. A aplicação apresenta um mapa interativo contendo as informações sobre as obras e conta com um robô (Bot) responsável por denunciar anomalias nas obras na rede social X.
O modelo arquitetural adotado no projeto foi o modelo em camadas, devido à facilidade de manutenção, escalabilidade e reutilização de componentes. Isso permite maior flexibilidade e controle das operações, utilizando a modularização do código.
Objetivos com a Escolha da Arquitetura
Modularidade: Separação de responsabilidades em camadas distintas.
Escalabilidade: Facilidade de expansão do sistema.
Manutenibilidade: Facilidade de atualização e correção de erros.
Desempenho: Otimização da performance sem sacrificar a qualidade do código.
Descrição das Camadas
Camada de Apresentação
Esta é a camada responsável pela interação com o usuário, apresentando a interface web como um mapa interativo com pins clicáveis relacionados diretamente com a localização da obra referenciada. Ao clicar no pin, o usuário visualiza as informações da obra. Foi construída com HTML, CSS e JavaScript.
Camada de Aplicação (Lógica de Negócios)
Esta camada é responsável pelas regras de negócios, interação com outras camadas e APIs externas, e processamento de dados. Atua como a lógica do projeto, dividida em dois componentes:
Backend: Responsável por gerar o mapa e requisitar as informações das obras através das APIs externas.
Robô: Detecta anomalias e as reporta através da rede social X.
APIs requisitadas pelo Backend:
Obras Gov: API que fornece dados necessários sobre as obras públicas.
Leaflet: API que gera o mapa.
APIs requisitadas pelo Robô (Bot):
X API: API responsável por enviar as anomalias em formato de tweet à rede social X.
Cohere: IA generativa que produz mensagens humanizadas para o reporte de anomalias no X.
Camada de Dados
A camada de dados do sistema utiliza arquivos JSON para armazenar as informações. Cada conjunto de dados é representado como um objeto JSON ou uma lista de objetos JSON, que podem ser facilmente manipulados usando bibliotecas e frameworks de parsing JSON. Esses arquivos são armazenados no sistema de arquivos local ou em um repositório de objetos, como um serviço de armazenamento em nuvem.
Documentação do Projeto
1. Introdução
1.1 Objetivo
Este documento especifica os requisitos para o desenvolvimento do projeto Mapeamento de Obras do grupo 07,
parte da disciplina de Métodos de Desenvolvimento de Software 2024.2. O objetivo do projeto é exibir dados
de obras públicas do Distrito Federal por meio de um mapa interativo.
1.2 Escopo
Apresenta obras públicas do DF utilizando um mapa interativo.
Coleta dados fornecidos pela API ObrasGov e os insere em um mapa da biblioteca Leaflet.
Oferece recursos de visualização, detalhamento e filtros para facilitar o acesso às informações.
1.3 Tecnologias Utilizadas
Front-end: HTML, CSS, JavaScript e Leaflet
API: ObrasGov
2. Descrição Geral
2.1 Visão Geral do Sistema
O sistema permitirá que os usuários visualizem um mapa interativo com pinos representando obras públicas.
Ao clicar em um pino, os detalhes da obra serão exibidos. O sistema incluirá funcionalidades de filtros
para personalizar as informações exibidas.
2.2 Objetivos do Usuário
Visualizar obras públicas em andamento, concluídas ou inacabadas.
Acessar informações detalhadas das obras, como valores, datas e status.
Filtrar obras por região, status ou período de execução.
3. Requisitos Funcionais
3.1 Épico: Mapa Interativo de Obras
Feature: Exibir um pino no mapa para cada obra com informações detalhadas, incluindo:
Nome da obra
Valor investido
Data de início e previsão de término
Status da obra
Feature: Filtros de pesquisa no mapa por:
Status da obra
Nome da obra
Prazo de entrega da obra
3.2 Épico: Lista Detalhada de Obras Públicas
Feature: Ao clicar em uma obra na lista, serão exibidos todos os seus detalhes, como:
Nome da obra
Responsáveis pela obra
Status da obra
Prazo de entrega da obra
Feature: Filtros de pesquisa na lista por:
Status da obra
Nome da obra
Prazo de entrega da obra
3.3 Épico: Bot para Reportar Anomalias
Feature: Detectar automaticamente anomalias (atrasos ou inconsistências) nas obras.
Feature: Postar atualizações no Twitter com informações da anomalia identificada na respectiva obra.
Feature: Gerar textos humanizados para os posts no Twitter, utilizando IA para se assemelhar à escrita natural.
4. Requisitos Não-Funcionais
4.1 Usabilidade
A interface deve ser intuitiva e amigável, com elementos visuais organizados logicamente.
O design deve ser responsivo, garantindo uma boa experiência em diferentes dispositivos (desktop, tablet, mobile).
O sistema deve facilitar a navegação e o uso das funcionalidades.
5. User Story Map
Para organizar e visualizar melhor os requisitos do projeto, foi elaborado um User Story Map no Figma.
Este mapa divide os requisitos em épicos e features, com a previsão de adicionar, futuramente, as histórias de usuários.
Visualizar o mapa no Figma
Protótipo de baixa fidelidade
Este é nosso protótipo de baixa fidelidade. Sua finalidade é que possamos ter uma ideia de como seriam as telas principais do nosso sistema
Protótipo de alta fidelidade
Navegue pelo nosso protótipo de alta fidelidade do sistema de mapeamento de obras públicas no DF. O protótipo foi criado no Figma
Explore as atas do nosso projeto
Acesse a pasta do nosso projeto no GitHub para obter mais detalhes.