Saltar para o conteúdo
megapromotingVamos falar

Soluções · Instituições & administração

As secções que a decisão do governo exige, escritas em código e atualizadas pelo funcionário — não adicionadas no fim, como anexo.

Uma câmara municipal ou uma instituição tem uma lista fixa de secções obrigatórias, uma obrigação de transparência decisória e um funcionário que tem de publicar um anúncio sem chamar um programador. Construímos exatamente isso, com registo de auditoria que se apaga sozinho no prazo e com limite às tentativas de autenticação.

Já construídoDuas plataformas próprias, públicas e verificáveis hoje. A primeira é o site oficial de uma câmara municipal: Laravel 12 em PHP 8.2 com MySQL 8, 40 modelos, 32 rotas, 10 migrações, com o conteúdo editorial que muda raramente mantido num único ficheiro de configuração de 1.613 linhas e o que muda frequentemente na base de dados, editável a partir do painel; a autenticação no painel é limitada a 5 pedidos por minuto, e o registo de auditoria é apagado diariamente após 12 meses, com referência explícita à base legal. Os cabeçalhos de segurança podem ser lidos do exterior neste momento. A segunda é uma plataforma cívica em produção, com 65 rotas de interface de programação, mais de 50 migrações, 103 ficheiros de teste no lado do servidor e 59 cenários end-to-end, com verificação de acessibilidade nos testes. O que não colocamos como «entregue»: a interoperabilidade com os serviços do Estado — o código de autenticação federada e de assinatura eletrónica está escrito e testado, mas parado, porque faltam o contrato com a autoridade e o certificado de sistema.

Um site de instituição pública não se julga pela aparência, mas por uma lista. A Decisão do Governo 728/2023 estabelece que secções têm de existir: transparência decisória, projetos e decisões, anúncios, documentos, contactos, orçamento. São obrigatórias, são verificadas e não são negociáveis. Por isso, construímo-las desde o início, como estrutura, e não as adicionamos no final — adicionadas no fim saem formais e inúteis, e isso vê-se imediatamente.

A segunda condição é mais prática: a instituição tem de poder publicar sozinha. Um anúncio de concurso, um projeto de decisão colocado em consulta, uma fotografia de um evento — se tudo passa por um programador, a informação de interesse público fica no papel ou num grupo de rede social, e o site torna-se uma montra morta. Separamos de propósito dois tipos de conteúdo: o editorial que muda raramente — geografia, histórico, instituições, contactos, orçamento — fica num único ficheiro de configuração lido diretamente pelos modelos; o que muda frequentemente fica na base de dados e é editado a partir do painel.

A terceira condição é aquela sobre a qual ninguém pergunta no caderno de encargos: o que acontece aos dados. Um painel de administração pública precisa de um limite às tentativas de autenticação — ao sexto pedido num minuto a partir do mesmo endereço, a resposta é 429, e isso é coberto por um teste automático, não presumido. O diário de auditoria contém endereços IP, portanto é um dado pessoal: uma tarefa programada limpa-o diariamente de tudo o que tem mais de doze meses, com a base legal escrita no comentário do código, não num documento separado que ninguém abre.

E, por fim, a parte sobre a qual preferimos falar antes do concurso: a interoperabilidade com os serviços governamentais. A autenticação federada e a assinatura eletrónica estão escritas e testadas por nós, mas desligadas por um comutador, porque faltam o contrato com a autoridade e o certificado de sistema — falta o papel, não o código. Para a plataforma de pagamentos do Estado, a via de interoperabilidade e o gabinete do cidadão, não temos nenhum código, em nenhum repositório, e escrevemos isso como tal.

Qué incluye

O que muda concretamente em instituições e administração

As secções obrigatórias, construídas como estrutura desde o início

Transparência decisória, projectos e decisões, anúncios, documentos, contactos, orçamento, além da declaração de acessibilidade, da informação sobre o tratamento de dados, da secção de dados abertos e do mapa do site. A conformidade com a decisão do governo está escrita em código — em templates e na configuração — e não apenas afirmada na proposta.

