Ponto de situação

ESG Lab

Disponibilizar uma plataforma de reporte ESG completa para PMEs, com autenticação, perfis de utilizador, fases F0-F4, recolha estruturada de dados, materialidade, estratégia, reporte, geração de PDF e relatório VSME simplificado, mantendo paridade funcional e visual suficiente com a aplicação WordPress original.

📁 ~/esg-lab 🌿 main 📅 Início 2026-03-18 📦 github.com/kwana117/esg-lab-nextjs
Progresso global
85%
Milestones
23/27
23 feitos 0 em curso 4 por fazer

À espera de

5 itens bloqueiam o avanço
❓ Questão única — F0 Autoavaliação
Aguarda cliente
textos por critério ou por módulo?** — Pedido em 2026-05-07. O pedido original ("falta texto de enquadramento de cada critério") pode significar: (A) um texto por módulo A1/A2/A3 — **já está feito**; ou (B) um texto por cada secção dentro do módulo (ex: "1. Alterações Climáticas", "2. Gestão de Energia" — 17 textos). O WP não tem textos por critério, portanto provavelmente já está resolvido. Se Beatriz quiser opção B, precisa de enviar os 17 textos.
VSME V1-V4 — textos de enquadramento** — campo ACF da cliente ainda tem lorem ipsum. Quando preencher, reextrair do WP.
Aguarda cliente
📞 Ronda 4 — F3 E2 forma
Aguarda cliente
Beatriz valida segunda/terça-feira (após 2026-05-12) se o formulário deve seguir a estrutura da app antiga.
Ronda 4 — Textos de enquadramento das 4 áreas VSME
Aguarda cliente
estrutura técnica pronta; falta conteúdo a fornecer pela Beatriz.
📞 Ronda 4 — Confirmar visualmente texto "contributo directo/indirecto" no D3
Aguarda cliente
cliente disse que está feito, falta confirmação visual em produção.
01 · Milestones

O caminho até dar o projecto como fechado.

Base Next.js + Supabase

Autenticação, perfis, roles, storage, dados de teste e estrutura principal da aplicação.

Feito

Fluxo F0-F1 implementado

Autoavaliação e diagnóstico com módulos ambientais, sociais, governação, enquadramento, cadeia de valor e ODS.

Feito

Materialidade F2 funcional

Stakeholders, matrizes, avaliação, tópicos materiais e navegação entre M1-M8.

Feito

Estratégia F3 funcional

Plano de ação, eixos estratégicos e statements ESG.

Feito

Reporte F4 + VSME funcional

Módulos R1-R5, VSME V1-V4 e geração de relatórios.

Feito

Ronda 1 de feedback da cliente

E3, R2, R3, R4, nomenclatura de partes interessadas e VSME corrigidos e publicados em produção.

Feito

Ronda 2 — análise do feedback Alterações_29abr

12 pedidos mapeados, plano em 7 milestones técnicas (M1-M7).

Feito

M2 — Bug fixes de selects (F2 M3/M5/M6)

Patch ao SelectValue (base-ui) com prop `items` para mostrar label do item selecionado.

Feito

M4 — Links MSCI/SASB em F2 M4

Hiperligações para Materiality Map e Materiality Finder acima dos textareas.

Feito

M6 — Selector de ODS em F3 E3

Chips de ODS 1-17 + migração `e3_ods_estrategia` aplicada em produção.

Feito

M3 — Cadeia de Valor + Abordagem ODS (F1 D2 e D3)

Tabela Fornecimentos visualmente agrupada com nomenclatura WP; D3 com tooltips Direto/Indirecto.

Feito

M1 — Textos de enquadramento (F0, F1, F2, F3, F4)

22 textos extraídos do WP (campo ACF descricao_da_pagina) e injectados via ModuleIntro em todas as páginas (excepto VSME V1-V4 que ainda estão em lorem ipsum no WP).

Feito

M5 — Refactor E1 Plano de Ação

`departamento_responsavel` (texto livre) por ação no E1 + `eixo_prioritario` (texto livre) por tópico no E2 (no WP eixo vive em `definicao_eixos_data`); render no PDF F3 (E1 antes não saía).

Feito

M7 — Reestruturação Relatório por norma VSME

`VsmeReport` ganhou prop `variant: "basic" \| "comprehensive"` com mapeamento estruturado para 11 capítulos B1-B11 e 9 capítulos C1-C9; dois novos cards na página `/relatorios`.

Feito

PDF parity — F1/F3/F4/F0/VSME

Replicado o pattern do F2 (capa banda + esg lab/scoring® + módulos com `F2ModuleHeader`/`F2Footer` + cards/F3KvTable) aos 5 relatórios restantes em commits separados (`6e03c15` F1, `75b0e93` F3, `3dc7712` F4, `470d290` F0, `6845c22` VSME). Fix global de orphan rows / título widow em `b0b8929` via `wrap={false}` + `minPresenceAhead`.

