Relacionamento Digitalcom o Cidadão
Parte X — Anexos Técnicos
Parte X — Anexos TécnicosCapítulo 73

Capítulo 73 — Dicionário de Dados

Este capítulo apresenta o Dicionário de Dados da Plataforma de Relacionamento Digital com o Cidadão — catálogo formal que descreve, para cada domínio de persistência, as entidades relevantes, seus atributos, tipos de dad…

73.1 Objetivo do Capítulo

Este capítulo apresenta o Dicionário de Dados da Plataforma de Relacionamento Digital com o Cidadão — catálogo formal que descreve, para cada domínio de persistência, as entidades relevantes, seus atributos, tipos de dados, restrições, semântica de negócio e referências cruzadas.

O Dicionário de Dados é o contrato entre arquitetura, desenvolvimento, qualidade e governança de dados. Ele responde às perguntas: o que é este campo, qual seu tipo, quem o produz, quem o consome, qual sua política de retenção e o que acontece quando ele contém dados pessoais.

O conjunto de entidades documentado aqui cobre os 24 serviços de domínio identificados na arquitetura de microsserviços (Capítulo 12). Para cada domínio são apresentadas as entidades centrais com seus atributos principais. Atributos auxiliares de infraestrutura — como version de optimistic locking, deleted_at de soft delete e hash_value de cadeia de auditoria — são descritos uma vez na seção de padrões transversais e não repetidos em cada entidade.


73.2 Convenções e Padrões Transversais

73.2.1 Identificadores

Toda entidade persistida na plataforma utiliza identificadores do tipo UUID v4 gerado no backend. A escolha é justificada por: ausência de colisão entre instâncias, opacidade (não revela ordem ou volume de registros), portabilidade entre serviços e alinhamento com o padrão JPA.

id   UUID   NOT NULL   PRIMARY KEY   Gerado pelo serviço no momento da criação

Identificadores nunca são reutilizados. Entidades excluídas logicamente preservam o id indefinidamente.

73.2.2 Isolamento Multi-Tenant

Toda tabela que contém dados de negócio de um órgão inclui obrigatoriamente a coluna tenant_id. Essa coluna é NOT NULL, imutável após criação e indexada como primeira coluna em todos os índices compostos.

tenant_id   UUID   NOT NULL   Identifica o tenant proprietário do registro.
                               Valor derivado do Tenant Context validado na
                               autenticação. Nunca aceito como parâmetro
                               de cliente sem validação pelo contexto.

73.2.3 Atributos de Ciclo de Vida

Todos os registros de negócio possuem os seguintes campos de controle de ciclo de vida:

ColunaTipoRestriçãoSemântica
created_atTIMESTAMP WITH TIME ZONENOT NULL, DEFAULT NOW()Momento da criação do registro. Imutável.
updated_atTIMESTAMP WITH TIME ZONENOT NULLMomento da última modificação. Atualizado automaticamente por trigger.
deleted_atTIMESTAMP WITH TIME ZONENULLABLEPreenchido na exclusão lógica. Registros com valor não nulo são filtrados por @Where do Hibernate. Nunca excluídos fisicamente exceto por processo de purga LGPD.
versionBIGINTNOT NULL, DEFAULT 0Controle de concorrência optimista. Incrementado em cada UPDATE. Falha em conflito com OptimisticLockingFailureException.

73.2.4 Dados Pessoais (PII)

Atributos que contenham dados pessoais são marcados na coluna PII das tabelas deste capítulo com os símbolos:

  • — dado pessoal direto (nome, CPF, e-mail, telefone, endereço)
  • — dado pessoal indireto ou pseudonimizado (identificador de sessão, endereço IP, identificador interno)
  • — dado não pessoal ou completamente anonimizado

Dados pessoais diretos não são gravados em logs, caches ou índices de busca sem controle explícito de minimização.

73.2.5 Política de Retenção

Cada entidade possui política de retenção indicada como:

  • Operacional — mantido enquanto o tenant estiver ativo; purgado conforme LGPD no offboarding
  • Legal mínimo — mantido por prazo mínimo exigido por legislação mesmo após offboarding
  • Imutável — nunca excluído; eventos de auditoria e trilhas de rastreabilidade
  • Configurável — prazo definido pelo tenant dentro de limites contratuais

73.3 Domínio 1 — Tenant e Configuração Institucional

Serviço responsável: Identity/Tenant Service
Banco: tenant-service (schema tenant)

73.3.1 Entidade tenants

Registro mestre de cada organização pública participante da plataforma.

ColunaTipoRestriçãoPIISemântica
idUUIDPK, NOT NULLIdentificador único e imutável do tenant.
nameVARCHAR(255)NOT NULLNome oficial do órgão ou entidade pública.
slugVARCHAR(100)NOT NULL, UNIQUEIdentificador textual para uso em URLs e prefixos. Ex: seinfra, segplag. Imutável após ativação.
cnpjVARCHAR(14)NOT NULL, UNIQUECNPJ da entidade pública. Armazenado sem formatação.
statusVARCHAR(50)NOT NULLEstados: PROVISIONING, ACTIVE, SUSPENDED, DELETED.
plan_typeVARCHAR(50)NOT NULLTipo de contrato: STANDARD, PREMIUM, ENTERPRISE.
domain_urlVARCHAR(255)NULLABLEURL do portal do tenant. Ex: educacao.cidadao.mg.gov.br.
logo_urlVARCHAR(512)NULLABLEURL do logotipo do órgão no Object Storage.
primary_colorVARCHAR(7)NULLABLECor primária da identidade visual em formato hexadecimal.
contact_emailVARCHAR(255)NOT NULLE-mail institucional de contato técnico-administrativo.
activated_atTIMESTAMP WITH TIME ZONENULLABLEMomento em que o tenant foi ativado pela primeira vez.
suspended_atTIMESTAMP WITH TIME ZONENULLABLEMomento da suspensão, quando aplicável.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão transversal 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão transversal 73.2.3.

Retenção: Legal mínimo.
Índices: idx_tenants_slug (slug), idx_tenants_status (status).


73.3.2 Entidade tenant_configurations

Parâmetros operacionais do tenant: módulos habilitados, políticas de sessão, integrações ativas e personalizações.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da configuração.
tenant_idUUIDNOT NULL, FK → tenantsTenant ao qual a configuração pertence.
config_keyVARCHAR(200)NOT NULLChave da configuração. Ex: session.timeout_minutes, modules.scheduling.enabled.
config_valueTEXTNOT NULLValor serializado. Booleanos como true/false; numéricos como string decimal; listas como JSON.
config_typeVARCHAR(50)NOT NULLTipo do valor: BOOLEAN, INTEGER, STRING, JSON.
descriptionVARCHAR(500)NULLABLEDescrição legível da configuração para uso no painel administrativo.
is_secretBOOLEANNOT NULL, DEFAULT FALSEQuando true, o valor não é exibido em interfaces de administração nem em logs.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Restrições: UNIQUE (tenant_id, config_key).
Retenção: Operacional.


