Skip to content

FireRiskApp — Project Overview

O que é

Software web de avaliação de risco de incêndio em edifícios históricos. Método: CHICHORRO (FEUP) — sucessão de dissertações de mestrado na Faculdade de Engenharia da Universidade do Porto (FEUP).

Autores e dissertações:

AutorAnoVersãoDissertação
Daniel Martins2015v1.0Ver dissertação
Ricardo Ferreira2016v2.0Ver dissertação
Bruno Silva2016v2.1Ver dissertação
João Teixeira2018v3.0Ver dissertação
Rui Sobral2019v3.1Ver dissertação

Stack:

  • Frontend: React 18 + TypeScript + Vite + Tailwind CSS → Cloudflare Pages
  • Backend: Python FastAPI/ASGI + gunicorn/uvicorn workers → Render
  • Repo: joaopmteixeira/chichorro-fire-risk-app
  • App live: chichorrofireriskapp.joaopmteixeira.net · backend prod: chichorro-fire-risk-app.onrender.com
  • Backend dev (auth): chichorro-fire-risk-app-dev.onrender.com (branch feat/access-log)

Branches activos:

  • 3.1-dev — branch principal; sync automático de docs para FIRERISKAPP-DOCS
  • feat/access-log — autenticação completa (AUTH-01 a AUTH-05); pendente merge para 3.1-dev
  • fireriskapp_v3.1 — snapshot de deploy estável (cópia de feat/sidebar-layout)

Modelo matemático CHICHORRO

text
RI = f(POI, CTI, DPI, ESCI)

Cada fator global = média dos fatores parciais com valor > 0. (0.00 = "Não se aplica" — excluído da média)

Escala de classificação 3.1 (12 classes):

ClasseRI
A++≤ 0.50
A+≤ 0.75
A≤ 1.00
B+≤ 1.10
B≤ 1.25
B-≤ 1.50
C+≤ 1.75
C≤ 2.00
C-≤ 2.25
D≤ 2.50
E≤ 3.00
F> 3.00

Limite aceitável (RI_RIA): calculado a partir de POI_CC_Idade (período de construção do edifício).


Estado atual por fase

FaseDescriçãoEstado
1CHICHORRO 3.0 — migração e consolidação React✅ Concluído
2CHICHORRO 3.1 — melhorias RS + módulo intervenções✅ Implementação concluída (pendente teste e2e — C2)
3CHICHORRO 4.0 — modelo simplificado RF+Bruno Silva🔮 Futuro

Módulos implementados

MóduloSubfatoresEstado
POICC, IEE, IA, ICONFA, ICONSA, IVCA, ILGC, EF, EA, FA, PPP, ATIV
CTICI, VHE, VVE
DPIREIC, EI, VDGF, PE, OGS
ESCIGP, SID, AE, HE, EXT, RIA, CPB
RIResultado final + escala 3.1 + aceitabilidade via POI_CC_Idade
Intervenções34 ativas/passivas, conjuntos predefinidos, RI pós-intervenção

Próximo passo: C2 — teste end-to-end completo em produção e aprovação pelo João. Ver docs/NEXT_STEPS.md.


Fases de desenvolvimento

Fase 1 — CHICHORRO 3.0 ✅ Concluído

Reimplementação fiel da versão 3.0 (autor: João Pedro Teixeira) em React. Base: código legacy chichorro_old/ (RI_v4.html + POI/CTI/DPI/ESCI.js).

  • Arquitetura declarativa (definitions files) para POI, DPI, ESCI
  • CTI com lógica própria (inputs numéricos + física complexa)
  • RI com aceitabilidade por período de construção
  • Auth com cookie de sessão Starlette/FastAPI, sessão em sessionStorage, export/import de sessão JSON
  • Testes end-to-end em produção — aprovados

Fase 2 — CHICHORRO 3.1 ✅ Quase concluído

Implementação das melhorias do modelo 3.0 → 3.1, desenvolvidas por Rui Sobral [RS] na dissertação FEUP 2019.

