CENTRO DE APOIO OPERACIONAL

Sistema Pandora é implantado no MPPE para auxiliar investigações criminais e defesa do patrimônio público


 

 

25/03/2024 - O Ministério Público de Pernambuco começou a contar, desde sexta-feira (22/03), com o Sistema Integrado de Pesquisa Pandora, que reúne informações de pessoas físicas e jurídicas extraídas de diferentes bancos de dados oficiais do país. A ferramenta, com tecnologia e metodologia de ponta, foi desenvolvida pelo Núcleo de Gestão do Conhecimento do Ministério Público da Paraíba (NGC/MPPB), tem uso por 22 representações de MP no país e foi adaptada às necessidades dos Promotores e Procuradores de Justiça de Pernambuco, para auxiliar na investigação criminal e controle da gestão pública.

“Essa tecnologia dará maior agilidade e precisão aos membros do MPPE e assessores nas investigações e procedimentos relacionados, facilitando a obtenção, comparação e troca de informações em diferentes atividades”, explica o Procurador-Geral de Justiça, Marcos Carvalho. Na apresentação da ferramenta para membros e servidores, na tarde de sexta-feira, em evento virtual, ele lembrou que a “a inovação se consolida quando pode ser aplicada” e listou diferentes investimentos em tecnologia que estão sendo feitos no MPPE.

O Sistema Pandora, explicou o PGJ, facilitará análises, auditoria, exame e instrução de processos e procedimentos em matérias que envolvam a proteção do patrimônio público e o combate ao crime. A ferramenta ajudará no levantamento de informações de inteligência, análise de documentação, como também na troca de informações entre Ministérios Públicos, evitando duplicidade de esforços em investigações conjuntas.

O acordo de cooperação para uso do Pandora foi assinado em setembro de 2023 entre os Ministérios Públicos de Pernambuco e da Paraíba. Não prevê transferência de recursos financeiros e os ônus decorrentes de ações desenvolvidas são de responsabilidade de cada um dos acordantes.

No evento virtual, com os coordenadores dos Centros de Apoio Operacional de Defesa do Patrimônio Público e Criminal, Promotores Hodir Flávio de Melo e Antônio Augusto de Arroxelas, respectivamente, outros membros e servidores, o coordenador do Grupo de Atuação Especial contra o Crime Organizado (GAECO) da Paraíba, Promotor de Justiça Octávio Paulo Neto, ministrou palestra, explicando a funcionalidade do Pandora. Ele agradeceu as parcerias e destacou o aperfeiçoamento do sistema a partir do uso por diferentes instituições.

INTELIGÊNCIA E FUNCIONALIDADE - “Pandora possibilita a consolidação e o cruzamento de grandes volumes de informações provenientes de diversas bases de dados”, explica o Promotor de Justiça Luiz Guilherme Lapenda, do Núcleo de Apoio à Gestão de Tecnologia e Inovação (NTI) do MPPE, lembrando que há emprego de tecnologias de análise em larga escala e uso de inteligência artificial. Entre os bancos de dados cruzados estão os do Governo Federal, Tribunais de Justiça e de Contas. 

O acesso ao sistema Pandora foi disponibilizado para o MPPE, pela internet, por intermédio da infraestrutura do MPPB e pode ser acessado pelos membros e assessores técnicos a partir dos computadores da instituição. Além da consulta aos dados, são gerados relatórios em formato PDF.

Procuradores e promotores do MPPE terão autonomia para liberar acessos da sua equipe de apoio ao Pandora. Ao mesmo tempo, poderão supervisionar as pesquisas, consultar o que está sendo buscado, por quem e quando. Para isso, foi desenvolvida a funcionalidade de auditoria.