73.4 Domínio 2 — Identidade e Acesso

Serviço responsável: Identity Service
Banco: identity-service (schema identity)

73.4.1 Entidade users

Registro de usuários da plataforma — cidadãos, servidores públicos e administradores.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador técnico imutável.
tenant_idUUIDNOT NULL, FK → tenantsTenant de vínculo primário. Cidadãos podem ter vínculos secundários via user_tenant_bindings.
emailVARCHAR(255)NOT NULLEndereço de e-mail. Único por tenant. Usado como identificador de login.
nameVARCHAR(255)NOT NULLNome completo.
phoneVARCHAR(20)NULLABLETelefone para notificações. Armazenado sem formatação.
cpf_hashVARCHAR(64)NULLABLEHash SHA-256 do CPF. Não armazena CPF em claro. Permite busca por CPF sem exposição.
user_typeVARCHAR(50)NOT NULLCITIZEN, INTERNAL, ADMIN, SERVICE_ACCOUNT.
statusVARCHAR(50)NOT NULLPENDING_VERIFICATION, ACTIVE, BLOCKED, INACTIVE.
email_verified_atTIMESTAMP WITH TIME ZONENULLABLEMomento da verificação do e-mail. Null indica pendência.
phone_verified_atTIMESTAMP WITH TIME ZONENULLABLEMomento da verificação do telefone.
mfa_enabledBOOLEANNOT NULL, DEFAULT FALSEIndica se autenticação multifator está ativa para o usuário.
mfa_methodVARCHAR(50)NULLABLEMétodo de MFA ativo: TOTP, SMS, EMAIL.
last_login_atTIMESTAMP WITH TIME ZONENULLABLEÚltimo login bem-sucedido.
login_failure_countINTEGERNOT NULL, DEFAULT 0Contador de falhas consecutivas. Zerado no login bem-sucedido.
locked_untilTIMESTAMP WITH TIME ZONENULLABLEQuando preenchido, login é rejeitado até este instante.
govbr_linked_atTIMESTAMP WITH TIME ZONENULLABLEMomento do vínculo com identidade GOV.BR.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLEExclusão lógica. Anonimização de name, email, phone na purga LGPD.

Restrições: UNIQUE (tenant_id, email).
Índices: idx_users_tenant_status (tenant_id, status), idx_users_cpf_hash (cpf_hash).
Retenção: Operacional; registros de auditoria de identidade — Imutável.


73.4.2 Entidade credentials

Credenciais de autenticação local por senha.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da credencial.
user_idUUIDNOT NULL, UNIQUE, FK → usersVínculo 1:1 com o usuário.
password_hashVARCHAR(255)NOT NULLHash bcrypt da senha. Nunca armazenado em claro. Nunca exposto em APIs ou logs.
must_change_at_next_loginBOOLEANNOT NULL, DEFAULT FALSEQuando true, usuário é obrigado a redefinir senha no próximo login.
expires_atTIMESTAMP WITH TIME ZONENULLABLEExpiração da senha conforme política do tenant.
last_changed_atTIMESTAMP WITH TIME ZONENOT NULLMomento da última alteração de senha.
previous_hashesJSONBNULLABLEArray dos últimos N hashes para prevenir reúso. Tamanho configurado pela política do tenant.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Retenção: Operacional. previous_hashes truncado após rotação conforme política.


73.4.3 Entidade sessions

Sessões ativas de usuários autenticados.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da sessão. Referenciado no JWT como jti.
user_idUUIDNOT NULL, FK → usersUsuário proprietário da sessão.
tenant_idUUIDNOT NULLTenant de contexto da sessão.
device_fingerprintVARCHAR(64)NULLABLEHash do fingerprint do dispositivo. Não armazena dados brutos do device.
ip_addressINETNULLABLEEndereço IP de origem no momento da criação.
user_agent_hashVARCHAR(64)NULLABLEHash do User-Agent. Não armazena string completa.
channelVARCHAR(50)NOT NULLCanal de origem: WEB, MOBILE, API.
auth_methodVARCHAR(50)NOT NULLMétodo de autenticação utilizado: PASSWORD, GOVBR, SSO.
created_atTIMESTAMP WITH TIME ZONENOT NULLInício da sessão.
expires_atTIMESTAMP WITH TIME ZONENOT NULLExpiração configurada conforme política do tenant.
revoked_atTIMESTAMP WITH TIME ZONENULLABLEQuando preenchido, sessão está revogada (logout, inatividade, revogação administrativa).
revocation_reasonVARCHAR(100)NULLABLEMotivo da revogação: LOGOUT, INACTIVITY, ADMIN_REVOKE, SECURITY_EVENT.

Índices: idx_sessions_user_active (user_id, expires_at) onde revoked_at IS NULL.
Retenção: 90 dias após expiração ou revogação (configurável por tenant).


73.4.4 Entidade profiles

Perfis de acesso que agrupam permissões por função de negócio.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do perfil.
tenant_idUUIDNOT NULL, FK → tenantsPerfis são scoped por tenant.
nameVARCHAR(200)NOT NULLNome legível do perfil. Ex: Atendente de Primeiro Nível.
codeVARCHAR(100)NOT NULLCódigo técnico do perfil. Ex: ATTENDANT_L1.
descriptionTEXTNULLABLEDescrição da finalidade do perfil.
is_systemBOOLEANNOT NULL, DEFAULT FALSEPerfis de sistema são criados pelo bootstrapping e não editáveis pelo administrador do tenant.
is_activeBOOLEANNOT NULL, DEFAULT TRUEPerfis inativos não podem ser atribuídos, mas atribuições existentes permanecem até revisão.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Restrições: UNIQUE (tenant_id, code).
Retenção: Operacional.


73.5 Domínio 3 — Cadastro do Cidadão

Serviço responsável: Citizen Service
Banco: citizen-service (schema citizen)

73.5.1 Entidade citizens

