Skip to content

Byte-Boost/Duck

Repository files navigation

header-duck-main


ObjetivoVisão do produtoCronogramaBacklog/EntregasRequisitosTecnologiasComo usarEquipe

🎯 Objetivo

O objetivo do nosso produto é simplificar a extração de insights de documentos escritos. Usando inteligência artificial, capacitamos os usuários a gerar perguntas relevantes e obter respostas instantâneas, aprimorando a produtividade em estudos e análises.

👁️‍🗨️ Visão do Produto

Nosso produto é uma aplicação Java desktop que, através de inteligência artificial, permite aos usuários extrair perguntas e respostas de documentos PDF ou TXT, tornando a análise de conteúdo mais eficiente.

🗓️ Cronograma

Entregas-duck

📌 Product Backlog

Sprint Requisitos Prioridade Descrição
1 Tela de carregamento de doc. funcional. Alta Uma interface gráfica para o carregamento do arquivo de texto a inserir no assistente virtual.
1 Tela em formato de chat. Alta Uma interface gráfica para inserir perguntas e obter respostas a respeito do arquivo carregado.
1 Integração da IA. Alta Aplicação da mecânica da IA com as telas de carregamento e chat para obter as respostas desejadas.
1 Registro e documentação via Github. Alta Documentar e registrar o processo de criação e desenvolvimento através do Github.
1 Product Backlog Média Desenvolver o backlog total do produto
1 Criação de protótipo Figma Média Criação de um protótipo via Figma para esquema visual do produto.
1 Tela de cadastro. Baixa Uma tela para cadastro de usuários.
1 Tela de login. Baixa Interface gráfica de login para o usuário acessar o assistente virtual.
2 Tela de registro de atividades. Alta Interface gráfica para visualizar o registro contendo usuário, data e nome do arquivo.
2 Banco de dados Alta Criação do banco de dados[(sem conexão) pensar na implementação e conexão
2 Conexão com Banco de dados Alta Será feita a conexão do banco de dados com todas as telas e funções que necessitam de tal aplicação.
2 Aperfeiçoamento da GUI(estilização) Média Aperfeiçoamento estético da interface gráfica.
3 Aperfeiçoamento do código para melhor experiência de respostas Alta Inserção e aperfeiçoamento do código para aumentar a experiência das respostas obtidas através da IA.
3 Frontend da tela de login Média Inserção de botão que permite ao usuário informar que não lembra da sua senha de acesso e o leva a uma tela de recuperação de senha
3 Frontend da tela de recuperação de senha Média Criação de uma interface gráfica onde o usuário possa solicitar a recuperação do acesso em caso de perda de senha.
3 Backend da tela de recuperação de senha Média Implementação dos códigos necessários para o funcionamento do sistema de recuperação de senha
3 Backend sistema de envio de código para recuperação de senha Média Implementação dos códigos necessários para o envio de um e-mail de recuperação de senha com um token de verificação, utilização de java e HTML.
3 Frontend tela de inserção de código de recuperação de senha Média Criação de uma interface gráfica onde o usuário ira inserir o token de verificação para dar início ao processo de criação da nova senha de acesso.
3 Backend sistema de inserção de código de recuperação de senha Média Implementação dos códigos necessários para que o token de verificação seja confirmado pelo sistema e o envie para a etapa de cadastro de nova senha.
3 Frontend da tela para criação de nova senha Média Criação de uma interface gráfica onde o usuário criará sua nova senha.
3 Backend do sistema de criação de nova senha Média Implementação dos códigos que permitirão a alteração da antiga senha por uma nova e seu respectivo registro no Banco de Dados.
3 Frontend implementação de visualizar/ocultar senha Baixa Alteração visual na tela de login permitindo a visualização/ocultação da senha por meio do clique do mouse.
4 Alteração no tamanho e qualidade das respostas Alta Alteração no código para melhoria no tamanho e qualidade das respostas exibidas.
4 Melhoria na exibição do histórico Alta Modificações para que a exibição do histórico de arquivos carregados mostrem apenas informações relacionadas ao usuário que está logado.
4 Criptografia de senhas Média Implementação de hash para criptografia de senhas para maior segurança.
4 Multithreading Média Implementação de multithreading permitindo o processamento de mais de uma resposta e pergunta ao mesmo tempo.
4 Exclusão de arquivos temporários Média Implementação de código para excluir arquivos gerados pela aplicação.
4 Documentação Baixa Criação de um quickstart para guiar a utilização da aplicação

🎥 Video Apresentação

Para assistir a nossa apresentação clique no Link

Sprints

Sprint 1

Tarefa Prioridade Status
Desenvolvimento do Product Backlog Alta Entregue
Criação de Protótipo para referência. Alta Entregue
Criação de Repositórios para documentação via Github. Alta Entregue
Integração com a IA Alta Entregue
Desenvolver uma tela de carregamento de arquivos. Média Entregue
Desenvolver uma tela de chat. Média Entregue
Tela de login Baixa Entregue
Tela de cadastro Baixa Entregue
sprint1gif

Sprint 2

Tarefa Prioridade Status
Desenvolvimento da tela de registro de atividades Alta Entregue
Integração com o banco de dados Alta Entregue
Frontend tela de login Média Entregue
Frontend tela de cadastro Média Entregue
Frontend tela de carregamento de arquivos Média Entregue
Frontend tela de chat Média Entregue
Tela de cadastro. Baixa Entregue
Tela de login. Baixa Entregue
sprint2gif

Sprint 3

Tarefa Prioridade Status
Aperfeiçoamento do código para melhor experiência de respostas Alta Entregue
Botão para recuperar senha Média Entregue
Tela para solicitação de senha Média Entregue
Sistema de confirmação de e-mail Média Entregue
Tela para criação de nova senha Média Entregue
Botão para ocultar/mostrar senha Baixa Entregue
sprint3gif

Sprint 4

Tarefa Prioridade Status
Alteração no tamanho e qualidade das respostas Alta Entregue
Melhoria na exibição do histórico Alta Entregue
Criptografia de senhas Média Entregue
Multithreading Média Entregue
Exclusão de arquivos temporários Média Entregue
Frontend tela de chat Média Entregue
Documentação Quickstart Baixa Entregue
sprint4gif

📌 User Stories

ID SPRINT US ESTIMATIVA DE ESFORÇO EM HORAS TASK CRITÉRIO DE ACEITAÇÃO
US01 1 EU, enquanto cliente, desejo estar ciente das etapas do processo de desenvolvimento do produto. 2:00 Desenvolvimento do backlog total do produto e das Sprints. Product Backlog e Sprint Backlog com US da primeira sprint.
US02 1 EU, enquanto cliente, desejo poder ter acesso ao registro, documentação e versionamento das etapas do processo de desenvolvimento do produto. 2:00 Criação do repositório no GitHub e definição de informações essenciais. Definição de informações gerais no README com descrição clara e concisa, dentro da estrutura padronizada.
US03 1 EU, enquanto membro da equipe de desenvolvimento, desejo ter um protótipo visual e parcialmente funcional como referência para o projeto. 1:00 Caixas de diálogo, input e output e botões que serão utilizados na GUI do projeto. Visualização e fundamentação de como será a aparência e dinâmica da aplicação.
US04 1 EU, enquanto usuário, desejo realizar através de uma interface gráfica o carregamento de arquivos dos quais desejo obter informações por meio do assistente virtual. 2:00 Desenvolver uma tela de carregamento de arquivo. A tela de carregamento deve estar totalmente funcional, botões e acesso ao explorer.
US05 1 EU, enquanto usuário, desejo obter através de uma interface gráfica em formato de CHAT para realizar perguntas e visualizar respostas. 1:30 Desenvolver uma tela de chat. A tela de chat deve estar totalmente funcional, enviando perguntas e recebendo respostas.
US06 1 EU, enquanto usuário, desejo obter respostas sobre os documentos carregados e analisados pela IA. 1:30 Integração da IA. A aplicação deve estar retornando informações referente às perguntas feitas pelo usuário .
US07 1 EU, enquanto usuário administrador, desejo ter informações sobre o usuário que está utilizando a aplicação 1:30 Desenvolver uma tela de login. A interface deve estar visualmente pronta.
US08 1 EU, enquanto usuário administrador, desejo poder cadastrar outros usuários através de uma interface gráfica. 1:30 Desenvolver uma tela de cadastros. A interface deve estar visualmente pronta.
US09 2 EU, enquanto usuário administrador, desejo obter informações sobre o usuário atual, hora, data e nome do arquivo carregado através de uma interface gráfica 3:00 Desenvolver uma tela de registro de atividades. A interface deve mostrar os dados de usuário, data, hora e nome do arquivo carregado.
US10 2 EU, enquanto usuário administrador, desejo que a aplicação tenha um banco de dados conectado para armazenamento e registros uteis à aplicação. 4:00 Conectar o banco de dados às interfaces. O banco de dados deve estar conectado às interfaces e respondendo às requisições do sistema.
US11 2 EU, enquanto membro da equipe de desenvolvimento, desejo que o frontend das telas de login, cadastro, carregamento de arquivo, registro de atividades e de chat tenham uma identidade visual padronizada. 10:00 Padronizar a estética das interfaces gráficas. As telas devem seguir uma identidade visual em padrão de cores, fontes e tamanho de botões.
US12 2 EU, enquanto usuário, desejo poder retornar da página de chat à pagina de carregamento de arquivo. 00:30 Adicionar um botão de retorno de página. O botão de retorno deve levar o usuário da página de chat a página de carregamento de arquivos.
US13 2 EU, enquanto usuário administrador, desejo poder cadastrar usuários do sistema para registro e segurança. 2:00 Deixar a tela de cadastros funcional e ligada ao banco de dados. A tela de cadastros deve estar devidamente operacional e funcional.
US14 2 EU, enquanto usuário administrador, desejo que o acesso ao sistema seja feito apenas após um login de usuário cadastrado. 2:00 Deixar a tela de login funcional e ligada ao banco de dados. A tela de login deve estar devidamente operacional e funcional.
US15 3 EU, enquanto usuário, desejo obter uma melhor experiência e eficiência nas respostas geradas pela IA através do Chat. 3:00 Implementar códigos e métodos em java que aumentem a eficiência na tokenização do texto. Obter respostas mais assertivas, mais longas e detalhadas.
US16 3 EU, enquanto usuário, desejo ter um botão na tela de login para recuperar a senha perdida/esquecida. 2:45 Implementar um botão de recuperação de senha. Um botão funcional que leve a uma tela de recuperação de senha.
US17 3 EU, enquanto usuário, desejo ser direcionado para uma tela de recuperação de senha. 2:00 Criação de um frontend e backend de um sistema que enviará um e-mail com um token de confirmação. Uma tela funcional que envie um e-mail com um token de confirmação para a recuperação de senha.
US18 3 Eu, enquanto usuário, desejo ser direcionado para uma tela de criação de nova senha. 6:30 Criação de frontend e backend de um sistema de inserção do token de confirmação Uma tela funciona onde o usuário ira inserir o token e estará habilitado a criar uma nova senha.
US19 3 EU, enquanto usuário, desejo poder ocultar ou mostrar minha senha digitada no campo de texto na tela de login. 1:00 Alteração no frontend da tela de login para adição de um botão ocultar/mostrar senha. Um botão funcional que oculte ou mostre a senha digitada no campo de senha na tela de login.
US20 4 EU, enquanto usuário, desejo obter respostas maiores e mais completas. 3:00 Modificar o código para aumentar e melhorar as respostas obtidas. Respostas maiores e mais concisas sobre o tema do texto carregado.
US21 4 EU, enquanto usuário, desejo visualizar informações apenas do usuário logado no histórico. 4:00 Alterações no código e banco de dados. Ao acessar o histórico de acessos, exibir apenas informações do usuário logado.
US22 4 EU, enquanto usuário, desejo ter um sistema de senha mais seguro. 2:15 Implementação de criptografia de senhas (hash). Senhas criptografadas.
US23 4 EU, enquanto usuário, desejo que os arquivos criados pela aplicação sejam excluídos após o uso. 1:00 Implementação de código para exclusão de arquivos criados pela aplicação após o uso. Exclusão dos arquivos .txt criados pela aplicação após o uso.
US24 4 EU, enquanto usuário, desejo poder enviar novas perguntas enquanto a aplicação processa outra resposta. 1:00 Implementação de código para uso do multithreading. Aplicação recebendo perguntas e gerando respostas ao mesmo tempo sem travamento.
US25 4 EU, enquanto usuário, desejo ter um guia rápido para utilizar a aplicação. 1:15 Criação de documentação para instrução de uso da aplicação. Documentação quickstart para auxílio na utilização da aplicação.

🔎 Requisitos

Funcionais:
  • Linguagem Java (Requisito Fatec);
  • Aplicação Desktop Java (Requisito Fatec);
  • Apresentação via Github;
Não funcionais:
  • Documentação via Github;
  • Linguagem de programação Java;

🖥️Tecnologias:

  • Java

  • MySQL

  • Gradle

  • LangChain for Java

  • JavaFX

🛠️ Ferramentas:

  • GitHub

  • IntelliJ

  • Figma

Como utilizar

Requisitos :

  • IntelliJ IDEA
  • Java 17+
  • JFX 20+
  • Git
  • Gradle
  1. Abra o cmd na pasta aonde deseja instalar o projeto
  2. Execute os comandos
git clone https://github.com/Byte-Boost/Duck
cd Duck
cd Backend_Duck
idea64.exe
  1. Vá para as configurações de Run/Debug
  2. Clique em Modify options
  3. Clique em Add VM options
  4. No campo agora disponivel adicione o seguinte, modificando PATH_TO_JAVAFX/lib com o caminho da pasta lib dentro do diretorio do JavaFX local.

Warning

Não se esqueça de colocar o caminho entre aspas.

--module-path PATH_TO_JAVAFX/lib --add-modules javafx.swing,javafx.graphics,javafx.fxml,javafx.media,javafx.controls
  1. Configure um arquivo config.properties, seguindo o modelo configDEV.properties
API_KEY = API key
DB_USER = Database User
DB_PASS = Database Password
EMAIL_USER = [email protected]
EMAIL_PASS = Your Gmail App Password
  1. Rode o projeto através do IntelliJ

👥 Equipe:

Static Badge - Diego Vitvicki :

Static Badge - Gabriel Alves :

Static Badge - Bianca Capelo :

Static Badge - Jaqueline Maria França Veloso da Silva :

Static Badge - Jhuan Araújo :

Static Badge - Marcos Antonio :

Static Badge - Markos Nunes :

Static Badge - Vinícius Forcato :