Dois tipos de conteúdo, dois locais diferentes

O que muda raramente — dados sobre a localidade, histórico, instituições, composição do conselho, contactos, orçamento — fica num único ficheiro de configuração de 1.613 linhas, lido diretamente pelos templates; o que muda frequentemente — anúncios, galeria, projectos e decisões, documentos, definições de transparência — fica na base de dados e é editado a partir do painel. A separação não é estética: reduz ao mínimo o que alguém pode estragar com uma edição errada.

O funcionário publica sozinho, sem um programador na cadeia

O painel cobre exatamente as operações que se fazem semanalmente numa câmara municipal: um novo anúncio, um projecto de decisão colocado em consulta, um documento carregado, algumas fotografias. Cada ação de administração entra numa tabela de auditoria — quem, o quê, quando — porque, numa instituição pública, a pergunta „quem publicou isto” tem, mais cedo ou mais tarde, uma resposta que importa.

Limite na autenticação, verificado por um teste

Cinco pedidos por minuto a partir do mesmo endereço para o formulário de autenticação; o sexto recebe 429. Não é uma definição que afirmamos: existe um teste automático que verifica exatamente a devolução do código 429. A diferença entre uma medida configurada e uma medida testada só se vê quando alguém altera uma rota e se esquece dela.

Cabeçalhos de segurança presentes na resposta real, e não apenas na configuração

Em produção, são lidos externamente: proibição de enquadramento, `nosniff`, política de referência rigorosa, transporte seguro imposto por um ano com subdomínios, política de permissões que fecha a geolocalização, o microfone e a câmara, além de uma política de conteúdo explícita. Verificamo-los com um pedido, e não com uma promessa.

Minimização de dados como tarefa agendada, com o fundamento ao lado

Os registos de auditoria contêm endereços IP. Uma tarefa é executada diariamente e elimina tudo o que tiver mais de doze meses, com a referência ao fundamento legal escrita no comentário do código. É a diferença entre uma política de confidencialidade que diz „guardamos pelo tempo necessário” e um sistema em que o prazo é realmente aplicado por si próprio.

Acessibilidade verificada automaticamente em cada entrega

Na plataforma cívica, a verificação corre nos testes automáticos com os critérios WCAG 2.0 A e AA mais 2.1 A e AA, com uma linha de referência por página: qualquer problema novo impede a entrega, mesmo que o nível geral não tenha mudado. Para uma instituição pública, a acessibilidade não é uma opção de imagem, e a declaração de acessibilidade não se escreve sem que algo tenha corrido.

Os dados estruturados que dizem a uma máquina que você é uma instituição

A página inicial publica dados estruturados do tipo organização governamental, com a morada postal. Isso conta para a forma como a instituição aparece nos resultados e para os sistemas que leem automaticamente; é também uma das poucas categorias para as quais a documentação do motor ainda mostra o resultado enriquecido com perguntas frequentes — mas „bem conhecido e autoritário” não é uma caixa que assinalamos nós, por isso não o vendemos como entregável.

O que não fazemos, dito antes da licitação

Não declaramos como entregue a ligação com a plataforma de pagamentos do Estado, com a espinha dorsal de interoperabilidade ou com o gabinete do cidadão: não temos código para eles em nenhum repositório. A autenticação federada e a assinatura eletrónica estão escritas e testadas, mas desativadas — faltam o contrato com a autoridade e o certificado do sistema. E o alojamento na infraestrutura do Estado, onde é obrigatório, é um requisito de procedimento, não uma opção técnica.

Traseul

Como um pedido passa pelo sistema.

01

Mapeamos os requisitos antes do design

A primeira entrega é a lista das secções obrigatórias para o seu tipo de instituição e a sua correspondência com o que vocês publicam hoje. A partir daí vê-se o que falta, o que existe no papel e o que está publicado num lugar que não pode ser citado. O design vem depois da lista, e não o contrário.

02

Separamos o conteúdo editorial do operacional

O que muda raramente vai para a configuração, o que muda com frequência vai para a base, com painel. Entregamos a estrutura preenchida com os dados reais da instituição — não com texto de enchimento — porque um site de instituição com conteúdo provisório não pode ser avaliado por ninguém e, de regra, fica assim.