Perfil consolidado do cidadão na plataforma.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador técnico do cidadão.
tenant_idUUIDNOT NULL, FK → tenantsTenant de contexto. O mesmo cidadão pode ter registros em múltiplos tenants.
user_idUUIDNOT NULL, FK → users(identity)Referência à identidade no Identity Service. Não existe cidadão sem identidade.
full_nameVARCHAR(255)NOT NULLNome completo conforme documento oficial.
social_nameVARCHAR(255)NULLABLENome social, quando informado. Exibido preferencialmente quando preenchido.
birth_dateDATENULLABLEData de nascimento.
genderVARCHAR(50)NULLABLEGênero autodeclarado. Valores conforme tabela de domínio de gênero.
nationalityVARCHAR(100)NULLABLENacionalidade.
data_originVARCHAR(50)NOT NULLOrigem do cadastro: SELF_DECLARED, GOVBR, EXTERNAL_SYSTEM.
govbr_reliability_levelVARCHAR(20)NULLABLENível de confiabilidade GOV.BR na última autenticação: BRONZE, PRATA, OURO.
statusVARCHAR(50)NOT NULLACTIVE, INACTIVE, PENDING_COMPLETION.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLEExclusão lógica. Dados PII anonimizados no processo de purga LGPD.

Restrições: UNIQUE (tenant_id, user_id).
Retenção: Operacional; purga LGPD no offboarding ou por solicitação do titular.


73.5.2 Entidade citizen_contacts

Meios de contato do cidadão: e-mails, telefones e endereços de comunicação.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do contato.
citizen_idUUIDNOT NULL, FK → citizensCidadão ao qual o contato pertence.
tenant_idUUIDNOT NULLTenant de contexto (denormalizado para isolamento).
contact_typeVARCHAR(50)NOT NULLEMAIL, PHONE_MOBILE, PHONE_LANDLINE, WHATSAPP.
contact_valueVARCHAR(255)NOT NULLValor do contato. E-mail em lowercase; telefone sem formatação.
is_primaryBOOLEANNOT NULL, DEFAULT FALSEIndica contato principal para o tipo. Apenas um contato primary por tipo por cidadão.
is_verifiedBOOLEANNOT NULL, DEFAULT FALSEContato verificado por código OTP ou link de confirmação.
verified_atTIMESTAMP WITH TIME ZONENULLABLEMomento da verificação.
opted_in_notificationsBOOLEANNOT NULL, DEFAULT FALSEConsentimento para receber notificações neste contato.
opted_in_campaignsBOOLEANNOT NULL, DEFAULT FALSEConsentimento para receber campanhas neste contato.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLESoft delete.

Retenção: Operacional; anonimizado na purga LGPD.


73.5.3 Entidade citizen_addresses

Endereços do cidadão.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do endereço.
citizen_idUUIDNOT NULL, FK → citizensVínculo com o cidadão.
tenant_idUUIDNOT NULLTenant de contexto.
address_typeVARCHAR(50)NOT NULLRESIDENTIAL, COMMERCIAL, CORRESPONDENCE.
zip_codeVARCHAR(8)NOT NULLCEP sem formatação.
streetVARCHAR(255)NOT NULLLogradouro.
numberVARCHAR(20)NOT NULLNúmero.
complementVARCHAR(100)NULLABLEComplemento.
neighborhoodVARCHAR(150)NOT NULLBairro.
cityVARCHAR(150)NOT NULLMunicípio.
stateVARCHAR(2)NOT NULLUF.
countryVARCHAR(3)NOT NULL, DEFAULT 'BRA'País em ISO 3166-1 alpha-3.
is_primaryBOOLEANNOT NULL, DEFAULT FALSEEndereço principal.
data_originVARCHAR(50)NOT NULLOrigem: SELF_DECLARED, CORREIOS, GOVBR.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLESoft delete.

Retenção: Operacional; anonimizado na purga LGPD.


73.5.4 Entidade citizen_consents

Registros imutáveis de concessão e revogação de consentimentos LGPD.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do evento de consentimento.
citizen_idUUIDNOT NULL, FK → citizensCidadão que concedeu ou revogou.
tenant_idUUIDNOT NULLTenant de contexto.
consent_typeVARCHAR(100)NOT NULLTipo de consentimento: NOTIFICATIONS_EMAIL, NOTIFICATIONS_SMS, NOTIFICATIONS_PUSH, CAMPAIGNS, DATA_SHARING, ANALYTICS.
actionVARCHAR(20)NOT NULLGRANTED ou REVOKED.
channelVARCHAR(50)NOT NULLCanal pelo qual o cidadão registrou a ação: WEB, MOBILE, CALL_CENTER.
terms_versionVARCHAR(50)NOT NULLVersão dos termos de uso e privacidade vigentes no momento da ação.
ip_addressINETNULLABLEIP de origem da ação.
created_atTIMESTAMP WITH TIME ZONENOT NULLMomento do registro. Imutável.

Nota: Esta entidade é append-only. Nenhum UPDATE ou DELETE é permitido. O estado atual de um consentimento é determinado pelo último evento registrado para o (citizen_id, tenant_id, consent_type).
Retenção: Legal mínimo — 5 anos após a última interação, conforme LGPD.


73.6 Domínio 4 — Catálogo de Serviços

Serviço responsável: Catalog Service
Banco: catalog-service (schema catalog)

73.6.1 Entidade public_services

Serviços públicos digitais disponibilizados por cada órgão participante.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do serviço.
tenant_idUUIDNOT NULL, FK → tenantsÓrgão responsável pelo serviço.
nameVARCHAR(255)NOT NULLNome público do serviço.
slugVARCHAR(200)NOT NULLIdentificador textual para URL amigável.
descriptionTEXTNOT NULLDescrição completa do serviço para apresentação ao cidadão.
category_idUUIDNOT NULL, FK → service_categoriesCategoria do serviço para agrupamento e busca.
statusVARCHAR(50)NOT NULLDRAFT, IN_REVIEW, APPROVED, PUBLISHED, SUSPENDED, DISCONTINUED.
current_versionINTEGERNOT NULL, DEFAULT 1Versão ativa do serviço.
average_time_daysINTEGERNULLABLEPrazo médio de atendimento em dias úteis. Informativo.
requires_auth_levelVARCHAR(50)NOT NULL, DEFAULT 'BASIC'Nível mínimo de autenticação GOV.BR: BASIC, PRATA, OURO.
published_atTIMESTAMP WITH TIME ZONENULLABLEMomento da última publicação.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Restrições: UNIQUE (tenant_id, slug).
Retenção: Operacional; versões descontinuadas preservadas para auditoria de solicitações históricas.


73.7 Domínio 5 — Formulários

Serviço responsável: Forms Service
Banco: forms-service (schema forms)

73.7.1 Entidade forms

Formulários dinâmicos associados a serviços públicos.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do formulário.
tenant_idUUIDNOT NULLTenant proprietário.
service_idUUIDNOT NULL, FK → public_servicesServiço ao qual o formulário está associado.
nameVARCHAR(255)NOT NULLNome do formulário para identificação interna.
published_versionINTEGERNULLABLEVersão atualmente publicada e disponível para novas solicitações.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

73.7.2 Entidade form_versions

