- GovTech e mecanismos de queixa
FUNAE – MGQR (Mecanismo de Gestão de Queixas e Reclamações)
Plataforma onde cidadãos submetem queixas, reclamações e sugestões ao FUNAE, com encaminhamento automático para técnicos e painéis por perfil.
- Período
- 2025–2026
- Estado
- Arquivado
- Papel
- Programador full-stack e maior contribuidor da equipa (atribuição automática, notificações, login, perfis, frontend)
- Cliente
- FUNAE – Fundo de Energia, FP
- Parceiros
- TechSolutions, Enabel
Problema
Os projectos de energia do FUNAE financiados pela Enabel exigem um mecanismo formal de queixas e reclamações (GRM). Era preciso registar submissões identificadas ou anónimas, encaminhá-las para a equipa certa, controlar prazos e dar relatórios à direcção.
Solução
Aplicação Laravel 12 + Inertia + Vue 3 desenvolvida por uma equipa da TechSolutions. Escrevi o serviço de atribuição automática, o serviço de notificações, o login multicanal, o perfil de Gestor Adjunto e grande parte dos painéis em Vue. Colegas fizeram o esqueleto inicial, os prazos legais e o pipeline de CI/CD.
Contexto
O FUNAE – Fundo de Energia executa projectos de electrificação financiados pela Enabel. O financiador exige um mecanismo de gestão de queixas e reclamações (GRM): qualquer pessoa afectada por um projecto tem de poder queixar-se, e a queixa tem de ter resposta dentro de prazos definidos.
A TechSolutions ganhou o desenvolvimento e formou uma equipa de nove programadores. Abri o repositório com a documentação, os milestones e as issues, e fui o programador com mais trabalho entregue entre Novembro de 2025 e Abril de 2026.
O percurso de uma reclamação
O cidadão escolhe se se identifica ou fica anónimo, descreve o caso e anexa evidências. O sistema gera uma referência pública no formato GRM-AAAA-XXXXXXXX para ele acompanhar o estado.
A partir daí a submissão passa por estados explícitos: em análise, atribuída, em progresso, pendente de aprovação e, por fim, resolvida, rejeitada ou fechada. O técnico não fecha sozinho: pede a conclusão e o gestor aprova ou devolve. Cada mudança fica no histórico da submissão.
Atribuição automática: uma regra de capacidade
Escrevi o serviço que decide quem trata cada submissão. Não é um algoritmo complexo, e isso foi intencional. Procura um técnico do mesmo projecto, disponível, cuja carga actual mais o peso da nova submissão caiba na capacidade e que esteja abaixo de 50% dela. Se houver, atribui dentro de uma transacção e dispara um evento para notificar.
Se ninguém cumpre a regra, a submissão fica "em análise" e vai para o gestor. Preferimos uma decisão humana a encher a fila de quem já está ocupado. Dois comandos agendados completam o serviço: um tenta atribuir as submissões pendentes e outro reequilibra a carga.
Notificações e login multicanal
O serviço de notificações envia emails ao técnico e ao gestor na atribuição e no pedido de conclusão, com nove modelos de email. Cada envio fica registado, e um comando volta a tentar os que falharam. A integração de SMS ficou por fazer.
Muitos utentes não usam email. O login aceita email, telefone ou nome de utilizador, detecta qual foi escrito e normaliza o número de telefone antes de o procurar.
Perfis e permissões
O acesso usa spatie/laravel-permission com sete papéis: Utente, Técnico, Gestor, Gestor Adjunto, Director, PCA e Admin. Criei o perfil de Gestor Adjunto de ponta a ponta (migração, seeders, controladores, middleware e ecrãs) e juntei os antigos Super Admin e Admin num só papel.
Cada papel tem o seu painel. Fiz boa parte do frontend em Vue: painéis, galeria de anexos, formulário de submissão e modo escuro, além de correcções de produção como o erro 419 no primeiro login e a localização de projectos por província, distrito e posto administrativo.
O que foi feito por colegas
O esqueleto Laravel foi feito por um colega. Os prazos legais (10 dias úteis para reconhecer e 20 para responder, com estados "em atraso" e "a vencer") foram implementados por outro colega. O pipeline de CI/CD em GitHub Actions (lint, build e testes) também é trabalho de um colega. Os relatórios em PDF e Excel foram maioritariamente de outros autores.
Capacitação e números verificáveis
No mesmo período, a TechSolutions conduziu um programa de capacitação dos quadros do FUNAE em gestão de sistemas e plataformas web, para que a equipa interna consiga operar e manter as plataformas. Participei como formador; a notícia pública da TechSolutions está nos links.
Em números: 214 componentes Vue, 50 migrações, 7 papéis e 11 ficheiros de testes PHPUnit. O endereço de produção já não responde, por isso não há link para a aplicação.
Decisões técnicas
01
Atribuição por capacidade, com recurso ao gestor
Uma regra simples: só atribui a um técnico do mesmo projecto, disponível e abaixo de 50% da capacidade. Se ninguém cumpre, a submissão fica "em análise" para o gestor decidir, em vez de sobrecarregar alguém.
02
Observer que nunca bloqueia a submissão
Ao criar uma submissão, o observer regista o histórico, notifica e tenta a atribuição, cada passo isolado em try/catch. Uma falha de email ou de atribuição não impede o cidadão de submeter.
03
Máquina de estados explícita
submetida → em análise → atribuída → em progresso → pendente de aprovação → resolvida/rejeitada/fechada. O técnico pede a conclusão e o gestor aprova ou devolve.
04
Notificações com registo e nova tentativa
Cada envio fica numa tabela própria; um comando agendado volta a tentar as notificações falhadas.
05
Paginação no servidor testada com dados de carga
O painel do gestor passou a paginar no servidor, validado com um seeder de 500 utentes, 20 técnicos e 2 000 reclamações.
Imagens
01 / 05 — Ecrã de entrada do sistema de gestão de reclamações e sugestões do FUNAE
Tecnologias
- Laravel
- PHP
- MySQL
- Vue
- Inertia.js
- Tailwind CSS
Resultados verificáveis
- papéis de acesso (Utente a Admin)
- 7
- componentes Vue na aplicação
- 214
- tipos de email transaccional
- 9
O que aprendi
Numa equipa de nove programadores no mesmo repositório, issues numeradas e uma divisão clara de áreas valem mais do que qualquer ferramenta. E uma regra de atribuição simples, com saída para um humano, é mais fácil de explicar ao cliente do que um algoritmo sofisticado.
ODS

ODS 16 · Paz, Justiça e Instituições Eficazesprincipal
Mecanismo formal de queixas e reclamações: qualquer pessoa afectada por um projecto de electrificação submite identificada ou anónima, com prazos legais, histórico auditável e uma referência pública para acompanhar o estado.

ODS 7 · Energia Acessível e Sustentávelcomplementar
As queixas servem os projectos de acesso à energia financiados pela Enabel, para que a expansão da rede responda também às comunidades afectadas.