Feito

Ronda 3 — InfoTips F2 (M1/M3/M5/M6)

Componente InfoTip partilhado; tooltips do WP inseridos em todos os campos relevantes de M3 (Comunicação, Nível Envolvimento, Natureza, Mecanismos) e M5 (Enquadramento, Tópico, Subtópico, Caracterização, Descrição Impacto, Descrição Risco).

Feito

Ronda 3 — Autocomplete CAE/NACE (F1 D1)

CaeAutocomplete com 1144 entradas nível-5 do CSV WP; ao seleccionar preenche automaticamente Descrição CAE e Descrição NACE.

Feito

Ronda 3 — F3 E2 reescrito (padrão WP)

E2 agora carrega tópicos materiais de M7 e apresenta 1 card por tópico com Eixo Prioritário editável + readonly summary do Plano de Ação E1.

Feito

Ronda 3 — F1 D2 flow invertido (padrão WP)

Campo "Nº 80%" cria linhas automaticamente; "Nº total" é livre; idêntico ao WP original.

Feito

VSME V1-V4 — Reagrupados por B1-B11 / C1-C9

V1 (B1/B2/C1/C8), V2 (B3/C3/B4/C4/B5/B6/B7), V3 (B8/C5/B9/B10/C6/C7), V4 (B11/C8/C9). Mapeamento extraído dos shortcodes WP.

Feito

F4 R1/R3/R5 — Numeração WP aplicada

R1: 1.1/1.2/1.3/1.4 · R3: 3.1/3.2 + 4./5./6. · R5: 10/11. R4 mantém 7/8/9 + Perspetivas (sem número, evita colisão).

Feito

F0 — Textos por critério

Aguarda confirmação + textos da Beatriz (única questão genuína; ver "À espera de").

Por fazer

VSME V1-V4 — Textos de enquadramento

Cliente ainda tem lorem ipsum no WP; reextrair quando preencher.

Por fazer

Validação Ronda 3 pela cliente

Beatriz revê todas as alterações em produção.

Por fazer

Ronda 4 — Alterações de 08 Mai (29 alterações em 5 lotes paralelos)

D1 read-only + upload logo, sidebar destaque, 17 ícones ODS, refactor PDFs (capa empresa+NIF+logo cliente, header/footer partilhados, foto admin no F3), filtros admin, naming uniforme `NIF_Empresa_Fase_Data_Hora`, bugs VSME corrigidos. Implementado em paralelo Claude+2 Codex via worktrees separados; tudo merged em main e validado em produção.

Feito

Configurar Resend SMTP + novo design emails

Domain `notificacoes.scoringesglab.pt` verificado em Resend (DNS na zona scoringesglab.pt do cPanel). App + Supabase Auth via Resend (3000/mês). Novo design HTML branded com CTA bulletproof (Outlook VML) em `src/lib/email/render.ts`, preview iframe na admin `/admin/emails`. Página de preview pública para cliente: https://esg-lab-email-preview.178.104.242.232.sslip.io.

Feito

Validação Ronda 4 pela cliente

Beatriz/Carlos revêem alterações em produção (especialmente capa nova dos PDFs e ícones ODS).

Por fazer
02 · Próximos passos

Onde retomar quando voltar a este projecto.

Imediato

1
Mostrar ao Carlos/Beatriz a página de preview dos emails (https://esg-lab-email-preview.178.104.242.232.sslip.io) para aprovação do novo design.
2
Enviar documento `~/Downloads/ESG-Lab_Estado-Alteracoes_08mai.md` à cliente para validar Ronda 4 em produção.
3
Aguardar Beatriz: F3 E2 forma + 4 textos VSME de enquadramento + confirmar texto contributo directo/indirecto no D3.
4
Confirmar com a Beatriz no WP: a F0 Autoavaliação tem texto por critério ou só por módulo?

(1 minuto a verificar).

5
Reextrair textos VSME V1-V4 quando a cliente preencher o ACF correspondente no WP.

Riscos · Bloqueadores

Mapping VSME B/C best-effort

os campos de `f4_vsme` (`enquadramento/ambiental/social/governacao`) foram mapeados para os capítulos B1-B11 e C1-C9 sem normativo oficial detalhado. Cliente pode pedir reorganização. Mitigação: mapping centralizado em `vsmeVariantConfig` no `report-template.tsx` — fácil de ajustar.

Divergência estrutural Next↔WP no E1/E2

Next tem array de planos por tópico em E1 e form livre em E2; WP tem 1 plano único por tópico em E1 e tabela read-only em E2. Risco: cliente compara com print do WP e estranha. Mitigação: dívida técnica conhecida; refactor não foi pedido.

Bugs de selects podem ser sintoma e não causa

se rendering depende de estado inicial inválido, fix superficial pode reaparecer. Mitigação: audit de todos os selects da F2.

03 · Actividade recente

Últimos commits + stack.

Stack