{% extends 'base.html' %} {% block title %}CapeSync - Dashboard{% endblock %} {% block content %} {% set comanda_status = comanda_digital_status|default({ 'total_lojas': 0, 'grupo_habilitado': false, 'ligadas': 0, 'desligadas': 0, 'grupo_sync_id': None }, true) %}

CapeSync Dashboard

Monitoramento e diagnóstico da sincronização em nuvem

Configurar
{% if config_status.sync_ativo %}
{% else %}
{% endif %}
Status

{{ 'Ativo' if config_status.sync_ativo else 'Inativo' }}

Pendentes

{{ fila_stats.pendente }}

Sincronizados

{{ fila_stats.sincronizado }}

Erros

{{ fila_stats.erro }}

Configuração
Servidor: {{ config_status.sync_url or 'Não configurado' }}
Loja ID: {{ config_status.sync_loja_id or 'Não configurado' }}
API Key: {{ config_status.sync_api_key }}
Intervalo: {{ config_status.sync_intervalo }} minuto(s)
Última sincronização: {{ config_status.sync_ultimo.strftime('%d/%m/%Y %H:%M:%S') if config_status.sync_ultimo else 'Nunca' }}
Comanda Digital: {% if comanda_status.total_lojas > 0 %} Grupo {{ 'AUTORIZADO' if comanda_status.grupo_habilitado else 'BLOQUEADO' }} ON {{ comanda_status.ligadas }} OFF {{ comanda_status.desligadas }} (grupo {{ comanda_status.grupo_sync_id or 'local' }}) {% else %} Sem dados {% endif %}
Conexão
{{ 'Conectado' if conexao_ok else 'Erro' }}
{{ conexao_msg }}
Ações Rápidas
Monitor Nativo Global (todas as empresas)
Atualizado: {{ monitor_global.atualizado_em.strftime('%d/%m/%Y %H:%M:%S') if monitor_global and monitor_global.atualizado_em else '-' }}
Empresas {{ monitor_global.totais.empresas if monitor_global else 0 }}
Sincronização ativa {{ monitor_global.totais.empresas_sync_ativo if monitor_global else 0 }}
Pendentes {{ monitor_global.totais.pendentes if monitor_global else 0 }}
Processando {{ monitor_global.totais.processando if monitor_global else 0 }}
Erros {{ monitor_global.totais.erros if monitor_global else 0 }}
Abertos {{ monitor_global.totais.abertos if monitor_global else 0 }}
{% if monitor_global and monitor_global.alertas %} {% for alerta in monitor_global.alertas[:4] %}
{{ alerta }}
{% endfor %} {% else %}
Sem alertas globais no momento.
{% endif %}
{% set qtd_sem_sync = monitor_global.integridade.pessoas_sem_sync_id if monitor_global and monitor_global.integridade else 0 %} {% if qtd_sem_sync > 0 %}
Integridade: {{ qtd_sem_sync }} pessoa(s) local(is) sem sync_id. Isso pode causar divergência visual entre lojas.
{% if monitor_global.integridade.amostras_pessoas_sem_sync_id %}
Exemplos: {% for p in monitor_global.integridade.amostras_pessoas_sem_sync_id %} #{{ p.id }}{% if p.codigo %} · cód {{ p.codigo }}{% endif %}{% if p.nome %} · {{ p.nome }}{% endif %} {% endfor %}
{% endif %} {% else %}
Integridade OK: não há pessoas locais sem sync_id.
{% endif %}
{% if monitor_global and monitor_global.empresas %} {% for item in monitor_global.empresas %} {% endfor %} {% else %} {% endif %}
Empresa Status Pend. Proc. Erro Sincr. Abertos Mais antigo Últ. sincronização
#{{ item.empresa_id }} {{ item.empresa_nome }} {{ 'Ativo' if item.sync_ativo else 'Inativo' }} {{ item.pendente }} {{ item.processando }} {{ item.erro }} {{ item.sincronizado }} {{ item.abertos }} {% if item.mais_antigo_aberto %} {{ item.mais_antigo_aberto.strftime('%d/%m %H:%M') }} {{ item.idade_aberto_min }} min {% else %} - {% endif %} {{ item.sync_ultimo.strftime('%d/%m %H:%M:%S') if item.sync_ultimo else '-' }}
Nenhuma empresa encontrada para monitor global.
Últimos Registros na Fila
{% for reg in ultimos_registros %} {% else %} {% endfor %}
ID Tabela Registro Operação Status Criado Processado Tentativas
{{ reg.id }} {{ reg.tabela }} {{ reg.registro_id }} {% if reg.operacao == 'INSERT' %} INSERT {% elif reg.operacao == 'UPDATE' %} UPDATE {% elif reg.operacao == 'DELETE' %} DELETE {% else %} {{ reg.operacao }} {% endif %} {% if reg.status == 'PENDENTE' %} Pendente {% elif reg.status == 'SINCRONIZADO' %} OK {% elif reg.status == 'ERRO' %} Erro {% else %} {{ reg.status }} {% endif %} {{ reg.criado_em.strftime('%d/%m %H:%M') if reg.criado_em else '-' }} {{ reg.processado_em.strftime('%d/%m %H:%M') if reg.processado_em else '-' }} {{ reg.tentativas or 0 }}
Nenhum registro na fila
{% if registros_erro %}
Registros com Erro ({{ registros_erro|length }})
{% for reg in registros_erro %} {% endfor %}
Tabela Registro Operação Tentativas Erro
{{ reg.tabela }} {{ reg.registro_id }} {{ reg.operacao }} {{ reg.tentativas or 0 }} {{ reg.ultimo_erro|truncate(80) if reg.ultimo_erro else '-' }}
{% endif %}
{% endblock %} {% block scripts %} {% endblock %}