Spaces:
Sleeping
Sleeping
Pecximenes
commited on
Commit
•
2dd02d0
1
Parent(s):
8072fdc
Uploading Fauses's agent to HuggingFace Spaces
Browse files- .gitattributes copy +35 -0
- .gitignore +2 -0
- Dockerfile +25 -0
- README.md +6 -6
- WORKDIR/.gitkeep +0 -0
- WORKDIR/test/main_content.md +59 -0
- __init__.py +0 -0
- agent.py +414 -0
- interface/app.py +165 -0
- interface/main.py +122 -0
- interface/visualization.html +386 -0
- memory/.gitkeep +0 -0
- memory/graph_data.json +562 -0
- memory/graph_data_tiplet.json +318 -0
- pipelines/message.py +22 -0
- prompts/knowledge.md +61 -0
- prompts/system.md +111 -0
- requirements.txt +18 -0
- tools/__init__.py +0 -0
- tools/python/.gitkeep +0 -0
- utils/file.py +11 -0
- utils/llm.py +55 -0
.gitattributes copy
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
__pycache__
|
2 |
+
.env
|
Dockerfile
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM python:3.10
|
2 |
+
|
3 |
+
WORKDIR /app
|
4 |
+
|
5 |
+
COPY ./requirements.txt /app/requirements.txt
|
6 |
+
RUN pip install --no-cache-dir -r /app/requirements.txt
|
7 |
+
|
8 |
+
# User
|
9 |
+
RUN useradd -m -u 1000 user
|
10 |
+
USER user
|
11 |
+
ENV HOME /home/user
|
12 |
+
ENV PATH $HOME/.local/bin:$PATH
|
13 |
+
|
14 |
+
WORKDIR $HOME
|
15 |
+
RUN mkdir app
|
16 |
+
WORKDIR $HOME/app
|
17 |
+
COPY . $HOME/app
|
18 |
+
ENV PYTHONPATH=$HOME/app
|
19 |
+
|
20 |
+
EXPOSE 8501
|
21 |
+
CMD streamlit run interface/app.py \
|
22 |
+
--server.headless true \
|
23 |
+
--server.enableCORS false \
|
24 |
+
--server.enableXsrfProtection false \
|
25 |
+
--server.fileWatcherType none
|
README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: docker
|
|
|
7 |
pinned: false
|
8 |
license: mit
|
9 |
-
short_description: Primeira versão do protótipo de chat-bot para o gov.br
|
10 |
---
|
11 |
|
12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
---
|
2 |
+
title: Agent Fause V1
|
3 |
+
emoji: 📉
|
4 |
+
colorFrom: yellow
|
5 |
+
colorTo: gray
|
6 |
sdk: docker
|
7 |
+
app_port: 8501
|
8 |
pinned: false
|
9 |
license: mit
|
|
|
10 |
---
|
11 |
|
12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
WORKDIR/.gitkeep
ADDED
File without changes
|
WORKDIR/test/main_content.md
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
Info
|
3 |
+
|
4 |
+
Recuperar Conta gov.br
|
5 |
+
----------------------
|
6 |
+
|
7 |
+
Está com alguma dificuldade para recuperar a senha da sua conta gov.br?
|
8 |
+
|
9 |
+
Como recuperar a senha?
|
10 |
+
-----------------------
|
11 |
+
|
12 |
+
Vamos te ajudar a **recuperar a sua senha**! Primeiro, escolha abaixo por onde vai seguir o processo de recuperação.
|
13 |
+
|
14 |
+
**Atenção**: Após abrir uma das opções abaixo, volte nessa página aqui para seguir as orientações seguintes!
|
15 |
+
|
16 |
+
[![Acesse pelo navegador](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Card01.png)](http://acesso.gov.br)
|
17 |
+
|
18 |
+
[![Instale o aplicativo gov.br disponível no google play](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Card2.jpg)](https://play.google.com/store/apps/details?id=br.gov.meugovbr&hl=pt_BR&gl=US)
|
19 |
+
|
20 |
+
[![Instale o aplicativo gov.br disponível na app store](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Card3.jpg)](https://apps.apple.com/br/app/gov-br/id1506827551)
|
21 |
+
|
22 |
+
Orientações
|
23 |
+
-----------
|
24 |
+
|
25 |
+
![Digite o cpf e clique em continuar. Caso ainda não exista uma conta para este CPF, você deverá criar a conta primeiro. Se a conta já existir, você poderá digitar a senha ou continuar o processo de recuperação. Em seguida, clique em esqueci minha senha.](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Orientaes2.png)
|
26 |
+
|
27 |
+
OPÇÕES DISPONÍVEIS
|
28 |
+
------------------
|
29 |
+
|
30 |
+
Os melhores métodos serão apresentados para você **primeiro**. O nível da sua conta poderá ser aumentado ou reduzido, a depender do seu nível atual e do método usado.
|
31 |
+
![Reconhecimento facial](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Recuperarsenhareconhecimentofacial.png)
|
32 |
+
|
33 |
+
**Se estiver no navegador**: Use o aplicativo gov.br, na opção QR code, para ler o código apresentado na tela e realizar o reconhecimento facial com seu celular.
|
34 |
+
**Se estiver no celular**: Use o aplicativo gov.br para fazer o reconhecimento facial com seu celular.
|
35 |
+
|
36 |
+
Durante o processo de reconhecimento facial, precisaremos comparar a sua foto com as **bases biométricas faciais** que você tem cadastro para poder prosseguir. Pode ser mais fácil ou mais difícil, a depender da semelhança entre a foto dessa base e a sua foto atual. Saiba mais sobre o reconhecimento facial ao lado.
|
37 |
+
[Dúvidas no reconhecimento facial](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial)
|
38 |
+
Se não tiver biometria facial nas bases, o reconhecimento facial não estará disponível para você. Se quiser tentar outra opção, clique em "**Não tenho celular**".
|
39 |
+
![Bancos](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/copy_of_Recuperarsenhabancos.png)
|
40 |
+
|
41 |
+
A recuperação por bancos é segura, pois você fará o login no ambiente do banco e após logar, poderá cadastrar a nova senha. Não temos acesso a nenhum dos seus dados bancários.
|
42 |
+
|
43 |
+
**Importante**: Após clicar no ícone do banco, a página seguinte e todo o procedimento de autenticação necessário será realizado no ambiente do banco, não temos acesso ao procedimento ou aos dados utilizados na autenticação. Se tiver dificuldade nessa etapa, procure o banco que selecionou e solicite esclarecimentos.
|
44 |
+
![E-mail](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Recuperarsenhaemail.png)
|
45 |
+
|
46 |
+
Se não tiver conta em nenhum dos bancos apresentados, clique em “**Recuperar de outra forma**” e você poderá recuperar sua senha com o e\-mail cadastrado. Informe o código recebido no seu e\-mail e cadastre uma nova senha.
|
47 |
+
![Celular](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Recuperarsenhacelular.png)
|
48 |
+
|
49 |
+
Caso não tenha acesso ao e\-mail cadastrado, clique na opção "**Não tenho acesso a este e\-mail**" e você será redirecionado para o fluxo de recuperação pelo celular. Informe o código recebido no seu celular e cadastre uma nova senha.
|
50 |
+
![Formulário de atendimento](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/imagens/Recuperarsenhaformulario.png)
|
51 |
+
|
52 |
+
Caso não tenha acesso ao celular cadastrado, clique na opção "**Não tenho acesso a este celular**". Se não conseguiu recuperar sua senha com as opções apresentadas, ainda poderá registrar uma solicitação de **alteração de e\-mail cadastrado na conta gov.br** em nosso Formulário de Atendimento. Para isso, clique na opção “**Ir para o formulário**”.
|
53 |
+
|
54 |
+
Caso o titular da conta seja **criança ou adolescente** ou o representante legal esteja solicitando por meio de **procuração, termo de curatela ou similar**, leia as orientações abaixo antes de enviar a sua solicitação.
|
55 |
+
[Titular da conta é criança ou adolescente](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/titular-da-conta-e-crianca-ou-adolescente)
|
56 |
+
|
57 |
+
[Procurador ou curador](https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/procurador-ou-curador)
|
58 |
+
CONFIRA TODAS AS ORIENTAÇÕES NESTE VÍDEO
|
59 |
+
----------------------------------------
|
__init__.py
ADDED
File without changes
|
agent.py
ADDED
@@ -0,0 +1,414 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
# %%
|
3 |
+
import os
|
4 |
+
import sys
|
5 |
+
# Change the current working directory to the directory where the script is located
|
6 |
+
|
7 |
+
#__file__ =
|
8 |
+
|
9 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
10 |
+
os.chdir(current_dir)
|
11 |
+
|
12 |
+
# %%
|
13 |
+
|
14 |
+
|
15 |
+
# import requests
|
16 |
+
# from bs4 import BeautifulSoup
|
17 |
+
# from urllib.parse import urljoin
|
18 |
+
# import time
|
19 |
+
# import concurrent.futures
|
20 |
+
# from queue import Queue
|
21 |
+
# from threading import Lock
|
22 |
+
|
23 |
+
# def fetch_and_parse_links(url, base_url):
|
24 |
+
# try:
|
25 |
+
# response = requests.get(url, timeout=10)
|
26 |
+
# response.raise_for_status()
|
27 |
+
|
28 |
+
# soup = BeautifulSoup(response.content, 'html.parser')
|
29 |
+
# main_div = soup.find('div', id='main')
|
30 |
+
|
31 |
+
# if not main_div:
|
32 |
+
# print(f"No div with id='main' found in {url}")
|
33 |
+
# return []
|
34 |
+
|
35 |
+
# links = main_div.find_all('a', href=True)
|
36 |
+
|
37 |
+
# paths = []
|
38 |
+
# for link in links:
|
39 |
+
# href = urljoin(url, link['href'])
|
40 |
+
# if href.startswith(base_url) and '#' not in href:
|
41 |
+
# path = href[len(base_url):].strip("/")
|
42 |
+
# if path and path not in paths:
|
43 |
+
# paths.append(path)
|
44 |
+
|
45 |
+
# return paths
|
46 |
+
# except requests.RequestException as e:
|
47 |
+
# print(f"Error fetching {url}: {e}")
|
48 |
+
# return []
|
49 |
+
|
50 |
+
# def worker(base_url, to_visit_queue, visited_paths, unvisited_paths, tuples_list, lock):
|
51 |
+
# while True:
|
52 |
+
# current_path = to_visit_queue.get()
|
53 |
+
# if current_path is None:
|
54 |
+
# break
|
55 |
+
|
56 |
+
# with lock:
|
57 |
+
# if current_path in visited_paths:
|
58 |
+
# to_visit_queue.task_done()
|
59 |
+
# continue
|
60 |
+
# visited_paths.add(current_path)
|
61 |
+
|
62 |
+
# current_url = urljoin(base_url, current_path)
|
63 |
+
|
64 |
+
# print(f"Visiting: {current_url}")
|
65 |
+
# new_paths = fetch_and_parse_links(current_url, base_url)
|
66 |
+
|
67 |
+
# with lock:
|
68 |
+
# for new_path in new_paths:
|
69 |
+
# if new_path not in visited_paths:
|
70 |
+
# to_visit_queue.put(new_path)
|
71 |
+
# unvisited_paths.add(new_path)
|
72 |
+
# from_url = f"{base_url}{current_path}"
|
73 |
+
# to_url = f"{base_url}{new_path}"
|
74 |
+
# new_tuple = (from_url, to_url)
|
75 |
+
# if new_tuple not in tuples_list:
|
76 |
+
# tuples_list.append(new_tuple)
|
77 |
+
|
78 |
+
# if current_path in unvisited_paths:
|
79 |
+
# unvisited_paths.remove(current_path)
|
80 |
+
|
81 |
+
# to_visit_queue.task_done()
|
82 |
+
# time.sleep(1) # Be polite to the server
|
83 |
+
|
84 |
+
# def create_tuples_from_paths(base_url, max_workers=5):
|
85 |
+
# visited_paths = set()
|
86 |
+
# unvisited_paths = set()
|
87 |
+
# tuples_list = []
|
88 |
+
# to_visit_queue = Queue()
|
89 |
+
# lock = Lock()
|
90 |
+
|
91 |
+
# to_visit_queue.put("") # Start with an empty string to represent the root
|
92 |
+
|
93 |
+
# with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
|
94 |
+
# futures = []
|
95 |
+
# for _ in range(max_workers):
|
96 |
+
# future = executor.submit(worker, base_url, to_visit_queue, visited_paths, unvisited_paths, tuples_list, lock)
|
97 |
+
# futures.append(future)
|
98 |
+
|
99 |
+
# to_visit_queue.join()
|
100 |
+
|
101 |
+
# for _ in range(max_workers):
|
102 |
+
# to_visit_queue.put(None)
|
103 |
+
|
104 |
+
# concurrent.futures.wait(futures)
|
105 |
+
|
106 |
+
# return tuples_list, visited_paths, unvisited_paths
|
107 |
+
|
108 |
+
# # Define the base URL
|
109 |
+
# base_url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/"
|
110 |
+
|
111 |
+
|
112 |
+
# import json
|
113 |
+
|
114 |
+
# def load_json(file_path):
|
115 |
+
# with open(file_path, 'r', encoding='utf-8') as file:
|
116 |
+
# return json.load(file)
|
117 |
+
|
118 |
+
|
119 |
+
|
120 |
+
# def flatten_list(nested_list):
|
121 |
+
# for item in nested_list:
|
122 |
+
# if isinstance(item, list):
|
123 |
+
# yield from flatten_list(item) # Recursively yield from nested lists
|
124 |
+
# else:
|
125 |
+
# yield item
|
126 |
+
|
127 |
+
|
128 |
+
# import polars as pl
|
129 |
+
|
130 |
+
# # Define the base URL
|
131 |
+
# base_url = 'https://www.gov.br/governodigital/pt-br/'
|
132 |
+
# # Example usage
|
133 |
+
# file_path = 'memory/graph_data_tiplet.json' # Replace with your actual file path
|
134 |
+
# base_url = 'https://www.gov.br/governodigital/pt-br/'
|
135 |
+
|
136 |
+
# json_data = load_json(file_path)
|
137 |
+
# json_data = list(flatten_list(json_data))
|
138 |
+
|
139 |
+
# # Convert the list of URLs to a Polars DataFrame
|
140 |
+
# df = pl.DataFrame({
|
141 |
+
# 'url': json_data
|
142 |
+
# })
|
143 |
+
|
144 |
+
# # Remove the base URL and convert to path
|
145 |
+
# df = df.with_columns(
|
146 |
+
# (pl.col('url').str.replace(base_url, '')).alias('path')
|
147 |
+
# )
|
148 |
+
|
149 |
+
# # Extract paths as a list
|
150 |
+
# paths = df['path'].to_list()
|
151 |
+
|
152 |
+
# # Build a hierarchical structure
|
153 |
+
# def build_tree(paths):
|
154 |
+
# tree = {}
|
155 |
+
# for path in paths:
|
156 |
+
# parts = path.strip('/').split('/')
|
157 |
+
# current_level = tree
|
158 |
+
# for part in parts:
|
159 |
+
# if part not in current_level:
|
160 |
+
# current_level[part] = {}
|
161 |
+
# current_level = current_level[part]
|
162 |
+
# return tree
|
163 |
+
|
164 |
+
#%%
|
165 |
+
from utils.llm import chat
|
166 |
+
from utils.file import File
|
167 |
+
import json
|
168 |
+
|
169 |
+
system = File("prompts/system.md")
|
170 |
+
knowledge = File("prompts/knowledge.md")
|
171 |
+
graph = File("interface/visualization.html")
|
172 |
+
graph_data = File("memory/graph_data.json")
|
173 |
+
|
174 |
+
|
175 |
+
|
176 |
+
# user_question = input("Question?")
|
177 |
+
|
178 |
+
# messages = [
|
179 |
+
# {
|
180 |
+
# "role": "system",
|
181 |
+
# "content": [
|
182 |
+
# {
|
183 |
+
# "type": "text",
|
184 |
+
# "text": system
|
185 |
+
# }
|
186 |
+
# ]
|
187 |
+
# },
|
188 |
+
# {
|
189 |
+
# "role": "user",
|
190 |
+
# "content": [
|
191 |
+
# {
|
192 |
+
# "type": "text",
|
193 |
+
# "text": user_question
|
194 |
+
# }
|
195 |
+
# ]
|
196 |
+
# }
|
197 |
+
# ]
|
198 |
+
|
199 |
+
def pipeline(messages):
|
200 |
+
res = chat(messages=messages)
|
201 |
+
|
202 |
+
response = res.choices[0].message.content
|
203 |
+
return response
|
204 |
+
|
205 |
+
|
206 |
+
# if __name__ == "__main__":
|
207 |
+
|
208 |
+
# res = chat(messages=messages)
|
209 |
+
|
210 |
+
# response = res.choices[0].message.content
|
211 |
+
|
212 |
+
# print(response)
|
213 |
+
|
214 |
+
|
215 |
+
|
216 |
+
|
217 |
+
|
218 |
+
#%%
|
219 |
+
|
220 |
+
|
221 |
+
|
222 |
+
|
223 |
+
|
224 |
+
# from IPython.display import display, Markdown
|
225 |
+
|
226 |
+
# def build_tree_structure(tree, indent=0):
|
227 |
+
# """
|
228 |
+
# Recursively builds a string representation of the tree structure.
|
229 |
+
|
230 |
+
# Args:
|
231 |
+
# tree (dict): The hierarchical tree structure.
|
232 |
+
# indent (int): The current level of indentation.
|
233 |
+
|
234 |
+
# Returns:
|
235 |
+
# str: A string representing the tree structure.
|
236 |
+
# """
|
237 |
+
# result = ""
|
238 |
+
# for key, subtree in tree.items():
|
239 |
+
# result += f"{' ' * indent} - {key}/\n"
|
240 |
+
# if isinstance(subtree, dict):
|
241 |
+
# result += build_tree_structure(subtree, indent + 1)
|
242 |
+
# return result
|
243 |
+
# # Create and print the hierarchical structure
|
244 |
+
# tree_structure = build_tree(paths)
|
245 |
+
# obj = build_tree_structure(tree_structure)
|
246 |
+
# print(obj)
|
247 |
+
|
248 |
+
|
249 |
+
# display(Markdown(obj))
|
250 |
+
|
251 |
+
# # print(json.dumps(tree_structure, indent=2))
|
252 |
+
# #%%
|
253 |
+
|
254 |
+
|
255 |
+
|
256 |
+
# # Create tuples from paths and track visited/unvisited paths
|
257 |
+
# tuples_list, visited_paths, unvisited_paths = create_tuples_from_paths(base_url, 10)
|
258 |
+
|
259 |
+
# # Print the resulting list of tuples
|
260 |
+
# print("\nTuples:")
|
261 |
+
# for t in tuples_list:
|
262 |
+
# print(t)
|
263 |
+
|
264 |
+
# # Print visited and unvisited paths
|
265 |
+
# print("\nVisited Paths:")
|
266 |
+
# for p in visited_paths:
|
267 |
+
# print(f"{base_url}{p}")
|
268 |
+
|
269 |
+
# print("\nUnvisited Paths:")
|
270 |
+
# for p in unvisited_paths:
|
271 |
+
# print(f"{base_url}{p}")
|
272 |
+
|
273 |
+
# # Print summary
|
274 |
+
# print(f"\nTotal links found: {len(tuples_list)}")
|
275 |
+
# print(f"Visited pages: {len(visited_paths)}")
|
276 |
+
# print(f"Unvisited pages: {len(unvisited_paths)}")
|
277 |
+
|
278 |
+
|
279 |
+
# # Create a dictionary to hold our graph data
|
280 |
+
# graph_data = {
|
281 |
+
# "nodes": [],
|
282 |
+
# "edges": []
|
283 |
+
# }
|
284 |
+
|
285 |
+
# import json
|
286 |
+
# # Create a set to keep track of nodes we've added
|
287 |
+
# added_nodes = set()
|
288 |
+
|
289 |
+
# # Process the tuples to create nodes and edges
|
290 |
+
# for from_url, to_url in tuples_list:
|
291 |
+
# from_path = from_url[len(base_url):].strip("/") or "root"
|
292 |
+
# to_path = to_url[len(base_url):].strip("/")
|
293 |
+
|
294 |
+
# if from_path not in added_nodes:
|
295 |
+
# graph_data["nodes"].append({"id": from_path, "label": from_path})
|
296 |
+
# added_nodes.add(from_path)
|
297 |
+
|
298 |
+
# if to_path not in added_nodes:
|
299 |
+
# graph_data["nodes"].append({"id": to_path, "label": to_path})
|
300 |
+
# added_nodes.add(to_path)
|
301 |
+
|
302 |
+
# graph_data["edges"].append({"from": from_path, "to": to_path})
|
303 |
+
|
304 |
+
# # Save the graph data to a JSON file
|
305 |
+
# with open('graph_data.json', 'w') as f:
|
306 |
+
# json.dump(graph_data, f)
|
307 |
+
|
308 |
+
# # Save the graph data to a JSON file
|
309 |
+
# with open('graph_data_tiplet.json', 'w') as f:
|
310 |
+
# json.dump(tuples_list, f)
|
311 |
+
|
312 |
+
|
313 |
+
# print("Graph data saved to graph_data.json")
|
314 |
+
|
315 |
+
|
316 |
+
# # %%
|
317 |
+
|
318 |
+
# import requests
|
319 |
+
# from bs4 import BeautifulSoup
|
320 |
+
# from markdownify import markdownify as md
|
321 |
+
|
322 |
+
# import os
|
323 |
+
# os.chdir("/home/zuz/Projetos/LAMFO/SGD/prototipo01_atendimento_govBR")
|
324 |
+
|
325 |
+
# from Banco_de_Dados.Estruturado.data2json import format_for_markdown
|
326 |
+
|
327 |
+
|
328 |
+
|
329 |
+
|
330 |
+
# # URL da página web
|
331 |
+
# url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br"
|
332 |
+
# url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/atendimento-presencial"
|
333 |
+
# url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br"
|
334 |
+
# url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br"
|
335 |
+
|
336 |
+
|
337 |
+
# # Obter o HTML da página
|
338 |
+
# response = requests.get(url)
|
339 |
+
# html_content = response.text
|
340 |
+
|
341 |
+
# # Usar BeautifulSoup para analisar o HTML
|
342 |
+
# soup = BeautifulSoup(html_content, 'html.parser')
|
343 |
+
|
344 |
+
|
345 |
+
# # Extrair o conteúdo da div com id 'main'
|
346 |
+
# main_div = soup.find('div', id='main')
|
347 |
+
# a = format_for_markdown(main_div)
|
348 |
+
# print(a)
|
349 |
+
|
350 |
+
|
351 |
+
|
352 |
+
# if main_div:
|
353 |
+
# # Converter o conteúdo da div para Markdown
|
354 |
+
# markdown_content = md(str(main_div))
|
355 |
+
|
356 |
+
# # Remover quebras de linha extras (\n\n)
|
357 |
+
# markdown_content = "\n".join([line for line in markdown_content.split("\n\n") if line.strip()])
|
358 |
+
# print(markdown_content)
|
359 |
+
# # Salvar o conteúdo em Markdown em um arquivo
|
360 |
+
# with open("main_content.md", "w", encoding="utf-8") as file:
|
361 |
+
# file.write(markdown_content)
|
362 |
+
# print("Conversão concluída e salva em 'main_content.md'.")
|
363 |
+
# else:
|
364 |
+
# print("Div com id 'main' não encontrada.")
|
365 |
+
|
366 |
+
|
367 |
+
|
368 |
+
|
369 |
+
# # %%
|
370 |
+
|
371 |
+
|
372 |
+
|
373 |
+
|
374 |
+
|
375 |
+
# import requests
|
376 |
+
|
377 |
+
|
378 |
+
# def pipeline():
|
379 |
+
# # url = input("website: ")
|
380 |
+
# url = "https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br"
|
381 |
+
# response = requests.get(url).text
|
382 |
+
|
383 |
+
|
384 |
+
# print(response)
|
385 |
+
|
386 |
+
# import os
|
387 |
+
|
388 |
+
# def print_directory_structure(path, level=0):
|
389 |
+
# if not os.path.isdir(path):
|
390 |
+
# print(f"{path} is not a valid directory.")
|
391 |
+
# return
|
392 |
+
|
393 |
+
# prefix = ' ' * 4 * level + '|-- '
|
394 |
+
# print(prefix + os.path.basename(path) + '/')
|
395 |
+
|
396 |
+
# for item in os.listdir(path):
|
397 |
+
# item_path = os.path.join(path, item)
|
398 |
+
# if os.path.isdir(item_path):
|
399 |
+
# print_directory_structure(item_path, level + 1)
|
400 |
+
# else:
|
401 |
+
# print(' ' * 4 * (level + 1) + '|-- ' + item)
|
402 |
+
|
403 |
+
# # Replace 'your_path_here' with the path you want to print
|
404 |
+
# your_path_here = '/home/zuz/Projetos/LAMFO/SGD/prototipo01_atendimento_govBR/AI_agent'
|
405 |
+
# print_directory_structure(your_path_here)
|
406 |
+
|
407 |
+
|
408 |
+
|
409 |
+
|
410 |
+
|
411 |
+
# if __name__ == "__main__":
|
412 |
+
# pipeline()
|
413 |
+
|
414 |
+
|
interface/app.py
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import streamlit.components.v1 as components
|
3 |
+
import re
|
4 |
+
import sys
|
5 |
+
import os
|
6 |
+
import requests
|
7 |
+
from bs4 import BeautifulSoup
|
8 |
+
import difflib
|
9 |
+
from urllib.parse import urlparse, unquote
|
10 |
+
from pipelines.message import send_message
|
11 |
+
from agent import pipeline, knowledge, graph, graph_data
|
12 |
+
|
13 |
+
# Configuração do caminho
|
14 |
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
15 |
+
|
16 |
+
# Substitui o caminho do gráfico pelo conteúdo do graph_data
|
17 |
+
graph = graph.replace('"../memory/graph_data.json"', f'{graph_data}')
|
18 |
+
|
19 |
+
# Variáveis globais
|
20 |
+
extracted_links = []
|
21 |
+
|
22 |
+
# Configuração inicial do histórico de chat
|
23 |
+
if "chat_history" not in st.session_state:
|
24 |
+
st.session_state.chat_history = []
|
25 |
+
|
26 |
+
# Funções utilitárias
|
27 |
+
def extract_content(text, tag):
|
28 |
+
"""Extrai conteúdo de um texto com base na tag fornecida."""
|
29 |
+
pattern = rf'<{tag}>(.*?)</{tag}>'
|
30 |
+
match = re.search(pattern, text, re.DOTALL)
|
31 |
+
return match.group(1).strip() if match else None
|
32 |
+
|
33 |
+
def fetch_webpage_content(url):
|
34 |
+
"""Obtém o conteúdo HTML de uma URL e retorna o conteúdo principal."""
|
35 |
+
try:
|
36 |
+
response = requests.get(url)
|
37 |
+
response.raise_for_status()
|
38 |
+
soup = BeautifulSoup(response.text, 'html.parser')
|
39 |
+
main_content = soup.find('div', id='main')
|
40 |
+
|
41 |
+
if main_content:
|
42 |
+
body_tag = soup.find('body')
|
43 |
+
if body_tag:
|
44 |
+
body_tag.clear()
|
45 |
+
body_tag.append(main_content)
|
46 |
+
return str(soup)
|
47 |
+
return "<html><body><p>Could not find main content on the page.</p></body></html>"
|
48 |
+
except requests.RequestException as e:
|
49 |
+
return f"<html><body><p>Error fetching the webpage: {str(e)}</p></body></html>"
|
50 |
+
|
51 |
+
def extract_links(html_content):
|
52 |
+
"""Extrai todos os links (URLs) de um conteúdo HTML."""
|
53 |
+
soup = BeautifulSoup(html_content, 'html.parser')
|
54 |
+
return [a_tag['href'] for a_tag in soup.find_all('a', href=True)]
|
55 |
+
|
56 |
+
def url_to_suggestion(url):
|
57 |
+
"""Converte uma URL longa em uma sugestão amigável."""
|
58 |
+
path = unquote(urlparse(url).path).strip('/').split('/')
|
59 |
+
return path[-1].replace('-', ' ').replace('_', ' ').capitalize() if path else url
|
60 |
+
|
61 |
+
def display_suggestions(links):
|
62 |
+
"""Exibe sugestões para o usuário com base nos links extraídos."""
|
63 |
+
suggestions = [(link, url_to_suggestion(link)) for link in links if url_to_suggestion(link)]
|
64 |
+
st.subheader("Sugestões de Passos:")
|
65 |
+
if suggestions:
|
66 |
+
st.write("Você também pode se interessar em:")
|
67 |
+
for link, suggestion in suggestions:
|
68 |
+
st.write(f"- {suggestion}")
|
69 |
+
else:
|
70 |
+
st.write("Não há sugestões disponíveis no momento.")
|
71 |
+
|
72 |
+
|
73 |
+
def navigate_page(full_url):
|
74 |
+
"""Função para navegar para uma nova página e atualizar o conteúdo."""
|
75 |
+
global extracted_links
|
76 |
+
with st.spinner("Obtendo conteúdo da página..."):
|
77 |
+
content = fetch_webpage_content(full_url)
|
78 |
+
extracted_links = extract_links(content)
|
79 |
+
st.session_state.chat_history.append({"type": "page", "content": content, "links": extracted_links})
|
80 |
+
st.subheader("Conteúdo da Página Web:")
|
81 |
+
components.html(content, height=600, scrolling=True)
|
82 |
+
display_suggestions(extracted_links)
|
83 |
+
st.subheader("URL Completa:")
|
84 |
+
st.write(full_url)
|
85 |
+
|
86 |
+
|
87 |
+
def sidebar_content():
|
88 |
+
st.image('https://www.gov.br/++theme++padrao_govbr/img/govbr-logo-large.png', width=200)
|
89 |
+
st.header("Tópicos frequentes")
|
90 |
+
|
91 |
+
# Botões de exemplo
|
92 |
+
topics = [
|
93 |
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit1.",
|
94 |
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit2.",
|
95 |
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit3.",
|
96 |
+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit4."
|
97 |
+
]
|
98 |
+
|
99 |
+
for topic in topics:
|
100 |
+
st.button(topic)
|
101 |
+
|
102 |
+
# Espaços em branco para organização
|
103 |
+
for _ in range(5):
|
104 |
+
st.write("")
|
105 |
+
|
106 |
+
# Botão centralizado
|
107 |
+
col1, col2, col3 = st.columns([1, 1, 1])
|
108 |
+
with col2:
|
109 |
+
st.button("VOLTAR")
|
110 |
+
|
111 |
+
# Função para exibir mensagens de chat
|
112 |
+
def display_chat():
|
113 |
+
for msg in st.session_state.messages:
|
114 |
+
st.chat_message(msg["role"]).write(msg["content"])
|
115 |
+
|
116 |
+
def main():
|
117 |
+
# Exibe o histórico do chat
|
118 |
+
for message in st.session_state.chat_history:
|
119 |
+
if message["type"] == "text":
|
120 |
+
if "role" in message:
|
121 |
+
if message["role"] == "user":
|
122 |
+
st.chat_message("user").write(message["content"])
|
123 |
+
else:
|
124 |
+
st.chat_message("assistant").write(message["content"])
|
125 |
+
|
126 |
+
elif message["type"] == "page":
|
127 |
+
st.subheader("Conteúdo da Página Web:")
|
128 |
+
components.html(message["content"], height=400, scrolling=True)
|
129 |
+
|
130 |
+
if user_query := st.chat_input(placeholder="Digite sua mensagem"):
|
131 |
+
# Armazenar mensagem do usuário
|
132 |
+
st.session_state.chat_history.append({"type": "text","role": "user", "content": user_query})
|
133 |
+
st.chat_message("user").write(user_query)
|
134 |
+
|
135 |
+
response_text = send_message(user_query, pipeline)
|
136 |
+
|
137 |
+
# Armazena a resposta do agent
|
138 |
+
st.session_state.chat_history.append({"type": "text","role": "assistant", "content": response_text})
|
139 |
+
st.chat_message("assistant").write(response_text)
|
140 |
+
|
141 |
+
# Extração do caminho da resposta do bot
|
142 |
+
path = extract_content(response_text, "path")
|
143 |
+
if path:
|
144 |
+
base_url = "https://www.gov.br/governodigital/pt-br/"
|
145 |
+
full_url = base_url + path
|
146 |
+
navigate_page(full_url)
|
147 |
+
|
148 |
+
|
149 |
+
|
150 |
+
# Exibição da barra lateral
|
151 |
+
with st.sidebar:
|
152 |
+
sidebar_content()
|
153 |
+
|
154 |
+
# Exibição do título e subtítulo
|
155 |
+
st.title("Bem-vindo à ajuda do gov.br")
|
156 |
+
st.caption("💬 Qual a sua dificuldade hoje? Estou aqui para ajudar!")
|
157 |
+
|
158 |
+
# Configuração inicial
|
159 |
+
if "messages" not in st.session_state:
|
160 |
+
st.session_state["messages"] = [{"role": "assistant", "content": "Como eu posso ajudar?"}]
|
161 |
+
|
162 |
+
display_chat()
|
163 |
+
|
164 |
+
if __name__ == "__main__":
|
165 |
+
main()
|
interface/main.py
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import streamlit.components.v1 as components
|
3 |
+
import re
|
4 |
+
import sys
|
5 |
+
import os
|
6 |
+
import requests
|
7 |
+
from bs4 import BeautifulSoup
|
8 |
+
import difflib
|
9 |
+
from urllib.parse import urlparse, unquote
|
10 |
+
from pipelines.message import send_message
|
11 |
+
from agent import pipeline, knowledge, graph, graph_data
|
12 |
+
|
13 |
+
# Configuração do caminho
|
14 |
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
15 |
+
|
16 |
+
# Substitui o caminho do gráfico pelo conteúdo do graph_data
|
17 |
+
graph = graph.replace('"../memory/graph_data.json"', f'{graph_data}')
|
18 |
+
|
19 |
+
# Variáveis globais
|
20 |
+
extracted_links = []
|
21 |
+
|
22 |
+
# Configuração inicial do histórico de chat
|
23 |
+
if "chat_history" not in st.session_state:
|
24 |
+
st.session_state.chat_history = []
|
25 |
+
|
26 |
+
# Funções utilitárias
|
27 |
+
def extract_content(text, tag):
|
28 |
+
"""Extrai conteúdo de um texto com base na tag fornecida."""
|
29 |
+
pattern = rf'<{tag}>(.*?)</{tag}>'
|
30 |
+
match = re.search(pattern, text, re.DOTALL)
|
31 |
+
return match.group(1).strip() if match else None
|
32 |
+
|
33 |
+
def fetch_webpage_content(url):
|
34 |
+
"""Obtém o conteúdo HTML de uma URL e retorna o conteúdo principal."""
|
35 |
+
try:
|
36 |
+
response = requests.get(url)
|
37 |
+
response.raise_for_status()
|
38 |
+
soup = BeautifulSoup(response.text, 'html.parser')
|
39 |
+
main_content = soup.find('div', id='main')
|
40 |
+
|
41 |
+
if main_content:
|
42 |
+
body_tag = soup.find('body')
|
43 |
+
if body_tag:
|
44 |
+
body_tag.clear()
|
45 |
+
body_tag.append(main_content)
|
46 |
+
return str(soup)
|
47 |
+
return "<html><body><p>Could not find main content on the page.</p></body></html>"
|
48 |
+
except requests.RequestException as e:
|
49 |
+
return f"<html><body><p>Error fetching the webpage: {str(e)}</p></body></html>"
|
50 |
+
|
51 |
+
def extract_links(html_content):
|
52 |
+
"""Extrai todos os links (URLs) de um conteúdo HTML."""
|
53 |
+
soup = BeautifulSoup(html_content, 'html.parser')
|
54 |
+
return [a_tag['href'] for a_tag in soup.find_all('a', href=True)]
|
55 |
+
|
56 |
+
def url_to_suggestion(url):
|
57 |
+
"""Converte uma URL longa em uma sugestão amigável."""
|
58 |
+
path = unquote(urlparse(url).path).strip('/').split('/')
|
59 |
+
return path[-1].replace('-', ' ').replace('_', ' ').capitalize() if path else url
|
60 |
+
|
61 |
+
def display_suggestions(links):
|
62 |
+
"""Exibe sugestões para o usuário com base nos links extraídos."""
|
63 |
+
suggestions = [(link, url_to_suggestion(link)) for link in links if url_to_suggestion(link)]
|
64 |
+
st.subheader("Sugestões de Passos:")
|
65 |
+
if suggestions:
|
66 |
+
st.write("Você também pode se interessar em:")
|
67 |
+
for link, suggestion in suggestions:
|
68 |
+
st.write(f"- {suggestion}")
|
69 |
+
else:
|
70 |
+
st.write("Não há sugestões disponíveis no momento.")
|
71 |
+
|
72 |
+
def display_knowledge_tree(structure):
|
73 |
+
"""Exibe a estrutura de conhecimento na barra lateral do Streamlit."""
|
74 |
+
with st.sidebar.expander("Knowledge Structure", expanded=True):
|
75 |
+
components.html(graph, height=600, scrolling=True)
|
76 |
+
st.markdown(structure)
|
77 |
+
|
78 |
+
def navigate_page(full_url):
|
79 |
+
"""Função para navegar para uma nova página e atualizar o conteúdo."""
|
80 |
+
global extracted_links
|
81 |
+
with st.spinner("Obtendo conteúdo da página..."):
|
82 |
+
content = fetch_webpage_content(full_url)
|
83 |
+
extracted_links = extract_links(content)
|
84 |
+
st.session_state.chat_history.append({"type": "page", "content": content, "links": extracted_links})
|
85 |
+
st.subheader("Conteúdo da Página Web:")
|
86 |
+
components.html(content, height=600, scrolling=True)
|
87 |
+
display_suggestions(extracted_links)
|
88 |
+
st.subheader("URL Completa:")
|
89 |
+
st.write(full_url)
|
90 |
+
|
91 |
+
def main():
|
92 |
+
st.title("Alfred - Assistente de IA para Serviços gov.br")
|
93 |
+
st.write("Qual a sua dificuldade hoje? Estou aqui para ajudar!")
|
94 |
+
display_knowledge_tree(knowledge)
|
95 |
+
|
96 |
+
# Exibe o histórico do chat
|
97 |
+
for message in st.session_state.chat_history:
|
98 |
+
if message["type"] == "text":
|
99 |
+
st.markdown(message["content"])
|
100 |
+
elif message["type"] == "page":
|
101 |
+
st.subheader("Conteúdo da Página Web:")
|
102 |
+
components.html(message["content"], height=400, scrolling=True)
|
103 |
+
|
104 |
+
with st.form(key='user_input_form', clear_on_submit=True):
|
105 |
+
user_query = st.text_input("Digite sua mensagem aqui:")
|
106 |
+
submit_button = st.form_submit_button(label='Enviar')
|
107 |
+
if submit_button and user_query:
|
108 |
+
response_text = send_message(user_query, pipeline)
|
109 |
+
st.write("Bot:", response_text)
|
110 |
+
st.session_state.chat_history.append({"type": "text", "content": f"**Você:** {user_query}"})
|
111 |
+
|
112 |
+
# Extração do caminho da resposta do bot
|
113 |
+
path = extract_content(response_text, "path")
|
114 |
+
if path:
|
115 |
+
base_url = "https://www.gov.br/governodigital/pt-br/"
|
116 |
+
full_url = base_url + path
|
117 |
+
navigate_page(full_url)
|
118 |
+
|
119 |
+
st.session_state.chat_history.append({"type": "text", "content": f"**Bot:** {response_text}"})
|
120 |
+
|
121 |
+
if __name__ == "__main__":
|
122 |
+
main()
|
interface/visualization.html
ADDED
@@ -0,0 +1,386 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
|
4 |
+
<head>
|
5 |
+
<meta charset="UTF-8">
|
6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 |
+
<title>Enhanced Directed Graph Visualization</title>
|
8 |
+
<script src="https://d3js.org/d3.v7.min.js"></script>
|
9 |
+
<style>
|
10 |
+
body,
|
11 |
+
html {
|
12 |
+
height: 100%;
|
13 |
+
width: 100%;
|
14 |
+
margin: 0;
|
15 |
+
padding: 0;
|
16 |
+
font-family: Arial, sans-serif;
|
17 |
+
}
|
18 |
+
|
19 |
+
#mynetwork {
|
20 |
+
width: 100%;
|
21 |
+
height: 100%;
|
22 |
+
}
|
23 |
+
|
24 |
+
.node circle {
|
25 |
+
fill: #69b3a2;
|
26 |
+
stroke: #333;
|
27 |
+
stroke-width: 1.5px;
|
28 |
+
}
|
29 |
+
|
30 |
+
.node text {
|
31 |
+
font: 12px sans-serif;
|
32 |
+
pointer-events: none;
|
33 |
+
fill: #555;
|
34 |
+
}
|
35 |
+
|
36 |
+
.link {
|
37 |
+
fill: none;
|
38 |
+
stroke: #999;
|
39 |
+
stroke-opacity: 0.6;
|
40 |
+
stroke-width: 1.5px;
|
41 |
+
marker-end: url(#arrowhead);
|
42 |
+
}
|
43 |
+
|
44 |
+
.link.directed {
|
45 |
+
stroke: #ff5722;
|
46 |
+
}
|
47 |
+
|
48 |
+
.link.highlighted {
|
49 |
+
stroke-width: 3px;
|
50 |
+
stroke: #ff5722;
|
51 |
+
}
|
52 |
+
|
53 |
+
.tooltip {
|
54 |
+
position: absolute;
|
55 |
+
text-align: center;
|
56 |
+
width: auto;
|
57 |
+
height: auto;
|
58 |
+
padding: 5px;
|
59 |
+
font: 12px sans-serif;
|
60 |
+
background: lightsteelblue;
|
61 |
+
border: 0px;
|
62 |
+
border-radius: 8px;
|
63 |
+
pointer-events: none;
|
64 |
+
opacity: 0;
|
65 |
+
}
|
66 |
+
|
67 |
+
#controls {
|
68 |
+
position: absolute;
|
69 |
+
top: 10px;
|
70 |
+
left: 10px;
|
71 |
+
z-index: 1;
|
72 |
+
}
|
73 |
+
|
74 |
+
#legend {
|
75 |
+
position: absolute;
|
76 |
+
top: 10px;
|
77 |
+
right: 10px;
|
78 |
+
background-color: rgba(255, 255, 255, 0.7);
|
79 |
+
padding: 10px;
|
80 |
+
border-radius: 3px;
|
81 |
+
font-size: 12px;
|
82 |
+
}
|
83 |
+
|
84 |
+
#legend .legend-item {
|
85 |
+
display: flex;
|
86 |
+
align-items: center;
|
87 |
+
}
|
88 |
+
|
89 |
+
#legend .legend-item span {
|
90 |
+
margin-left: 5px;
|
91 |
+
}
|
92 |
+
|
93 |
+
#legend .legend-color {
|
94 |
+
width: 12px;
|
95 |
+
height: 12px;
|
96 |
+
border-radius: 50%;
|
97 |
+
}
|
98 |
+
|
99 |
+
#search {
|
100 |
+
position: absolute;
|
101 |
+
top: 50px;
|
102 |
+
left: 10px;
|
103 |
+
z-index: 1;
|
104 |
+
}
|
105 |
+
</style>
|
106 |
+
</head>
|
107 |
+
|
108 |
+
<body>
|
109 |
+
<div id="controls">
|
110 |
+
<button onclick="fitNetwork()">Fit View</button>
|
111 |
+
<button onclick="expandAll()">Expand All</button>
|
112 |
+
<button onclick="collapseAll()">Collapse All</button>
|
113 |
+
<input type="range" id="charge" min="-1000" max="0" value="-300" step="10">
|
114 |
+
<label for="charge">Charge Strength</label>
|
115 |
+
</div>
|
116 |
+
<div id="search">
|
117 |
+
<input type="text" id="searchInput" placeholder="Search nodes...">
|
118 |
+
<button onclick="searchNode()">Search</button>
|
119 |
+
</div>
|
120 |
+
<div id="legend">
|
121 |
+
<div class="legend-item">
|
122 |
+
<div class="legend-color" style="background-color: #69b3a2;"></div>
|
123 |
+
<span>Node</span>
|
124 |
+
</div>
|
125 |
+
<div class="legend-item">
|
126 |
+
<div class="legend-color" style="background-color: #ff5722;"></div>
|
127 |
+
<span>Directed Link</span>
|
128 |
+
</div>
|
129 |
+
</div>
|
130 |
+
<div id="mynetwork"></div>
|
131 |
+
<div class="tooltip"></div>
|
132 |
+
<script>
|
133 |
+
// Define dimensions
|
134 |
+
const width = window.innerWidth;
|
135 |
+
const height = window.innerHeight;
|
136 |
+
|
137 |
+
// Default graph data
|
138 |
+
const defaultGraphData = {
|
139 |
+
"nodes": [
|
140 |
+
{"id": "1", "label": "Root"},
|
141 |
+
{"id": "2", "label": "Child 1"},
|
142 |
+
{"id": "3", "label": "Child 2"}
|
143 |
+
],
|
144 |
+
"edges": [
|
145 |
+
{"from": "1", "to": "2"},
|
146 |
+
{"from": "1", "to": "3"}
|
147 |
+
]
|
148 |
+
};
|
149 |
+
|
150 |
+
// Function to initialize the graph
|
151 |
+
function initializeGraph(graphData) {
|
152 |
+
// Create the SVG container
|
153 |
+
const svg = d3.select("#mynetwork")
|
154 |
+
.append("svg")
|
155 |
+
.attr("width", width)
|
156 |
+
.attr("height", height)
|
157 |
+
.call(d3.zoom().on("zoom", function (event) {
|
158 |
+
svg.attr("transform", event.transform);
|
159 |
+
}))
|
160 |
+
.append("g");
|
161 |
+
|
162 |
+
// Create a tooltip
|
163 |
+
const tooltip = d3.select("body").append("div")
|
164 |
+
.attr("class", "tooltip")
|
165 |
+
.style("opacity", 0);
|
166 |
+
|
167 |
+
// Define the arrowhead marker
|
168 |
+
svg.append("defs").append("marker")
|
169 |
+
.attr("id", "arrowhead")
|
170 |
+
.attr("viewBox", "0 -5 10 10")
|
171 |
+
.attr("refX", 20)
|
172 |
+
.attr("refY", 0)
|
173 |
+
.attr("markerWidth", 8)
|
174 |
+
.attr("markerHeight", 8)
|
175 |
+
.attr("orient", "auto")
|
176 |
+
.append("path")
|
177 |
+
.attr("d", "M 0,-5 L 10,0 L 0,5")
|
178 |
+
.attr("fill", "#999");
|
179 |
+
|
180 |
+
// Rename edges from "from" and "to" to "source" and "target"
|
181 |
+
graphData.edges.forEach(edge => {
|
182 |
+
edge.source = edge.from;
|
183 |
+
edge.target = edge.to;
|
184 |
+
delete edge.from;
|
185 |
+
delete edge.to;
|
186 |
+
});
|
187 |
+
|
188 |
+
// Collect all node IDs
|
189 |
+
const nodeIds = new Set(graphData.nodes.map(node => node.id));
|
190 |
+
|
191 |
+
// Create a mapping for default nodes
|
192 |
+
const defaultNode = {
|
193 |
+
id: "default",
|
194 |
+
label: "Unknown Node",
|
195 |
+
x: width / 2,
|
196 |
+
y: height / 2
|
197 |
+
};
|
198 |
+
|
199 |
+
// Ensure all edges have valid nodes
|
200 |
+
graphData.edges.forEach(edge => {
|
201 |
+
if (!nodeIds.has(edge.source)) {
|
202 |
+
graphData.nodes.push({ ...defaultNode, id: edge.source });
|
203 |
+
nodeIds.add(edge.source);
|
204 |
+
}
|
205 |
+
if (!nodeIds.has(edge.target)) {
|
206 |
+
graphData.nodes.push({ ...defaultNode, id: edge.target });
|
207 |
+
nodeIds.add(edge.target);
|
208 |
+
}
|
209 |
+
});
|
210 |
+
|
211 |
+
// Create the simulation
|
212 |
+
const simulation = d3.forceSimulation(graphData.nodes)
|
213 |
+
.force("link", d3.forceLink(graphData.edges).id(d => d.id).distance(100))
|
214 |
+
.force("charge", d3.forceManyBody().strength(-300))
|
215 |
+
.force("center", d3.forceCenter(width / 2, height / 2))
|
216 |
+
.force("collision", d3.forceCollide().radius(50));
|
217 |
+
|
218 |
+
// Create links
|
219 |
+
const link = svg.append("g")
|
220 |
+
.attr("class", "links")
|
221 |
+
.selectAll("line")
|
222 |
+
.data(graphData.edges)
|
223 |
+
.enter().append("line")
|
224 |
+
.attr("class", "link directed");
|
225 |
+
|
226 |
+
// Create nodes
|
227 |
+
const node = svg.append("g")
|
228 |
+
.attr("class", "nodes")
|
229 |
+
.selectAll("g")
|
230 |
+
.data(graphData.nodes)
|
231 |
+
.enter().append("g")
|
232 |
+
.attr("class", "node")
|
233 |
+
.call(d3.drag()
|
234 |
+
.on("start", dragstarted)
|
235 |
+
.on("drag", dragged)
|
236 |
+
.on("end", dragended));
|
237 |
+
|
238 |
+
node.append("circle")
|
239 |
+
.attr("r", 15)
|
240 |
+
.attr("fill", "#69b3a2");
|
241 |
+
|
242 |
+
node.append("text")
|
243 |
+
.attr("x", 18)
|
244 |
+
.attr("y", 5)
|
245 |
+
.text(d => d.label)
|
246 |
+
.attr("font-size", "12px")
|
247 |
+
.attr("fill", "#555");
|
248 |
+
|
249 |
+
// Add tooltips and highlighting
|
250 |
+
node.on("mouseover", function (event, d) {
|
251 |
+
highlightConnections(d);
|
252 |
+
showTooltip(event, d);
|
253 |
+
}).on("mouseout", function () {
|
254 |
+
unhighlightConnections();
|
255 |
+
hideTooltip();
|
256 |
+
});
|
257 |
+
|
258 |
+
// Update positions on tick
|
259 |
+
simulation.on("tick", () => {
|
260 |
+
link
|
261 |
+
.attr("x1", d => d.source.x)
|
262 |
+
.attr("y1", d => d.source.y)
|
263 |
+
.attr("x2", d => d.target.x)
|
264 |
+
.attr("y2", d => d.target.y);
|
265 |
+
|
266 |
+
node
|
267 |
+
.attr("transform", d => `translate(${d.x},${d.y})`);
|
268 |
+
});
|
269 |
+
|
270 |
+
function dragstarted(event, d) {
|
271 |
+
if (!event.active) simulation.alphaTarget(0.3).restart();
|
272 |
+
d.fx = d.x;
|
273 |
+
d.fy = d.y;
|
274 |
+
}
|
275 |
+
|
276 |
+
function dragged(event, d) {
|
277 |
+
d.fx = event.x;
|
278 |
+
d.fy = event.y;
|
279 |
+
}
|
280 |
+
|
281 |
+
function dragended(event, d) {
|
282 |
+
if (!event.active) simulation.alphaTarget(0);
|
283 |
+
d.fx = null;
|
284 |
+
d.fy = null;
|
285 |
+
}
|
286 |
+
|
287 |
+
function highlightConnections(d) {
|
288 |
+
node.style("opacity", n => n === d || graphData.edges.some(l => (l.source === d && l.target === n) || (l.target === d && l.source === n)) ? 1 : 0.1);
|
289 |
+
link.style("opacity", l => l.source === d || l.target === d ? 1 : 0.1)
|
290 |
+
.classed("highlighted", l => l.source === d || l.target === d);
|
291 |
+
}
|
292 |
+
|
293 |
+
function unhighlightConnections() {
|
294 |
+
node.style("opacity", 1);
|
295 |
+
link.style("opacity", 1).classed("highlighted", false);
|
296 |
+
}
|
297 |
+
|
298 |
+
function showTooltip(event, d) {
|
299 |
+
tooltip.transition().duration(200).style("opacity", .9);
|
300 |
+
tooltip.html(`
|
301 |
+
<strong>${d.label}</strong><br/>
|
302 |
+
ID: ${d.id}<br/>
|
303 |
+
Connections: ${graphData.edges.filter(l => l.source === d || l.target === d).length}
|
304 |
+
`)
|
305 |
+
.style("left", (event.pageX + 10) + "px")
|
306 |
+
.style("top", (event.pageY - 28) + "px");
|
307 |
+
}
|
308 |
+
|
309 |
+
function hideTooltip() {
|
310 |
+
tooltip.transition().duration(500).style("opacity", 0);
|
311 |
+
}
|
312 |
+
|
313 |
+
window.fitNetwork = () => {
|
314 |
+
const bounds = svg.node().getBBox();
|
315 |
+
const parent = svg.node().parentElement;
|
316 |
+
const fullWidth = parent.clientWidth;
|
317 |
+
const fullHeight = parent.clientHeight;
|
318 |
+
const width = bounds.width;
|
319 |
+
const height = bounds.height;
|
320 |
+
const midX = bounds.x + width / 2;
|
321 |
+
const midY = bounds.y + height / 2;
|
322 |
+
if (width === 0 || height === 0) return; // nothing to fit
|
323 |
+
const scale = 0.8 / Math.max(width / fullWidth, height / fullHeight);
|
324 |
+
const translate = [fullWidth / 2 - scale * midX, fullHeight / 2 - scale * midY];
|
325 |
+
|
326 |
+
svg.transition()
|
327 |
+
.duration(750)
|
328 |
+
.call(
|
329 |
+
d3.zoom().transform,
|
330 |
+
d3.zoomIdentity.translate(translate[0], translate[1]).scale(scale)
|
331 |
+
);
|
332 |
+
};
|
333 |
+
|
334 |
+
window.expandAll = () => {
|
335 |
+
node.style("display", "block");
|
336 |
+
link.style("display", "block");
|
337 |
+
simulation.alpha(1).restart();
|
338 |
+
};
|
339 |
+
|
340 |
+
window.collapseAll = () => {
|
341 |
+
node.style("display", d => d.id === 'root' ? "block" : "none");
|
342 |
+
link.style("display", "none");
|
343 |
+
simulation.alpha(1).restart();
|
344 |
+
};
|
345 |
+
|
346 |
+
d3.select("#charge").on("input", function () {
|
347 |
+
simulation.force("charge").strength(+this.value);
|
348 |
+
simulation.alpha(1).restart();
|
349 |
+
});
|
350 |
+
|
351 |
+
window.searchNode = () => {
|
352 |
+
const searchTerm = document.getElementById("searchInput").value.toLowerCase();
|
353 |
+
node.style("opacity", d => d.label.toLowerCase().includes(searchTerm) ? 1 : 0.1);
|
354 |
+
link.style("opacity", 0.1);
|
355 |
+
};
|
356 |
+
}
|
357 |
+
|
358 |
+
// Function to load graph data and initialize
|
359 |
+
function loadAndInitializeGraph(graphDataOrUrl) {
|
360 |
+
if (typeof graphDataOrUrl === 'string') {
|
361 |
+
// If it's a URL, fetch the data
|
362 |
+
d3.json(graphDataOrUrl).then(data => {
|
363 |
+
initializeGraph(data);
|
364 |
+
}).catch(error => {
|
365 |
+
console.error("Error loading the JSON file:", error);
|
366 |
+
initializeGraph(defaultGraphData);
|
367 |
+
});
|
368 |
+
} else if (typeof graphDataOrUrl === 'object') {
|
369 |
+
// If it's an object, use it directly
|
370 |
+
initializeGraph(graphDataOrUrl);
|
371 |
+
} else {
|
372 |
+
// If neither, use the default data
|
373 |
+
initializeGraph(defaultGraphData);
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
// Usage:
|
378 |
+
// loadAndInitializeGraph(someJsonObject); // To use a JSON object
|
379 |
+
// loadAndInitializeGraph(); // To use default data
|
380 |
+
|
381 |
+
// Initialize with default data
|
382 |
+
loadAndInitializeGraph("../memory/graph_data.json"); // To load from a file
|
383 |
+
</script>
|
384 |
+
</body>
|
385 |
+
|
386 |
+
</html>
|
memory/.gitkeep
ADDED
File without changes
|
memory/graph_data.json
ADDED
@@ -0,0 +1,562 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"nodes": [
|
3 |
+
{
|
4 |
+
"id": "root",
|
5 |
+
"label": "root"
|
6 |
+
},
|
7 |
+
{
|
8 |
+
"id": "duvidas-na-conta-gov.br",
|
9 |
+
"label": "duvidas-na-conta-gov.br"
|
10 |
+
},
|
11 |
+
{
|
12 |
+
"id": "duvidas-na-assinatura-gov.br",
|
13 |
+
"label": "duvidas-na-assinatura-gov.br"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"id": "duvidas-no-aplicativo-gov.br",
|
17 |
+
"label": "duvidas-no-aplicativo-gov.br"
|
18 |
+
},
|
19 |
+
{
|
20 |
+
"id": "duvidas-nos-dados-cadastrais",
|
21 |
+
"label": "duvidas-nos-dados-cadastrais"
|
22 |
+
},
|
23 |
+
{
|
24 |
+
"id": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-para-aumentar-o-nivel-com-a-cin",
|
25 |
+
"label": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-para-aumentar-o-nivel-com-a-cin"
|
26 |
+
},
|
27 |
+
{
|
28 |
+
"id": "duvidas-na-plataforma-de-automacao",
|
29 |
+
"label": "duvidas-na-plataforma-de-automacao"
|
30 |
+
},
|
31 |
+
{
|
32 |
+
"id": "atendimento-presencial",
|
33 |
+
"label": "atendimento-presencial"
|
34 |
+
},
|
35 |
+
{
|
36 |
+
"id": "duvidas-na-plataforma-de-automacao/cidadao",
|
37 |
+
"label": "duvidas-na-plataforma-de-automacao/cidadao"
|
38 |
+
},
|
39 |
+
{
|
40 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico",
|
41 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico"
|
42 |
+
},
|
43 |
+
{
|
44 |
+
"id": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial",
|
45 |
+
"label": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial"
|
46 |
+
},
|
47 |
+
{
|
48 |
+
"id": "duvidas-no-aplicativo-gov.br/duvidas-sobre-a-gestao-de-dispositivos-no-gov.br",
|
49 |
+
"label": "duvidas-no-aplicativo-gov.br/duvidas-sobre-a-gestao-de-dispositivos-no-gov.br"
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"id": "duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br",
|
53 |
+
"label": "duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br"
|
54 |
+
},
|
55 |
+
{
|
56 |
+
"id": "duvidas-na-assinatura-gov.br/visao-geral-da-assinatura",
|
57 |
+
"label": "duvidas-na-assinatura-gov.br/visao-geral-da-assinatura"
|
58 |
+
},
|
59 |
+
{
|
60 |
+
"id": "duvidas-na-assinatura-gov.br/nao-recebi-o-codigo-da-assinatura",
|
61 |
+
"label": "duvidas-na-assinatura-gov.br/nao-recebi-o-codigo-da-assinatura"
|
62 |
+
},
|
63 |
+
{
|
64 |
+
"id": "duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura",
|
65 |
+
"label": "duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura"
|
66 |
+
},
|
67 |
+
{
|
68 |
+
"id": "duvidas-nos-dados-cadastrais/nao-consigo-cadastrar-meu-endereco-no-gov.br",
|
69 |
+
"label": "duvidas-nos-dados-cadastrais/nao-consigo-cadastrar-meu-endereco-no-gov.br"
|
70 |
+
},
|
71 |
+
{
|
72 |
+
"id": "duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal",
|
73 |
+
"label": "duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
74 |
+
},
|
75 |
+
{
|
76 |
+
"id": "duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos",
|
77 |
+
"label": "duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos"
|
78 |
+
},
|
79 |
+
{
|
80 |
+
"id": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
81 |
+
"label": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais"
|
82 |
+
},
|
83 |
+
{
|
84 |
+
"id": "duvidas-na-conta-gov.br/recuperar-conta-gov.br",
|
85 |
+
"label": "duvidas-na-conta-gov.br/recuperar-conta-gov.br"
|
86 |
+
},
|
87 |
+
{
|
88 |
+
"id": "duvidas-na-conta-gov.br/ativar-a-verificacao-em-duas-etapas",
|
89 |
+
"label": "duvidas-na-conta-gov.br/ativar-a-verificacao-em-duas-etapas"
|
90 |
+
},
|
91 |
+
{
|
92 |
+
"id": "duvidas-na-conta-gov.br/desativar-a-verificacao-em-duas-etapas",
|
93 |
+
"label": "duvidas-na-conta-gov.br/desativar-a-verificacao-em-duas-etapas"
|
94 |
+
},
|
95 |
+
{
|
96 |
+
"id": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br",
|
97 |
+
"label": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br"
|
98 |
+
},
|
99 |
+
{
|
100 |
+
"id": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada",
|
101 |
+
"label": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada"
|
102 |
+
},
|
103 |
+
{
|
104 |
+
"id": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br",
|
105 |
+
"label": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br"
|
106 |
+
},
|
107 |
+
{
|
108 |
+
"id": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br",
|
109 |
+
"label": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br"
|
110 |
+
},
|
111 |
+
{
|
112 |
+
"id": "duvidas-na-conta-gov.br/titular-falecido-na-conta-gov.br",
|
113 |
+
"label": "duvidas-na-conta-gov.br/titular-falecido-na-conta-gov.br"
|
114 |
+
},
|
115 |
+
{
|
116 |
+
"id": "duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados",
|
117 |
+
"label": "duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados"
|
118 |
+
},
|
119 |
+
{
|
120 |
+
"id": "duvidas-na-conta-gov.br/erro-403-ao-fazer-o-login",
|
121 |
+
"label": "duvidas-na-conta-gov.br/erro-403-ao-fazer-o-login"
|
122 |
+
},
|
123 |
+
{
|
124 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
125 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta"
|
126 |
+
},
|
127 |
+
{
|
128 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
129 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte"
|
130 |
+
},
|
131 |
+
{
|
132 |
+
"id": "duvidas-na-plataforma-de-automacao/cidadao/acessar-o-servico",
|
133 |
+
"label": "duvidas-na-plataforma-de-automacao/cidadao/acessar-o-servico"
|
134 |
+
},
|
135 |
+
{
|
136 |
+
"id": "duvidas-na-plataforma-de-automacao/cidadao/consultar-as-minhas-solicitacoes",
|
137 |
+
"label": "duvidas-na-plataforma-de-automacao/cidadao/consultar-as-minhas-solicitacoes"
|
138 |
+
},
|
139 |
+
{
|
140 |
+
"id": "duvidas-na-plataforma-de-automacao/cidadao/abrir-um-chamado",
|
141 |
+
"label": "duvidas-na-plataforma-de-automacao/cidadao/abrir-um-chamado"
|
142 |
+
},
|
143 |
+
{
|
144 |
+
"id": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial/bases-biometricas-faciais",
|
145 |
+
"label": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial/bases-biometricas-faciais"
|
146 |
+
},
|
147 |
+
{
|
148 |
+
"id": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/nao-lembro-de-ter-criado-uma-conta-gov.br",
|
149 |
+
"label": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/nao-lembro-de-ter-criado-uma-conta-gov.br"
|
150 |
+
},
|
151 |
+
{
|
152 |
+
"id": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/limite-de-cadastro-do-mesmo-e-mail-ou-telefone",
|
153 |
+
"label": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/limite-de-cadastro-do-mesmo-e-mail-ou-telefone"
|
154 |
+
},
|
155 |
+
{
|
156 |
+
"id": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito",
|
157 |
+
"label": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito"
|
158 |
+
},
|
159 |
+
{
|
160 |
+
"id": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/titular-da-conta-e-crianca-ou-adolescente",
|
161 |
+
"label": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/titular-da-conta-e-crianca-ou-adolescente"
|
162 |
+
},
|
163 |
+
{
|
164 |
+
"id": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/procurador-ou-curador",
|
165 |
+
"label": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/procurador-ou-curador"
|
166 |
+
},
|
167 |
+
{
|
168 |
+
"id": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-na-autenticacao-dos-bancos",
|
169 |
+
"label": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-na-autenticacao-dos-bancos"
|
170 |
+
},
|
171 |
+
{
|
172 |
+
"id": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada/bloqueio-por-senha-incorreta",
|
173 |
+
"label": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada/bloqueio-por-senha-incorreta"
|
174 |
+
},
|
175 |
+
{
|
176 |
+
"id": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br/certificado-nao-encontrado",
|
177 |
+
"label": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br/certificado-nao-encontrado"
|
178 |
+
},
|
179 |
+
{
|
180 |
+
"id": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-vincular-cnpj",
|
181 |
+
"label": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-vincular-cnpj"
|
182 |
+
},
|
183 |
+
{
|
184 |
+
"id": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-gerenciar-colaboradores",
|
185 |
+
"label": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-gerenciar-colaboradores"
|
186 |
+
},
|
187 |
+
{
|
188 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
189 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico"
|
190 |
+
},
|
191 |
+
{
|
192 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
193 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma"
|
194 |
+
},
|
195 |
+
{
|
196 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo",
|
197 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo"
|
198 |
+
},
|
199 |
+
{
|
200 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo",
|
201 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
202 |
+
},
|
203 |
+
{
|
204 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo",
|
205 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
206 |
+
},
|
207 |
+
{
|
208 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo",
|
209 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
210 |
+
},
|
211 |
+
{
|
212 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
213 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado"
|
214 |
+
},
|
215 |
+
{
|
216 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico",
|
217 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico"
|
218 |
+
},
|
219 |
+
{
|
220 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios",
|
221 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios"
|
222 |
+
},
|
223 |
+
{
|
224 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria",
|
225 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria"
|
226 |
+
},
|
227 |
+
{
|
228 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento",
|
229 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
230 |
+
},
|
231 |
+
{
|
232 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao",
|
233 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
234 |
+
},
|
235 |
+
{
|
236 |
+
"id": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito/solicitar-o-bloqueio-da-minha-conta-gov.br",
|
237 |
+
"label": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito/solicitar-o-bloqueio-da-minha-conta-gov.br"
|
238 |
+
},
|
239 |
+
{
|
240 |
+
"id": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao/processamento-dos-arquivos",
|
241 |
+
"label": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao/processamento-dos-arquivos"
|
242 |
+
}
|
243 |
+
],
|
244 |
+
"edges": [
|
245 |
+
{
|
246 |
+
"from": "root",
|
247 |
+
"to": "duvidas-na-conta-gov.br"
|
248 |
+
},
|
249 |
+
{
|
250 |
+
"from": "root",
|
251 |
+
"to": "duvidas-na-assinatura-gov.br"
|
252 |
+
},
|
253 |
+
{
|
254 |
+
"from": "root",
|
255 |
+
"to": "duvidas-no-aplicativo-gov.br"
|
256 |
+
},
|
257 |
+
{
|
258 |
+
"from": "root",
|
259 |
+
"to": "duvidas-nos-dados-cadastrais"
|
260 |
+
},
|
261 |
+
{
|
262 |
+
"from": "root",
|
263 |
+
"to": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-para-aumentar-o-nivel-com-a-cin"
|
264 |
+
},
|
265 |
+
{
|
266 |
+
"from": "root",
|
267 |
+
"to": "duvidas-na-plataforma-de-automacao"
|
268 |
+
},
|
269 |
+
{
|
270 |
+
"from": "root",
|
271 |
+
"to": "atendimento-presencial"
|
272 |
+
},
|
273 |
+
{
|
274 |
+
"from": "duvidas-na-plataforma-de-automacao",
|
275 |
+
"to": "duvidas-na-plataforma-de-automacao/cidadao"
|
276 |
+
},
|
277 |
+
{
|
278 |
+
"from": "duvidas-na-plataforma-de-automacao",
|
279 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico"
|
280 |
+
},
|
281 |
+
{
|
282 |
+
"from": "duvidas-no-aplicativo-gov.br",
|
283 |
+
"to": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial"
|
284 |
+
},
|
285 |
+
{
|
286 |
+
"from": "duvidas-no-aplicativo-gov.br",
|
287 |
+
"to": "duvidas-no-aplicativo-gov.br/duvidas-sobre-a-gestao-de-dispositivos-no-gov.br"
|
288 |
+
},
|
289 |
+
{
|
290 |
+
"from": "duvidas-no-aplicativo-gov.br",
|
291 |
+
"to": "duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br"
|
292 |
+
},
|
293 |
+
{
|
294 |
+
"from": "duvidas-na-assinatura-gov.br",
|
295 |
+
"to": "duvidas-na-assinatura-gov.br/visao-geral-da-assinatura"
|
296 |
+
},
|
297 |
+
{
|
298 |
+
"from": "duvidas-na-assinatura-gov.br",
|
299 |
+
"to": "duvidas-na-assinatura-gov.br/nao-recebi-o-codigo-da-assinatura"
|
300 |
+
},
|
301 |
+
{
|
302 |
+
"from": "duvidas-na-assinatura-gov.br",
|
303 |
+
"to": "duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura"
|
304 |
+
},
|
305 |
+
{
|
306 |
+
"from": "duvidas-nos-dados-cadastrais",
|
307 |
+
"to": "duvidas-nos-dados-cadastrais/nao-consigo-cadastrar-meu-endereco-no-gov.br"
|
308 |
+
},
|
309 |
+
{
|
310 |
+
"from": "duvidas-nos-dados-cadastrais",
|
311 |
+
"to": "duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
312 |
+
},
|
313 |
+
{
|
314 |
+
"from": "duvidas-nos-dados-cadastrais",
|
315 |
+
"to": "duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos"
|
316 |
+
},
|
317 |
+
{
|
318 |
+
"from": "duvidas-nos-dados-cadastrais",
|
319 |
+
"to": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais"
|
320 |
+
},
|
321 |
+
{
|
322 |
+
"from": "duvidas-na-conta-gov.br",
|
323 |
+
"to": "duvidas-na-conta-gov.br/recuperar-conta-gov.br"
|
324 |
+
},
|
325 |
+
{
|
326 |
+
"from": "duvidas-na-conta-gov.br",
|
327 |
+
"to": "duvidas-na-conta-gov.br/ativar-a-verificacao-em-duas-etapas"
|
328 |
+
},
|
329 |
+
{
|
330 |
+
"from": "duvidas-na-conta-gov.br",
|
331 |
+
"to": "duvidas-na-conta-gov.br/desativar-a-verificacao-em-duas-etapas"
|
332 |
+
},
|
333 |
+
{
|
334 |
+
"from": "duvidas-na-conta-gov.br",
|
335 |
+
"to": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br"
|
336 |
+
},
|
337 |
+
{
|
338 |
+
"from": "duvidas-na-conta-gov.br",
|
339 |
+
"to": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada"
|
340 |
+
},
|
341 |
+
{
|
342 |
+
"from": "duvidas-na-conta-gov.br",
|
343 |
+
"to": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br"
|
344 |
+
},
|
345 |
+
{
|
346 |
+
"from": "duvidas-na-conta-gov.br",
|
347 |
+
"to": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br"
|
348 |
+
},
|
349 |
+
{
|
350 |
+
"from": "duvidas-na-conta-gov.br",
|
351 |
+
"to": "duvidas-na-conta-gov.br/titular-falecido-na-conta-gov.br"
|
352 |
+
},
|
353 |
+
{
|
354 |
+
"from": "duvidas-na-conta-gov.br",
|
355 |
+
"to": "duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados"
|
356 |
+
},
|
357 |
+
{
|
358 |
+
"from": "duvidas-na-conta-gov.br",
|
359 |
+
"to": "duvidas-na-conta-gov.br/erro-403-ao-fazer-o-login"
|
360 |
+
},
|
361 |
+
{
|
362 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico",
|
363 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta"
|
364 |
+
},
|
365 |
+
{
|
366 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico",
|
367 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte"
|
368 |
+
},
|
369 |
+
{
|
370 |
+
"from": "duvidas-na-plataforma-de-automacao/cidadao",
|
371 |
+
"to": "duvidas-na-plataforma-de-automacao/cidadao/acessar-o-servico"
|
372 |
+
},
|
373 |
+
{
|
374 |
+
"from": "duvidas-na-plataforma-de-automacao/cidadao",
|
375 |
+
"to": "duvidas-na-plataforma-de-automacao/cidadao/consultar-as-minhas-solicitacoes"
|
376 |
+
},
|
377 |
+
{
|
378 |
+
"from": "duvidas-na-plataforma-de-automacao/cidadao",
|
379 |
+
"to": "duvidas-na-plataforma-de-automacao/cidadao/abrir-um-chamado"
|
380 |
+
},
|
381 |
+
{
|
382 |
+
"from": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial",
|
383 |
+
"to": "duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial/bases-biometricas-faciais"
|
384 |
+
},
|
385 |
+
{
|
386 |
+
"from": "duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura",
|
387 |
+
"to": "duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
388 |
+
},
|
389 |
+
{
|
390 |
+
"from": "duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br",
|
391 |
+
"to": "duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
392 |
+
},
|
393 |
+
{
|
394 |
+
"from": "duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br",
|
395 |
+
"to": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br"
|
396 |
+
},
|
397 |
+
{
|
398 |
+
"from": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
399 |
+
"to": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/nao-lembro-de-ter-criado-uma-conta-gov.br"
|
400 |
+
},
|
401 |
+
{
|
402 |
+
"from": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
403 |
+
"to": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/limite-de-cadastro-do-mesmo-e-mail-ou-telefone"
|
404 |
+
},
|
405 |
+
{
|
406 |
+
"from": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
407 |
+
"to": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito"
|
408 |
+
},
|
409 |
+
{
|
410 |
+
"from": "duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos",
|
411 |
+
"to": "duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados"
|
412 |
+
},
|
413 |
+
{
|
414 |
+
"from": "duvidas-na-conta-gov.br/recuperar-conta-gov.br",
|
415 |
+
"to": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/titular-da-conta-e-crianca-ou-adolescente"
|
416 |
+
},
|
417 |
+
{
|
418 |
+
"from": "duvidas-na-conta-gov.br/recuperar-conta-gov.br",
|
419 |
+
"to": "duvidas-na-conta-gov.br/recuperar-conta-gov.br/procurador-ou-curador"
|
420 |
+
},
|
421 |
+
{
|
422 |
+
"from": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br",
|
423 |
+
"to": "duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-na-autenticacao-dos-bancos"
|
424 |
+
},
|
425 |
+
{
|
426 |
+
"from": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada",
|
427 |
+
"to": "duvidas-na-conta-gov.br/conta-gov-br-bloqueada/bloqueio-por-senha-incorreta"
|
428 |
+
},
|
429 |
+
{
|
430 |
+
"from": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br",
|
431 |
+
"to": "duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br/certificado-nao-encontrado"
|
432 |
+
},
|
433 |
+
{
|
434 |
+
"from": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br",
|
435 |
+
"to": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-vincular-cnpj"
|
436 |
+
},
|
437 |
+
{
|
438 |
+
"from": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br",
|
439 |
+
"to": "duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-gerenciar-colaboradores"
|
440 |
+
},
|
441 |
+
{
|
442 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
443 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico"
|
444 |
+
},
|
445 |
+
{
|
446 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
447 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma"
|
448 |
+
},
|
449 |
+
{
|
450 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
451 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo"
|
452 |
+
},
|
453 |
+
{
|
454 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
455 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
456 |
+
},
|
457 |
+
{
|
458 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
459 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
460 |
+
},
|
461 |
+
{
|
462 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
463 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
464 |
+
},
|
465 |
+
{
|
466 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
467 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado"
|
468 |
+
},
|
469 |
+
{
|
470 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
471 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico"
|
472 |
+
},
|
473 |
+
{
|
474 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
475 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios"
|
476 |
+
},
|
477 |
+
{
|
478 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
479 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria"
|
480 |
+
},
|
481 |
+
{
|
482 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
483 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
484 |
+
},
|
485 |
+
{
|
486 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
487 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
488 |
+
},
|
489 |
+
{
|
490 |
+
"from": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito",
|
491 |
+
"to": "duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito/solicitar-o-bloqueio-da-minha-conta-gov.br"
|
492 |
+
},
|
493 |
+
{
|
494 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
495 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios"
|
496 |
+
},
|
497 |
+
{
|
498 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
499 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo"
|
500 |
+
},
|
501 |
+
{
|
502 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
503 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
504 |
+
},
|
505 |
+
{
|
506 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
507 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
508 |
+
},
|
509 |
+
{
|
510 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
511 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
512 |
+
},
|
513 |
+
{
|
514 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
515 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
516 |
+
},
|
517 |
+
{
|
518 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
519 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
520 |
+
},
|
521 |
+
{
|
522 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
523 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
524 |
+
},
|
525 |
+
{
|
526 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo",
|
527 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
528 |
+
},
|
529 |
+
{
|
530 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
531 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria"
|
532 |
+
},
|
533 |
+
{
|
534 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
535 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
536 |
+
},
|
537 |
+
{
|
538 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
539 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
540 |
+
},
|
541 |
+
{
|
542 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico",
|
543 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
544 |
+
},
|
545 |
+
{
|
546 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico",
|
547 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
548 |
+
},
|
549 |
+
{
|
550 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios",
|
551 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
552 |
+
},
|
553 |
+
{
|
554 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios",
|
555 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
556 |
+
},
|
557 |
+
{
|
558 |
+
"from": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao",
|
559 |
+
"to": "duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao/processamento-dos-arquivos"
|
560 |
+
}
|
561 |
+
]
|
562 |
+
}
|
memory/graph_data_tiplet.json
ADDED
@@ -0,0 +1,318 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
[
|
3 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
4 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br"
|
5 |
+
],
|
6 |
+
[
|
7 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
8 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br"
|
9 |
+
],
|
10 |
+
[
|
11 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
12 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br"
|
13 |
+
],
|
14 |
+
[
|
15 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
16 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais"
|
17 |
+
],
|
18 |
+
[
|
19 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
20 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-para-aumentar-o-nivel-com-a-cin"
|
21 |
+
],
|
22 |
+
[
|
23 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
24 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao"
|
25 |
+
],
|
26 |
+
[
|
27 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/",
|
28 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/atendimento-presencial"
|
29 |
+
],
|
30 |
+
[
|
31 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao",
|
32 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao"
|
33 |
+
],
|
34 |
+
[
|
35 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao",
|
36 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico"
|
37 |
+
],
|
38 |
+
[
|
39 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br",
|
40 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial"
|
41 |
+
],
|
42 |
+
[
|
43 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br",
|
44 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-sobre-a-gestao-de-dispositivos-no-gov.br"
|
45 |
+
],
|
46 |
+
[
|
47 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br",
|
48 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br"
|
49 |
+
],
|
50 |
+
[
|
51 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br",
|
52 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br/visao-geral-da-assinatura"
|
53 |
+
],
|
54 |
+
[
|
55 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br",
|
56 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br/nao-recebi-o-codigo-da-assinatura"
|
57 |
+
],
|
58 |
+
[
|
59 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br",
|
60 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura"
|
61 |
+
],
|
62 |
+
[
|
63 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais",
|
64 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-consigo-cadastrar-meu-endereco-no-gov.br"
|
65 |
+
],
|
66 |
+
[
|
67 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais",
|
68 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
69 |
+
],
|
70 |
+
[
|
71 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais",
|
72 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos"
|
73 |
+
],
|
74 |
+
[
|
75 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais",
|
76 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais"
|
77 |
+
],
|
78 |
+
[
|
79 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
80 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br"
|
81 |
+
],
|
82 |
+
[
|
83 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
84 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/ativar-a-verificacao-em-duas-etapas"
|
85 |
+
],
|
86 |
+
[
|
87 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
88 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/desativar-a-verificacao-em-duas-etapas"
|
89 |
+
],
|
90 |
+
[
|
91 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
92 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br"
|
93 |
+
],
|
94 |
+
[
|
95 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
96 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/conta-gov-br-bloqueada"
|
97 |
+
],
|
98 |
+
[
|
99 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
100 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br"
|
101 |
+
],
|
102 |
+
[
|
103 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
104 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br"
|
105 |
+
],
|
106 |
+
[
|
107 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
108 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/titular-falecido-na-conta-gov.br"
|
109 |
+
],
|
110 |
+
[
|
111 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
112 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados"
|
113 |
+
],
|
114 |
+
[
|
115 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br",
|
116 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/erro-403-ao-fazer-o-login"
|
117 |
+
],
|
118 |
+
[
|
119 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico",
|
120 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta"
|
121 |
+
],
|
122 |
+
[
|
123 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico",
|
124 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte"
|
125 |
+
],
|
126 |
+
[
|
127 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao",
|
128 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao/acessar-o-servico"
|
129 |
+
],
|
130 |
+
[
|
131 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao",
|
132 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao/consultar-as-minhas-solicitacoes"
|
133 |
+
],
|
134 |
+
[
|
135 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao",
|
136 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/cidadao/abrir-um-chamado"
|
137 |
+
],
|
138 |
+
[
|
139 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial",
|
140 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-no-reconhecimento-facial/bases-biometricas-faciais"
|
141 |
+
],
|
142 |
+
[
|
143 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br/nome-incorreto-na-assinatura",
|
144 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
145 |
+
],
|
146 |
+
[
|
147 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br",
|
148 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/inconsistencia-de-dados-cadastrais-na-receita-federal"
|
149 |
+
],
|
150 |
+
[
|
151 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-no-aplicativo-gov.br/duvidas-gerais-no-aplicativo-gov.br",
|
152 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br"
|
153 |
+
],
|
154 |
+
[
|
155 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
156 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/nao-lembro-de-ter-criado-uma-conta-gov.br"
|
157 |
+
],
|
158 |
+
[
|
159 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
160 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/limite-de-cadastro-do-mesmo-e-mail-ou-telefone"
|
161 |
+
],
|
162 |
+
[
|
163 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais",
|
164 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito"
|
165 |
+
],
|
166 |
+
[
|
167 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/requisitos-para-acesso-aos-servicos",
|
168 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-em-outros-sistemas-integrados"
|
169 |
+
],
|
170 |
+
[
|
171 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br",
|
172 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/titular-da-conta-e-crianca-ou-adolescente"
|
173 |
+
],
|
174 |
+
[
|
175 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br",
|
176 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/procurador-ou-curador"
|
177 |
+
],
|
178 |
+
[
|
179 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br",
|
180 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/duvidas-na-autenticacao-dos-bancos"
|
181 |
+
],
|
182 |
+
[
|
183 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/conta-gov-br-bloqueada",
|
184 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/conta-gov-br-bloqueada/bloqueio-por-senha-incorreta"
|
185 |
+
],
|
186 |
+
[
|
187 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br",
|
188 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-no-login-com-certificado-no-gov.br/certificado-nao-encontrado"
|
189 |
+
],
|
190 |
+
[
|
191 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br",
|
192 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-vincular-cnpj"
|
193 |
+
],
|
194 |
+
[
|
195 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br",
|
196 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-na-vinculacao-de-cnpj-no-gov.br/como-gerenciar-colaboradores"
|
197 |
+
],
|
198 |
+
[
|
199 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
200 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico"
|
201 |
+
],
|
202 |
+
[
|
203 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
204 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma"
|
205 |
+
],
|
206 |
+
[
|
207 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
208 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo"
|
209 |
+
],
|
210 |
+
[
|
211 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
212 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
213 |
+
],
|
214 |
+
[
|
215 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
216 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
217 |
+
],
|
218 |
+
[
|
219 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta",
|
220 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
221 |
+
],
|
222 |
+
[
|
223 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
224 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado"
|
225 |
+
],
|
226 |
+
[
|
227 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
228 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico"
|
229 |
+
],
|
230 |
+
[
|
231 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
232 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios"
|
233 |
+
],
|
234 |
+
[
|
235 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
236 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria"
|
237 |
+
],
|
238 |
+
[
|
239 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
240 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
241 |
+
],
|
242 |
+
[
|
243 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte",
|
244 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
245 |
+
],
|
246 |
+
[
|
247 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito",
|
248 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-nos-dados-cadastrais/nao-alterei-meus-dados-cadastrais/identifiquei-uma-alteracao-ou-um-acesso-suspeito/solicitar-o-bloqueio-da-minha-conta-gov.br"
|
249 |
+
],
|
250 |
+
[
|
251 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
252 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios"
|
253 |
+
],
|
254 |
+
[
|
255 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
256 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo"
|
257 |
+
],
|
258 |
+
[
|
259 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
260 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
261 |
+
],
|
262 |
+
[
|
263 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
264 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
265 |
+
],
|
266 |
+
[
|
267 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/acessar-a-instancia-do-meu-servico",
|
268 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
269 |
+
],
|
270 |
+
[
|
271 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
272 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/cancelar-um-processo"
|
273 |
+
],
|
274 |
+
[
|
275 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
276 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/transferir-um-processo"
|
277 |
+
],
|
278 |
+
[
|
279 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/visao-geral-da-plataforma",
|
280 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
281 |
+
],
|
282 |
+
[
|
283 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/localizar-um-processo",
|
284 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/dicas-sobre-a-ferramenta/extrair-dados-de-um-processo"
|
285 |
+
],
|
286 |
+
[
|
287 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
288 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-uma-solicitacao-de-evolucao-melhoria"
|
289 |
+
],
|
290 |
+
[
|
291 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
292 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
293 |
+
],
|
294 |
+
[
|
295 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/registrar-um-chamado",
|
296 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
297 |
+
],
|
298 |
+
[
|
299 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico",
|
300 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
301 |
+
],
|
302 |
+
[
|
303 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-a-automacao-de-um-novo-servico",
|
304 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
305 |
+
],
|
306 |
+
[
|
307 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios",
|
308 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/solicitar-novo-treinamento"
|
309 |
+
],
|
310 |
+
[
|
311 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/gestao-de-usuarios",
|
312 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao"
|
313 |
+
],
|
314 |
+
[
|
315 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao",
|
316 |
+
"https://www.gov.br/governodigital/pt-br/acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-plataforma-de-automacao/gestor-do-servico/solicitar-suporte/sincronia-de-dados-com-a-automacao/processamento-dos-arquivos"
|
317 |
+
]
|
318 |
+
]
|
pipelines/message.py
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from utils.file import File
|
2 |
+
|
3 |
+
def send_message(user_query: str, pipeline):
|
4 |
+
# Estrutura das mensagens para a chamada da API
|
5 |
+
conversation_chat = []
|
6 |
+
|
7 |
+
# Adiciona a mensagem do sistema
|
8 |
+
conversation_chat.append({
|
9 |
+
"role": "system",
|
10 |
+
"content": File("prompts/system.md")
|
11 |
+
})
|
12 |
+
|
13 |
+
# Adiciona a mensagem do usuário
|
14 |
+
conversation_chat.append({
|
15 |
+
"role": "user",
|
16 |
+
"content": user_query
|
17 |
+
})
|
18 |
+
|
19 |
+
# Chama o pipeline para obter a resposta
|
20 |
+
text = pipeline(conversation_chat)
|
21 |
+
|
22 |
+
return text
|
prompts/knowledge.md
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
- acessibilidade-e-usuario/
|
2 |
+
- atendimento-gov.br/
|
3 |
+
- duvidas-na-conta-gov.br/
|
4 |
+
- duvidas-para-aumentar-o-nivel-da-conta-gov.br/
|
5 |
+
- duvidas-para-aumentar-o-nivel-com-a-cin/
|
6 |
+
- duvidas-na-autenticacao-dos-bancos/
|
7 |
+
- recuperar-conta-gov.br/
|
8 |
+
- titular-da-conta-e-crianca-ou-adolescente/
|
9 |
+
- procurador-ou-curador/
|
10 |
+
- ativar-a-verificacao-em-duas-etapas/
|
11 |
+
- desativar-a-verificacao-em-duas-etapas/
|
12 |
+
- conta-gov-br-bloqueada/
|
13 |
+
- bloqueio-por-senha-incorreta/
|
14 |
+
- duvidas-no-login-com-certificado-no-gov.br/
|
15 |
+
- certificado-nao-encontrado/
|
16 |
+
- duvidas-na-vinculacao-de-cnpj-no-gov.br/
|
17 |
+
- como-vincular-cnpj/
|
18 |
+
- como-gerenciar-colaboradores/
|
19 |
+
- titular-falecido-na-conta-gov.br/
|
20 |
+
- duvidas-em-outros-sistemas-integrados/
|
21 |
+
- erro-403-ao-fazer-o-login/
|
22 |
+
- duvidas-na-assinatura-gov.br/
|
23 |
+
- visao-geral-da-assinatura/
|
24 |
+
- nao-recebi-o-codigo-da-assinatura/
|
25 |
+
- nome-incorreto-na-assinatura/
|
26 |
+
- duvidas-no-aplicativo-gov.br/
|
27 |
+
- duvidas-no-reconhecimento-facial/
|
28 |
+
- bases-biometricas-faciais/
|
29 |
+
- duvidas-sobre-a-gestao-de-dispositivos-no-gov.br/
|
30 |
+
- duvidas-gerais-no-aplicativo-gov.br/
|
31 |
+
- duvidas-nos-dados-cadastrais/
|
32 |
+
- nao-consigo-cadastrar-meu-endereco-no-gov.br/
|
33 |
+
- inconsistencia-de-dados-cadastrais-na-receita-federal/
|
34 |
+
- requisitos-para-acesso-aos-servicos/
|
35 |
+
- nao-alterei-meus-dados-cadastrais/
|
36 |
+
- nao-lembro-de-ter-criado-uma-conta-gov.br/
|
37 |
+
- limite-de-cadastro-do-mesmo-e-mail-ou-telefone/
|
38 |
+
- identifiquei-uma-alteracao-ou-um-acesso-suspeito/
|
39 |
+
- solicitar-o-bloqueio-da-minha-conta-gov.br/
|
40 |
+
- duvidas-na-plataforma-de-automacao/
|
41 |
+
- cidadao/
|
42 |
+
- acessar-o-servico/
|
43 |
+
- consultar-as-minhas-solicitacoes/
|
44 |
+
- abrir-um-chamado/
|
45 |
+
- gestor-do-servico/
|
46 |
+
- dicas-sobre-a-ferramenta/
|
47 |
+
- acessar-a-instancia-do-meu-servico/
|
48 |
+
- visao-geral-da-plataforma/
|
49 |
+
- localizar-um-processo/
|
50 |
+
- cancelar-um-processo/
|
51 |
+
- transferir-um-processo/
|
52 |
+
- extrair-dados-de-um-processo/
|
53 |
+
- solicitar-suporte/
|
54 |
+
- registrar-um-chamado/
|
55 |
+
- solicitar-a-automacao-de-um-novo-servico/
|
56 |
+
- gestao-de-usuarios/
|
57 |
+
- registrar-uma-solicitacao-de-evolucao-melhoria/
|
58 |
+
- solicitar-novo-treinamento/
|
59 |
+
- sincronia-de-dados-com-a-automacao/
|
60 |
+
- processamento-dos-arquivos/
|
61 |
+
- atendimento-presencial/
|
prompts/system.md
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AI Assistant System for Brazilian Government Services - Strict Path-Based Responses
|
2 |
+
|
3 |
+
## Purpose
|
4 |
+
|
5 |
+
The primary purpose of this AI assistant is to quickly identify and return the most relevant knowledge path(s) from the provided knowledge structure that likely contain the answer to a user's question about Brazilian government services, focusing on the gov.br platform and related systems.
|
6 |
+
|
7 |
+
## Knowledge Structure
|
8 |
+
|
9 |
+
The assistant's knowledge is strictly limited to the following hierarchical structure:
|
10 |
+
|
11 |
+
<knowledge>
|
12 |
+
- acessibilidade-e-usuario/
|
13 |
+
- atendimento-gov.br/
|
14 |
+
- duvidas-na-conta-gov.br/
|
15 |
+
- duvidas-para-aumentar-o-nivel-da-conta-gov.br/
|
16 |
+
- duvidas-para-aumentar-o-nivel-com-a-cin/
|
17 |
+
- duvidas-na-autenticacao-dos-bancos/
|
18 |
+
- recuperar-conta-gov.br/
|
19 |
+
- titular-da-conta-e-crianca-ou-adolescente/
|
20 |
+
- procurador-ou-curador/
|
21 |
+
- ativar-a-verificacao-em-duas-etapas/
|
22 |
+
- desativar-a-verificacao-em-duas-etapas/
|
23 |
+
- conta-gov-br-bloqueada/
|
24 |
+
- bloqueio-por-senha-incorreta/
|
25 |
+
- duvidas-no-login-com-certificado-no-gov.br/
|
26 |
+
- certificado-nao-encontrado/
|
27 |
+
- duvidas-na-vinculacao-de-cnpj-no-gov.br/
|
28 |
+
- como-vincular-cnpj/
|
29 |
+
- como-gerenciar-colaboradores/
|
30 |
+
- titular-falecido-na-conta-gov.br/
|
31 |
+
- duvidas-em-outros-sistemas-integrados/
|
32 |
+
- erro-403-ao-fazer-o-login/
|
33 |
+
- duvidas-na-assinatura-gov.br/
|
34 |
+
- visao-geral-da-assinatura/
|
35 |
+
- nao-recebi-o-codigo-da-assinatura/
|
36 |
+
- nome-incorreto-na-assinatura/
|
37 |
+
- duvidas-no-aplicativo-gov.br/
|
38 |
+
- duvidas-no-reconhecimento-facial/
|
39 |
+
- bases-biometricas-faciais/
|
40 |
+
- duvidas-sobre-a-gestao-de-dispositivos-no-gov.br/
|
41 |
+
- duvidas-gerais-no-aplicativo-gov.br/
|
42 |
+
- duvidas-nos-dados-cadastrais/
|
43 |
+
- nao-consigo-cadastrar-meu-endereco-no-gov.br/
|
44 |
+
- inconsistencia-de-dados-cadastrais-na-receita-federal/
|
45 |
+
- requisitos-para-acesso-aos-servicos/
|
46 |
+
- nao-alterei-meus-dados-cadastrais/
|
47 |
+
- nao-lembro-de-ter-criado-uma-conta-gov.br/
|
48 |
+
- limite-de-cadastro-do-mesmo-e-mail-ou-telefone/
|
49 |
+
- identifiquei-uma-alteracao-ou-um-acesso-suspeito/
|
50 |
+
- solicitar-o-bloqueio-da-minha-conta-gov.br/
|
51 |
+
- duvidas-na-plataforma-de-automacao/
|
52 |
+
- cidadao/
|
53 |
+
- acessar-o-servico/
|
54 |
+
- consultar-as-minhas-solicitacoes/
|
55 |
+
- abrir-um-chamado/
|
56 |
+
- gestor-do-servico/
|
57 |
+
- dicas-sobre-a-ferramenta/
|
58 |
+
- acessar-a-instancia-do-meu-servico/
|
59 |
+
- visao-geral-da-plataforma/
|
60 |
+
- localizar-um-processo/
|
61 |
+
- cancelar-um-processo/
|
62 |
+
- transferir-um-processo/
|
63 |
+
- extrair-dados-de-um-processo/
|
64 |
+
- solicitar-suporte/
|
65 |
+
- registrar-um-chamado/
|
66 |
+
- solicitar-a-automacao-de-um-novo-servico/
|
67 |
+
- gestao-de-usuarios/
|
68 |
+
- registrar-uma-solicitacao-de-evolucao-melhoria/
|
69 |
+
- solicitar-novo-treinamento/
|
70 |
+
- sincronia-de-dados-com-a-automacao/
|
71 |
+
- processamento-dos-arquivos/
|
72 |
+
- atendimento-presencial/
|
73 |
+
</knowledge>
|
74 |
+
|
75 |
+
## Response Methodology
|
76 |
+
|
77 |
+
1. Query Analysis: Analyze the user's question to identify key topics and subtopics.
|
78 |
+
|
79 |
+
2. Path Matching: Based on the analysis, identify the most relevant path(s) in the provided knowledge structure.
|
80 |
+
|
81 |
+
3. Response Format: Return only the most relevant path(s), formatted as follows:
|
82 |
+
```
|
83 |
+
<path>path/to/relevant/information</path>
|
84 |
+
```
|
85 |
+
|
86 |
+
4. Multiple Paths: If multiple paths are equally relevant, return all of them, each in its own set of tags.
|
87 |
+
|
88 |
+
5. Partial Matches: If no exact match is found, return the closest partial match, going as deep into the directory structure as possible.
|
89 |
+
|
90 |
+
6. No Match: If no relevant path is found within the provided structure, do not provide any response.
|
91 |
+
|
92 |
+
7. Strict Adherence: Only return paths that exist exactly as shown in the provided knowledge structure. Do not create or infer paths that are not explicitly listed.
|
93 |
+
|
94 |
+
The assistant should not provide any explanation, additional text, or paths that are not part of the given structure. The response should consist solely of the relevant path(s) enclosed in `<path>` tags, or no response if no relevant path is found.
|
95 |
+
|
96 |
+
## Example Responses
|
97 |
+
|
98 |
+
User: "Como recuperar minha conta gov.br?"
|
99 |
+
Assistant: <path>acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/recuperar-conta-gov.br/</path>
|
100 |
+
|
101 |
+
User: "Quais são os níveis da conta gov.br?"
|
102 |
+
Assistant: <path>acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/duvidas-para-aumentar-o-nivel-da-conta-gov.br/</path>
|
103 |
+
|
104 |
+
User: "Como funciona a assinatura digital?"
|
105 |
+
Assistant: <path>acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-assinatura-gov.br/visao-geral-da-assinatura/</path>
|
106 |
+
|
107 |
+
User: "Qual é a capital do Brasil?"
|
108 |
+
Assistant: Infelizmente, não consegui entender. Você poderia perguntar de outra forma?
|
109 |
+
|
110 |
+
User: "Problemas com a conta"
|
111 |
+
Assistant: <path>acessibilidade-e-usuario/atendimento-gov.br/duvidas-na-conta-gov.br/</path>
|
requirements.txt
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ansio==0.0.1
|
2 |
+
python-dotenv==1.0.1
|
3 |
+
langchain-groq==0.1.6
|
4 |
+
langchain-huggingface==0.0.3
|
5 |
+
langchain-openai==0.1.15
|
6 |
+
langchain-community==0.2.7
|
7 |
+
langchain-anthropic==0.1.19
|
8 |
+
langchain-chroma==0.1.2
|
9 |
+
langchain-google-genai==1.0.7
|
10 |
+
webcolors==24.6.0
|
11 |
+
sentence-transformers==3.0.1
|
12 |
+
docker==7.1.0
|
13 |
+
paramiko==3.4.0
|
14 |
+
duckduckgo_search==6.1.12
|
15 |
+
inputimeout==1.0.4
|
16 |
+
streamlit==1.25.0
|
17 |
+
beautifulsoup4==4.12.3
|
18 |
+
bs4==0.0.2
|
tools/__init__.py
ADDED
File without changes
|
tools/python/.gitkeep
ADDED
File without changes
|
utils/file.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#%%
|
2 |
+
|
3 |
+
def File(file_path):
|
4 |
+
with open(file_path, 'r', encoding='utf-8') as file:
|
5 |
+
return file.read()
|
6 |
+
|
7 |
+
# Example usage:
|
8 |
+
# file_contents = load_file_as_string('path/to/your/file.txt')
|
9 |
+
# print(file_contents)
|
10 |
+
|
11 |
+
|
utils/llm.py
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#%%
|
2 |
+
|
3 |
+
from dotenv import load_dotenv
|
4 |
+
|
5 |
+
|
6 |
+
from openai import OpenAI
|
7 |
+
import os
|
8 |
+
|
9 |
+
|
10 |
+
load_dotenv()
|
11 |
+
# Initialize the OpenAI model with strict output
|
12 |
+
|
13 |
+
import os
|
14 |
+
from openai import OpenAI
|
15 |
+
|
16 |
+
client = OpenAI(
|
17 |
+
# This is the default and can be omitted
|
18 |
+
api_key=os.environ.get("OPENAI_API_KEY"),
|
19 |
+
)
|
20 |
+
|
21 |
+
|
22 |
+
def chat(messages):
|
23 |
+
return client.chat.completions.create(
|
24 |
+
model="gpt-4o-mini",
|
25 |
+
messages=messages,
|
26 |
+
temperature=0.45,
|
27 |
+
max_tokens=2117,
|
28 |
+
top_p=0.29,
|
29 |
+
frequency_penalty=0,
|
30 |
+
presence_penalty=0,
|
31 |
+
response_format={
|
32 |
+
"type": "text"
|
33 |
+
}
|
34 |
+
)
|
35 |
+
|
36 |
+
|
37 |
+
# import os
|
38 |
+
|
39 |
+
# from groq import Groq
|
40 |
+
|
41 |
+
# client = Groq(
|
42 |
+
# api_key=os.environ.get("GROQ_API_KEY"),
|
43 |
+
# )
|
44 |
+
|
45 |
+
# chat_completion = client.chat.completions.create(
|
46 |
+
# messages=[
|
47 |
+
# {
|
48 |
+
# "role": "user",
|
49 |
+
# "content": "Explain the importance of fast language models",
|
50 |
+
# }
|
51 |
+
# ],
|
52 |
+
# model="llama-3.1-8b-instant",
|
53 |
+
# )
|
54 |
+
|
55 |
+
# print(chat_completion.choices[0].message.content)
|