Versões imutáveis de cada formulário. Uma vez publicada, uma versão não é alterada.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da versão.
form_idUUIDNOT NULL, FK → formsFormulário ao qual a versão pertence.
tenant_idUUIDNOT NULLTenant de contexto.
versionINTEGERNOT NULLNúmero sequencial de versão. Começa em 1.
definitionJSONBNOT NULLDefinição completa do formulário em JSON: seções, campos, validações, condicionais.
statusVARCHAR(50)NOT NULLDRAFT, PUBLISHED, DEPRECATED.
published_atTIMESTAMP WITH TIME ZONENULLABLEMomento da publicação. Imutável após preenchimento.
deprecated_atTIMESTAMP WITH TIME ZONENULLABLEMomento da depreciação. Versões depreciadas não são usadas em novas solicitações.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Restrições: UNIQUE (form_id, version).
Retenção: Permanente — versões históricas são necessárias para validar dados de solicitações antigas.


73.8 Domínio 6 — Solicitações e Protocolos

Serviço responsável: Request Service
Banco: request-service (schema request)

73.8.1 Entidade requests

Entidade central da plataforma. Representa a formalização da demanda do cidadão a um órgão público.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador técnico da solicitação.
tenant_idUUIDNOT NULLÓrgão ao qual a solicitação foi direcionada.
citizen_idUUIDNOT NULLCidadão requerente. Referência ao Citizen Service.
service_idUUIDNOT NULLServiço público solicitado.
service_versionINTEGERNOT NULLVersão do serviço no momento da submissão. Imutável após submissão.
form_idUUIDNOT NULLFormulário utilizado.
form_versionINTEGERNOT NULLVersão do formulário no momento da submissão. Imutável. A validação retroativa usa esta versão exata.
form_dataJSONBNOT NULLDados preenchidos pelo cidadão no formulário. Pode conter PII. Acesso controlado por perfil e finalidade.
statusVARCHAR(50)NOT NULLDRAFT, SUBMITTED, IN_ANALYSIS, PENDING_COMPLEMENT, APPROVED, REJECTED, CANCELLED, COMPLETED.
channelVARCHAR(50)NOT NULLCanal de criação: WEB, MOBILE, CALL_CENTER, COUNTER.
submitted_atTIMESTAMP WITH TIME ZONENULLABLEMomento da submissão formal. Null para rascunhos.
concluded_atTIMESTAMP WITH TIME ZONENULLABLEMomento do encerramento (aprovação, rejeição, cancelamento).
assigned_unit_idUUIDNULLABLEUnidade organizacional responsável pelo tratamento.
assigned_user_idUUIDNULLABLEUsuário interno responsável.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLERascunhos abandonados podem ser marcados. Solicitações submetidas nunca são excluídas logicamente.
versionBIGINTNOT NULL, DEFAULT 0Optimistic locking.

Índices:

  • idx_requests_tenant_status_created (tenant_id, status, created_at DESC)
  • idx_requests_tenant_citizen (tenant_id, citizen_id)
  • idx_requests_tenant_assigned (tenant_id, assigned_user_id, status)

Retenção: Legal mínimo — 5 anos após conclusão. form_data sujeito a anonimização LGPD conforme solicitação do titular.


73.8.2 Entidade request_protocols

Número de protocolo gerado na submissão. Referência pública que o cidadão usa para acompanhamento.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador técnico.
request_idUUIDNOT NULL, UNIQUE, FK → requestsVínculo 1:1 com a solicitação.
tenant_idUUIDNOT NULLTenant de contexto.
protocol_numberVARCHAR(50)NOT NULLNúmero de protocolo legível. Formato: YYYY/NNNNNN ou conforme padrão do tenant.
generated_atTIMESTAMP WITH TIME ZONENOT NULLMomento da geração.

Restrições: UNIQUE (tenant_id, protocol_number).
Retenção: Igual à solicitação vinculada.


73.8.3 Entidade request_status_history

Trilha imutável de todas as transições de status de uma solicitação.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do evento de transição.
request_idUUIDNOT NULL, FK → requestsSolicitação.
tenant_idUUIDNOT NULLTenant de contexto.
from_statusVARCHAR(50)NULLABLEStatus anterior. Null na criação.
to_statusVARCHAR(50)NOT NULLNovo status.
transitioned_by_user_idUUIDNULLABLEUsuário interno que executou a transição. Null para transições automáticas do sistema.
transitioned_by_typeVARCHAR(50)NOT NULLUSER, SYSTEM, WORKFLOW, INTEGRATION.
reasonTEXTNULLABLEJustificativa da transição quando exigida pelo fluxo.
created_atTIMESTAMP WITH TIME ZONENOT NULLMomento da transição. Imutável.

Retenção: Legal mínimo — igual à solicitação.


73.8.4 Entidade request_complements

Pedidos de complementação de informações ou documentos enviados pelo órgão ao cidadão.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da pendência.
request_idUUIDNOT NULL, FK → requestsSolicitação relacionada.
tenant_idUUIDNOT NULLTenant de contexto.
descriptionTEXTNOT NULLDescrição do que é necessário para complementar.
deadline_atTIMESTAMP WITH TIME ZONENULLABLEPrazo para resposta pelo cidadão. Quando vencido sem resposta, pode gerar cancelamento automático conforme regra do serviço.
statusVARCHAR(50)NOT NULLPENDING, SUBMITTED, ACCEPTED, REJECTED, EXPIRED.
requested_by_user_idUUIDNOT NULLUsuário interno que solicitou.
submitted_atTIMESTAMP WITH TIME ZONENULLABLEMomento em que o cidadão respondeu.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Retenção: Igual à solicitação.


73.9 Domínio 7 — Processos (BPM/Workflow)

Serviço responsável: Workflow Service
Banco: workflow-service (schema workflow)

73.9.1 Entidade process_definitions

Definições de processos modelados para execução pelo motor BPM.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da definição de processo.
tenant_idUUIDNOT NULLTenant proprietário.
nameVARCHAR(255)NOT NULLNome legível do processo.
keyVARCHAR(200)NOT NULLChave técnica para referência em código e eventos.
current_published_versionINTEGERNULLABLEVersão publicada ativamente utilizada em novas instâncias.
statusVARCHAR(50)NOT NULLDRAFT, PUBLISHED, ARCHIVED.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Restrições: UNIQUE (tenant_id, key).


73.9.2 Entidade process_instances