03

Definimos os gates: limite de autenticação, auditoria, cabeçalhos, prazos

O limite no formulário de autenticação com teste que o verifica, o registo de auditoria com eliminação agendada no prazo, os cabeçalhos de segurança verificados a partir do exterior, a página de informação sobre o tratamento de dados com os fundamentos indicados. Entregamos o resultado das verificações, não apenas a configuração.

04

Entregamos com formação para quem publica

Entregamos o repositório, o documento de colocação em funcionamento e os acessos, mais uma formação para a pessoa que vai publicar os anúncios. A entrega não se considera concluída até um funcionário ter publicado sozinho um anúncio que apareça no site.

1Servidor web com cabeçalhos verificados a partir do exterior2aplicação com as rotas públicas e o painel3conteúdo editorial num ficheiro de configuração, conteúdooperacional com base4registo de auditoria com eliminação programada aos 12 meses
4 straturi

Os dados

Qué tocamos, dónde están y cuánto se quedan

As regras diferem de setor para setor. Estas são as que se aplicam em instituições & administração.

O conteúdo é da instituição; nós construímos a estrutura
Os dados sobre a localidade, a composição do conselho, os contactos de serviço e o orçamento são fornecidos pela instituição e continuam a ser dela. Os números de telefone de serviço e os nomes dos funcionários são públicos no site da instituição, mas não são usados em materiais de marketing — nem por nós, nem no portfólio.
O registo de auditoria contém dados pessoais
O endereço IP no registo é um dado pessoal. Por isso tem um prazo: apaga-se diariamente tudo o que tenha mais de doze meses, com o fundamento legal escrito ao lado do código. O registo guarda o ator, o seu papel, o tipo de evento e se é interno ou público — essa separação é importante quando uma parte do registo tem de ser mostrada ao cidadão.
O que é publicado e o que fica no dossier interno
Na plataforma cívica, os elementos de identificação — por exemplo, um número de matrícula — seguem para o dossier para a autoridade e nunca aparecem publicamente; a posição pública é arredondada; nenhuma fotografia chega ao site sem um desfoque aprovado por uma pessoa, e quem redige não é quem aprova. As regras são restrições na base, não instruções para o operador.
Os prazos de conservação, com o texto publicado ao lado
Cada prazo mantém, na mesma tabela, o texto publicado palavra por palavra e o fundamento legal — média bruta 90 dias, média redigida 3 anos, identidade de quem reporta 3 anos, digitalizações de etiqueta 12 meses. A função de limpeza indica implicitamente o que apagaria; a eliminação real exige um argumento explícito.
Os direitos da pessoa em causa como rotas, não como endereço de e-mail
A exportação, a eliminação e o registo dos pedidos existem como funções. Uma instituição que recebe um pedido de acesso deve poder cumpri-lo sem abrir manualmente a base de dados — caso contrário, o prazo legal consome-se à espera de um programador.

Un caso

Um prazo de conservação que se aplica sozinho, todas as noites

A situação

O painel de administração de um site de câmara municipal mantém um registo de auditoria: quem publicou, o quê e quando. O registo contém endereços IP, logo contém dados pessoais. Quase todos os sites deste tipo resolvem o problema numa frase da política de privacidade — „conservamos os dados enquanto for necessário” — e com isso termina.

Qué construimos

Escrevi o termo como tarefa programada: uma rotina corre diariamente e apaga do registo tudo o que tiver mais de doze meses, com a referência ao fundamento legal escrita no comentário acima do código. Na mesma etapa defini o limite no formulário de autenticação — cinco pedidos por minuto a partir do mesmo endereço — e um teste automático que verifica a devolução do código 429, para que a medida não desapareça em silêncio numa refatorização.

Qué salió

A política publicada e o comportamento do sistema dizem a mesma coisa, e a diferença pode ser verificada: o termo é uma linha de código que corre todas as noites, não uma intenção. Os cabeçalhos de segurança podem ser lidos do exterior com um único pedido.