Segundo Luiz Guilherme Lapenda, um levantamento do Núcleo de Gestão do Conhecimento do Ministério Público da Paraíba (NGC), feito em agosto de 2023, mostrou que, além dos membros do MPPB, integrantes de mais de 70 órgãos públicos espalhados por todo o Brasil usam o Pandora. Desde o início do uso, mais de 937 mil pesquisas foram realizadas na base de dados da ferramenta por mais de 928 usuários. 

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> fieldName.getValue().getString(locale)  [in template "20097#20123#687741" at line 123, column 60]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign dataNoticia = fieldName.getVa...  [in template "20097#20123#687741" at line 123, column 37]
----
1<style> 
2	 
3	  .noticias-recentes{ 
4	    background-color: #e5e5e5; 
5      padding: 16px 5px; 
6			margin:0px 10px; 
7			border-radius:5px; 
8
9	 
10		.noticias-recentes .tag-noticias{ 
11		 color:#7d1f0d; 
12		 text-transform:uppercase; 
13		font-weight:900; 
14		} 	 
15	.noticias-recentes .tag-noticias hr{ 
16		 width:60%; 
17		 margin-top:-3px; 
18		 border:solid #FF2F2F 2px; 
19		} 	 
20		.noticias-recentes .logo{ 
21		  width: 100%; 
22		  border-radius: 8px; 
23			height: 100px; 
24      background-position: center; 
25      background-repeat: no-repeat; 
26      background-size: cover; 
27
28		.noticias-recentes .noticia{ 
29		  position: relative; 
30			padding: 10px; 
31
32	 
33	.noticias-recentes .noticia:hover{ 
34		  position: relative; 
35			background: #fff; 
36      border-radius: 8px; 
37      scale: 1.02; 
38	    padding: 15px; 
39		  cursor:pointer; 
40		  transition: all ease-in 0.3s; 
41
42	.noticias-recentes .noticia .data-noticia{ 
43		color:#FF2F2F; 
44		font-size:20px; 
45		text-align:left !important; 
46
47	 
48	.noticias-recentes .noticia .title-desc .title{ 
49		  display: -webkit-box; 
50      margin: 0 auto; 
51      line-height: 1.4; 
52      -webkit-line-clamp: 4; 
53      -webkit-box-orient: vertical; 
54      overflow: hidden; 
55			text-overflow: ellipsis; 
56		  color:#474747; 
57		  font-weight: bold !important; 
58		font-size:20px; 
59
60	 
61	.noticias-recentes .description * { 
62    font-weight: 300 !important; 
63		background: transparent!important; 
64		font-size: initial!important; 
65		opacity:0.5; 
66		 display: -webkit-box; 
67      margin: 0 auto; 
68      line-height: 1.4; 
69      -webkit-line-clamp: 4; 
70      -webkit-box-orient: vertical; 
71      overflow: hidden; 
72			text-overflow: ellipsis; 
73		font-size:20px; 
74
75		.noticias-recentes .description p:first-child { 
76      display: -webkit-box; 
77      margin: 0 auto; 
78      line-height: 1.4; 
79      -webkit-line-clamp: 3; 
80      -webkit-box-orient: vertical; 
81      overflow: hidden; 
82			text-overflow: ellipsis; 
83			text-align: start !important; 
84			font-weight:900 !important; 
85
86		 
87		.noticias-recentes .description *:not(:first-child){ 
88		  display: none; 
89
90		 
91	</style> 
92 
93<#assign dlService=serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
94    <#assign 
95        ddmFieldLocalService=serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService") /> 
96 
97    <div class="noticias-recentes container"> 
98        <#if entries?has_content> 
99					<div class="tag-noticias pt-3 pb-2 pl-2"> 
100					<h4 class="font-weight-bold pl-2"> Mais Notícias </h4> 
101					<hr> 
102					</div> 
103					 
104                <#list entries as curEntry> 
105                        <#if curEntry.getClassName()=="com.liferay.journal.model.JournalArticle"> 
106                            <#assign assetRenderer=curEntry.getAssetRenderer() /> 
107                            <#assign journalArticle=assetRenderer.getAssetObject() /> 
108                            <#assign ddmStructure=journalArticle.getDDMStructure() /> 
109                            <#assign ddmForm=ddmStructure.getDDMForm() /> 
110                            <#assign ddmFormValues=ddmFieldLocalService.getDDMFormValues(ddmForm, journalArticle.getId()) /> 
111                            <#assign ddmFormFieldValues=ddmFormValues.getDDMFormFieldValues() /> 
112                            <#assign imageURL="/documents/" + curEntry.getGroupId() + "/" + curEntry.getEntryId() + "/" /> 
113                            <#assign titulo = "" /> 
114                            <#assign desc = "" /> 
115														<#assign jsonObj = "" /> 
116														<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
117														<#if assetLinkBehavior != "showFullContent" && assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL)??> 
118																<#assign viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
119														</#if> 
120													 
121                            <#list ddmFormFieldValues as fieldName>     
122                                <#if fieldName.getFieldReference()=='data'> 
123                                    <#assign dataNoticia = fieldName.getValue().getString(locale) />  
124																</#if> 
125																<#if fieldName.getFieldReference() == 'descricao'> 
126																	<#assign desc = fieldName.getValue().getString(locale) /> 
127																</#if> 
128                            </#list> 
129													<div class="noticia d-flex align-items-center flex-column mt-3 "> 
130														<a class="stretched-link" href="${viewURL}"></a> 
131														<p class="data-noticia w-100 d-block"> 
132															${dataNoticia?split("-")?reverse?join("/")} 
133														</p> 
134														<div class="title-desc">  
135															<h6 class="title">${curEntry.getTitle(locale)}</h6> 
136														  <div class="description mt-3"> ${desc}</div> 
137														</div> 
138													</div> 
139													<hr class="mt-2 mb-2"> 
140                        </#if> 
141                </#list> 
142            </div> 
143        </#if> 
144    </div>