Instâncias de execução de um processo iniciadas a partir de uma solicitação ou evento.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da instância.
tenant_idUUIDNOT NULLTenant de contexto.
definition_idUUIDNOT NULL, FK → process_definitionsDefinição que originou a instância.
definition_versionINTEGERNOT NULLVersão da definição usada para iniciar a instância. Imutável.
request_idUUIDNULLABLESolicitação originadora, quando aplicável.
statusVARCHAR(50)NOT NULLRUNNING, SUSPENDED, COMPLETED, FAILED, CANCELLED.
current_step_idUUIDNULLABLEPasso atual em execução.
variablesJSONBNULLABLEVariáveis de contexto da instância. Podem conter IDs de negócio. Nunca PII direto.
started_atTIMESTAMP WITH TIME ZONENOT NULLInício da instância.
completed_atTIMESTAMP WITH TIME ZONENULLABLEConclusão, quando aplicável.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Índices: idx_process_instances_tenant_status (tenant_id, status), idx_process_instances_request (tenant_id, request_id).
Retenção: Operacional; histórico de execução — Legal mínimo.


73.10 Domínio 8 — Tarefas

Serviço responsável: Task Service
Banco: task-service (schema task)

73.10.1 Entidade tasks

Tarefas humanas geradas pelo motor de workflow e atribuídas a usuários internos ou filas de trabalho.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da tarefa.
tenant_idUUIDNOT NULLTenant de contexto.
process_instance_idUUIDNOT NULLInstância de processo originadora.
task_typeVARCHAR(100)NOT NULLTipo da tarefa conforme definição de processo. Ex: ANALYSIS, APPROVAL, COUNTER_SIGNATURE.
titleVARCHAR(255)NOT NULLTítulo legível para exibição na fila.
descriptionTEXTNULLABLEInstruções adicionais para o responsável.
statusVARCHAR(50)NOT NULLPENDING, ASSIGNED, IN_PROGRESS, COMPLETED, CANCELLED, EXPIRED.
priorityVARCHAR(50)NOT NULL, DEFAULT 'NORMAL'LOW, NORMAL, HIGH, CRITICAL. Calculada pelo motor ou configurada no processo.
queue_idUUIDNULLABLEFila de trabalho à qual a tarefa pertence quando não há atribuição individual.
assigned_user_idUUIDNULLABLEUsuário ao qual a tarefa foi atribuída.
assigned_atTIMESTAMP WITH TIME ZONENULLABLEMomento da atribuição.
due_atTIMESTAMP WITH TIME ZONENULLABLEPrazo para conclusão. Alimenta alertas de SLA.
completed_atTIMESTAMP WITH TIME ZONENULLABLEMomento da conclusão.
resultJSONBNULLABLEResultado registrado pelo usuário ao concluir. Estrutura definida pelo tipo de tarefa.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Índices:

  • idx_tasks_tenant_queue_status (tenant_id, queue_id, status)
  • idx_tasks_tenant_assigned_status (tenant_id, assigned_user_id, status)
  • idx_tasks_tenant_due (tenant_id, due_at) — para alertas de SLA.

Retenção: Operacional; histórico de conclusão — Legal mínimo (vinculado à solicitação).


73.11 Domínio 9 — Atendimento e CRM

Serviço responsável: CRM Service
Banco: crm-service (schema crm)

73.11.1 Entidade interactions

Registro de cada interação entre o cidadão e o órgão, independentemente do canal.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da interação.
tenant_idUUIDNOT NULLTenant de contexto.
citizen_idUUIDNOT NULLCidadão atendido.
request_idUUIDNULLABLESolicitação relacionada, quando aplicável.
channelVARCHAR(50)NOT NULLPORTAL, MOBILE, PHONE, COUNTER, EMAIL, CHAT, WHATSAPP.
interaction_typeVARCHAR(100)NOT NULLSERVICE_REQUEST, COMPLAINT, INQUIRY, FOLLOW_UP, CALLBACK.
statusVARCHAR(50)NOT NULLOPEN, IN_PROGRESS, WAITING_CITIZEN, RESOLVED, CLOSED.
subjectVARCHAR(500)NOT NULLAssunto ou resumo da interação.
assigned_user_idUUIDNULLABLEAtendente responsável.
assigned_team_idUUIDNULLABLEEquipe responsável quando não há atribuição individual.
opened_atTIMESTAMP WITH TIME ZONENOT NULLMomento de abertura.
first_response_atTIMESTAMP WITH TIME ZONENULLABLEMomento da primeira resposta. Métrica de SLA.
resolved_atTIMESTAMP WITH TIME ZONENULLABLEMomento da resolução.
closed_atTIMESTAMP WITH TIME ZONENULLABLEMomento do fechamento.
satisfaction_scoreSMALLINTNULLABLENota de satisfação (1-5), quando coletada no encerramento.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Índices:

  • idx_interactions_tenant_citizen (tenant_id, citizen_id, opened_at DESC)
  • idx_interactions_tenant_assigned_status (tenant_id, assigned_user_id, status)

Retenção: Legal mínimo — 5 anos.


73.12 Domínio 10 — Comunicação Omnichannel

Serviço responsável: Communication Service
Banco: communication-service (schema comm)

73.12.1 Entidade communications

Registro de cada comunicação enviada ou tentada para um cidadão.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador único da comunicação. Usado para idempotência.
tenant_idUUIDNOT NULLTenant de contexto.
recipient_citizen_idUUIDNOT NULLDestinatário.
channelVARCHAR(50)NOT NULLEMAIL, SMS, PUSH, WHATSAPP, IN_APP.
template_idUUIDNOT NULLTemplate utilizado.
template_versionINTEGERNOT NULLVersão do template no momento do envio. Imutável.
communication_typeVARCHAR(100)NOT NULLTRANSACTIONAL, NOTIFICATION, CAMPAIGN, SECURITY.
statusVARCHAR(50)NOT NULLREQUESTED, SENT, DELIVERED, READ, FAILED, BOUNCED.
subjectVARCHAR(500)NULLABLEAssunto (usado em EMAIL). Não armazena conteúdo renderizado para minimização.
correlation_idUUIDNULLABLEID de rastreamento da cadeia de eventos que gerou esta comunicação.
causation_idUUIDNULLABLEID do evento ou comando que diretamente originou o envio.
consent_verifiedBOOLEANNOT NULL, DEFAULT FALSEIndica se o consentimento foi verificado antes do envio. Obrigatório para campanhas.
sent_atTIMESTAMP WITH TIME ZONENULLABLEMomento do envio ao provedor.
delivered_atTIMESTAMP WITH TIME ZONENULLABLEConfirmação de entrega pelo provedor.
read_atTIMESTAMP WITH TIME ZONENULLABLEConfirmação de leitura, quando disponível pelo provedor.
failed_reasonTEXTNULLABLEMotivo da falha, quando aplicável.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Nota de privacidade: o corpo renderizado da comunicação não é armazenado nesta tabela para minimização de PII. O conteúdo é reconstruível a partir do template e das variáveis do evento originador quando necessário para auditoria.
Retenção: 2 anos para comunicações transacionais; 1 ano para campanhas.


