<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Documentação Técnica]]></title><description><![CDATA[<h1>Biometric Reader App</h1>
<h2>Visão Geral</h2>
<p dir="auto">O <strong>Biometric Reader App/ (Insoft Sagem Reader)</strong> é uma aplicação desktop desenvolvida em <strong>Electron + React</strong> que trabalha em conjunto com a API local <strong>insoft-sagem-win-api</strong>.</p>
<p dir="auto">O aplicativo é responsável por:</p>
<ul>
<li>Configurar a comunicação com o leitor biométrico;</li>
<li>Monitorar o status da API e do dispositivo;</li>
<li>Capturar digitais;</li>
<li>Iniciar conversões biométricas;</li>
<li>Exibir informações operacionais em tempo real.</li>
</ul>
<blockquote>
<p dir="auto">Importante:</p>
<p dir="auto">O aplicativo não se comunica diretamente com o leitor biométrico.</p>
<p dir="auto">Toda comunicação é realizada através da API local <code>insoft-sagem-win-api</code>.</p>
</blockquote>
<hr />
<h1>Arquitetura</h1>
<pre><code class="language-text">Usuário
    │
    ▼
Biometric Reader App
(Electron + React)
    │
    ▼
insoft-sagem-win-api
    │
    ▼
Leitor Biométrico
</code></pre>
<hr />
<h1>Como Funciona</h1>
<p dir="auto">Ao iniciar, o aplicativo:</p>
<ol>
<li>Carrega as configurações locais;</li>
<li>Verifica se a API está online;</li>
<li>Consulta o status do dispositivo biométrico;</li>
<li>Conecta ao WebSocket para receber atualizações em tempo real;</li>
<li>Disponibiliza as funcionalidades de captura e conversão.</li>
</ol>
<hr />
<h1>Configuração</h1>
<p dir="auto">O arquivo de configuração principal é:</p>
<pre><code class="language-text">config/application.json
</code></pre>
<p dir="auto">Exemplo:</p>
<pre><code class="language-json">{
  "deviceIp": "172.16.110.11",
  "devicePort": 12121,
  "serverIp": "127.0.0.1",
  "serverPort": 8083
}
</code></pre>
<h2>Campos Principais</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>deviceIp</td>
<td>IP do leitor biométrico</td>
</tr>
<tr>
<td>devicePort</td>
<td>Porta do leitor biométrico</td>
</tr>
<tr>
<td>serverIp</td>
<td>Endereço da API local</td>
</tr>
<tr>
<td>serverPort</td>
<td>Porta da API local</td>
</tr>
</tbody>
</table>
<hr />
<h1>Comunicação com a API</h1>
<p dir="auto">A API é acessada através da URL:</p>
<pre><code class="language-text">http://127.0.0.1:8083/insoft-sagem-win-api
</code></pre>
<hr />
<h1>Endpoints Disponíveis</h1>
<h2>Health Check</h2>
<p dir="auto">Verifica se a API está funcionando.</p>
<h3>Requisição</h3>
<pre><code class="language-http">GET /insoft-sagem-win-api/v1/health
</code></pre>
<h3>Resposta Esperada</h3>
<pre><code class="language-json">{
  "name": "insoft-sagem-win-api"
}
</code></pre>
<hr />
<h2>Inicializar Dispositivo</h2>
<p dir="auto">Realiza a conexão com o leitor biométrico.</p>
<h3>Requisição</h3>
<pre><code class="language-http">POST /insoft-sagem-win-api/v1/device/init
</code></pre>
<h3>Body (Opcional)</h3>
<pre><code class="language-json">{
  "deviceIp": "172.16.110.11",
  "devicePort": 12121,
  "secure": false
}
</code></pre>
<h3>Resposta</h3>
<pre><code class="language-json">{
  "success": true
}
</code></pre>
<hr />
<h2>Consultar Status do Dispositivo</h2>
<p dir="auto">Retorna o estado atual do leitor biométrico.</p>
<h3>Requisição</h3>
<pre><code class="language-http">GET /insoft-sagem-win-api/v1/device/status
</code></pre>
<h3>Exemplo de Resposta</h3>
<pre><code class="language-json">{
  "connected": true,
  "initialized": true
}
</code></pre>
<hr />
<h2>Capturar Digital</h2>
<p dir="auto">Solicita uma captura biométrica diretamente no dispositivo.</p>
<h3>Requisição</h3>
<pre><code class="language-http">POST /insoft-sagem-win-api/v1/digital/capturar
</code></pre>
<h3>Body (Opcional)</h3>
<pre><code class="language-json">{
  "personId": 123
}
</code></pre>
<h3>Exemplo de Resposta</h3>
<pre><code class="language-json">{
  "success": true,
  "template": "ABCDEF123456",
  "quality": 87
}
</code></pre>
<h3>Campos Retornados</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>success</td>
<td>Resultado da operação</td>
</tr>
<tr>
<td>template</td>
<td>Template biométrico capturado</td>
</tr>
<tr>
<td>quality</td>
<td>Qualidade da captura</td>
</tr>
</tbody>
</table>
<hr />
<h2>Iniciar Conversão Biométrica</h2>
<p dir="auto">Inicia a conversão de imagens para templates biométricos.</p>
<h3>Requisição</h3>
<pre><code class="language-http">POST /insoft-sagem-win-api/v1/convert/start
</code></pre>
<h3>Body</h3>
<pre><code class="language-json">[
  {
    "personId": 1001,
    "image": "&lt;base64&gt;"
  },
  {
    "personId": 1002,
    "image": "&lt;base64&gt;"
  }
]
</code></pre>
<h3>Campos</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td>personId</td>
<td>Identificador da pessoa</td>
</tr>
<tr>
<td>image</td>
<td>Imagem biométrica em Base64</td>
</tr>
</tbody>
</table>
<h3>Resposta</h3>
<pre><code class="language-json">{
  "success": true,
  "message": "Conversão iniciada"
}
</code></pre>
<blockquote>
<p dir="auto">A conversão ocorre em segundo plano.</p>
<p dir="auto">O progresso é enviado através do WebSocket.</p>
</blockquote>
<hr />
<h1>Comunicação em Tempo Real</h1>
<p dir="auto">O aplicativo utiliza WebSocket para receber atualizações da API.</p>
<h3>URL</h3>
<pre><code class="language-text">ws://localhost:5000/ws
</code></pre>
<hr />
<h2>Evento de Status</h2>
<p dir="auto">Atualiza as informações do dashboard.</p>
<h3>Exemplo</h3>
<pre><code class="language-json">{
  "event": "dashboard:getStatus",
  "data": {
    "errorCount": 0,
    "peopleCount": 10,
    "convertedCount": 8
  }
}
</code></pre>
<hr />
<h2>Evento de Início de Conversão</h2>
<p dir="auto">Indica que uma conversão foi iniciada.</p>
<h3>Exemplo</h3>
<pre><code class="language-json">{
  "event": "api:convert:start",
  "data": {
    "count": 10
  }
}
</code></pre>
<hr />
<h2>Evento de Atualização de Item</h2>
<p dir="auto">Atualiza o resultado de um item durante a conversão.</p>
<h3>Exemplo</h3>
<pre><code class="language-json">{
  "event": "api:convert:item",
  "data": {
    "personId": 1001,
    "status": "success"
  }
}
</code></pre>
<hr />
<h2>Evento de Finalização</h2>
<p dir="auto">Indica que o processo de conversão foi concluído.</p>
<h3>Exemplo</h3>
<pre><code class="language-json">{
  "event": "api:convert:done",
  "data": {
    "results": []
  }
}
</code></pre>
<hr />
<h1>Fluxo de Operação</h1>
<h2>Captura Biométrica</h2>
<pre><code class="language-text">Usuário
    │
    ▼
Aplicativo
    │
    ▼
POST /digital/capturar
    │
    ▼
API
    │
    ▼
Leitor Biométrico
    │
    ▼
Template Biométrico
</code></pre>
<hr />
<h2>Conversão Biométrica</h2>
<pre><code class="language-text">Usuário
    │
    ▼
Aplicativo
    │
    ▼
POST /convert/start
    │
    ▼
API
    │
    ▼
Processamento
    │
    ▼
WebSocket
    │
    ▼
Atualização da Interface
</code></pre>
<hr />
<h1>Requisitos</h1>
<p dir="auto">Antes de utilizar o sistema, certifique-se de que:</p>
<ul>
<li>A API está em execução;</li>
<li>O leitor biométrico está conectado;</li>
<li>O IP e a porta do dispositivo estão corretos;</li>
<li>O WebSocket está acessível;</li>
<li>O driver do dispositivo está instalado.</li>
</ul>
<hr />
<h1>Resumo</h1>
<p dir="auto">O Biometric Reader App é a interface responsável por operar o leitor biométrico através da API local.</p>
<p dir="auto">As principais funcionalidades são:</p>
<ul>
<li>Inicializar o dispositivo biométrico;</li>
<li>Consultar o status do equipamento;</li>
<li>Capturar digitais;</li>
<li>Executar conversões biométricas;</li>
<li>Exibir atualizações em tempo real através de WebSocket.</li>
</ul>
<p dir="auto">Toda comunicação com o dispositivo é realizada pela API <code>insoft-sagem-win-api</code>.</p>
]]></description><link>http://insoft-docker1:4567/topic/522/documentação-técnica</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 07:10:52 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/522.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jun 2026 19:14:00 GMT</pubDate><ttl>60</ttl></channel></rss>