{% extends "_base.html" %} {#- Contrato assinado + trilha de auditoria (§5.10) — TMFP-59338, migrado do reportlab em TMFP-68796. Os textos chegam prontos de ``services/contract_signed_pdf.py``; autoescape ligado: título/nome/IP/UA/motivo de usuário saem literais (TMFP-67411). -#} {% block title %}{{ titulo_documento }}{% endblock %} {% block margem %}15mm{% endblock %} {% block css %} h1 { font-size: 14pt; font-weight: bold; margin-bottom: 2mm; } h3 { font-size: 11pt; font-weight: bold; font-style: italic; margin: 4mm 0 1mm 0; } .sub { font-size: 9pt; color: #808080; } .corpo { font-size: 9.5pt; line-height: 13pt; overflow-wrap: anywhere; } .nota { font-size: 9pt; color: #808080; font-style: italic; } table { width: 171mm; margin: 0 auto; border-collapse: collapse; table-layout: fixed; font-size: 7.5pt; line-height: 9pt; } th { background: #1f2937; color: #fff; font-weight: bold; text-align: left; } th, td { border: 0.4pt solid #d1d5db; padding: 2.5pt 3pt; vertical-align: top; overflow-wrap: anywhere; } tbody tr:nth-child(even) td { background: #f3f4f6; } thead { display: table-header-group; } tr { page-break-inside: avoid; } {% endblock %} {% block corpo %}

Contrato assinado

{{ subtitulo }}

Resumo do contrato

{% for rotulo, valor in resumo %}

{{ rotulo }} {{ valor }}

{% endfor %}

Trilha de auditoria da assinatura eletrônica

Registro da origem e integridade de cada ato de assinatura eletrônica deste contrato (IP, user-agent e hashes SHA-256 do documento).

{% if not assinaturas %}

Nenhuma assinatura registrada.

{% else %} {% for a in assinaturas %} {% endfor %}
SignatárioStatusAssinado emIPUser-Agentdocument_hashsigned_document_hash
{{ a.nome }}{% if a.email %}
{{ a.email }}{% endif %}
{{ a.status }}{{ a.assinado_em }}{{ a.ip }} {{ a.user_agent }}{{ a.document_hash }}{{ a.signed_document_hash }}
{% endif %} {% if versoes %}

Histórico de transições do contrato

{% for v in versoes %} {% endfor %}
VersãoDeParaMotivoEm
{{ v.numero }}{{ v.de }}{{ v.para }}{{ v.motivo }}{{ v.em }}
{% endif %} {% endblock %}