73.13 Domínio 11 — Gestão Documental

Serviço responsável: Document Service
Banco: document-service (schema document)

73.13.1 Entidade documents

Documentos digitais armazenados e gerenciados pela plataforma.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador técnico do documento.
tenant_idUUIDNOT NULLTenant de contexto.
owner_citizen_idUUIDNULLABLECidadão que enviou o documento. Null para documentos gerados internamente.
document_typeVARCHAR(100)NOT NULLClassificação: RG, CPF, PROOF_OF_RESIDENCE, BIRTH_CERTIFICATE, GENERATED_REPORT, PROCESS_ATTACHMENT etc.
titleVARCHAR(500)NOT NULLTítulo descritivo do documento.
descriptionTEXTNULLABLEDescrição adicional.
mime_typeVARCHAR(100)NOT NULLTipo MIME do arquivo. Ex: application/pdf, image/jpeg.
file_size_bytesBIGINTNOT NULLTamanho do arquivo em bytes.
storage_pathVARCHAR(1024)NOT NULLCaminho no Object Storage. Formato: {tenant_id}/{year}/{month}/{document_uuid}/{filename}. Nunca exposto diretamente em APIs públicas.
checksum_sha256VARCHAR(64)NOT NULLHash SHA-256 do conteúdo. Verificado em cada leitura para garantir integridade.
statusVARCHAR(50)NOT NULLUPLOADED, VALIDATED, REJECTED, ARCHIVED.
is_sensitiveBOOLEANNOT NULL, DEFAULT FALSEDocumentos sensíveis têm controles adicionais de acesso e log.
expiration_dateDATENULLABLEData de validade do documento, quando aplicável.
request_idUUIDNULLABLESolicitação à qual o documento está vinculado, quando aplicável.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
deleted_atTIMESTAMP WITH TIME ZONENULLABLESoft delete; arquivo físico removido do Object Storage no processo de purga.

Índices: idx_documents_tenant_citizen (tenant_id, owner_citizen_id), idx_documents_tenant_request (tenant_id, request_id).
Retenção: Configurável por tenant e tipo de documento; sujeito a LGPD para documentos pessoais.


73.14 Domínio 12 — Agendamentos

Serviço responsável: Scheduling Service
Banco: scheduling-service (schema scheduling)

73.14.1 Entidade appointments

Agendamentos de atendimento presencial ou remoto.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador do agendamento.
tenant_idUUIDNOT NULLTenant de contexto.
citizen_idUUIDNOT NULLCidadão que agendou.
service_idUUIDNOT NULLServiço agendado.
agenda_idUUIDNOT NULLAgenda do órgão.
slot_idUUIDNOT NULLVaga reservada. A exclusividade é garantida por lock na confirmação.
statusVARCHAR(50)NOT NULLRESERVED, CONFIRMED, CANCELLED, COMPLETED, NO_SHOW.
appointment_dateDATENOT NULLData do agendamento.
appointment_timeTIMENOT NULLHorário do agendamento.
locationVARCHAR(500)NULLABLELocal de atendimento (endereço ou link de videoconferência).
modalityVARCHAR(50)NOT NULLIN_PERSON, REMOTE.
confirmation_codeVARCHAR(20)NOT NULLCódigo de confirmação para check-in.
reserved_untilTIMESTAMP WITH TIME ZONENULLABLEExpiração da reserva temporária antes da confirmação.
cancelled_atTIMESTAMP WITH TIME ZONENULLABLEMomento do cancelamento, quando aplicável.
cancellation_reasonTEXTNULLABLEMotivo do cancelamento.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Índices: idx_appointments_tenant_citizen (tenant_id, citizen_id), idx_appointments_slot_status (slot_id, status).
Retenção: Operacional; histórico — Legal mínimo (vinculado ao serviço).


73.15 Domínio 13 — Ouvidoria

Serviço responsável: Ombudsman Service
Banco: ombudsman-service (schema ombudsman)

73.15.1 Entidade manifestations

Manifestações registradas por cidadãos na ouvidoria do órgão.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da manifestação.
tenant_idUUIDNOT NULLOuvidoria do órgão destinatário.
citizen_idUUIDNULLABLENull quando a manifestação é anônima.
is_anonymousBOOLEANNOT NULL, DEFAULT FALSEQuando true, citizen_id é nulo e nenhuma identificação é solicitada.
manifestation_typeVARCHAR(50)NOT NULLCOMPLAINT, REPORT, SUGGESTION, COMPLIMENT, INFO_REQUEST.
subjectVARCHAR(500)NOT NULLAssunto resumido.
descriptionTEXTNOT NULLDescrição completa. Pode conter PII. Acesso restrito por perfil.
statusVARCHAR(50)NOT NULLRECEIVED, IN_ANALYSIS, FORWARDED, AWAITING_RESPONSE, RESPONDED, CLOSED.
protocol_numberVARCHAR(50)NOT NULL, UNIQUE per tenantNúmero de protocolo da ouvidoria.
classification_idUUIDNULLABLEClassificação interna após triagem.
forwarded_to_unit_idUUIDNULLABLEUnidade para qual foi encaminhado.
deadline_atTIMESTAMP WITH TIME ZONENULLABLEPrazo de resposta conforme legislação ou política interna.
responded_atTIMESTAMP WITH TIME ZONENULLABLEMomento da resposta ao cidadão.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.
updated_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Nota de privacidade: manifestações anônimas não são vinculadas a cidadão mesmo internamente. A plataforma garante que nenhum metadado indireto seja usado para identificar o autor.
Retenção: Legal mínimo — conforme regulamentação de ouvidoria pública (mínimo 5 anos).


73.16 Domínio 14 — Auditoria

Serviço responsável: Audit Service
Banco: audit-service (schema audit) — banco separado, append-only

73.16.1 Entidade audit_events

Trilha imutável de todos os eventos auditáveis da plataforma.

