diff --git a/README.md b/README.md index 1198e25..69c30de 100644 --- a/README.md +++ b/README.md @@ -36,4 +36,246 @@ In recent years, the exponential growth of the internet has revolutionized the w - [API do Modelo](/model) - [Bot para Discord](/discord-bot) -> Desenvolvido e testado no Ubuntu 22.04 \ No newline at end of file +> Desenvolvido e testado no Ubuntu 22.04 + +-------- + +# Proposta + +
+ +Este trabalho propõe a criação do SACI PeReRe (Sistema de Auxílio à Comunicação +Interativa para Perguntas e Respostas Recorrentes). Será desenvolvido um +sistema administrativo Web para o cadastro de perguntas e respostas, bem como um +modelo de redes neurais para identificar automaticamente as respostas às perguntas. +Além disso, será implementado um bot para o Discord que permitirá que os usuários +finais façam perguntas e que essas sejam processadas pelo modelo de rede neural. +Tanto o sistema administrativo Web quanto o sistema do modelo de redes neurais +acessarão o mesmo banco de dados, conforme é possível observar na figura 3.1. + +
+ +
Figura 3.1: Arquitetura do sistema
+
+ +
+ +## Sistema Administrativo Web + +
+ +O sistema administrativo Web será o espaço destinado aos servidores públicos das +universidades para cadastrar perguntas e respostas. Para possibilitar a utilização do +sistema por diferentes departamentos, cursos e/ou instituições, será implementado +um sistema hierárquico de cadastro, representado pela figura 3.2. Esse sistema +hierárquico incluirá tópicos, dentro de cada tópico haverá categorias e, por fim, +dentro de cada categoria estarão as perguntas, acompanhadas de suas respectivas +respostas. + +
+ +
Figura 3.2: Hierarquia das perguntas
+
+ +
+ +
Exemplo real da hierarquia das perguntas
+
+ +Esse sistema também terá um painel com estatísticas fornecidas a partir de +feedback dos usuários sobre as respostas que serão fornecidas pelo modelo de redes +neurais. Com essas estatísticas será possível identificar a precisão e eficácia do modelo +de redes neurais, além de permitir que o usuário do sistema administrativo possa +identificar e reformular as perguntas de maneira que melhore a precisão do modelo. + +Para auxiliar os usuários do sistema administrativo na reformulação mais eficiente +das perguntas, o sistema contará com um histórico das perguntas feitas pelos usuários +finais. Isso permitirá que os usuários do sistema administrativo se baseie na forma +pela qual os usuários finais redigem suas perguntas, a fim de aprimorá-las de maneira +adequada. + +Além disso, o sistema contará com uma lista de perguntas não respondidas. Essa +listagem permitirá identificar novas perguntas que ainda não foram cadastradas no +sistema. Com essa funcionalidade, será possível garantir que todas as perguntas dos +usuários finais sejam consideradas, mesmo aquelas que ainda não fazem parte do +banco de dados. + +
+ +## Sistema do Modelo de Rede Neural + +
+ +Com relação ao sistema do modelo de redes neurais, ele funcionará de maneira +independente do sistema administrativo. Esse sistema terá a função de identificar as +respostas para as perguntas dos usuários, o que requer a construção de uma API +capaz de suportar a integração com diversos aplicativos externos ao nosso sistema, +como Discord, WhatsApp, Telegram, entre outros. Essa abordagem possibilitará +a utilização do modelo em diferentes plataformas e garantirá a interação com uma +ampla gama de usuários, aumentando a acessibilidade e a utilidade do sistema como +um todo. + +Essa API terá a importante função de gerenciar não apenas a identificação das +respostas, mas também o tratamento dos feedbacks enviados pelos usuários. Essa +abordagem permitirá uma interação bidirecional com os usuários, possibilitando que +eles forneçam feedbacks sobre as respostas identificadas pelo sistema de redes neurais. + +Para identificar as respostas, adotaremos um modelo de STS, que permitirá a +comparação entre a pergunta do usuário final e as perguntas cadastradas no banco de +dados pelo sistema administrativo. Perguntas que tiverem uma similaridade abaixo +de um limiar pré-estabelecido serão salvas no banco de dados como perguntas não +respondidas. + +
+ +## Bot para Discord + +
+ +Será desenvolvido um bot com a finalidade de esclarecer as dúvidas dos usuários +finais do SACI PeReRe e para testar o modelo de rede neural. Para isso, o bot fará o +uso da API do modelo para processar as perguntas dos usuários e tratará o retorno +para exibir as respostas relevantes. + +No entanto, antes de apresentar a resposta ao usuário, o bot verificará se a +pontuação de similaridade está acima de um limiar predefinido. Caso a similaridade +esteja acima, o bot exibirá a resposta ao usuário e, além disso, permitirá que ele +forneça feedback sobre a qualidade e utilidade da resposta recebida. + +Por outro lado, se a similaridade entre a resposta e a pergunta não atingir o +limiar estabelecido, o bot informará ao usuário que a pergunta não está cadastrada +na base de dados e, portanto, não pode fornecer uma resposta adequada naquele +momento. Nesse caso, o bot também poderá sugerir ao usuário que reformule sua +pergunta ou busque outros meios de obter a resposta desejada. + +
+ +## Requisitos de Sistema + +
+ +Para identificar os requisitos do sistema, foi realizada uma elicitação de requisitos, +que consistiu principalmente na técnica de brainstorming. A partir desta técnica, +foram geradas diversas ideias que foram discutidas para identificar as necessidades +dos usuários e as funcionalidades que o sistema deve oferecer para atendê-las. Os +requisitos identificados serão apresentados na tabela 3.1 nesta seção e servirão como +base para o desenvolvimento do sistema. + +
+ +
+Requisitos funcionais +
+ +| Código | Descrição do Requisito | +| -- | -- | +| RF 06 | O sistema deve permitir a edição do nome e/ou descrição de uma categoria. | +| RF 07 | O sistema deve incluir a listagem de categorias associadas aos seus respectivos tópicos. | +| RF 08 | O sistema deve permitir a exclusão de uma categoria, sendo que ao excluir a categoria, também serão excluídas as perguntas e respostas associadas à mesma. | +| RF 09 | O sistema deve permitir a criação de uma nova pergunta e resposta dentro de uma categoria informando qual é a pergunta e a resposta. | +| RF 10 | O sistema deve permitir a edição de uma pergunta e/ou resposta. | +| RF 11 | O sistema deve permitir a exclusão de uma pergunta e resposta. | +| RF 12 | O sistema deve incluir a listagem de perguntas e respostas associadas às suas respectivas categorias. | +| RF 13 | O sistema deve permitir o cadastro de um novo usuário informando os campos nome, e-mail e nome de usuário. | +| RF 14 | O sistema deve permitir que um usuário edite suas informações de perfil, tais como nome, e-mail, nome de usuário e senha. | +| RF 15 | O sistema deve permitir que um usuário administrador transforme outros usuários como administradores. | +| RF 16 | O sistema deve incluir a listagem de usuários cadastrados. | +| RF 17 | O sistema deve ter um painel de estatísticas para cada plataforma cadastrada. | +| RF 18 | O sistema deve ter um histórico de perguntas feitas em cada plataforma. | +| RF 19 | O sistema deve ter um histórico de perguntas que o modelo de rede neural não conseguiu responder. | +| RF 20 | O sistema deve incluir uma API para ter acesso ao modelo de rede neural. | +| RF 21 | O sistema deve ser capaz de responder perguntas a partir de interações de usuários por meio de automações em plataformas cadastradas. | +| RF 22 | O sistema deve permitir gerar um relatório contendo todos os tópicos, suas categorias, perguntas e respostas. | +| RF 23 | O sistema deve permitir adicionar tópicos e categorias como favoritos. | + +
Tabela 3.1: Requisitos funcionais
+
+ +
+ +# Resultados + +## Banco de dados + +
+ +
Tabelas do banco de dados
+
+ +## Sistema Administrativo + +
+ + +
Página de login
+
+ +
+ +
Listagem de categorias
+
+ +
+ +
Listagem de perguntas e respostas de uma categoria
+
+ +
+ +
Estatísticas de uso de plataformas
+
+ +
+ +
Estatísticas de uso - Discord
+
+ +[Todas as imagens do sistema administrativo](./docs/sist-adm.md) + +## Bot para Discord + +
+ + +
Pergunta feita diretamente ao bot
+
+ +
+ +
Pergunta feita indiretamente ao bot
+
+ +## Relatório + +> Exportar dados da plataforma + +```json +[ + { + "topic_id": 1, + "topic_name": "DCC", + "topic_description": null, + "categories": [ + { + "category_id": 1, + "category_description": null, + "category_name": "...", + "topic_id": 1, + "questions": [ + { + "question_id": 8, + "question": "...", + "category_id": 1, + "answers": [ + { + "answer_id": 8, + "answer": "..." + } + ] + } + ] + } + ] + } +] +``` diff --git a/docs/assets/architecture.png b/docs/assets/architecture.png new file mode 100644 index 0000000..34146b5 Binary files /dev/null and b/docs/assets/architecture.png differ diff --git a/docs/assets/bot/direct-question.png b/docs/assets/bot/direct-question.png new file mode 100644 index 0000000..74bcbec Binary files /dev/null and b/docs/assets/bot/direct-question.png differ diff --git a/docs/assets/bot/direct-question2.png b/docs/assets/bot/direct-question2.png new file mode 100644 index 0000000..14fd015 Binary files /dev/null and b/docs/assets/bot/direct-question2.png differ diff --git a/docs/assets/bot/indirect-question.png b/docs/assets/bot/indirect-question.png new file mode 100644 index 0000000..cefe81f Binary files /dev/null and b/docs/assets/bot/indirect-question.png differ diff --git a/docs/assets/database_architecture.png b/docs/assets/database_architecture.png new file mode 100644 index 0000000..1fc9c42 Binary files /dev/null and b/docs/assets/database_architecture.png differ diff --git a/docs/assets/question_hierarchy.png b/docs/assets/question_hierarchy.png new file mode 100644 index 0000000..d2b07e1 Binary files /dev/null and b/docs/assets/question_hierarchy.png differ diff --git a/docs/assets/sist-adm/categories.png b/docs/assets/sist-adm/categories.png new file mode 100644 index 0000000..98e3e94 Binary files /dev/null and b/docs/assets/sist-adm/categories.png differ diff --git a/docs/assets/sist-adm/create-user.png b/docs/assets/sist-adm/create-user.png new file mode 100644 index 0000000..e74989e Binary files /dev/null and b/docs/assets/sist-adm/create-user.png differ diff --git a/docs/assets/sist-adm/delete-qa.png b/docs/assets/sist-adm/delete-qa.png new file mode 100644 index 0000000..bd44457 Binary files /dev/null and b/docs/assets/sist-adm/delete-qa.png differ diff --git a/docs/assets/sist-adm/edit-qa.png b/docs/assets/sist-adm/edit-qa.png new file mode 100644 index 0000000..e2469f6 Binary files /dev/null and b/docs/assets/sist-adm/edit-qa.png differ diff --git a/docs/assets/sist-adm/edit-topic.png b/docs/assets/sist-adm/edit-topic.png new file mode 100644 index 0000000..550b8a0 Binary files /dev/null and b/docs/assets/sist-adm/edit-topic.png differ diff --git a/docs/assets/sist-adm/historic.png b/docs/assets/sist-adm/historic.png new file mode 100644 index 0000000..3b193b5 Binary files /dev/null and b/docs/assets/sist-adm/historic.png differ diff --git a/docs/assets/sist-adm/homepage-topics.png b/docs/assets/sist-adm/homepage-topics.png new file mode 100644 index 0000000..53d2e99 Binary files /dev/null and b/docs/assets/sist-adm/homepage-topics.png differ diff --git a/docs/assets/sist-adm/login_dark.png b/docs/assets/sist-adm/login_dark.png new file mode 100644 index 0000000..716d37f Binary files /dev/null and b/docs/assets/sist-adm/login_dark.png differ diff --git a/docs/assets/sist-adm/login_light.png b/docs/assets/sist-adm/login_light.png new file mode 100644 index 0000000..a0fdad7 Binary files /dev/null and b/docs/assets/sist-adm/login_light.png differ diff --git a/docs/assets/sist-adm/not-answered.png b/docs/assets/sist-adm/not-answered.png new file mode 100644 index 0000000..8ff169c Binary files /dev/null and b/docs/assets/sist-adm/not-answered.png differ diff --git a/docs/assets/sist-adm/qa_s.png b/docs/assets/sist-adm/qa_s.png new file mode 100644 index 0000000..9049d55 Binary files /dev/null and b/docs/assets/sist-adm/qa_s.png differ diff --git a/docs/assets/sist-adm/qa_show.png b/docs/assets/sist-adm/qa_show.png new file mode 100644 index 0000000..330de72 Binary files /dev/null and b/docs/assets/sist-adm/qa_show.png differ diff --git a/docs/assets/sist-adm/stats-discord.png b/docs/assets/sist-adm/stats-discord.png new file mode 100644 index 0000000..b982531 Binary files /dev/null and b/docs/assets/sist-adm/stats-discord.png differ diff --git a/docs/assets/sist-adm/stats.png b/docs/assets/sist-adm/stats.png new file mode 100644 index 0000000..ecf8a86 Binary files /dev/null and b/docs/assets/sist-adm/stats.png differ diff --git a/docs/assets/tables.png b/docs/assets/tables.png new file mode 100644 index 0000000..00b66ca Binary files /dev/null and b/docs/assets/tables.png differ diff --git a/docs/sist-adm.md b/docs/sist-adm.md new file mode 100644 index 0000000..0138301 --- /dev/null +++ b/docs/sist-adm.md @@ -0,0 +1,66 @@ +
+ + +
Página de login
+
+ +
+ +
Listagem de tópicos
+
+ +
+ +
Edição de tópico
+
+ +
+ +
Listagem de categorias
+
+ +
+ +
Listagem de perguntas e respostas
+
+ +
+ +
Exibição de pergunta e resposta
+
+ +
+ +
Apagar pergunta e resposta
+
+ +
+ +
Editar pergunta e resposta
+
+ +
+ +
Criação de usuário
+
+ +
+ +
Histórico de perguntas
+
+ +
+ +
Perguntas não respondidas (score baixo)
+
+ +
+ +
Estatísticas de uso de plataformas
+
+ +
+ +
Estatísticas de uso - Discord
+
+