Saltar para o conteúdo
Edson Francisco
  • 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.