ColunaTipoRestriçãoPIISemântica
idBIGINTPK, AUTOINCREMENTChave sequencial para ordenação física.
audit_idUUIDNOT NULL, UNIQUEIdentificador lógico único do evento de auditoria.
timestampTIMESTAMP WITH TIME ZONENOT NULLMomento exato do evento. Indexado.
tenant_idVARCHAR(100)NOT NULLTenant de contexto. VARCHAR para compatibilidade com formatos legados.
event_typeVARCHAR(200)NOT NULLTipo do evento. Ex: data.modified, access.sensitive, auth.succeeded.
event_categoryVARCHAR(100)NOT NULLCategoria: authentication, authorization, persistence, integration, administration.
severityVARCHAR(20)NOT NULLLOW, MEDIUM, HIGH, CRITICAL.
subject_idVARCHAR(100)NULLABLEID do sujeito que executou a ação (usuário, sistema, integração).
subject_typeVARCHAR(50)NULLABLEUSER, SYSTEM, INTEGRATION, SCHEDULER.
resource_idVARCHAR(100)NULLABLEID do recurso afetado.
resource_typeVARCHAR(100)NULLABLETipo do recurso: REQUEST, CITIZEN, DOCUMENT, USER, etc.
actionVARCHAR(100)NOT NULLAção executada: CREATE, UPDATE, DELETE, READ, APPROVE, REJECT, LOGIN, etc.
resultVARCHAR(50)NOT NULLSUCCESS, FAILURE, DENIED.
ip_addressVARCHAR(50)NULLABLEEndereço IP de origem.
correlation_idUUIDNULLABLEIdentificador de rastreamento distribuído.
event_jsonJSONBNOT NULLPayload completo do evento, incluindo valores anteriores e novos em alterações.
hash_valueVARCHAR(64)NOT NULLSHA-256 encadeado com o evento anterior. Garante detecção de adulteração da trilha.
created_atTIMESTAMP WITH TIME ZONENOT NULL, DEFAULT NOW()Momento de inserção. Imutável.

Política de escrita: INSERT apenas. Nenhum UPDATE ou DELETE é executado nesta tabela. Compressão e arquivamento de eventos históricos em Object Storage após 12 meses.
Índices: idx_audit_tenant_timestamp (tenant_id, timestamp DESC), idx_audit_subject (tenant_id, subject_id, timestamp DESC), idx_audit_resource (tenant_id, resource_id, timestamp DESC), idx_audit_event_type (tenant_id, event_type, timestamp DESC).
Retenção: Imutável — mínimo 7 anos; acessível para consulta por 2 anos online, arquivado e consultável sob demanda após.


73.17 Domínio 15 — Inteligência Artificial

Serviço responsável: AI Gateway / AI Specialized Service
Banco: ai-service (schema ai)

73.17.1 Entidade ai_requests

Registro de cada requisição enviada ao sistema de IA, para rastreabilidade, governança e controle de quotas.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da requisição de IA.
tenant_idUUIDNOT NULLTenant de contexto.
user_idUUIDNULLABLEUsuário que originou a requisição. Null para requisições de sistema.
capabilityVARCHAR(100)NOT NULLCapacidade utilizada: CONVERSATIONAL, SEMANTIC_SEARCH, CLASSIFICATION, SUMMARIZATION, EXTRACTION.
providerVARCHAR(100)NOT NULLProvedor de LLM selecionado pelo gateway.
modelVARCHAR(100)NOT NULLModelo específico utilizado.
prompt_tokensINTEGERNULLABLETokens de entrada consumidos.
completion_tokensINTEGERNULLABLETokens de saída gerados.
latency_msINTEGERNULLABLELatência da requisição em milissegundos.
statusVARCHAR(50)NOT NULLSUCCESS, FAILED, BLOCKED_BY_GUARDRAIL, QUOTA_EXCEEDED.
correlation_idUUIDNULLABLEID de rastreamento da operação de negócio originadora.
rag_usedBOOLEANNOT NULL, DEFAULT FALSEIndica se RAG foi ativado na requisição.
rag_chunks_retrievedINTEGERNULLABLEQuantidade de chunks recuperados da base vetorial.
created_atTIMESTAMP WITH TIME ZONENOT NULLVer padrão 73.2.3.

Nota de privacidade: prompts e respostas completas não são armazenados nesta tabela para minimização de PII. Apenas metadados de rastreabilidade e métricas de consumo.
Retenção: 12 meses para métricas e rastreabilidade.


73.18 Domínio 16 — Satisfação e Avaliações

Serviço responsável: Satisfaction Service
Banco: satisfaction-service (schema satisfaction)

73.18.1 Entidade feedbacks

Avaliações de cidadãos sobre serviços e atendimentos.

ColunaTipoRestriçãoPIISemântica
idUUIDPKIdentificador da avaliação.
tenant_idUUIDNOT NULLTenant de contexto.
citizen_idUUIDNULLABLECidadão avaliador. Pode ser anônimo conforme configuração do tenant.
request_idUUIDNULLABLESolicitação avaliada, quando aplicável.
interaction_idUUIDNULLABLEInteração de atendimento avaliada, quando aplicável.
service_idUUIDNULLABLEServiço avaliado.
scoreSMALLINTNOT NULLNota de 1 a 5.
commentTEXTNULLABLEComentário livre. Pode conter dados pessoais informados voluntariamente.
channelVARCHAR(50)NOT NULLCanal pelo qual a avaliação foi registrada.
created_atTIMESTAMP WITH TIME ZONENOT NULLMomento do registro.

Retenção: Operacional; dados anonimizados após 3 anos para uso analítico.


73.19 Padrões de Cache — Redis

O Redis não é banco de dados primário; é projeção reconstruível. Cada chave segue o padrão:

{tenant_id}:{entity_type}:{entity_id}[:{variant}]
Prefixo de ChaveConteúdoTTL PadrãoInvalidação
{tid}:session:{session_id}Dados mínimos da sessão para validação de tokenConforme expiração JWTRevogação de sessão
{tid}:citizen:{citizen_id}:profilePerfil básico do cidadão para exibição15 minEvento citizen.updated.v1
{tid}:catalog:service:{service_id}Dados do serviço publicado30 minEvento catalog.service.updated.v1
{tid}:config:{config_key}Configuração do tenant5 minEvento tenant.config-changed.v1
{tid}:request:{request_id}:summaryResumo da solicitação para listagens5 minEvento request.status-changed.v1
{tid}:rate_limit:{user_id}:{endpoint}Contador de rate limiting1 minAutomático (TTL)

Regra de privacidade: chaves de cache nunca contêm dados pessoais em claro. Dados pessoais no value são minimizados ao estritamente necessário para a operação de leitura.


73.20 Padrões de Busca Vetorial

A busca vetorial suporta o RAG e a busca semântica. Os vetores são armazenados em vector store segregado por tenant.

CampoTipoSemântica
chunk_idUUIDIdentificador do fragmento de conteúdo.
tenant_idUUIDTenant proprietário — segregação estrutural.
source_document_idUUIDDocumento de origem no Document Service.
chunk_indexINTEGERPosição do fragmento no documento original.
content_textTEXTTexto do fragmento após sanitização.
embeddingVECTOR(1536)Vetor de embedding gerado pelo modelo aprovado.
metadataJSONBMetadados adicionais: tipo de documento, data, categorias.
indexed_atTIMESTAMP WITH TIME ZONEMomento da indexação.

Isolamento: cada tenant possui sua própria coleção ou namespace no vector store. Uma busca semântica de um tenant nunca recupera fragmentos de outro tenant, mesmo por similaridade matemática acidental.