Qué no dice el caso

A hospedagem, os artefactos de publicação e a configuração do servidor continuam a ser informação interna. E o conteúdo — os dados sobre a localidade, a composição do conselho, o orçamento — pertence à instituição e é fornecido por ela: nós construímos a estrutura e o painel, não os dados.

Perguntas

O que alguém das instituições & administração pergunta

Que secções são obrigatórias e quem verifica?

A lista vem da Resolução do Governo 728/2023: transparência decisória, projetos e decisões, anúncios, documentos, contactos, orçamento, além das páginas de acessibilidade e de informação sobre o tratamento de dados. Nós construímo-las como estrutura desde o início. No trabalho que citamos, a conformidade está escrita no código — nos modelos e na configuração — e não apenas afirmada na proposta.

Podemos publicar nós próprios um anúncio, sem vos telefonar?

Sim, e isso é metade do trabalho. Os anúncios, os projetos de decisão, os documentos e a galeria são editados no painel. O que fica na configuração é o conteúdo que muda raramente — histórico, geografia, composição do conselho — precisamente para que uma edição de rotina não possa estragar a estrutura.

Quem publicou um anúncio e quando — isso pode ser apurado?

Sim. Cada ação de administração entra numa tabela de auditoria, com o ator, o cargo, o tipo de evento e o momento. O registo contém também o endereço IP, portanto é dado pessoal e tem prazo: apaga-se diariamente tudo o que tiver mais de doze meses.

O que acontece se alguém tentar adivinhar a palavra-passe do painel?

Ao sexto pedido num minuto a partir do mesmo endereço, recebe 429. Não é uma afirmação: um teste automático verifica exatamente este código de resposta. Além disso, os cabeçalhos de segurança da resposta real podem ser lidos a partir do exterior — a proibição de enquadramento em frame, `nosniff`, a política de referência, o transporte seguro imposto e uma política de conteúdo explícita.

Podem ligar o site à autenticação governamental e à assinatura eletrónica?

O código está escrito e testado, mas desligado por um interruptor, e o teste predefinido verifica precisamente que o estado desligado não deixa sair nada. O que falta não é o código: faltam o contrato com a autoridade e o certificado do sistema. A variante que funciona hoje é o cidadão assinar no portal oficial e carregar de volta o documento assinado. Preferimos dizer isto antes do concurso, não depois.

E os pagamentos para o orçamento, através da plataforma do Estado?

Não temos código para ela, em nenhum repositório — o mesmo se aplica à via de interoperabilidade e ao gabinete do cidadão. Verificámos isso com uma pesquisa por palavra inteira em todos os nossos projetos. Quando uma instituição precisa deles, é um trabalho de integração com as suas próprias condições e o seu próprio calendário de acordos, e é assim que o escrevemos na proposta.

O site tem de ser hospedado na infraestrutura do Estado?

Onde isso é obrigatório por resolução do governo, sim, e é um requisito de procedimento, não uma escolha técnica. Tratamo-lo como tal desde o início, porque muda o modo de publicação e a lista de acordos necessários, não apenas o endereço do servidor.

Como é que vocês mostram que o site é acessível?

Com uma verificação que corre nos testes automatizados, com base nos critérios WCAG 2.0 A e AA mais 2.1 A e AA, com uma linha de referência por página: qualquer problema novo bloqueia a entrega. A declaração de acessibilidade é escrita depois de a verificação correr, não antes — caso contrário, é um texto que contradiz a página onde está.

O que acontece com as fotografias enviadas pelos cidadãos?

Na plataforma cívica, a fotografia bruta permanece prova privada; só a versão redigida chega ao público, com a proveniência preservada e com aprovação explícita de um moderador, e quem redige não é quem aprova. Se o estado de uma imagem se tornar inseguro, o dossier é retirado automaticamente do público. São restrições na base de dados, não instruções para o operador.

O que gostaria que funcionasse melhor?

Conte-nos o seu processo. Em conjunto decidimos o que vale a pena construir, o que podemos ligar e como verificamos o resultado.

Vamos falar