Skip to content

Commit

Permalink
Documentação
Browse files Browse the repository at this point in the history
  • Loading branch information
FerroEduardo committed Aug 17, 2023
1 parent 00f2fc5 commit 6e58b49
Show file tree
Hide file tree
Showing 23 changed files with 309 additions and 1 deletion.
244 changes: 243 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
> Desenvolvido e testado no Ubuntu 22.04
--------

# Proposta

<div align="justify">

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.

<figure align="center">
<img src="./docs/assets/architecture.png" width="400px" />
<figcaption>Figura 3.1: Arquitetura do sistema</figcaption>
</figure>

</div>

## Sistema Administrativo Web

<div align="justify">

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.

<figure align="center">
<img src="./docs/assets/question_hierarchy.png" width="450px" />
<figcaption>Figura 3.2: Hierarquia das perguntas</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/database_architecture.png" width="450px" />
<figcaption>Exemplo real da hierarquia das perguntas</figcaption>
</figure>

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.

</div>

## Sistema do Modelo de Rede Neural

<div align="justify">

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.

</div>

## Bot para Discord

<div align="justify">

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.

</div>

## Requisitos de Sistema

<div align="justify">

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.

</div>

<details>
<summary>Requisitos funcionais</summary>
<figure>

| 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. |

<figcaption align="center">Tabela 3.1: Requisitos funcionais</figcaption>
</figure>

</details>

# Resultados

## Banco de dados

<figure align="center">
<img src="./docs/assets/tables.png" width="800px" />
<figcaption>Tabelas do banco de dados</figcaption>
</figure>

## Sistema Administrativo

<figure align="center">
<img src="./docs/assets/sist-adm/login_light.png" width="500px" />
<img src="./docs/assets/sist-adm/login_dark.png" width="500px" />
<figcaption>Página de login</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/sist-adm/categories.png" width="800px" />
<figcaption>Listagem de categorias</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/sist-adm/qa_s.png" width="800px" />
<figcaption>Listagem de perguntas e respostas de uma categoria</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/sist-adm/stats.png" width="800px" />
<figcaption>Estatísticas de uso de plataformas</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/sist-adm/stats-discord.png" width="800px" />
<figcaption>Estatísticas de uso - Discord</figcaption>
</figure>

[Todas as imagens do sistema administrativo](./docs/sist-adm.md)

## Bot para Discord

<figure align="center">
<img src="./docs/assets/bot/direct-question.png" width="500px" />
<img src="./docs/assets/bot/direct-question2.png" width="500px" />
<figcaption>Pergunta feita diretamente ao bot</figcaption>
</figure>

<figure align="center">
<img src="./docs/assets/bot/indirect-question.png" width="500px" />
<figcaption>Pergunta feita indiretamente ao bot</figcaption>
</figure>

## 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": "..."
}
]
}
]
}
]
}
]
```
Binary file added docs/assets/architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/bot/direct-question.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/bot/direct-question2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/bot/indirect-question.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/database_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/question_hierarchy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/categories.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/create-user.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/delete-qa.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/edit-qa.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/edit-topic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/historic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/homepage-topics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/login_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/login_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/not-answered.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/qa_s.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/qa_show.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/stats-discord.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/sist-adm/stats.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/tables.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions docs/sist-adm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<figure align="center">
<img src="./assets/sist-adm/login_dark.png" width="500px" />
<img src="./assets/sist-adm/login_light.png" width="500px" />
<figcaption>Página de login</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/homepage-topics.png" width="800px" />
<figcaption>Listagem de tópicos</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/edit-topic.png" width="800px" />
<figcaption>Edição de tópico</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/categories.png" width="800px" />
<figcaption>Listagem de categorias</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/qa_s.png" width="800px" />
<figcaption>Listagem de perguntas e respostas</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/qa_show.png" width="800px" />
<figcaption>Exibição de pergunta e resposta</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/delete-qa.png" width="800px" />
<figcaption>Apagar pergunta e resposta</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/edit-qa.png" width="800px" />
<figcaption>Editar pergunta e resposta</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/create-user.png" width="800px" />
<figcaption>Criação de usuário</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/historic.png" width="800px" />
<figcaption>Histórico de perguntas</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/not-answered.png" width="800px" />
<figcaption>Perguntas não respondidas (score baixo)</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/stats.png" width="800px" />
<figcaption>Estatísticas de uso de plataformas</figcaption>
</figure>

<figure align="center">
<img src="./assets/sist-adm/stats-discord.png" width="800px" />
<figcaption>Estatísticas de uso - Discord</figcaption>
</figure>

0 comments on commit 6e58b49

Please sign in to comment.