From 26492c880c9e0e42a862b76cad498a6eb0c6ff91 Mon Sep 17 00:00:00 2001 From: Frederico Castro Date: Sat, 20 Dec 2025 06:53:45 -0300 Subject: [PATCH] fix: alinhar criterios 100% com documento PDF oficial Backend: - Reescrever criterios_pontuacao.py com valores corretos do PDF - Adicionar Blocos B e E ao enum - Corrigir Base/Teto: AVAL_COMIS_GP (40), COORD_COMIS_PREMIO (40), COORD_COMIS_GP (50), PROJ teto (30) - Orientacoes/Bancas agora sao selos (Base=0, Teto=0) - CONS_FALECIDO agora pontua tempo (5 pts/ano) - Remover codigos obsoletos (PREMIACAO, MENCAO, BOL_BPQ_SUP/INT) - Usar apenas BOL_BPQ_NIVEL, PREMIACAO_*_AUTOR, MENCAO_AUTOR - Atualizar ranking_store.py e validar_ranking.py Frontend: - Atualizar ConsultorCard e CompararModal com codigos corretos - Adicionar logo CAPES em PNG com transparencia - Ajustar espacamento do header e tamanho das fontes - Mapear pasta public no docker-compose --- backend/scripts/validar_ranking.py | 47 ++- .../value_objects/criterios_pontuacao.py | 282 +++++++++++------- backend/src/infrastructure/ranking_store.py | 21 +- .../repositories/consultor_repository_impl.py | 31 +- docker-compose.yml | 1 + frontend/public/logo_capes.png | Bin 0 -> 36955 bytes frontend/src/components/CompararModal.jsx | 6 +- frontend/src/components/ConsultorCard.css | 3 + frontend/src/components/ConsultorCard.jsx | 52 ++-- frontend/src/components/Header.css | 30 +- frontend/src/components/Header.jsx | 2 +- 11 files changed, 252 insertions(+), 223 deletions(-) create mode 100644 frontend/public/logo_capes.png diff --git a/backend/scripts/validar_ranking.py b/backend/scripts/validar_ranking.py index f926df7..a35efa3 100644 --- a/backend/scripts/validar_ranking.py +++ b/backend/scripts/validar_ranking.py @@ -42,31 +42,31 @@ CRITERIOS_OFICIAIS = { "CAJ": {"base": 150, "teto": 370, "tempo": 8, "teto_tempo": 80, "bonus_atual": 20, "bonus_retorno": 15}, "CAJ_MP": {"base": 120, "teto": 315, "tempo": 6, "teto_tempo": 60, "bonus_atual": 15, "bonus_retorno": 10}, "CAM": {"base": 100, "teto": 280, "tempo": 5, "teto_tempo": 50, "bonus_atual": 20, "bonus_retorno": 10}, - "CONS_ATIVO": {"base": 150, "teto": 230, "tempo": 5, "teto_tempo": 50, "bonus_continuidade": 20, "bonus_retorno": 15}, - "CONS_HIST": {"base": 100, "teto": 230, "tempo": 5, "teto_tempo": 50, "bonus_continuidade": 20}, - "CONS_FALECIDO": {"base": 100, "teto": 230, "tempo": 0, "teto_tempo": 0, "bonus_continuidade": 20}, + "PPG_COORD": {"base": 0, "teto": 0, "tempo": 0, "teto_tempo": 0, "bonus_atual": 15, "bonus_retorno": 10, "bonus_continuidade": 15}, + "CONS_ATIVO": {"base": 150, "teto": 230, "tempo": 5, "teto_tempo": 50, "bonus_atual": 20, "bonus_retorno": 15, "bonus_continuidade": 20}, + "CONS_HIST": {"base": 100, "teto": 230, "tempo": 5, "teto_tempo": 50, "bonus_retorno": 20, "bonus_continuidade": 20}, + "CONS_FALECIDO": {"base": 100, "teto": 230, "tempo": 5, "teto_tempo": 50, "bonus_continuidade": 20}, "INSC_AUTOR": {"base": 10, "teto": 20}, - "INSC_INST": {"base": 30, "teto": 60}, + "INSC_INST_AUTOR": {"base": 20, "teto": 50}, "AVAL_COMIS_PREMIO": {"base": 30, "teto": 60}, - "AVAL_COMIS_GP": {"base": 50, "teto": 80}, - "COORD_COMIS_PREMIO": {"base": 50, "teto": 100}, - "COORD_COMIS_GP": {"base": 60, "teto": 120}, - "BOL_BPQ_SUPERIOR": {"base": 30, "teto": 60}, - "BOL_BPQ_INTERMEDIARIO": {"base": 50, "teto": 100}, - "PREMIACAO": {"base": 100, "teto": 180}, - "PREMIACAO_GP": {"base": 50, "teto": 60}, - "MENCAO": {"base": 30, "teto": 30}, + "AVAL_COMIS_GP": {"base": 40, "teto": 80}, + "COORD_COMIS_PREMIO": {"base": 40, "teto": 100}, + "COORD_COMIS_GP": {"base": 50, "teto": 120}, + "BOL_BPQ_NIVEL": {"base": 30, "teto": 60}, + "PREMIACAO_GP_AUTOR": {"base": 100, "teto": 300}, + "PREMIACAO_AUTOR": {"base": 50, "teto": 150}, + "MENCAO_AUTOR": {"base": 30, "teto": 90}, "EVENTO": {"base": 1, "teto": 5}, - "PROJ": {"base": 10, "teto": 40}, - "ORIENT_POS_DOC": {"base": 15, "teto": 100}, - "ORIENT_TESE": {"base": 10, "teto": 50}, - "ORIENT_DISS": {"base": 5, "teto": 25}, - "CO_ORIENT_POS_DOC": {"base": 7, "teto": 35}, - "CO_ORIENT_TESE": {"base": 5, "teto": 25}, - "CO_ORIENT_DISS": {"base": 3, "teto": 15}, - "MB_BANCA_POS_DOC": {"base": 3, "teto": 15}, - "MB_BANCA_TESE": {"base": 3, "teto": 15}, - "MB_BANCA_DISS": {"base": 2, "teto": 10}, + "PROJ": {"base": 10, "teto": 30}, + "ORIENT_POS_DOC": {"base": 0, "teto": 0}, + "ORIENT_TESE": {"base": 0, "teto": 0}, + "ORIENT_DISS": {"base": 0, "teto": 0}, + "CO_ORIENT_POS_DOC": {"base": 0, "teto": 0}, + "CO_ORIENT_TESE": {"base": 0, "teto": 0}, + "CO_ORIENT_DISS": {"base": 0, "teto": 0}, + "MB_BANCA_POS_DOC": {"base": 0, "teto": 0}, + "MB_BANCA_TESE": {"base": 0, "teto": 0}, + "MB_BANCA_DISS": {"base": 0, "teto": 0}, } @@ -205,8 +205,7 @@ def verificar_criterios_codigo() -> Tuple[bool, List[str]]: for codigo, oficial in CRITERIOS_OFICIAIS.items(): if codigo not in CRITERIOS: - if codigo not in ["BOL_BPQ_SUP", "BOL_BPQ_INT"]: - divergencias.append(f"{codigo}: não existe no código") + divergencias.append(f"{codigo}: não existe no código") continue impl = CRITERIOS[codigo] diff --git a/backend/src/domain/value_objects/criterios_pontuacao.py b/backend/src/domain/value_objects/criterios_pontuacao.py index 27156ae..32e912c 100644 --- a/backend/src/domain/value_objects/criterios_pontuacao.py +++ b/backend/src/domain/value_objects/criterios_pontuacao.py @@ -5,8 +5,10 @@ from enum import Enum class Bloco(Enum): A = "A" + B = "B" C = "C" D = "D" + E = "E" class TipoAtuacao(Enum): @@ -33,6 +35,7 @@ class CriterioPontuacao: teto_recorrencia: int = 0 bonus_recorrencia_participacao: int = 0 teto_recorrencia_participacao: int = 0 + gera_selo: bool = False CRITERIOS: Dict[str, CriterioPontuacao] = { @@ -86,17 +89,21 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { ), "PPG_COORD": CriterioPontuacao( codigo="PPG_COORD", - bloco=Bloco.A, + bloco=Bloco.E, tipo=TipoAtuacao.FUNCAO, base=0, teto=0, pontua_tempo=True, multiplicador_tempo=0, teto_tempo=0, + bonus_atualidade=15, + bonus_retorno=10, + bonus_continuidade_8anos=15, + gera_selo=True, ), "CONS_ATIVO": CriterioPontuacao( codigo="CONS_ATIVO", - bloco=Bloco.C, + bloco=Bloco.B, tipo=TipoAtuacao.FUNCAO, base=150, teto=230, @@ -109,7 +116,7 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { ), "CONS_HIST": CriterioPontuacao( codigo="CONS_HIST", - bloco=Bloco.C, + bloco=Bloco.B, tipo=TipoAtuacao.FUNCAO, base=100, teto=230, @@ -121,18 +128,18 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { ), "CONS_FALECIDO": CriterioPontuacao( codigo="CONS_FALECIDO", - bloco=Bloco.C, + bloco=Bloco.B, tipo=TipoAtuacao.FUNCAO, base=100, teto=230, - pontua_tempo=False, - multiplicador_tempo=0, - teto_tempo=0, + pontua_tempo=True, + multiplicador_tempo=5, + teto_tempo=50, bonus_continuidade_8anos=20, ), "INSC_AUTOR": CriterioPontuacao( codigo="INSC_AUTOR", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.FUNCAO, base=10, teto=20, @@ -141,23 +148,16 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { ), "INSC_INST_AUTOR": CriterioPontuacao( codigo="INSC_INST_AUTOR", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.FUNCAO, base=20, teto=50, bonus_recorrencia_participacao=5, teto_recorrencia_participacao=10, ), - "INSC_INST": CriterioPontuacao( - codigo="INSC_INST", - bloco=Bloco.D, - tipo=TipoAtuacao.FUNCAO, - base=30, - teto=60, - ), "AVAL_COMIS_PREMIO": CriterioPontuacao( codigo="AVAL_COMIS_PREMIO", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PAPEL, base=30, teto=60, @@ -166,107 +166,62 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { ), "AVAL_COMIS_GP": CriterioPontuacao( codigo="AVAL_COMIS_GP", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PAPEL, - base=50, + base=40, teto=80, bonus_recorrencia_anual=3, teto_recorrencia=20, ), "COORD_COMIS_PREMIO": CriterioPontuacao( codigo="COORD_COMIS_PREMIO", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.FUNCAO, - base=50, + base=40, teto=100, bonus_recorrencia_anual=4, teto_recorrencia=20, ), "COORD_COMIS_GP": CriterioPontuacao( codigo="COORD_COMIS_GP", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.FUNCAO, - base=60, + base=50, teto=120, bonus_recorrencia_anual=6, teto_recorrencia=20, ), - "BOL_BPQ_SUPERIOR": CriterioPontuacao( - codigo="BOL_BPQ_SUPERIOR", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=30, - teto=60, - ), - "BOL_BPQ_INTERMEDIARIO": CriterioPontuacao( - codigo="BOL_BPQ_INTERMEDIARIO", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=50, - teto=100, - ), - "BOL_BPQ_SUP": CriterioPontuacao( - codigo="BOL_BPQ_SUP", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=30, - teto=60, - ), - "BOL_BPQ_INT": CriterioPontuacao( - codigo="BOL_BPQ_INT", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=50, - teto=100, - ), "BOL_BPQ_NIVEL": CriterioPontuacao( codigo="BOL_BPQ_NIVEL", bloco=Bloco.D, tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, base=30, teto=60, - ), - "PREMIACAO": CriterioPontuacao( - codigo="PREMIACAO", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=100, - teto=180, - ), - "PREMIACAO_GP": CriterioPontuacao( - codigo="PREMIACAO_GP", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=50, - teto=60, + gera_selo=True, ), "PREMIACAO_GP_AUTOR": CriterioPontuacao( codigo="PREMIACAO_GP_AUTOR", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, base=100, teto=300, + gera_selo=True, ), "PREMIACAO_AUTOR": CriterioPontuacao( codigo="PREMIACAO_AUTOR", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, base=50, teto=150, - ), - "MENCAO": CriterioPontuacao( - codigo="MENCAO", - bloco=Bloco.D, - tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, - base=30, - teto=30, + gera_selo=True, ), "MENCAO_AUTOR": CriterioPontuacao( codigo="MENCAO_AUTOR", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, base=30, teto=90, + gera_selo=True, ), "EVENTO": CriterioPontuacao( codigo="EVENTO", @@ -282,72 +237,193 @@ CRITERIOS: Dict[str, CriterioPontuacao] = { bloco=Bloco.D, tipo=TipoAtuacao.PARTICIPACAO, base=10, - teto=40, + teto=30, bonus_recorrencia_participacao=2, teto_recorrencia_participacao=10, ), + "IDIOMA_BILINGUE": CriterioPontuacao( + codigo="IDIOMA_BILINGUE", + bloco=Bloco.D, + tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, + base=0, + teto=0, + gera_selo=True, + ), + "IDIOMA_MULTILINGUE": CriterioPontuacao( + codigo="IDIOMA_MULTILINGUE", + bloco=Bloco.D, + tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, + base=0, + teto=0, + gera_selo=True, + ), + "TITULACAO_MESTRE": CriterioPontuacao( + codigo="TITULACAO_MESTRE", + bloco=Bloco.D, + tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, + base=0, + teto=0, + gera_selo=True, + ), + "TITULACAO_DOUTOR": CriterioPontuacao( + codigo="TITULACAO_DOUTOR", + bloco=Bloco.D, + tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, + base=0, + teto=0, + gera_selo=True, + ), + "TITULACAO_POS_DOUTOR": CriterioPontuacao( + codigo="TITULACAO_POS_DOUTOR", + bloco=Bloco.D, + tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO, + base=0, + teto=0, + gera_selo=True, + ), "ORIENT_POS_DOC": CriterioPontuacao( codigo="ORIENT_POS_DOC", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=15, - teto=100, + base=0, + teto=0, + gera_selo=True, + ), + "ORIENT_POS_DOC_PREM": CriterioPontuacao( + codigo="ORIENT_POS_DOC_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "ORIENT_TESE": CriterioPontuacao( codigo="ORIENT_TESE", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=10, - teto=50, + base=0, + teto=0, + gera_selo=True, + ), + "ORIENT_TESE_PREM": CriterioPontuacao( + codigo="ORIENT_TESE_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "ORIENT_DISS": CriterioPontuacao( codigo="ORIENT_DISS", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=5, - teto=25, + base=0, + teto=0, + gera_selo=True, + ), + "ORIENT_DISS_PREM": CriterioPontuacao( + codigo="ORIENT_DISS_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "CO_ORIENT_POS_DOC": CriterioPontuacao( codigo="CO_ORIENT_POS_DOC", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=7, - teto=35, + base=0, + teto=0, + gera_selo=True, + ), + "CO_ORIENT_POS_DOC_PREM": CriterioPontuacao( + codigo="CO_ORIENT_POS_DOC_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "CO_ORIENT_TESE": CriterioPontuacao( codigo="CO_ORIENT_TESE", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=5, - teto=25, + base=0, + teto=0, + gera_selo=True, + ), + "CO_ORIENT_TESE_PREM": CriterioPontuacao( + codigo="CO_ORIENT_TESE_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "CO_ORIENT_DISS": CriterioPontuacao( codigo="CO_ORIENT_DISS", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=3, - teto=15, + base=0, + teto=0, + gera_selo=True, + ), + "CO_ORIENT_DISS_PREM": CriterioPontuacao( + codigo="CO_ORIENT_DISS_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "MB_BANCA_POS_DOC": CriterioPontuacao( codigo="MB_BANCA_POS_DOC", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=3, - teto=15, + base=0, + teto=0, + gera_selo=True, + ), + "MB_BANCA_POS_DOC_PREM": CriterioPontuacao( + codigo="MB_BANCA_POS_DOC_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "MB_BANCA_TESE": CriterioPontuacao( codigo="MB_BANCA_TESE", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=3, - teto=15, + base=0, + teto=0, + gera_selo=True, + ), + "MB_BANCA_TESE_PREM": CriterioPontuacao( + codigo="MB_BANCA_TESE_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), "MB_BANCA_DISS": CriterioPontuacao( codigo="MB_BANCA_DISS", - bloco=Bloco.D, + bloco=Bloco.C, tipo=TipoAtuacao.PARTICIPACAO, - base=2, - teto=10, + base=0, + teto=0, + gera_selo=True, + ), + "MB_BANCA_DISS_PREM": CriterioPontuacao( + codigo="MB_BANCA_DISS_PREM", + bloco=Bloco.C, + tipo=TipoAtuacao.PARTICIPACAO, + base=0, + teto=0, + gera_selo=True, ), } diff --git a/backend/src/infrastructure/ranking_store.py b/backend/src/infrastructure/ranking_store.py index 3de58a2..c41d259 100644 --- a/backend/src/infrastructure/ranking_store.py +++ b/backend/src/infrastructure/ranking_store.py @@ -42,33 +42,14 @@ def extrair_selos_entry(detalhes: Dict[str, Any]) -> Set[str]: selos.add("BPQ") for prem in detalhes.get("premiacoes", []): - papel = (prem.get("papel") or "").lower() codigo = prem.get("codigo", "") - if codigo == "PREMIACAO": - tipo_prem = "GP" - elif codigo == "PREMIACAO_GP": - tipo_prem = "PREMIO" - elif codigo == "MENCAO": - tipo_prem = "MENCAO" - elif codigo == "PREMIACAO_GP_AUTOR": + if codigo == "PREMIACAO_GP_AUTOR": selos.add("AUTOR_GP") - continue elif codigo == "PREMIACAO_AUTOR": selos.add("AUTOR_PREMIO") - continue elif codigo == "MENCAO_AUTOR": selos.add("AUTOR_MENCAO") - continue - else: - continue - - if "autor" in papel: - selos.add(f"AUTOR_{tipo_prem}") - elif "orientador" in papel: - selos.add(f"ORIENT_{tipo_prem}") - elif "coorientador" in papel or "co-orientador" in papel: - selos.add(f"COORIENT_{tipo_prem}") for orient in detalhes.get("orientacoes", []): codigo = orient.get("codigo", "") diff --git a/backend/src/infrastructure/repositories/consultor_repository_impl.py b/backend/src/infrastructure/repositories/consultor_repository_impl.py index 99149d7..25f5250 100644 --- a/backend/src/infrastructure/repositories/consultor_repository_impl.py +++ b/backend/src/infrastructure/repositories/consultor_repository_impl.py @@ -330,23 +330,12 @@ class ConsultorRepositoryImpl(ConsultorRepository): nome_lower = str(nome_premio).lower() tipo_norm = self._inferir_premiacao_tipo(f"{tipo_lower} {nome_lower}") - papel_lower = str(papel or "").lower() - is_autor = "autor" in papel_lower - - if is_autor: - if tipo_norm == "GP": - codigo = "PREMIACAO_GP_AUTOR" - elif tipo_norm == "MENCAO": - codigo = "MENCAO_AUTOR" - else: - codigo = "PREMIACAO_AUTOR" + if tipo_norm == "GP": + codigo = "PREMIACAO_GP_AUTOR" + elif tipo_norm == "MENCAO": + codigo = "MENCAO_AUTOR" else: - if tipo_norm == "GP": - codigo = "PREMIACAO" - elif tipo_norm == "MENCAO": - codigo = "MENCAO" - else: - codigo = "PREMIACAO_GP" + codigo = "PREMIACAO_AUTOR" premiacoes.append(Premiacao( codigo=codigo, @@ -368,16 +357,8 @@ class ConsultorRepositoryImpl(ConsultorRepository): nivel = dados.get("nivel", "") or dados.get("categoria", "") or "" area = dados.get("areaConhecimento", "") or "" - nivel_lower = nivel.lower() - if not nivel_lower: - codigo = "BOL_BPQ_NIVEL" - elif "1d" in nivel_lower or "2" in nivel_lower: - codigo = "BOL_BPQ_INT" - else: - codigo = "BOL_BPQ_SUP" - bolsas.append(BolsaCNPQ( - codigo=codigo, + codigo="BOL_BPQ_NIVEL", nivel=nivel, area=area, )) diff --git a/docker-compose.yml b/docker-compose.yml index d999c7b..1e21a73 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,6 +41,7 @@ services: - VITE_HOST_ATUACAPES=${HOST_ATUACAPES:-https://atuacapes.capes.gov.br} volumes: - ./frontend/src:/app/src + - ./frontend/public:/app/public - ./frontend/index.html:/app/index.html - ./frontend/vite.config.js:/app/vite.config.js - /etc/localtime:/etc/localtime:ro diff --git a/frontend/public/logo_capes.png b/frontend/public/logo_capes.png new file mode 100644 index 0000000000000000000000000000000000000000..622e45f6be4bd50dee17680fdf87c6067d2af27f GIT binary patch literal 36955 zcmX6^19W6f(~dT_ZEvu#ZEIsE6WdNUp4hgtvCWM($;P&AJNf7R{yB5cJ=1gVsqRu& zJyji{tSE&9j}H$928JXfEv^a%1}+P_SYe?-BiULRzd<)B3lRkoFtGYKgm>d_px>mX z(y9tzVBXYVV824Zz+OQ^zmCDc+E{~zh9A6Z_I&Vb?Mg?(*%@s0+~y|rF@1;h zV3dhBl7;GtgN$S1oqb>Gq~34Fpcd9LkzCe|?DRg*LP0eu}I@ zsx*ArOKJ<>8>opgiu+jf8_-hB(7$x*wr6MtMi#J z?*#`%yX$y;jGK>&Y!snp0%>LFdd1YTu9tEL?AQ!V|Mk~BL;jB_FP%>gm`!gA&o&{- z3YB(JX=T!YfEQ3493f?a_K=pS!VaN=A4!Sw$K(pU4VCJf-UR_&DZ2KG9^~yS%6Hp8 zii@#~i%HDh-Pk(x$Oc+sWjG(ecIio@G1yQxSo>fCm-(*jnb=CC)4vW|TRqjV1)cNIjvz>pcV=Vuj-Oaa1JfpC z0kj!E_$5pN*_%!&^Xj`hPi@<;U@(Un zq9Atb?o9-x@-Bbb;sjHta@s_V8MLxO$Te$wv@fZ+MU~E|)ff|M; zRbNU0%V$8tp{;n=qK3xBuP*D^^9h_WK|1u?>C(VF0 z!i|wuW!y=fpfn|Ld~TW6)0a6owdU96Sl&R}>{csrZiW`t0nc`XvDLjQ*&5{G?y|_& zdi}I<`xKg<2fMjWgF3xBOgZy6`hy1Tu+gR45lxp&-3gP{3nSEXV6-0%V$5&ut~ZcR z5lx=stL6U8qpqObQvjL}S(_mA4|8yL*}%=GskC^8kL1i?h%_YvInizP0!t^$Y+uMFClH;7jyG2QK*B%ik>|rYZJ|HE zYc=4Wd+guIi8a}Pl$kuy8#vvPhzctx8qPu;#81453DHg6yRR`{du3!-Pfc1W%FwJ; zRGywPIta=MaC3*7w+j@jO~CVu4>G|hU#qzJ6p)deoc4OKo{RgBjD1&&<2O^k4(`WL z4lkq%eqxW|KrLGzGTlhNgP`adNtGmyK8>K5@w(;IS=GkCOoc3&afjWZ@x(SZBx|mW zVGfXF05t8pep+AM;kg50<2~7s^{Y?n-`a%=0cSrC<`YF+tKm7?Q>DjE0B5W%OdG#S zHB@`Z$G$P25z=Kmvi~R9m~>W{ip5cRzHXGuXg?=UkcS`$ru9LCGG218+zOk`#FtbX zC(`h0mSXiUuXNC=aCkKn(2zoMagdpHY3o0IDP>du8K#vOzcy-lxT*bke*PA>-buJo zy@E&!HU(^_AST;A)TlUCSWB4l966K~i>|+ZQc{|xzQ1+v{!pI7&JKdoj|#=@ZWO>cKju&oPuO!xjc`?f<5SB}sQ7){RhGwrV%=(Ctl~z?! zQX0DRM)1C8Ip_XAZ^UM5G0-q2uGm!zbMg&l`<^Hk#0Sbw5A6(gj_A~NY5rS^h+|*; z@2Sc?&fo8dWzwP9{$t->x*Hz5rY;_j3-0B=fqEVk@%q%yo!<$MCrXK7_~?g7A054=U`Q%-L2_rf%{QE&J!_PCpm0oAzb@ zFd7!v+^sy%!CP~2)i1$8w<>X6nEkg>7}i~|=LfYw9+dqgHC7^v)fuhxJzjsO!`8nl zF}0MtUy0)9a*JPeK|$aXKyrTHM62%@ATP+9esUx>M4uoNa2CaUgnE8Sp<)}1HW=F- zBC$kHxmOAN)=P=@5sf6oSY+;kF;LoXT9)C?$`U#Yz;QfYm{zU)0XRkNT9Gn!AquiR zStzJn0`V1ZOPK$bqkdZIXO+&sif<2y%WK;YHVOn8>7rH*QQUVjAmxlPev27Sa)aPp zk_VLJ59m$(K%5`sOuV^*>NORLs80Wvi{+z=Z8Hv%Tewj3J^W{|EFhzdv~wu-*duWwO7`* z`vUnioFo8~WrLr1ewJU*EXmrFA%5?|g73Ms+~8V&J&ZK*di`Ova#R{953M4F#IXI{6vmzY$~*mP~evx1QN;J%?H6K)6DY?(Hs*s zNOfExB#98a!^B)-V)~P4;!{2FHAcXtBWrU8q?D5$C<_hIto?%{)wix!o00B`5D5HP zFHB6}OJrzv)^Uth_(Rd=q>^$2@HLkD|H?}8q13v~KbxEEpj6Z1R$aS69G)W(zMwgw*1KZi{e9~GSR-|iZ@V9!cRtErS zq*)3^x8a0NkPMzGeJ0=CpVq7s)MwwPzcrDE912~@Alqn0dajT-yLDz zp2g0@L^7E=2X^3B(r1E#|A|W5tddwglJ!ziSmr4WafVXci$ulZzoU}xS!nW0>>!ma zW@CMWujAFf$K`}n8s-7%KdQJ~XSb39dpyuzvTo;F3zNRIxf5_ik?X?91i4#*m&`&C zZoF5S7LSM6;jw*rV-AfR1;Yd?C#c)=H3 zh2CuSciG-Gad>f);U7H?6*2Z_Vnz<;y3;emV;+Xdqqr>hA1vXU)H%sm(Cbe|&|ZGA z{Tc4qk#@pw>!EhPGONh&ebZ7ik6sQ2sP2isLE+Jv-!x7R^VeSHvvGqZ9WbB)4zepC(if zEw4b}MU^=XqBL3tps9exNw7NG;;yJ05(M2Bh-`7W?%G3jw$D0%mIH&*ND|Dk1&^4q zm=|5>;^Y}CsXDtRLz)E)6{MWL#;ol5j3}7fUH7xpv|&jA_Zg4Qrc>cn6qTd3{Tz}Z zKNW3huWQftY|L5KL-yry7s0&H5OdQ~xxm(L7%wzR`8GhWZHujkQPbnkTfN+c2cb? zmNbiO*8ZN%4gS&GWAJ5c_xl|9&s_-}hIASarLiU{W=ng2mT2Y7p;GB)^-3)jQIaFT zvhxoQ=k);oRiSFeojt#n9*D|S|D9K3Ja;NjiCnOfRu$ByYJYBUf#m>YAYNKT?c7}} zzfcsKO>sFvX#wS$`?e9?)lgncC7EH%BRgJeqz z+D$9S;8|v!kxpAO{RT0|Hq!kuj5f%*A9h5YeexpME|T4O+%1pkZ~jh&WD*zIpTXP{ zF8+H+;;qRwHP>A}f`WO_b-4ySP<9s6)GNcmb~~0l36mn|yO7B;Q4T#GeKNUT<;yLh zTUL;$Sd-!}15@?rfU~Ctsn415Mk_jRH;v#uK2%orw_KslPdmq11?{WDb$%#)Ic_`} zBU(@*)^i@XVT!CRvC4C5^LAb-Ws}wRONuQc#>y>v``dDal%`(AIQIid9KSq0No%6P zfhK}sI})mTMBdukI5%m0p)(*Ib&n{n;OS8nI5 z?NpV$#c$j}oagSX9l%3#)W=v}o1L}_4i%Nz7kdIX4pxwQ!{Z+7H(NAlV3c7M zC+kj_;c*7&Y@Vfrm)=CI5R-3nFc`E|MBQ83V~h6L0dMf-IS6Cwo&dipVv&Znu`LeU%~?E^`00S-&v$4*(RU zai8UalFMGJpnEvJBlZkrx%s~t0kL%RDkr#B~BS04&!!c%g` zcqt(p)1cIP_YW$`qn!3I65A3<6W+kis1HZ{ljeiyzGMrKV}?>;*(gscvVn80PPDW{ z8(p?w*YK5k7?x#)PvrMV0BzO1%`55J8q_(*q}aD;mVarA>VEwz_UM|QH7hA%}rx6BH$U31y3UGKX($O*_Qck2hvFg~$S4Lh(X4bU_U{OQuc)pcteHJwO>k#+q-O8m1OAkc|d4`vYvNS>@F>d8R1~&Jl4>LIp;qc zb#^(SpBOInypp?ihoYif_^_WX$MH~P5ww(OCAikJN(}Sztec2U zM)h2#9mXcc}rsA(0BbrVDx+@ z%d-t7vKlk15vC(IjFQL03(EQ!-`ZJVX4{5cy?gBK$(CHe&|<{`BxP<3!EZV47FAl^h}@sNPg~eouXac?hVX5A z&io&~{{2!5r;`_2iZB@$mV2aXeG;A@B(<#}D>S(<{xxMe#h38u0ajE*y@+A&pHMoc z`Fx+i3ja#r`&2=fd@*J)(%+(q6;8WqmP9)G!7`-LfQwE(r6n z0v4|KbIwQ)YogoxkKtAMvFUM?xeLchY2C$5rfj#{Aehyn)xBtP-x!dbd@H&J5QPk} zAZecj(`qZ2{dhV1tG4vx{zsUK(tI!WN<-pd=7HsCig=K^uWMc&@qoI&XXD#~-z{PJ z1|`b@CbM-Hm$twNDePXo&oC*Fh>yeU7*1QxUn&2S%x!#DDZ^bSUCo70LCsB}VExS# zmi=!uUlk2rD2$QIglK(?WMWr3osztJ1>bSLl@nCI5}FL-5VsH_dfC{PEr& zp{xf511elRqs&ARG-r-glP9#P=uk83Yi$FEoJsm+#BSE~sHA8c(KR2kly&Ll0WAH) z)m<*S2wr|}iwx%mZn@5^g`V|xvVfv$XP1%A%fZJ zVQ^e6dI4Zg4xaE~NBJQZ&U3Wh<939V4zol<;j)NpOD3|d&O=)lLIiAlB-cJeOG7|( z(0}AfpLT@I(G+N5x#~+|GI};J02{D6*CP1_!V1g9ub^jp}{sI(=ai z3G|x_&NO~h!4_i4w6xfSpPZw0)C^5G>+B{_mET;!vHMHq`wP?>EQsgTLsw$E=FxKz zIG(y;H+Vl%7j1*t)~wLBBuF<@ZfyRhwgEQri>};`r1O{MhAV{)U0ocC@>rr*z3Tk! zy6oO_;tbJmj@hX#ih|0-hbEVH#=OQrVn>bRG_j1KZK2M#QYeQLib(;7 zc$gRzMfQ&CK=n9m;;aueK5oF*C51kJ|n1l^0!duqETh7in?m*CQ3^tZZzL0Jx(UqzW zt1-p}-%VIJUKP!(?4`!j9rN*6P~jKfd$Vt#b-gaBd(}<%1n_DLJPl^JQ*ti-1W=Xf zpWEP8R7oC{Alzh~)@0tYVP}bux4gj}{Py_=XyKqF>>SY^0*`uv?LXlIAL5(_YsY{y zK}cMeX80+|UI!QM@O{)1i-W)hmSb^m!m7~GD1Acir~iwv*@7Ic~&o-o7FaWVx`rFELQcO|=N( zQG!{HDoDCaR6pAo3|+?F#F@Hd6!7oUd%kgUf7JW3bdI1E(%8h(O9!uti|c$nuudoX zqgn&MEfr9uQHTwmrmS#w(Rv6Hy1Qp7KjWR8U=>N_*LPt9{$y#ahF z7&%%S>^9Dp1ypkRE6-eOvNu^V;#6>1wF^vA!nJ6#{t@%+C-0-893=s!}l1jmC{QmYg4ifIzx~oo7Bwu{p(UYn@>fzkB8@FfWonY5Oe3A&MDr zp=>De$g%*=E|4Z{C)vKf*uTcq?sRl_)+-|~6KF91!nl+zGwQQl$15|fk6D+9&_$XD z7`^$CG0LG0e&2?kTzKFgGl~4pXd82H|@jyvx*>&`3SsflEsc?o*MfV zWU_ASKF?Ex9^w7tn(nn^wlhW@ITUulgdc@pLfkT6rp3c7H8I6IlwvW_)aF zu^QEH*_*0F&SAyp{Q6@*)F%VaHrcA&IT}uhqsm?mD?&?#_I)U421kXy@5gKc1@e~?ZLwiAZ7Vj4=g^&3)=Aexn_`M zE6n=&U15!BFL$7)5D?OzYSO^8W27+0ENc4yLUIuWwR`LwwYA!Wg^Vi_SHuFj(cdZ&erAlt;*-*Vn>w zc8U3|Jasu*L5e+v9^`rGcM{%sfI#>k@4p13r-WcY+0G!R9+hU28M}tw1Q&C+h-G)f$zqzxXXz`qrQkXwn@?YRM)?6Ncs{ApxHB0;=N^ODnwasYV>z{P_JI(h?V|H zr9waA51_Pa_n@Hr#z)|eiV&bAcfrB$xDH`%X#C@eS`GJ0mHP<<`jJa*0LXTqjGgX_ zEtMTi3Iaj3JQZ8NAJN%cFATPJ-ozffGkQ0C`0*q>NJn}2=~quDY-K8AEKLWJvEP_1W+NUD&`-o7RPkw%huFvYF{ivez#df;IN1;gVY z1dVL@o;u6_GefKv&ZV%`rsZotX}i*5=Uxh7^umQ#aqG9VtU(sPt{gNF>ay5-K&Y;> zh~Lu}2W^Zmt*@fCftJ{rx~9n`J~`XnFRx|@6mFp*_yKz#O)D0w_b+rQ5Od+b_u2-~ za6hxca?(fVaD+E?=_Vxq%VFy}rCEO`T_E@jq-o4}i)9V1$?2(-=a)3u&Q+WTpuodC zh{++2>=4Bi-%BLl#`A73ZyLUdvE5ulh$_^o8h&Ddl9j%4$elElPJ=8Gf1;`vN%OD9 zCrZXI`l{GbJ9Oa_oe;N+1Cmb}O~ zw3Wzjk#*N6=&QD8ZGMh^|st}lsZ^qnW&AF)s^m2vsr5PjRZuI?e! z$vdC|HV)P~-o7JuEnCKoS|wrrrHAIA`*9~qkfR+;2+4e*ac$Vq9;*ryIGc4K{QF3h?LMKg6 zqsdB3h4X-~)|Vfz->^aSfDcpR`XdHiSV2N`E!k;6@Nh+Y)w{KT_7J|qR*y|I|C{Xf z68*W;@yWBZ!-`A-I}rL%#n7FHO;M|VPqVMnBSUmyCEcA@xQg# zFx&B!X6KiLkuWF{$<({|7onuc!Yu&zWh%okK7<&%Q8RNKcEaw_bFq^B0jZ{)A+blsZ2U z0WjHJrglof+|(Zh(K0K($&Pr^;&X$AdjxIYE2J>A7-y0m;7xz7#eXXOfUKSV`M?^N z-IWk68azB!GZV(f98xVuWv=%F(&6z!izwLr)XTasGVFG){pdQb-iH+X+^FE+70TM; zA1W7`gxmlj?6*43CQeF>EKqP&R=-Qtsy!l7asWbbwvUKK6bu;2Q& zIdO6Kd^~Rg|1sxTvN66L7ZP(uFY!; z8FTC=eBjCD8NVGUGk??}6|Ex@XkTlV%P{)PKot8#lq$e%zDV;7W z^>q&b4D7*RkL|U)Q536ra6yF8bid9@0CHZf87&)FA&l|7mc+q{|jgDBejr$I+ zIrO8u?^GUT_A{likrw`U`Wx#-)ke!Kxb`d?H(9sZK_ZZR%z(6qd2s1N*rzqWbsEZrEM6g3&ioax~lH!RD@bEOM zZ7;tJ*A4Z(!Bk3AjZOR{M#JitD>q1P2Iq_zJeJOiDzfov!<7%g@RiS=4=jDb`>xr?-0Ci|**@Q** zBet}!`(^X^(RqMzu3&AkZs3B!WZ_X9IxcFJs zmAl@9<$Fi|v-%_(*{6S8xphHotG?CviEz#OC^|HCPT3#3F;0K52ZCKa!^Eh;wCW3- zlW{RVSr)tdhG&H;j|})A?TlQQJYyb22aDcN0@dlm>*aT=oJ64g?vIhj5MI%ob1rtv zBrhbSxUoo5?}MPiAf~$6$q0H_bu8X$YsSa*!4RqcONVyK6M}xJgO(`ZJMxtZpIN%N zE7fNQg4a{*Q3P~Rj(a)Mk0bx`4ch|Obu8|=NfBE!^CZwCF)0=-d+8GLY_RnASF%9M7CN{q#=DCQL9ZU=O8Dg|1q zgW;qke(N;iYQ72s z5r%u7g|n%{^CE1=4?13~?|ijtmmgf7SBeSRX%qcfcOI0#-7GwkZknM8CJ+CJ^_qpy zB~sf7A2<{-tJ@vM5MZmY?wW$;Co?LRymr`DObRP4i_EzM0>ymL?N|Ght`^xorOWje zcvcI%)*i7^1>%sDdwjnkUwHzk9&D&7+o7WTI4CS?4!iku>5?_OP`ag*J{aXZ&St~# zI%FxY;Satu0gnC8+IRLRamK!Kvp26_d{M&{X}Y%s_cacae_~`=ZMq|SOuk0yp_Icl zCS^4daS(h_rTcGo9QeG(d||3si>tyX6yJ05NHPGi8CrI@eUtE9lu-wk`vgZS-`8dA zqt`nSBccDKuQc20YQ`?`d{dFNBdMU(Nk}G4^?hbZItuw>aQ<{D=(=ZIz7}I??DaGmj5BNW95~Z^O(%?BWpOR*q!wFmt)W0@P|bvBtCm zY8Jbh9a%e4m6u=58it=%j~|3yWXx95+2s1GfzY5AM0)9)Xe`o{zbv^UOE6Vx*ivu1 ziA_yheiW6hID~^Qq?^pAPM&7BCyZ z;_qAL0zCLUqAWM)Mb=yul$N#jQKX_H(5Bm~5%b?&Y3(%PGk=jk&obN4^uy(ahEgHFi6$qnV(Ll4o&4w-JoEhz2O;=Lk!Jx|zg zl$ubqX*kn*#9P*;RdDKJqU@C%&R^poLb3`FI341fJ{zaDTLxNIkh!XWtwj;|| zt*(n~(jP}_=)|HefwUeVf8VJUSlhonQKfgEsJOY zu%y~Eh6}S}imM8~2FrQNP`3tK*EfB9P^E4AmHX2`e^7T7W>P zTj=PigzycSMnKR0)rUy_Ujk1B6k$W(Vx34S(w~YI^Xdab8%Tk$rAE6C9B#kLg#FyV zvY(UHu?VE!UzYXM@B{_qi_NGo;xs%?s^e$C2%YqUGGo-aePKvt`FirHV9_D4Q+?mT zF=D0PKan2-xMuw=`Yht2^xjS$JR54|yuhX8IH!NQ!K+#HPRV)nM`^nH!|=Z0SytV$ zI@X3edB)k~NQdF5)SDm+NL3wGXYHiL{fm8(^6eJlZ&abIu~6Qp9jd;kD18_yxgR96 zC?a5THGK=$MgK`E{X<(pek({#N6yq&fTJEsTwN%!{BBXBQ9*a07-PlZ)5SO7CTi#= zn)rwc@HSe#`T9iiVTgog?*)pouLhHv#g59>Vyw#gag-wUo?fck*lOfYbn|~t%-ix4 zDlKZRvtOWu+}?VSEl+m>HExT4s%{kj-hx`q)$MmJ_`d_HI)VsjIoUx0tk-HOg=%mx~;78p!#;@GJCcJ-; znbPqr%e^V;BI;g|;4WNR!f@`!%!MqH|LmPjv?!*0OooULf*j`C-b4>{rRlliRX00g ziu5=^a&1>wVuJ3=t<&@CkiJ^)odJ}}xs>A7lX4YZG$s-($JSJg8nf}(D6gTwU1z~l zo7hfs??7CPh0zmXt}{Dc+`lsO0rmSl-2Dx{j<6!V4;D~+P)gG}UqbRc^S8NqbDaw2 zgGp@?mp)S74YXSQQ6rN1At+?})Bc_p8kOxfyfkMfcP}MMG7=fb^Ezq!uk0x4APgDW zKhzfy3b_)cc1qL$UEtZ;^KZd_t2jpLQ7eypW2HmN>{@#%Hj8(+G=@g?ugDC;*^LXL93Boa0t@2W3Ep~SxG3Z z=hZ9nF$BYJ0s4a7Qr&S2JoH0k9uzStBW#wlWnKP|zPCn49*J_BA*rjx_k@q=oJ+aC z19%>wK3{b`ziRlTnWY=HB^vj@v*%EBeu7Q}?61ZRQ{@Fo;71F;QRZ_*L&5p61n!&K z!gWg-di-LpFgDJyiu%cY3k`(6K+JT7%KcZVVr!Qm>cld^f#du{hQRa8`n;X1&(=&m z21!Tz0k*Pg6CO}z!*be^3!Hlz?hV`8_59VP`uBtbZYXsZju4VOkn4FjqSo_awT3LQ zOaMMBO^c4u5lzFQk~3v|bXl*x{+!JCJ)un)&Mwi9(PGD2H1EQu2TjKk@;TP8f-2Fd9Av-2z2)t+M;VeA zO&blRbCDQzzjSkDnp0Hx-02oI`=|viFv}APK zvW)bj*y@QMj7AVfMIOEsgce!9p%qqGoNl<#879;lEz;kC)*@%UcujtVNF_y&x;Q3m6j%lTBTJiAlUS*qaqXwSK%>{x+Gr4vT%6>#?q87Hi@iyeV5r_=qacG zYs9Qovw?KgCas-XwE))5_ml-rs|%o3A%)%xUlwkO7 zMEc}1y6*RU6a#7xCQ?HQKx+C~E3%|2ePBk)-3^I=%*!#y*3%91iJkTJM`Nmz$tj}^IPe2b6DkYQ0Zd5+sVSSjf2<{M74ja2_sd}wg08B zDP_1`x8I(R4+dOcR2mFi>wCH?Dnn$3EW`46WEhak0(M*WWT^fc{m+DY@qwE^1Im{qXl+SY~P{wm+b$o5bVulN-?-f1L1qXkk~NY)1f1WJ={F!lkRy8`CNdM7LLhw!|bd!Fh={3CWzwiQ$R^keNwc)bny@fd$? z&zuMbN3==jva7Brf>b+EDZ!T4zN?@dVcD4uXRK8#$+2=KAREJ4NMH-B2jGbHvgvMk~soTK2`szk6KxA{4^7iJVux%u?vtbMbYRPFFa-ez zT<9@kv-^iU2F^Kq$jHz_m%jI%$o;l0B$Xykn$r zfl4S!5*iJvpMDJYf;K%b(d{06I7*pBVB5cZ|JKDyqIFKqV9OBx6W$W0J_u4^wOhyT z^29^TEN-}N9)aT&1lG`~wnimN>RcXleY&!|*mc#Lta-z71{D|oWC9nDqNFd(1-__7 zbtEcse(swM#N|wB4Tbg!20oGZkR7s|&9DO} z;5t%gcO${QMdvU~2;0d^@4J_fMxLwftbPsbG6YjTMk$JiIo4VbOASGQkDxZG((9Rv*5+q^-VVu#febiaqt91LBq)lwYuOQ?!)YK zYGUeHjgZl0&`IsqPuuX{x2lI^DbRcglrRk%bV+aId~TmGa( z@d_%ocP^Z-$OV_G8#PRcB(j;qC22I~*~aj&aLF}SaLV<1%hZl+;B-_1({`iA9-AeG zc+&Nb+m!ESQ(!I0jQIt?R8UIuBYK{dCaM8JbNHmo-NrnNa)K5YEQr(?m(K4ViQ}Z! z4mm`kYEm6n(pp=A$_$LBJG^=AaQY|rzHHl(GMd9;fwZ%=R}&)0U2=JDw>3A-r%!%t zvD*$?xS7Fk+~7vha%UT)!N>&-HQUJRw!%#1q6AY@fpA-)n`_PA0p&y(w1nKjjrPB^ z)2{TiUoXLFHp{lJi%Ze!jfl>0BqUM;48$0k_$3PDM|Lts?byT*`Ri9|exGtMd1@c6ASjG{IvfTM8M}B?oFCYQ{3119o6BLh=e$_YUH5=O%+QJH zebks2SC{R@q9VBbhv9YG;#$S$1>l`WbZ;f0rg8gn8D7A&CyP?IaC=E zBB=RQb5=24HgyWZCSodnyHqg<%l?)y!vSu zEoMrqkx58H)6Uk zPU4qDMmc|~X(Qg-JQk$g9j$o#@?_{R6%sq-Bm;;{Ari;r@>s%GzKj^m%de&EWi>|BT>l7>W8k1Cu*2L8?B`U9s49T6%tynMrc zvi9BRBAoe&0h`}pCqIg>WrrrG&966=*#f^Xd(}xo9|6POEBJTWkmtMWT*O!OIWg33 z0rZcKE&bXKG&txWa737*JDALtOIYk~WYCe5Y^~#qdC6K?Y~(EwJs~(nAIgWPSV2_9 zu93(E7S58m-=t7gcK3NM(MH*iw9;q<^i_2}v z&^j(kjuVxY<;|_Cd^sOANRB;glhmx*RwM~BkzpkKff(%hEMU;q6!;*NKKa(Wj4HZD zSWZ!};5M+jpn_dtY8Pd76uZ9^w-a-ghI-R0Lod~DW(F1tDarEi^O(zjBtVlJ?D2(Q z|A`=!7N@ivtJ3o^2&~ulK1+x@f zsAw_~sJ6mWme$u}aq;|SZU7sX$3#Ilhgw3^i!Qmujy`j+{$4#C=WuhC zF%u&+pmfDVhW%crj%4IQB6Sn*^8A1iO6RiLTK~k0tmySO!erz7fw2ewE#txX5(ZMb z;+rNzMX;B;|L*Foy=JS?Esda{vYBlvh#QA#C_6cPsTlvq+*x+D)ooF@xVyVUDDK7G z9a`KA#ogWArBED#yA*eKcXxLy4!L>%#m&g)jGdFS_sLpw&S#;Oa0fNE(z3oqAustP z_hHK;ODV7nUCCa`!S-9^x4z;5*U^|hbpeL$xWze`!-j8+I_&>`eg&EiW;*lEPxHss zO<5x)N+z#Eu6z~d)`P+*I&+&0N`%jB~RBYTeI$Llx$ zQ5?&k5q}l#ocjZTyDP4kt0<4n_mn3;<(B`Cszol=Zp=M+o3SS)=?E=KxIopW%Z&RY z(DW>s)jkJ{dIAsS32jH}k-C@1^FZEWPygdImPM6&;BbOY=q9d}ZfaW>1&IA-; zv55)0PH~?ml%TWe($`cwb-EvhgM1*luChRpxrW0t|fnnnXU4V1C(Hw1t=F^JixXK@n^-mr-eeKsJLrhkr z$0G+SV-p6whL9BH9S+@Q?!oU0Md?jdSg+mcSwf0`Oq>Ph$`@8%G#Hmq)!u|TI`-h@ z%zcNM?cpgMJtMjJ$Xj_!R^90Z;SsUHDu*st{{>5uxU!E$+q;2mJ~xl zl;dt_oC*U>tXXB1*zTOxk39ZPSY{bR8h_D8CqNZJo01;U-^2P_ICFuF>T48 zi}4G#TqK-0xQqR8IJIoG5h0(7nl*9gi^7=O0K?G@_W7pv46>~tNqZYfdFD;ye9i^| z#MfgEhihTb-#&=-@T2{B;^@t6r!z@ad7trq=ce27aF93vf>eOC==y}V2BTF`1*?jz zM9!%?G1YzAYI|o~<41E#>($?EyY=$oFJ`g5U18NlO-umX*K`zN+k(-o4rPK8WH?+H zc-q{nIaM>YZQ9pG^M4#(<((YS3hh@`Lf*(qeyj?VZ63p@{seg|_4EYk;{lz$S1h1 zJaO0g3Gai!S53Uzowg+&8#jbcgMCZYj!qZRwcCY-Fgv4@ZRe|bHX-i;mzk8~{~=IMsa1CyZlSp9k93lIbExhxgaw=F?-{6d;<*yJ01w{g zyMm!fiPL{QM?FNy|4N@t)03b%vrC%v3ejKYE;Qg;aWfreYUce)KFzAi=Z1Vc2q}x- zRIW#=4xnooD~Z3#Q-KulGEI(H*-Rd#_Y7qa{ub*y z?cih^C4SqRyjyF{2v}Nplt2)Js(w&xnNu9LVG`!<@vYeTT#QDbxfbOC>K9*R%!UYi z5=lR-h}ljwn3X0O6Sg0>&~=Sc(cSi<{6hm9N+WH*(Qem`4p zA7AJ8N3p1(%dO<()72>B#2#v*$1|>;h9y=B%8s|k`|Xnz=2vnSePpcL>on}%;FLT} zMffwUFTs@Z(A~I4mBSM+BQ3!hkOR9SW??XEPo;uH?nH&EUK29Y`lF8`fa+EEfB45W7iYGKfXr@K2$#u9`WjH#wXfjZ0UUl}&cVHH@dqDKERISuePsTy8)F`J z&#ANX$#2MR!-VyFe6S;kPFs*g60BwDp(@%^Yk?4@w-Rt93elAls1_cp%e? zoUtZRd#fFGiTCoCp+bGUqU(eU-@mX|FuY6Id9t-MlDn->30*R0 z)%gcWHK*no!e{j+mLhvhT>$Uo#Q-n%b(!(=E#Px!wAM})mY2rgeldZF9QQQ>Mc8lr z$k1IR-96=cJ3ug=qs4j&PLGdAPUlm&c4hr2$X>O6?}j*JunSII$uIJ?o-W`Y^7gjT zslbgHREx-pV?J0zQuzs=IqovnbhNIc!u2iBg2Qb0@95u};i9Zq>cY#UyV6(gptH?N z8^5o1$zmOPgP8(WYh@hC%Xlu6afKdk9+oq#d!-1$H94^U*`Xg(ZRnZSzs`MVTVq8w z_hY`1kD>T?sW3O4?QVA>gPp&d;l83j4@U>Ywi_+?N9DMyAEE(-�RIK0^IyBfHK} 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 { ).length; const addPremSelo = (papel, codBase, seloGP, seloPremio, seloMencao) => { - const gp = contarPrem(papel, 'PREMIACAO'); - const premio = contarPrem(papel, 'PREMIACAO_GP'); - const mencao = contarPrem(papel, 'MENCAO'); + const gp = contarPrem(papel, 'PREMIACAO_GP_AUTOR'); + const premio = contarPrem(papel, 'PREMIACAO_AUTOR'); + const mencao = contarPrem(papel, 'MENCAO_AUTOR'); if (gp > 0) selos.push({ ...seloGP, qtd: gp }); if (premio > 0) selos.push({ ...seloPremio, qtd: premio }); if (mencao > 0) selos.push({ ...seloMencao, qtd: mencao }); diff --git a/frontend/src/components/ConsultorCard.css b/frontend/src/components/ConsultorCard.css index 9b77253..8e97c07 100644 --- a/frontend/src/components/ConsultorCard.css +++ b/frontend/src/components/ConsultorCard.css @@ -474,6 +474,9 @@ .list-item .muted { color: var(--muted); font-size: 0.8rem; + margin-left: auto; + text-align: right; + white-space: nowrap; } .list-item .pontos { diff --git a/frontend/src/components/ConsultorCard.jsx b/frontend/src/components/ConsultorCard.jsx index db70b69..e86d587 100644 --- a/frontend/src/components/ConsultorCard.jsx +++ b/frontend/src/components/ConsultorCard.jsx @@ -55,9 +55,9 @@ const gerarSelos = (consultor) => { const gerarSelosPorPapel = (papel, seloGP, seloPremio, seloMencao, hintPrefix) => { const lista = premiacoes.filter((p) => (p.papel || '').toString().toLowerCase() === papel.toLowerCase()); - const gp = lista.filter((p) => ['PREMIACAO', 'PREMIACAO_GP_AUTOR'].includes(p.codigo)).length; - const premio = lista.filter((p) => ['PREMIACAO_GP', 'PREMIACAO_AUTOR'].includes(p.codigo)).length; - const mencao = lista.filter((p) => ['MENCAO', 'MENCAO_AUTOR'].includes(p.codigo)).length; + const gp = lista.filter((p) => p.codigo === 'PREMIACAO_GP_AUTOR').length; + const premio = lista.filter((p) => p.codigo === 'PREMIACAO_AUTOR').length; + const mencao = lista.filter((p) => p.codigo === 'MENCAO_AUTOR').length; if (gp > 0) selos.push({ ...seloGP, qtd: gp, hint: `${hintPrefix} - Grande Prêmio` }); if (premio > 0) selos.push({ ...seloPremio, qtd: premio, hint: `${hintPrefix} - Prêmio` }); @@ -129,58 +129,46 @@ const FORMULAS = { }, bloco_d: { titulo: 'Premiacoes/Avaliacoes', - descricao: 'Premiações: GP=100 (teto 180) | Prêmio=50 (teto 60) | Menção=30 (teto 30)\nBolsas: BPQ_SUP=30 (teto 60) | BPQ_INT=50 (teto 100)\nInscrições/Avaliações/Comissões/Participações/Orientações/Bancas (com tetos por código)', + descricao: 'Premiações: GP=100 (teto 300) | Prêmio=50 (teto 150) | Menção=30 (teto 90)\nBolsas: BPQ=30 (teto 60)\nInscrições/Avaliações/Comissões/Participações (com tetos por código)\nOrientações/Bancas: apenas selos (0 pts)', }, }; const PONTOS_BASE = { CA: 200, CAJ: 150, CAJ_MP: 120, CAM: 100, CONS_ATIVO: 150, CONS_HIST: 100, CONS_FALECIDO: 100, - INSC_AUTOR: 10, INSC_INST: 30, - INSC_INST_AUTOR: 20, - AVAL_COMIS_PREMIO: 30, AVAL_COMIS_GP: 50, - COORD_COMIS_PREMIO: 50, COORD_COMIS_GP: 60, - PREMIACAO: 100, PREMIACAO_GP: 50, MENCAO: 30, + INSC_AUTOR: 10, INSC_INST_AUTOR: 20, + AVAL_COMIS_PREMIO: 30, AVAL_COMIS_GP: 40, + COORD_COMIS_PREMIO: 40, COORD_COMIS_GP: 50, PREMIACAO_GP_AUTOR: 100, PREMIACAO_AUTOR: 50, MENCAO_AUTOR: 30, - BOL_BPQ_SUP: 30, BOL_BPQ_INT: 50, - BOL_BPQ_SUPERIOR: 30, BOL_BPQ_INTERMEDIARIO: 50, BOL_BPQ_NIVEL: 30, EVENTO: 1, PROJ: 10, - ORIENT_POS_DOC: 15, ORIENT_TESE: 10, ORIENT_DISS: 5, - CO_ORIENT_POS_DOC: 7, CO_ORIENT_TESE: 5, CO_ORIENT_DISS: 3, - MB_BANCA_POS_DOC: 3, MB_BANCA_TESE: 3, MB_BANCA_DISS: 2, + ORIENT_POS_DOC: 0, ORIENT_TESE: 0, ORIENT_DISS: 0, + CO_ORIENT_POS_DOC: 0, CO_ORIENT_TESE: 0, CO_ORIENT_DISS: 0, + MB_BANCA_POS_DOC: 0, MB_BANCA_TESE: 0, MB_BANCA_DISS: 0, }; const TETOS = { INSC_AUTOR: { teto: 20, doc: '3.3 Inscrições', bonus: '+2/participação (max 10)' }, - INSC_INST: { teto: 60, doc: '3.3 Inscrições' }, INSC_INST_AUTOR: { teto: 50, doc: '3.3 Inscrições', bonus: '+5/participação (max 10)' }, AVAL_COMIS_PREMIO: { teto: 60, doc: '3.4 Avaliação/Comissão', bonus: '+2/ano (max 15)' }, AVAL_COMIS_GP: { teto: 80, doc: '3.4 Avaliação/Comissão', bonus: '+3/ano (max 20)' }, COORD_COMIS_PREMIO: { teto: 100, doc: '3.4 Avaliação/Comissão', bonus: '+4/ano (max 20)' }, COORD_COMIS_GP: { teto: 120, doc: '3.4 Avaliação/Comissão', bonus: '+6/ano (max 20)' }, - PREMIACAO: { teto: 180, doc: '3.4 Premiações e Bolsas' }, - PREMIACAO_GP: { teto: 60, doc: '3.4 Premiações e Bolsas' }, - MENCAO: { teto: 30, doc: '3.4 Premiações e Bolsas' }, PREMIACAO_GP_AUTOR: { teto: 300, doc: '3.4 Premiações e Bolsas' }, PREMIACAO_AUTOR: { teto: 150, doc: '3.4 Premiações e Bolsas' }, MENCAO_AUTOR: { teto: 90, doc: '3.4 Premiações e Bolsas' }, EVENTO: { teto: 5, doc: '3.5 Participações Acadêmicas', bonus: '+1/participação (max 10)' }, - PROJ: { teto: 40, doc: '3.5 Participações Acadêmicas', bonus: '+2/participação (max 10)' }, - BOL_BPQ_SUP: { teto: 60, doc: '3.4 Premiações e Bolsas' }, - BOL_BPQ_INT: { teto: 100, doc: '3.4 Premiações e Bolsas' }, - BOL_BPQ_SUPERIOR: { teto: 60, doc: '3.4 Premiações e Bolsas' }, - BOL_BPQ_INTERMEDIARIO: { teto: 100, doc: '3.4 Premiações e Bolsas' }, + PROJ: { teto: 30, doc: '3.5 Participações Acadêmicas', bonus: '+2/participação (max 10)' }, BOL_BPQ_NIVEL: { teto: 60, doc: '3.4 Premiações e Bolsas' }, - ORIENT_POS_DOC: { teto: 100, doc: '3.5 Participações Acadêmicas' }, - ORIENT_TESE: { teto: 50, doc: '3.5 Participações Acadêmicas' }, - ORIENT_DISS: { teto: 25, doc: '3.5 Participações Acadêmicas' }, - CO_ORIENT_POS_DOC: { teto: 35, doc: '3.5 Participações Acadêmicas' }, - CO_ORIENT_TESE: { teto: 25, doc: '3.5 Participações Acadêmicas' }, - CO_ORIENT_DISS: { teto: 15, doc: '3.5 Participações Acadêmicas' }, - MB_BANCA_POS_DOC: { teto: 15, doc: '3.5 Participações Acadêmicas' }, - MB_BANCA_TESE: { teto: 15, doc: '3.5 Participações Acadêmicas' }, - MB_BANCA_DISS: { teto: 10, doc: '3.5 Participações Acadêmicas' }, + ORIENT_POS_DOC: { teto: 0, doc: 'Selo (sem pontuação)' }, + ORIENT_TESE: { teto: 0, doc: 'Selo (sem pontuação)' }, + ORIENT_DISS: { teto: 0, doc: 'Selo (sem pontuação)' }, + CO_ORIENT_POS_DOC: { teto: 0, doc: 'Selo (sem pontuação)' }, + CO_ORIENT_TESE: { teto: 0, doc: 'Selo (sem pontuação)' }, + CO_ORIENT_DISS: { teto: 0, doc: 'Selo (sem pontuação)' }, + MB_BANCA_POS_DOC: { teto: 0, doc: 'Selo (sem pontuação)' }, + MB_BANCA_TESE: { teto: 0, doc: 'Selo (sem pontuação)' }, + MB_BANCA_DISS: { teto: 0, doc: 'Selo (sem pontuação)' }, }; const ScoreItemWithTooltip = ({ value, label, formula, style }) => ( diff --git a/frontend/src/components/Header.css b/frontend/src/components/Header.css index 98a925d..884a371 100644 --- a/frontend/src/components/Header.css +++ b/frontend/src/components/Header.css @@ -25,19 +25,18 @@ .header-title-row { display: flex; align-items: center; - gap: 1rem; - margin-bottom: 0.35rem; + gap: 1.25rem; + margin-bottom: 0.5rem; } .header-logo { - width: 60px; - height: 60px; + width: 56px; + height: 56px; object-fit: contain; - border-radius: 10px; - background: white; - padding: 6px; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255,255,255,0.1); + border-radius: 8px; + background: transparent; flex-shrink: 0; + margin-right: 0.5rem; } .header h1 { @@ -57,7 +56,8 @@ color: var(--silver); font-size: 0.95rem; line-height: 1.6; - margin-bottom: 0.6rem; + margin-top: 0.3rem; + margin-bottom: 0.8rem; opacity: 0.85; } @@ -156,7 +156,7 @@ .criteria-section h4 { color: var(--accent-2); - font-size: 0.7rem; + font-size: 0.8rem; margin: 0; letter-spacing: 0.2px; white-space: nowrap; @@ -165,7 +165,7 @@ .max-pts { padding: 0.1rem 0.35rem; border-radius: 4px; - font-size: 0.55rem; + font-size: 0.65rem; font-weight: 600; letter-spacing: 0.2px; white-space: nowrap; @@ -185,12 +185,12 @@ .criteria-table { width: 100%; margin-top: 0.25rem; - font-size: 0.65rem; + font-size: 0.75rem; border-collapse: collapse; } .criteria-table.compact { - font-size: 0.6rem; + font-size: 0.7rem; } .criteria-table th { @@ -199,7 +199,7 @@ font-weight: 500; padding: 0.15rem 0.2rem; border-bottom: 1px solid rgba(255,255,255,0.1); - font-size: 0.55rem; + font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.3px; white-space: nowrap; @@ -233,7 +233,7 @@ margin-top: 0.3rem; padding-top: 0.25rem; border-top: 1px dashed rgba(255,255,255,0.1); - font-size: 0.55rem; + font-size: 0.65rem; color: var(--muted); text-align: center; font-style: italic; diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx index 4d627f9..802178c 100644 --- a/frontend/src/components/Header.jsx +++ b/frontend/src/components/Header.jsx @@ -11,7 +11,7 @@ const Header = ({ total }) => {
- CAPES + CAPES

Ranking de Consultores CAPES