73.21 Convenções de Evolução de Schema

A evolução do schema de banco de dados segue a estratégia Expand-Migrate-Contract para garantir compatibilidade com versões anteriores do serviço durante deploys graduais:

Fase Expand: adiciona nova coluna ou tabela como NULLABLE, sem remover nada existente. O serviço antigo ignora a nova estrutura; o novo serviço começa a preencher.

Fase Migrate: processo de backfill popula a nova coluna para registros existentes. O serviço novo lê da nova coluna; se null, lê do campo legado.

Fase Contract: quando todo o tráfego utiliza a nova estrutura e o backfill está completo, a coluna legada é removida com uma migration de limpeza.

Todas as migrations são versionadas com Flyway e seguem a convenção de nomenclatura:

V{major}_{minor}__{descricao_legivel}.sql

Migrations nunca fazem DROP TABLE sem aprovação explícita do arquiteto responsável registrada no ADR correspondente.


73.22 Política de Dados Pessoais — Resumo por Domínio

DomínioPII Direta PresenteCriptografia em RepousoAnonimização na Purga
IdentidadeE-mail, nomeSim (credenciais com bcrypt; storage criptografado)Sim — LGPD art. 12
CidadãoNome, CPF-hash, endereço, contatoSimSim
Solicitaçõesform_data (PII variável por serviço)SimSim (seletiva)
DocumentosConteúdo de arquivosSim (Object Storage com chave por tenant)Sim (exclusão do arquivo físico)
AuditoriaIP, subject_id (ID técnico)SimNão — preservado para conformidade legal
ComunicaçãoContato do destinatário (referenciado, não duplicado)SimSim (após retenção)
OuvidoriaDescrição livre, identidade quando não anônimoSimSim (após prazo legal)
IASem PII no armazenamento (apenas metadados)N/AN/A

73.23 Referências Cruzadas

EntidadeCapítulo de Referência Primária
tenants, tenant_configurationsCapítulos 9, 30
users, credentials, sessions, profilesCapítulos 28, 29, 43
citizens, citizen_contacts, citizen_addresses, citizen_consentsCapítulos 9, 44
public_services, service_categoriesCapítulos 9, 10
forms, form_versionsCapítulo 12 (Forms Service)
requests, request_protocols, request_status_history, request_complementsCapítulos 9, 12, 15
process_definitions, process_instancesCapítulos 9, 12, 19
tasksCapítulos 12, 19
interactionsCapítulos 18, 12
communicationsCapítulos 21, 12
documentsCapítulos 20, 12
appointmentsCapítulo 12 (Scheduling Service)
manifestationsCapítulo 12 (Ombudsman Service)
audit_eventsCapítulos 45, 46
ai_requestsCapítulo 16
feedbacksCapítulo 12 (Satisfaction Service)
Padrões de Cache (Redis)Capítulo 35
Busca VetorialCapítulos 16, 36

73.24 Resumo

O Capítulo 73 apresenta o Dicionário de Dados da Plataforma de Relacionamento Digital com o Cidadão, cobrindo 16 domínios de persistência, com descrição formal de mais de 45 entidades principais e seus atributos, tipos, restrições, semântica de negócio, classificação de privacidade e políticas de retenção.

Os padrões transversais — UUID como identificador, tenant_id obrigatório em toda tabela de negócio, atributos de ciclo de vida, soft delete, optimistic locking e classificação PII — garantem consistência e segurança em toda a estrutura de dados da plataforma.

O Dicionário de Dados é um documento vivo. Toda adição de campo, alteração de tipo ou mudança de política de retenção exige atualização deste capítulo, registro em migration versionada com Flyway e, quando a mudança afeta o contrato de dados entre serviços, um ADR correspondente.


73.25 Próximo Capítulo

O Capítulo 74 — Requisitos Não Funcionais consolida as especificações mensuráveis de performance, disponibilidade, escalabilidade, segurança e conformidade que a plataforma deve atender, com metas numéricas, mecanismos de medição e rastreabilidade aos requisitos do edital.


73.26 Controle de Versão

CampoValor
DocumentoDocumento Mestre — Plataforma de Relacionamento Digital com o Cidadão
Capítulo73 — Dicionário de Dados
Versão1.0
SituaçãoConcluído
Última atualização17/07/2026
Status de AprovaçãoAprovado

Nesta página

73.1 Objetivo do Capítulo73.2 Convenções e Padrões Transversais73.2.1 Identificadores73.2.2 Isolamento Multi-Tenant73.2.3 Atributos de Ciclo de Vida73.2.4 Dados Pessoais (PII)73.2.5 Política de Retenção73.3 Domínio 1 — Tenant e Configuração Institucional73.3.1 Entidade tenants73.3.2 Entidade tenant_configurations73.4 Domínio 2 — Identidade e Acesso73.4.1 Entidade users73.4.2 Entidade credentials73.4.3 Entidade sessions73.4.4 Entidade profiles73.5 Domínio 3 — Cadastro do Cidadão73.5.1 Entidade citizens73.5.2 Entidade citizen_contacts73.5.3 Entidade citizen_addresses73.5.4 Entidade citizen_consents73.6 Domínio 4 — Catálogo de Serviços73.6.1 Entidade public_services73.7 Domínio 5 — Formulários73.7.1 Entidade forms73.7.2 Entidade form_versions73.8 Domínio 6 — Solicitações e Protocolos73.8.1 Entidade requests73.8.2 Entidade request_protocols73.8.3 Entidade request_status_history73.8.4 Entidade request_complements73.9 Domínio 7 — Processos (BPM/Workflow)73.9.1 Entidade process_definitions73.9.2 Entidade process_instances73.10 Domínio 8 — Tarefas73.10.1 Entidade tasks73.11 Domínio 9 — Atendimento e CRM73.11.1 Entidade interactions73.12 Domínio 10 — Comunicação Omnichannel73.12.1 Entidade communications73.13 Domínio 11 — Gestão Documental73.13.1 Entidade documents73.14 Domínio 12 — Agendamentos73.14.1 Entidade appointments73.15 Domínio 13 — Ouvidoria73.15.1 Entidade manifestations73.16 Domínio 14 — Auditoria73.16.1 Entidade audit_events73.17 Domínio 15 — Inteligência Artificial73.17.1 Entidade ai_requests73.18 Domínio 16 — Satisfação e Avaliações73.18.1 Entidade feedbacks73.19 Padrões de Cache — Redis73.20 Padrões de Busca Vetorial73.21 Convenções de Evolução de Schema73.22 Política de Dados Pessoais — Resumo por Domínio73.23 Referências Cruzadas73.24 Resumo73.25 Próximo Capítulo73.26 Controle de Versão