{% extends "base.html" %} {% block title %}Ficha do Funcionário{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
{% if funcionario.foto_base64 %} {% set foto_funcionario = funcionario.foto_base64 if (funcionario.foto_base64 or '').startswith('data:image') else 'data:image/jpeg;base64,' ~ (funcionario.foto_base64 or '') %} Foto de {{ funcionario.nome }} {% else %}
{% endif %}

{{ funcionario.nome }}

{{ funcionario._dashboard_status_label }}

{{ funcionario._dashboard_status_motivo }}

CPF: {{ funcionario.cpf or '-' }} Cargo: {{ funcionario.cargo or '-' }} Depto: {{ funcionario.departamento or '-' }}
Status de hoje
{{ funcionario._dashboard_status_label }}
{{ funcionario._dashboard_status_motivo }}
{% if funcionario._dashboard_ultima_batida_hora %}
Última batida: {{ funcionario._dashboard_ultima_batida_hora }}
{% endif %}
Local de trabalho
{{ funcionario._dashboard_local_trabalho or 'Não informado' }}
{{ funcionario.endereco_trabalho_formatado or 'Endereço não informado.' }}
Escala / contrato
{{ escala_nome or 'Escala não vinculada' }}
{{ funcionario.tipo_contrato or 'contrato não informado' }} • {{ funcionario.regime_jornada or 'jornada não informada' }}
Banco de horas
{{ banco_horas_saldo_formatado or '00:00' }}
Saldo atual do vínculo RH.
Referência bruta: {{ funcionario.banco_horas_saldo_minutos or 0 }} min

Pendências operacionais

Atalhos rápidos para o RH atuar nas filas desse colaborador.

Total operacional: {{ resumo_pendencias.total_operacional or 0 }}
Fila de aprovações RH: {{ resumo_pendencias.total_aprovacoes_rh or 0 }}
Notificações críticas: {{ resumo_notificacoes_funcionario.total_criticas_pendentes or 0 }}

Notificações internas recentes

Alertas mais novos ligados a este colaborador no RH/Ponto.

Abrir fila completa
{% for item in notificacoes_recentes %}
{{ item.titulo or 'Notificação interna RH' }} {{ item.nivel or 'alerta' }}
{{ item.data_evento.strftime('%d/%m/%Y %H:%M') if item.data_evento else '-' }} • {{ item.origem or 'rh_ponto' }}
{{ item.mensagem or '-' }}
{% else %}
Nenhuma notificação pendente para este colaborador.
{% endfor %}

Jornada e inconsistências do dia

Leitura rápida da operação de hoje e do impacto no espelho da competência atual.

Abrir espelho
Previsto {{ resumo_jornada_hoje.previsto_label }}
Trabalhado {{ resumo_jornada_hoje.trabalhado_label }}
Saldo do dia {{ resumo_jornada_hoje.saldo_label }}
Atraso {{ resumo_jornada_hoje.atraso_label }}
Registros do dia: {{ resumo_jornada_hoje.qtd_registros or 0 }}
Status operacional: {% if resumo_jornada_hoje.inconsistente %} Inconsistente {% elif resumo_jornada_hoje.falta %} Falta {% elif resumo_jornada_hoje.tem_intervencao_rh %} Intervenção RH {% elif resumo_jornada_hoje.tem_justificativa %} Justificado {% else %} Monitorado {% endif %}
Fora do perímetro hoje: {{ resumo_jornada_hoje.fora_perimetro_qtd or 0 }}
Alertas do gestor hoje: {{ resumo_jornada_hoje.alertas_qtd or 0 }}
Inconsistências na competência {{ competencia_atual }}: {{ resumo_jornada_hoje.total_inconsistencias_competencia or 0 }}
Faltas na competência {{ competencia_atual }}: {{ resumo_jornada_hoje.total_faltas_competencia or 0 }}
Saldo acumulado da competência: {{ resumo_jornada_hoje.total_saldo_competencia_label }}
Atrasos acumulados da competência: {{ resumo_jornada_hoje.total_atraso_competencia_label }}

Ações rápidas do dia

Atalhos para tratar hoje o que mais costuma travar a operação do colaborador.

Identificação e vínculo

Dados principais do colaborador e atalhos para outras rotinas.

ID funcional: {{ funcionario.id_funcional or '-' }}
Matrícula: {{ funcionario.matricula or '-' }}
Código de batida: {{ funcionario.codigo_batida or '-' }}
Empresa: {{ empresa.nome_fantasia or empresa.razao_social or empresa.nome }}
PIS: {{ funcionario.pis or '-' }}
Data de admissão: {{ funcionario.data_admissao.strftime('%d/%m/%Y') if funcionario.data_admissao else '-' }}

Acessos e permissões

Leitura rápida dos principais acessos ligados ao colaborador.

Sistema Ponto App funcionário App empresa Controle de dispositivo
Permite atestado: {{ 'Sim' if funcionario.permitir_anexo_atestado else 'Não' }}
Permite comparecimento: {{ 'Sim' if funcionario.permitir_anexo_comparecimento else 'Não' }}
Origem da batida: {{ funcionario.origem_batida_permitida or 'ambos' }}
Dispositivo vinculado: {{ funcionario.dispositivo_descricao_autorizado or funcionario.dispositivo_uuid_autorizado or 'Nenhum' }}

Registros de hoje

Batidas ativas do dia atual.

{% for registro in registros_hoje %}
{{ registro.tipo|replace('_', ' ')|title }}
{{ registro.data_hora.strftime('%d/%m/%Y %H:%M') if registro.data_hora else '-' }} • {{ registro.origem or '-' }}
{% else %}
Nenhuma batida ativa hoje.
{% endfor %}

Solicitações recentes

Férias, folga, registro retroativo e demais pedidos.

{% for item in solicitacoes_recentes %}
{{ item._tipo_label or item.tipo|replace('_', ' ')|title }} {{ item.status|title }}
{{ item.data_solicitacao.strftime('%d/%m/%Y %H:%M') if item.data_solicitacao else '-' }}
{{ item.motivo or '-' }}
{% if item.status == 'pendente' %}
{% endif %}
{% else %}
Sem solicitações recentes.
{% endfor %}

Atestados recentes

Documentos vinculados ao colaborador.

{% for item in atestados_recentes %}
{{ item.nome_arquivo or ('Atestado #' ~ item.id) }} {{ (item.status or 'recebido')|title }}
{{ item.data_criacao.strftime('%d/%m/%Y %H:%M') if item.data_criacao else '-' }}
{% if item.data_inicio_abono or item.data_fim_abono %}
Período: {{ item.data_inicio_abono.strftime('%d/%m/%Y') if item.data_inicio_abono else '-' }}{% if item.data_fim_abono %} até {{ item.data_fim_abono.strftime('%d/%m/%Y') }}{% endif %}
{% endif %} {% if item.solicitacao_id and item.solicitacao_status == 'pendente' %}
{% elif item.status in ['pendente', 'recebido'] %}
{% endif %}
{% else %}
Sem atestados recentes.
{% endfor %}

Últimos registros lançados

Histórico mais recente para conferência rápida.

{% for registro in ultimos_registros %} {% else %} {% endfor %}
Data / hora Tipo Origem Status
{{ registro.data_hora.strftime('%d/%m/%Y %H:%M') if registro.data_hora else '-' }} {{ registro.tipo|replace('_', ' ')|title }} {{ registro.origem or '-' }} {{ registro.status_registro or 'ativo' }}
Sem registros para exibir.
{% endblock %}