Alterações do modelo implementadas:

  • CTI: VHE/VVE com Dispositivos separados por veia (B10 pendente no frontend)
  • DPI_OGS: 7 → 4 campos, nova lógica de formação e regulamento
  • ESCI_GP: novo campo ESCI_GP_Auto (tipo de detetor automático)
  • ESCI_EXT: novo campo ESCI_EXT_Formacao
  • ESCI_RIA+CS: novos campos ESCI_RIA_Formacao e ESCI_RIA_CS
  • RI: escala 3.1 (A++…F, 12 classes); aceitabilidade via POI_CC_Idade
  • Intervenções: 34 ativas/passivas, conjuntos predefinidos, /RI/interv endpoint

Referência de análise: docs/migration/V3_1_MATCHUP_MATRIX.md

Fase 3 — CHICHORRO 4.0 🔮 Futuro

Integração do modelo simplificado (implementado na v2.0 por Ricardo Ferreira [RF], melhorado por Bruno Silva) na base do CHICHORRO 3.1.

O modelo simplificado permite avaliação mais rápida com menos inputs, mantendo boa aproximação ao resultado completo.

Passos:

  1. Localizar código v2.0 (RF + Bruno Silva) em reference/chichorro-2.0-rf/
  2. Analisar como foi implementado o modelo simplificado
  3. Definir quais inputs do modelo completo (3.1) são substituídos/simplificados
  4. Implementar modelo simplificado no backend Python
  5. Implementar UI simplificada no frontend React
  6. Testes comparativos modelo completo vs simplificado
  7. Deploy

Referências de código

PastaPropósito
app/frontend/ + app/backend/Base ativa — toda a implementação nova vai aqui
reference/chichorro-3.0-jt/Versão 3.0 legacy completa (autor: João Teixeira) — referência histórica
reference/chichorro-3.1-rs/Versão 3.1 (autor: Rui Sobral) — referência funcional viva para matchup e migração
reference/chichorro-2.0-rf/Versão 2.0 (autor: Ricardo Ferreira + Bruno Silva) — referência para futura v4.0

Modos de trabalho:

  • active_build → editar apenas app/frontend/ e app/backend/
  • v3_0_legacy_compare → consultar reference/chichorro-3.0-jt/ como comparação histórica
  • v3_1_matchup → usar reference/chichorro-3.1-rs/ como referência funcional; implementar em app/
  • v4_0_research → investigar reference/chichorro-2.0-rf/; não alterar base ativa sem decisão explícita

Autenticação

Sistema de autenticação implementado no branch feat/access-log:

  • Login por username/password (env vars hardcoded para admins + tabela users SQLite para registos)
  • Registo com verificação de e-mail via SDK Resend
  • Recuperação de palavra-passe por e-mail (token 1h)
  • Log de acessos (login/logout) com IP e timestamp
  • Modal "sessão expirada" quando cookies são apagadas
  • Ver docs/HOSTING_OPTIONS.md para configuração de env vars de produção

Deploy

Atual

  • Frontend: Cloudflare Pages (auto-deploy do GitHub) · domínio: chichorrofireriskapp.joaopmteixeira.net
  • Backend prod: Render free tier (chichorro-fire-risk-app.onrender.com) — cold start ~50s após inatividade
  • Backend dev: Render free tier (chichorro-fire-risk-app-dev.onrender.com, branch feat/access-log)
  • E-mail: Resend SMTP · domínio verificado: fireriskapp-demo.joaopmteixeira.net

Opções para produção definitiva

Ver docs/HOSTING_OPTIONS.md para comparação detalhada de plataformas e preços.

Recomendação de menor custo: Railway (backend) + Cloudflare Pages (frontend) + Neon PostgreSQL (~€0/mês) Recomendação de controlo total: VPS Hetzner CX22 €3,79/mês + Cloudflare Pages


Princípios de desenvolvimento

  1. A lógica de cálculo permanece em Python/FastAPI. O React é só UI.
  2. Não alterar contratos de API durante migrações.
  3. Reproduzir regras de visibilidade condicional (visibleWhen) exatamente como no legacy.
  4. Cada fase só avança quando a anterior está verificada e testada em produção.
  5. Guardar contexto e progresso nos ficheiros de docs a cada sessão de trabalho.