Infraestrutura de Alertas¶
Implementa uma infraestrutura simplificada para checagem de alertas baseados nas informações do status operacional do equipamanto SAT. O objetivo é alertar o operador sobre situações potencialmente problemáticas a fim de que ele tome providências a respeito. Esta infraestrutura permite que os problemas sejam identificados de forma robusta, isolada e extensível. Assim, é possível que com uma única consulta ao status operacional, um número variado de problemas possam ser detectados e explanados com detalhes para o operador do sistema.
Cada alerta é implementado como uma subclasse de
AlertaOperacao
que sobrescreve os métodos
checar()
e
mensagem()
, responsáveis por identificar se
o alerta está ativo ou não e em contruir uma mensagem que descreva o status
daquele alerta da forma mais clara e detalhada possível, respectivamente.
A intenção é que a checagem dos alertas seja feita de forma automática, quando o
sistema (ponto-de-venda) for iniciado, no intuito de que o operador possa
resolver a tempo os alertas ativos. Para realizar uma checagem de alertas, basta
invocar a função checar()
, passando como parâmetro uma
instância de um cliente SAT (ClienteSATLocal
ou
ClienteSATHub
):
sat = ClienteSATHub('10.0.0.200', port=5000)
alertas = checar(sat)
if alertas:
# existem alertas ativos...
faz_algo_a_respeito()
Este módulo fornece os seguintes alertas:
- Documentos Pendentes Detecta a existência de um ou mais CF-e-SAT
pendentes de transmissão para a SEFAZ. Fornecido pela classe
AlertaCFePendentes
. - Vencimento do Certificado Detecta se o vencimento do certificado
instalado no equipamento SAT está se aproximando (ou se já venceu). Fornecido
pela classe
AlertaVencimentoCertificado
. - Divergência de Horários Detecta se a diferença entre o horário do sistema
e do equipamento SAT é superior ao tolerado. Fornecido pela classe
AlertaDivergenciaHorarios
.
É fácil implementar outros alertas se necessário, bastando implementar uma
subclasse de AlertaOperacao
e registrando a classe
através da função registrar()
:
from satcfe.alertas import AlertaOperacao
from satcfe.alertas import registrar
class OutroAlerta(AlertaOperacao):
def checar(self):
if condicao:
self._ativo = True
return self._ativo
def mensagem(self):
if self._ativo:
return 'Este alerta está ativo por uma razão.'
return 'Este alerta não está ativo.'
registrar(OutroAlerta)
Se você desenvolver algum alerta, considere compartilhar a sua implementação. Caso você note que algum equipamento tenha resultado informações inesperadas, fazendo com que algum alerta não funcione conforme o esperado, avise-nos, preenchendo um relatório do problema.
Veja também a documentação da API da Infraestrutura de Alertas.