Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
pres:gerti:gestao_de_ativos:portal:er_011 [10/04/2026 12:54] – pramorimpres:gerti:gestao_de_ativos:portal:er_011 [28/08/2026 19:41] (atual) – pramorim
Linha 4: Linha 4:
  
 **Menu / Local de acesso**: Portal TCE-GO | Pautas e Sessões de Julgamento | `/pautas` (calendário) · `/pautas/[DATA]` (detalhe da sessão) **Menu / Local de acesso**: Portal TCE-GO | Pautas e Sessões de Julgamento | `/pautas` (calendário) · `/pautas/[DATA]` (detalhe da sessão)
- 
 ===== Atores ===== ===== Atores =====
  
 ^Nível^Perfil^Autenticação^Abrangência| ^Nível^Perfil^Autenticação^Abrangência|
-|**PÚBLICO**|Cidadãos, Órgãos fiscalizados, Partes Processuais|Não obrigatória|Consulta do calendário mensal de sessões e visualização do detalhamento de pautas, processos, membros, ata de julgamento e gravações disponíveis.| +|**PÚBLICO** |Cidadãos, Órgãos fiscalizados, Partes Processuais|Não obrigatória|Consulta do calendário mensal de sessões e visualização do detalhamento de pautas, processos, membros, ata de julgamento e gravações disponíveis.|
  
 ===== Telas ===== ===== Telas =====
  
 ==== Tela 01 - Calendário de Sessões (`/pautas`) ==== ==== Tela 01 - Calendário de Sessões (`/pautas`) ====
 +
 {{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-124027.png}} {{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-124027.png}}
  
Linha 19: Linha 18:
  
 ^Elemento^Tipo^Obrigatório^Valores Possíveis^Valor Padrão^Observação| ^Elemento^Tipo^Obrigatório^Valores Possíveis^Valor Padrão^Observação|
-|Cabeçalho da Página|Texto estático|Sim|"Pautas e Sessões de Julgamento"|–|Exibido em fundo azul (`--primary`).|+|Cabeçalho da Página|Texto estático|Sim|"Pautas e Sessões de Julgamento"|–|Exibido em fundo azul (`–primary`).|
 |Navegação de Mês/Ano|Componente de Navegação|Sim|Botões "< Mês Anterior" e "Próximo Mês >"|Mês/Ano corrente|Atualiza apenas o calendário, sem reload da página (RN06).| |Navegação de Mês/Ano|Componente de Navegação|Sim|Botões "< Mês Anterior" e "Próximo Mês >"|Mês/Ano corrente|Atualiza apenas o calendário, sem reload da página (RN06).|
 |Grade do Calendário|Componente de Calendário|Sim|Semanas × Dias do mês selecionado|–|Dias sem sessão exibidos com aparência neutra; dias com sessão exibem badge(s) colorido(s).| |Grade do Calendário|Componente de Calendário|Sim|Semanas × Dias do mês selecionado|–|Dias sem sessão exibidos com aparência neutra; dias com sessão exibem badge(s) colorido(s).|
 |Badge de Sessão|Indicador Visual|Condicional|Texto descritivo da sessão (ex.: "Tribunal Pleno — Ordinária")|–|Cor definida conforme o tipo de plataforma (RN06). Quando há múltiplas sessões no dia, um badge por sessão é exibido.| |Badge de Sessão|Indicador Visual|Condicional|Texto descritivo da sessão (ex.: "Tribunal Pleno — Ordinária")|–|Cor definida conforme o tipo de plataforma (RN06). Quando há múltiplas sessões no dia, um badge por sessão é exibido.|
 |Legenda|Componente de Legenda|Sim|Azul = Sessão Presencial; Verde = Videoconferência; Laranja = Votação Simultânea|–|Exibição obrigatória e persistente na tela (RN06).| |Legenda|Componente de Legenda|Sim|Azul = Sessão Presencial; Verde = Videoconferência; Laranja = Votação Simultânea|–|Exibição obrigatória e persistente na tela (RN06).|
-|Estado "Sem sessões no mês"|Mensagem Informativa|Condicional|Mensagem informativa|–|Exibido quando nenhuma sessão existe no mês consultado.|+|Estado "Sem sessões no mês"|Mensagem Informativa|Condicional|"Nenhuma sessão agendada para {mês} de {ano} em exibição."|–|Exibido quando nenhuma sessão existe no mês consultado.|
 |Estado de Carregamento|Skeleton animado|Condicional|–|–|Exibido durante a chamada à API.| |Estado de Carregamento|Skeleton animado|Condicional|–|–|Exibido durante a chamada à API.|
  
 ==== Tela 02 - Detalhe da Sessão (`/pautas/[DATA]`) ==== ==== Tela 02 - Detalhe da Sessão (`/pautas/[DATA]`) ====
  
-{{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125224.png}} +{{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125224.png}}{{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125409.png}}
-{{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125409.png}}+
  
 Tela responsável por exibir o detalhamento completo de uma sessão: cabeçalho, chips de sessões do dia, ata de julgamento, filtros e cards de processos. Tela responsável por exibir o detalhamento completo de uma sessão: cabeçalho, chips de sessões do dia, ata de julgamento, filtros e cards de processos.
Linha 36: Linha 34:
 **Cabeçalho da Sessão:** **Cabeçalho da Sessão:**
  
-^Elemento^Fonte^Campo / Origem^Obrigatório^Observação^+^Elemento^Fonte^Campo / Origem^Obrigatório^Observação|
 |Colegiado|Catálogo (`/api/pauta/sessao`)|`nomeCamara`|Sim|"Primeira Câmara" / "Segunda Câmara" / "Tribunal Pleno".| |Colegiado|Catálogo (`/api/pauta/sessao`)|`nomeCamara`|Sim|"Primeira Câmara" / "Segunda Câmara" / "Tribunal Pleno".|
 |Tipo da Sessão|Catálogo (`/api/pauta/sessao`)|`tipoSessao`|Sim|"Ordinária" / "Extraordinária Adm." / "Extraordinária".| |Tipo da Sessão|Catálogo (`/api/pauta/sessao`)|`tipoSessao`|Sim|"Ordinária" / "Extraordinária Adm." / "Extraordinária".|
-|Plataforma|Catálogo (`/api/pauta/sessao`)|Derivado de `tipoSessao` + `informacaoSessao`|Sim|"Presencial" / "Videoconferência" / "Virtual (Votação Simultânea — Plenário Virtual)".| +|Plataforma|Oracle|`PLD_SESSAO.INDR_VIRTUAL_A`|Sim|"Presencial = 'N'" / "Videoconferência = 'V'" / "Virtual = 'S' ".| 
-|Situação|Oracle|`PLD_SESSAO.INDR_STATUS_A`|Sim|"Ativa" / "Encerrada" / "Cancelada" / "Inativa". Sessão Cancelada exibe banner de aviso (RN08).|+|Situação|Oracle|`PLD_SESSAO.INDR_STATUS_A`|Sim|"Ativa" / "Encerrada". Sessões Cancelada e Inativa não são retornadas pela API e não chegam a esta tela (RN03, RN08).|
 |Número da Sessão|Oracle|`PLD_SESSAO.NUMR_SESSAO_N`|Sim|–| |Número da Sessão|Oracle|`PLD_SESSAO.NUMR_SESSAO_N`|Sim|–|
 |Data da Sessão|Catálogo (`/api/pauta/sessao`)|`dataSessao` + `horarioSessao` → formato `dd/MM/yyyy HH:mm`|Sim|–| |Data da Sessão|Catálogo (`/api/pauta/sessao`)|`dataSessao` + `horarioSessao` → formato `dd/MM/yyyy HH:mm`|Sim|–|
Linha 49: Linha 47:
 |Membros|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` + `Membro.tituloMembro`|Sim|Link "ver membros" abre modal/painel lateral (RN12).| |Membros|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` + `Membro.tituloMembro`|Sim|Link "ver membros" abre modal/painel lateral (RN12).|
 |Fundamentação Legal|Catálogo (`/api/pauta/sessao`)|`definicaoPauta`|Sim|Texto fixo: **"PAUTA (art. 150, Incisos I a VI, RI-TCE)"** (RN11).| |Fundamentação Legal|Catálogo (`/api/pauta/sessao`)|`definicaoPauta`|Sim|Texto fixo: **"PAUTA (art. 150, Incisos I a VI, RI-TCE)"** (RN11).|
-|Alerta de Sessão|Catálogo (`/api/pauta/sessao`)|`alertaSessao`|Condicional|Exibido quando `alertaSessao` estiver preenchido (ex.: sessão cancelada) (RN08).|+|Alerta de Sessão|Catálogo (`/api/pauta/sessao`)|`alertaSessao`|Condicional|Exibido quando `alertaSessao` estiver preenchido, para avisos da sessão em curso. Não se aplica a sessão cancelada, que não é retornada pela API (RN03).|
 |Link "Assistir transmissão"|Oracle|Campo de link de transmissão em `PLD_SESSAO`|Condicional|Exibido quando sessão é Videoconferência e link estiver disponível (RN15).| |Link "Assistir transmissão"|Oracle|Campo de link de transmissão em `PLD_SESSAO`|Condicional|Exibido quando sessão é Videoconferência e link estiver disponível (RN15).|
 |Chips "Outras Sessões do Dia"|–|Sessões do mesmo dia retornadas pela API|Condicional|Exibidos quando há mais de uma sessão no dia. Troca sem alteração de URL (RN14).| |Chips "Outras Sessões do Dia"|–|Sessões do mesmo dia retornadas pela API|Condicional|Exibidos quando há mais de uma sessão no dia. Troca sem alteração de URL (RN14).|
Linha 58: Linha 56:
 |Ata — Aguardando Sessão|`AGUARDANDO_SESSAO`|Data da sessão ainda não chegou|Azul claro (`blue-50`)|Nenhuma.| |Ata — Aguardando Sessão|`AGUARDANDO_SESSAO`|Data da sessão ainda não chegou|Azul claro (`blue-50`)|Nenhuma.|
 |Ata — Em Elaboração|`EM_ELABORACAO`|Sessão encerrada, ata em preparo|Amarelo (`amber-50`)|Nenhuma.| |Ata — Em Elaboração|`EM_ELABORACAO`|Sessão encerrada, ata em preparo|Amarelo (`amber-50`)|Nenhuma.|
-|Ata — Elaborada|`ELABORADA`|Ata finalizada com URL disponível|Verde (`green-50`)|Botão "Baixar Ata" (link para PDF) (RN13).|+|Ata — Elaborada|`ELABORADA`|Ata finalizada, com arquivo e data de elaboração retornados na consulta|Verde (`green-50`)|Botão "Baixar Ata" — download direto do arquivo. O banner exibe também a data de elaboração (RN13).|
  
 **Barra de Filtros (client-side):** **Barra de Filtros (client-side):**
Linha 64: Linha 62:
 ^Filtro^Tipo^Campo Filtrado^Observação| ^Filtro^Tipo^Campo Filtrado^Observação|
 |Relator|Seleção (`<select>`)|`relator`|Lista de relatores únicos da sessão corrente.| |Relator|Seleção (`<select>`)|`relator`|Lista de relatores únicos da sessão corrente.|
-|Procurador|Seleção (`<select>`)|`procurador`|Lista de procuradores únicos da sessão corrente.| +|Colegiado / Plenário|Campo fixo, não alterável|–|Exibe o colegiado da sessão exibida (ex.: "Tribunal Pleno — Ordinária"). Bloqueado: uma sessão pertence a um único colegiado (RN10).|
-|Colegiado / Plenário|Seleção (`<select>`)|`colegiado`|Opções: Primeira Câmara / Segunda Câmara / Tribunal Pleno.|+
 |Texto livre|Campo Texto (`<input>`)|`numeroProcesso` + `assunto` + `ementa`|Busca parcial, case-insensitive (RN10).| |Texto livre|Campo Texto (`<input>`)|`numeroProcesso` + `assunto` + `ementa`|Busca parcial, case-insensitive (RN10).|
 |Contador de resultados|Texto informativo|–|"Exibindo X de Y processos" — exibido quando algum filtro estiver ativo (RN10).| |Contador de resultados|Texto informativo|–|"Exibindo X de Y processos" — exibido quando algum filtro estiver ativo (RN10).|
Linha 72: Linha 69:
 **Card de Processo:** **Card de Processo:**
  
-^Campo^Fonte^Campo / Origem^Obrigatório^Fallback^ +^Campo^Fonte^Campo / Origem^Obrigatório^Fallback| 
-|N° Processo (link)|Oracle|`CODG_PROCESSO_N` — exibido; `PROAUTU_ID` — usado no link para RF-002 (RN01)|Sim|"Não informado" (RN04).|+|N° Processo (link)|Oracle|`CODG_PROCESSO_N` — exibido; `PROAUTU_ID` — usado no link para RF-002 (RN01)|Sim|"Não informado" (RN04). Em processo sigiloso, exibido sem link (RN16).|
 |Assunto|Catálogo (`/api/pauta/sessao`)|`Processo.assunto`|Sim|"Não informado" (RN04).| |Assunto|Catálogo (`/api/pauta/sessao`)|`Processo.assunto`|Sim|"Não informado" (RN04).|
-|Ementa|Catálogo (`/api/pauta/sessao`)|`Processo.ementa`|Sim|"Não informado" (RN04).|+|Ementa|Catálogo (`/api/pauta/sessao`)|`Processo.ementa`|Sim|"Não informado" (RN04). Em processo sigiloso, omitida (RN16).|
 |Relator|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` com função Relator|Sim|"Não informado" (RN04).| |Relator|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` com função Relator|Sim|"Não informado" (RN04).|
-|Procurador|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` com função Procurador|Sim|"Não informado" (RN04).| 
 |Badge "Julgado"|Catálogo (`/api/pauta/sessao`)|`Processo.julgado` (boolean)|Condicional|Badge omitido quando `julgado = false` (RN05).| |Badge "Julgado"|Catálogo (`/api/pauta/sessao`)|`Processo.julgado` (boolean)|Condicional|Badge omitido quando `julgado = false` (RN05).|
-|Botão "Assistir gravação"|Catálogo (`/api/pauta/videos`)|Vínculo por `Processo.id`; campo de vídeo a confirmar com equipe do catálogo|Condicional|Botão omitido quando processo não constar na resposta de vídeos (RN09).|+|Botão "Assistir gravação"|Catálogo (`/api/pauta/videos`)|Vínculo por `Processo.id`; a API retorna o link da gravação|Condicional|Botão omitido quando processo não constar na resposta de vídeos (RN09).| 
 +|Badge "Sigiloso"|Catálogo (`/api/pauta/sessao`)|`Processo.ehProcessoSigiloso` (boolean)|Condicional|Exibido quando `ehProcessoSigiloso = true`. Sinaliza que a ausência de ementa e de interessados é restrição legal, e não falta de cadastro (RN16).|
 |Paginação|–|Componente de paginação|Sim|Padrão: 20 itens/página; seletor: 10 / 20 / 50. Total reflete conjunto filtrado (RN02).| |Paginação|–|Componente de paginação|Sim|Padrão: 20 itens/página; seletor: 10 / 20 / 50. Total reflete conjunto filtrado (RN02).|
  
Linha 87: Linha 84:
 |Botão "Sessão anterior"|Botão com link|Exibido no topo e na base da página. Desabilitado (`disabled`) quando não há sessão anterior (RN07).| |Botão "Sessão anterior"|Botão com link|Exibido no topo e na base da página. Desabilitado (`disabled`) quando não há sessão anterior (RN07).|
 |Botão "Próxima sessão"|Botão com link|Exibido no topo e na base da página. Desabilitado (`disabled`) quando não há próxima sessão (RN07).| |Botão "Próxima sessão"|Botão com link|Exibido no topo e na base da página. Desabilitado (`disabled`) quando não há próxima sessão (RN07).|
- 
  
 ===== Fluxos ===== ===== Fluxos =====
Linha 97: Linha 93:
 |02|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 01| |02|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 01|
 |03|O sistema executa `GET /api/pautas/calendario?mes={mm}&ano={yyyy}` com o mês/ano corrente como padrão.| |Tela 01| |03|O sistema executa `GET /api/pautas/calendario?mes={mm}&ano={yyyy}` com o mês/ano corrente como padrão.| |Tela 01|
-|03.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_02_-_renderizar_calendario|Fluxo 02]]**.| | |+|03.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_02_-_renderizar_calendario|Fluxo 02]]** .| | |
 |03.2|Caso a chamada retorne erro, o sistema exibe estado de erro genérico.| |Tela 01| |03.2|Caso a chamada retorne erro, o sistema exibe estado de erro genérico.| |Tela 01|
- 
  
 ==== Fluxo 02 - Renderizar Calendário ==== ==== Fluxo 02 - Renderizar Calendário ====
Linha 106: Linha 101:
 |01|O sistema recebe a lista de sessões do mês retornada pela API.| | | |01|O sistema recebe a lista de sessões do mês retornada pela API.| | |
 |02|O sistema verifica se há sessões no mês consultado.| | | |02|O sistema verifica se há sessões no mês consultado.| | |
-|02.1|Caso não haja sessões, o sistema exibe mensagem informativa de mês sem sessões.|  |Tela 01|+|02.1|Caso não haja sessões, o sistema exibe a mensagem "Nenhuma sessão agendada para {mês} de {ano} em exibição.".| |Tela 01|
 |03|O sistema renderiza a grade do calendário com os dias do mês.|RN03, RN06|Tela 01| |03|O sistema renderiza a grade do calendário com os dias do mês.|RN03, RN06|Tela 01|
 |04|Para cada sessão retornada, o sistema exibe um badge no dia correspondente, com cor determinada pelo tipo de plataforma.|RN06|Tela 01| |04|Para cada sessão retornada, o sistema exibe um badge no dia correspondente, com cor determinada pelo tipo de plataforma.|RN06|Tela 01|
Linha 112: Linha 107:
 |05|O sistema exibe a legenda obrigatória de cores abaixo ou ao lado do calendário.|RN06|Tela 01| |05|O sistema exibe a legenda obrigatória de cores abaixo ou ao lado do calendário.|RN06|Tela 01|
 |06|O sistema aguarda interação do usuário.| |Tela 01| |06|O sistema aguarda interação do usuário.| |Tela 01|
- 
  
 ==== Fluxo 03 - Navegar entre Meses ==== ==== Fluxo 03 - Navegar entre Meses ====
Linha 120: Linha 114:
 |02|O sistema executa nova chamada `GET /api/pautas/calendario?mes={mm}&ano={yyyy}` com o mês/ano correspondente.| |Tela 01| |02|O sistema executa nova chamada `GET /api/pautas/calendario?mes={mm}&ano={yyyy}` com o mês/ano correspondente.| |Tela 01|
 |03|O sistema atualiza apenas o componente do calendário, sem reload da página.|RN06|Tela 01| |03|O sistema atualiza apenas o componente do calendário, sem reload da página.|RN06|Tela 01|
-|04|O sistema executa o **[[#fluxo_02_-_renderizar_calendario|Fluxo 02]]** com os dados do novo mês.| | | +|04|O sistema executa o **[[#fluxo_02_-_renderizar_calendario|Fluxo 02]]**com os dados do novo mês.| | |
  
 ==== Fluxo 04 - Acessar Detalhe de Sessão ==== ==== Fluxo 04 - Acessar Detalhe de Sessão ====
Linha 127: Linha 120:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O usuário clica em um badge de sessão em um dia do calendário.| |Tela 01| |01|O usuário clica em um badge de sessão em um dia do calendário.| |Tela 01|
-|02|O sistema navega para `/pautas/[DATA]`. Quando há múltiplas sessões no dia, todos os badges do mesmo dia usam a mesma URL base.| |Tela 02|+|02|O sistema navega para `/pautas/[DATA]?sessaoId={id}`, com o identificador da sessão do badge acionado. Quando a sessão não é informada, o sistema abre a **primeira sessão do dia**.|RN14|Tela 02|
 |03|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 02| |03|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 02|
 |04|O sistema executa `GET /api/pautas/[DATA]`.| | | |04|O sistema executa `GET /api/pautas/[DATA]`.| | |
 |04.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_05_-_renderizar_detalhe_da_sessao|Fluxo 05]]**.| | | |04.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_05_-_renderizar_detalhe_da_sessao|Fluxo 05]]**.| | |
-|04.2|Caso a DATA seja inválida ou não possua sessão, o sistema retorna 404 (`notFound()`).| |Tela 02| +|04.2|Caso a DATA não possua sessão disponível, o sistema exibe a mensagem "Nenhuma sessão encontrada para esta data".|RN08|Tela 02| 
 +|04.3|Caso a DATA esteja em formato inválido, o sistema exibe a página de erro padrão.| |Tela 02|
  
 ==== Fluxo 05 - Renderizar Detalhe da Sessão ==== ==== Fluxo 05 - Renderizar Detalhe da Sessão ====
Linha 138: Linha 131:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O sistema exibe o cabeçalho da sessão com os campos: Colegiado, Tipo, Plataforma, Situação, Número da Sessão, Datas, Total de Processos, Membros e Fundamentação Legal.|RN11, RN12|Tela 02| |01|O sistema exibe o cabeçalho da sessão com os campos: Colegiado, Tipo, Plataforma, Situação, Número da Sessão, Datas, Total de Processos, Membros e Fundamentação Legal.|RN11, RN12|Tela 02|
-|01.1|Caso a sessão possua status Cancelada, o sistema exibe banner de aviso "Sessão Cancelada".|RN08|Tela 02|+|01.1|Sessão com status Cancelada não é retornada pela API e, portanto, não chega a ser renderizada — a data recai no **[[#fluxo_04_-_acessar_detalhe_de_sessao|Fluxo 04]]**, passo 04.2.|RN03, RN08|Tela 02|
 |01.2|Caso a sessão seja do tipo Videoconferência e possua `linkTransmissao` preenchido, o sistema exibe o link "Assistir transmissão" no cabeçalho.|RN15|Tela 02| |01.2|Caso a sessão seja do tipo Videoconferência e possua `linkTransmissao` preenchido, o sistema exibe o link "Assistir transmissão" no cabeçalho.|RN15|Tela 02|
 |02|O sistema verifica a existência de múltiplas sessões no mesmo dia e exibe chips "Outras Sessões do Dia" quando aplicável.|RN14|Tela 02| |02|O sistema verifica a existência de múltiplas sessões no mesmo dia e exibe chips "Outras Sessões do Dia" quando aplicável.|RN14|Tela 02|
 |03|O sistema exibe a seção de Ata de Julgamento conforme a situação da ata.|RN13|Tela 02| |03|O sistema exibe a seção de Ata de Julgamento conforme a situação da ata.|RN13|Tela 02|
 |04|O sistema exibe a barra de filtros.|RN10|Tela 02| |04|O sistema exibe a barra de filtros.|RN10|Tela 02|
-|05|O sistema executa o **[[#fluxo_06_-_listar_cards_de_processos|Fluxo 06]]** para renderizar os cards de processos.| | |+|05|O sistema executa o **[[#fluxo_06_-_listar_cards_de_processos|Fluxo 06]]**para renderizar os cards de processos.| | |
 |06|O sistema exibe os botões de navegação "Sessão anterior" e "Próxima sessão".|RN07|Tela 02| |06|O sistema exibe os botões de navegação "Sessão anterior" e "Próxima sessão".|RN07|Tela 02|
- 
  
 ==== Fluxo 06 - Listar Cards de Processos ==== ==== Fluxo 06 - Listar Cards de Processos ====
Linha 151: Linha 143:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O sistema recupera a lista completa de processos da sessão retornada pela API.| |Tela 02| |01|O sistema recupera a lista completa de processos da sessão retornada pela API.| |Tela 02|
-|02|O sistema aplica os filtros ativos (relator, procurador, colegiado, texto livre) de forma cumulativa.|RN10|Tela 02|+|02|O sistema aplica os filtros ativos (relator da pauta, texto livre) de forma cumulativa.|RN10|Tela 02|
 |03|O sistema exibe o contador "Exibindo X de Y processos" quando ao menos um filtro estiver ativo.|RN10|Tela 02| |03|O sistema exibe o contador "Exibindo X de Y processos" quando ao menos um filtro estiver ativo.|RN10|Tela 02|
-|03.1|Caso o filtro não retorne resultados, o sistema exibe a mensagem: "Nenhum processo encontrado para os filtros aplicados".|RN10|Tela 02|+|03.1|Caso o filtro não retorne resultados, o sistema exibe a mensagem: "Nenhum processo encontrado. Ajuste os filtros ou clique em ''Limpar filtros'' para ver todos os processos.".|RN10|Tela 02|
 |04|O sistema renderiza os cards paginados do conjunto filtrado.|RN02|Tela 02| |04|O sistema renderiza os cards paginados do conjunto filtrado.|RN02|Tela 02|
-|05|Para cada card, o sistema exibe: N° Processo (link), Relator, Procurador, Assunto, Ementa, badge "Julgado" (quando aplicável) e botão "Assistir gravação" (quando disponível).|RN01, RN04, RN05, RN09|Tela 02|+|05|Para cada card, o sistema exibe: ordem na pauta, N° Processo (link), Relator, Assunto, Interessados, Ementa, badge "Julgado" (quando aplicável), badge "Sigiloso" (quando aplicável) e botão "Assistir gravação" (quando disponível).|RN01, RN04, RN05, RN09, RN16, RN17, RN18|Tela 02| 
 +|05.2|Em processo sigiloso, o N° Processo é exibido sem link e a ementa e os interessados são omitidos.|RN16|Tela 02|
 |05.1|Campos ausentes são exibidos como "Não informado".|RN04|Tela 02| |05.1|Campos ausentes são exibidos como "Não informado".|RN04|Tela 02|
- 
  
 ==== Fluxo 07 - Aplicar Filtros nos Cards ==== ==== Fluxo 07 - Aplicar Filtros nos Cards ====
  
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
-|01|O usuário seleciona um valor em qualquer campo da barra de filtros (Relator, Procurador, Colegiado ou Texto livre).| |Tela 02|+|01|O usuário seleciona um valor em qualquer campo da barra de filtros (Relator da Pauta ou Texto livre).| |Tela 02|
 |02|O sistema aplica os filtros cumulativamente (AND), sem nova chamada à API.|RN10|Tela 02| |02|O sistema aplica os filtros cumulativamente (AND), sem nova chamada à API.|RN10|Tela 02|
 |03|O sistema reseta a paginação para a página 1.|RN02|Tela 02| |03|O sistema reseta a paginação para a página 1.|RN02|Tela 02|
 |04|O sistema atualiza o contador "Exibindo X de Y processos".|RN10|Tela 02| |04|O sistema atualiza o contador "Exibindo X de Y processos".|RN10|Tela 02|
-|04.1|Caso nenhum processo atenda ao filtro, o sistema exibe a mensagem: "Nenhum processo encontrado para os filtros aplicados".|RN10|Tela 02|+|04.1|Caso nenhum processo atenda ao filtro, o sistema exibe a mensagem: "Nenhum processo encontrado. Ajuste os filtros ou clique em ''Limpar filtros'' para ver todos os processos.".|RN10|Tela 02|
 |05|O sistema exibe o botão "Limpar filtros".|RN10|Tela 02| |05|O sistema exibe o botão "Limpar filtros".|RN10|Tela 02|
- 
  
 ==== Fluxo 08 - Limpar Filtros ==== ==== Fluxo 08 - Limpar Filtros ====
Linha 178: Linha 169:
 |04|O sistema oculta o botão "Limpar filtros".|RN10|Tela 02| |04|O sistema oculta o botão "Limpar filtros".|RN10|Tela 02|
 |05|O sistema exibe a lista completa de cards da sessão.|RN02|Tela 02| |05|O sistema exibe a lista completa de cards da sessão.|RN02|Tela 02|
- 
  
 ==== Fluxo 09 - Acessar Detalhamento de Processo ==== ==== Fluxo 09 - Acessar Detalhamento de Processo ====
Linha 184: Linha 174:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O usuário clica no número do processo no card.| |Tela 02| |01|O usuário clica no número do processo no card.| |Tela 02|
-|02|O sistema abre `/processos/[autuacaoId]` em nova aba (RF-002).|RN01|–| +|02|O sistema abre `/processos/[autuacaoId]` na mesma aba (RF-002).|RN01|–| 
 +|02.1|Caso o processo seja sigiloso, o número não possui link e nenhuma navegação ocorre.|RN16|Tela 02|
  
 ==== Fluxo 10 - Assistir Gravação do Processo ==== ==== Fluxo 10 - Assistir Gravação do Processo ====
Linha 191: Linha 181:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O usuário clica no botão "Assistir gravação" dentro do card do processo.|RN09|Tela 02| |01|O usuário clica no botão "Assistir gravação" dentro do card do processo.|RN09|Tela 02|
-|02|O sistema verifica o tipo da gravação vinculada ao processo.|RN09| | +|02|O sistema exibe o reprodutor com a gravação vinculada ao processo, a partir do link retornado pela API.|RN09|Tela 02|
-|02.1|Caso `gravacao.tipo === "YOUTUBE"`: o sistema abre modal com `<iframe>` embed do YouTube.|RN09|Tela 02| +
-|02.2|Caso `gravacao.tipo === "ARQUIVO"`: o sistema abre `<video>` em modal ou link direto para o arquivo `.mp4`.|RN09|Tela 02| +
  
 ==== Fluxo 11 - Trocar Sessão no Mesmo Dia ==== ==== Fluxo 11 - Trocar Sessão no Mesmo Dia ====
Linha 202: Linha 189:
 |02|O sistema executa `GET /api/pautas/[DATA]?sessaoId={id}` com o identificador da sessão selecionada.|RN14|Tela 02| |02|O sistema executa `GET /api/pautas/[DATA]?sessaoId={id}` com o identificador da sessão selecionada.|RN14|Tela 02|
 |03|O sistema atualiza o estado local da tela sem alterar a URL do navegador.|RN14|Tela 02| |03|O sistema atualiza o estado local da tela sem alterar a URL do navegador.|RN14|Tela 02|
-|04|O sistema executa o **[[#fluxo_05_-_renderizar_detalhe_da_sessao|Fluxo 05]]** com os dados da nova sessão.| | | +|04|O sistema executa o **[[#fluxo_05_-_renderizar_detalhe_da_sessao|Fluxo 05]]**com os dados da nova sessão.| | |
  
 ==== Fluxo 12 - Navegar entre Sessões ==== ==== Fluxo 12 - Navegar entre Sessões ====
Linha 214: Linha 200:
 |03.1|Caso o dia destino possua apenas uma sessão, o sistema navega para `/pautas/[DATA]`.| |Tela 02| |03.1|Caso o dia destino possua apenas uma sessão, o sistema navega para `/pautas/[DATA]`.| |Tela 02|
 |03.2|Caso o dia destino possua múltiplas sessões, o sistema navega para `/pautas/[DATA]?sessaoId={id}`.| |Tela 02| |03.2|Caso o dia destino possua múltiplas sessões, o sistema navega para `/pautas/[DATA]?sessaoId={id}`.| |Tela 02|
-|04|O sistema executa o **[[#fluxo_04_-_acessar_detalhe_de_sessao|Fluxo 04]]** para carregar o detalhe da sessão destino.| | | +|04|O sistema executa o **[[#fluxo_04_-_acessar_detalhe_de_sessao|Fluxo 04]]**para carregar o detalhe da sessão destino.| | |
  
 ==== Fluxo 13 - Visualizar Membros da Sessão ==== ==== Fluxo 13 - Visualizar Membros da Sessão ====
Linha 228: Linha 213:
 ^Passo^Ação^Regra^Tela| ^Passo^Ação^Regra^Tela|
 |01|O usuário aciona o botão "Baixar Ata" exibido no banner de ata quando a situação for `ELABORADA`.|RN13|Tela 02| |01|O usuário aciona o botão "Baixar Ata" exibido no banner de ata quando a situação for `ELABORADA`.|RN13|Tela 02|
-|02|O sistema abre o link do PDF da ata em nova aba ou realiza download do arquivo.|RN13|–| +|02|O sistema realiza o download do arquivo da ata.|RN13|–|
  
 ===== RN – Regras de Negócio ===== ===== RN – Regras de Negócio =====
  
-^ID^Descrição^ +^ID^Descrição| 
-|RN01|**Link para Detalhamento do Processo** – O N° Processo exibido no card deve ser um hiperlink que abre o detalhamento do processo (RF-002) em nova aba. O link utiliza o `autuacaoId` como identificador: `href="/processos/[autuacaoId]" target="_blank"`.|+|RN01|**Link para Detalhamento do Processo** – O N° Processo exibido no card deve ser um hiperlink que abre o detalhamento do processo (RF-002) **na mesma aba**. O link utiliza o `autuacaoId` como identificador: `href="/processos/[autuacaoId]"`. Em processo sigiloso o link é suprimido e o número é exibido como texto (RN16).|
 |RN02|**Paginação dos Processos** – A lista de cards é sempre paginada. Padrão: 20 itens por página; seletor com opções: 10, 20 ou 50. O total reflete o conjunto filtrado, não o total bruto. A paginação reseta para a página 1 ao aplicar ou alterar qualquer filtro.| |RN02|**Paginação dos Processos** – A lista de cards é sempre paginada. Padrão: 20 itens por página; seletor com opções: 10, 20 ou 50. O total reflete o conjunto filtrado, não o total bruto. A paginação reseta para a página 1 ao aplicar ou alterar qualquer filtro.|
 |RN03|**Sessões Canceladas e Inativas são Ocultas** – Sessões com status Cancelada (`C`) ou Inativa (`I`) não são exibidas no calendário nem acessíveis via detalhe. Somente sessões com status Ativa (`A`) ou Encerrada (`E`) são exibidas.| |RN03|**Sessões Canceladas e Inativas são Ocultas** – Sessões com status Cancelada (`C`) ou Inativa (`I`) não são exibidas no calendário nem acessíveis via detalhe. Somente sessões com status Ativa (`A`) ou Encerrada (`E`) são exibidas.|
-|RN04|**Valor Padrão para Campos Ausentes** – Quando um campo obrigatório do card (Relator, Procurador, N° Processo, Assunto, Ementa) não estiver disponível, o sistema exibe o texto "Não informado". O campo nunca é exibido vazio ou como `null`.|+|RN04|**Valor Padrão para Campos Ausentes** – Quando um campo obrigatório do card (Relator, N° Processo, Assunto, Ementa, Interessados) não estiver disponível, o sistema exibe o texto "Não informado". A mesma regra vale para as datas opcionais do cabeçalho da sessão (Data de Abertura, Data de Fechamento e Data de Divulgação). O campo nunca é exibido vazio ou como `null`. \\ **Exceção:** em processo sigiloso, ementa e interessados vêm vazios por restrição legal e **não** recebem o texto "Não informado" — são omitidos (RN16).|
 |RN05|**Badge "Julgado" — Condicional por Processo** – O badge "Julgado" é exibido no card somente quando o campo `julgado` retornado pelo Catálogo de Serviços for `true`. Quando `false`, o badge é omitido. O badge nunca é exibido como placeholder vazio.| |RN05|**Badge "Julgado" — Condicional por Processo** – O badge "Julgado" é exibido no card somente quando o campo `julgado` retornado pelo Catálogo de Serviços for `true`. Quando `false`, o badge é omitido. O badge nunca é exibido como placeholder vazio.|
-|RN06|**Distinção Visual Obrigatória por Plataforma** – A cor do badge no calendário e a legenda são obrigatórias e permanecem visíveis na tela: \\ Azul (`--primary`) = Sessão Presencial \\ Verde (`--success`) = Videoconferência \\ Laranja (`--complementary`) = Votação Simultânea (Plenário Virtual).|+|RN06|**Distinção Visual Obrigatória por Plataforma** – A cor do badge no calendário e a legenda são obrigatórias e permanecem visíveis na tela: \\ Azul (`–primary`) = Sessão Presencial \\ Verde (`–success`) = Videoconferência \\ Laranja (`–complementary`) = Votação Simultânea (Plenário Virtual).|
 |RN07|**Navegação entre Sessões Desabilitada sem Destino** – Os botões "Sessão anterior" e "Próxima sessão" ficam desabilitados (`disabled`) quando não existe sessão anterior ou seguinte, respectivamente. Botão desabilitado não possui link.| |RN07|**Navegação entre Sessões Desabilitada sem Destino** – Os botões "Sessão anterior" e "Próxima sessão" ficam desabilitados (`disabled`) quando não existe sessão anterior ou seguinte, respectivamente. Botão desabilitado não possui link.|
-|RN08|**Banner de Sessão Cancelada no Detalhe** – Quando a sessão possuir status Cancelada, o sistema exibe um banner de aviso "Sessão Cancelada" no topo da página de detalhe.| +|RN08|**Data sem Sessão Disponível** – Quando a data consultada não possuir sessão disponível, o sistema exibe a mensagem "Nenhuma sessão encontrada para esta data", sem cabeçalho e sem lista de processos. A regra alcança o caso de a única sessão do dia estar Cancelada: a API retorna vazio para sessão cancelada, portanto ela não chega a ser exibida no detalhe (RN03). Data em **formato inválido** não recai nesta regra — exibe a página de erro padrão.| 
-|RN09|**Gravação Vinculada por Processo** – O botão "Assistir gravação" é exibido no card somente quando há gravação disponível para aquele processo. Quando não há gravação, o botão é omitido completamente, sem placeholder. A gravação pode ser do tipo YouTube (abre modal com embed) ou arquivo `.mp4` (abre modal com `<video>`).| +|RN09|**Gravação Vinculada por Processo** – O botão "Assistir gravação" é exibido no card somente quando há gravação disponível para aquele processo. Quando não há gravação, o botão é omitido completamente, sem placeholder. A API retorna **sempre o link da gravação** vinculada ao processo (ex.: ''https://videos.tce.go.gov.br/2025/11-25/12-11-2025/202200010052845.mp4''); ao acionar o botão, o sistema exibe o reprodutor com essa gravação. Não há distinção de tipo a tratar na interface.| 
-|RN10|**Filtros Cumulativos com Escopo de Texto** – Os filtros de Relator, Procurador, Colegiado e Texto livre são cumulativos (AND). O filtro de texto realiza busca parcial e case-insensitive nos campos N° Processo, Assunto e Ementa simultaneamente. O contador "Exibindo X de Y processos" é exibido quando ao menos um filtro estiver ativo. O botão "Limpar filtros" é visível apenas com filtro ativo.|+|RN10|**Filtros Cumulativos com Escopo de Texto** – Os filtros de Relator da Pauta e Texto livre são cumulativos (AND) e se aplicam aos processos da sessão exibida. **Não há filtro de procurador** (RN18). O **Colegiado não é filtrável**: uma sessão pertence a um único colegiado, e o campo é exibido preenchido e bloqueado com o colegiado da sessão. O filtro de texto realiza busca parcial e case-insensitive nos campos N° Processo, Interessados, Assunto e Ementa simultaneamente. O contador "Exibindo X de Y processos" é exibido quando ao menos um filtro estiver ativo. O botão "Limpar filtros" é visível apenas com filtro ativo.|
 |RN11|**Fundamentação Legal Fixa** – O cabeçalho da sessão exibe obrigatoriamente o texto fixo: **"PAUTA (art. 150, Incisos I a VI, RI-TCE)"**.| |RN11|**Fundamentação Legal Fixa** – O cabeçalho da sessão exibe obrigatoriamente o texto fixo: **"PAUTA (art. 150, Incisos I a VI, RI-TCE)"**.|
-|RN12|**Membros — Funções Exibidas** – O painel de membros exibe exclusivamente nome e função. O campo `tituloMembro` retornado pelo Catálogo de Serviços já contém a função com a forma de gênero correta ("Relator" / "Relatora", "Secretário" / "Secretária"). Funções exibidas: Presidente, Relator(a), Procurador e Secretário(a). A função Procurador Substituto (`PS`) não é exibida.| +|RN12|**Membros — Funções Exibidas** – O painel de membros exibe exclusivamente **nome e função**, e o nome é apresentado sem tratamento ou cargo ("Aldemário Araújo Castro", não "Proc. Dr. Aldemário Araújo Castro"): o cargo é o próprio rótulo de função, ao lado. \ O campo `tituloMembro` retornado pelo Catálogo de Serviços já contém a função com a forma de gênero correta ("Relator" / "Relatora", "Secretário" / "Secretária"). \ **Funções exibidas: Presidente, Relator(a), Procurador e Secretário(a)** — somente estas quatro. \ **Nenhum membro é omitido da composição**: as cadeiras substitutas integram a sessão e são apresentadas sob a função que exercem, e não sob a de substituto: \ • Conselheiro Substituto (`CS`) e Substituto de Sessão (`AS`) → **Relator(a)**, por serem registrados na `PLD_MEMBRO` como relatores da pauta do processo (RN17); \ • Procurador Substituto (`PS`) → **Procurador**. \ Ou seja, os rótulos "Conselheiro Substituto", "Substituto de Sessão" e "Procurador Substituto" **não são exibidos**; os membros que os possuem, sim.| 
-|RN13|**Ata de Julgamento — Três Situações e Download via Endpoint** – O banner de ata exibe estado e ação conforme a situação: \\ ''AGUARDANDO_SESSAO'' — banner azul claro, sem ação \\ ''EM_ELABORACAO'' — banner amarelo, sem ação \\ ''ELABORADA'' — banner verde, botão "Baixar Ata". \\ O download é realizado via ''GET /api/arquivo/downloadblob/PLD_ATA/text_ataass_b/PLDATA_ID/{token}/{PLDATA_ID}'' (Catálogo de Serviços). O botão é exibido apenas quando a situação for ''ELABORADA'' e o ''PLDATA_ID'' estiver disponível. \\ **Pendências em aberto:** \\ — O endpoint atual de sessão não retorna o ''PLDATA_ID''; a API do catálogo precisa ser atualizada para expor esse campo. \\ — O mecanismo de geração e validade do ''token'' presente na URL não está documentado; é necessário investigar como obtê-lo. \\ — A API não possui campo que indique explicitamente que a ata da sessão está pronta; esse indicador (''ELABORADA'') precisa ser incluído na resposta do endpoint.|+|RN13|**Ata de Julgamento — Três Situações e Download do Arquivo** – O banner de ata exibe estado e ação conforme a situação: \\ ''AGUARDANDO_SESSAO'' — banner azul claro, sem ação \\ ''EM_ELABORACAO'' — banner amarelo, sem ação \\ ''ELABORADA'' — banner verde, com botão "Baixar Ata" e a **data de elaboração** exibida no formato ''dd/MM/yyyy''. \\ O endpoint ''GET /api/pauta/sessoes-completas/{dia}/{mes}/{ano}'' retorna, para cada sessão do dia, a **situação** da ata, a **data de elaboração** e os dados do **arquivo** (''PLDATA_ID'' e ''token''). \\ O download é realizado via ''GET /api/arquivo/downloadblob/PLD_ATA/text_ataass_b/PLDATA_ID/{token}/{PLDATA_ID}'' (Catálogo de Serviços), montado a partir desses dados. O acionamento do botão **baixa o arquivo** — não abre nova aba. \\ O botão é exibido apenas quando a situação for ''ELABORADA'' e o arquivo estiver disponível. \\ **Resíduo:** a validade do ''token'' não está documentada. Enquanto não houver comportamento definido para token expirado, esse caso não gera cenário de teste (PD-06).|
 |RN14|**Troca de Sessão no Mesmo Dia sem Alteração de URL** – Ao clicar em um chip "Outras Sessões do Dia", o sistema carrega os dados da nova sessão sem alterar a URL do navegador. A URL só muda ao navegar para outro dia via botões "Sessão anterior" / "Próxima sessão".| |RN14|**Troca de Sessão no Mesmo Dia sem Alteração de URL** – Ao clicar em um chip "Outras Sessões do Dia", o sistema carrega os dados da nova sessão sem alterar a URL do navegador. A URL só muda ao navegar para outro dia via botões "Sessão anterior" / "Próxima sessão".|
 |RN15|**Link de Transmissão para Videoconferência** – Quando a sessão for do tipo Videoconferência e possuir link de transmissão disponível, o sistema exibe o link "Assistir transmissão" no cabeçalho da sessão.| |RN15|**Link de Transmissão para Videoconferência** – Quando a sessão for do tipo Videoconferência e possuir link de transmissão disponível, o sistema exibe o link "Assistir transmissão" no cabeçalho da sessão.|
 +|RN16|**Processo Sigiloso na Pauta** – Quando `Processo.ehProcessoSigiloso` for `true`, o card exibe o badge **"Sigiloso"** e preserva os dados públicos do item de pauta: \\ **Exibidos:** N° Processo (como texto, **sem link**), Assunto (`situacaoProcesso`), ordem na pauta e badge "Julgado" quando aplicável. \\ **Não exibidos:** ementa (retornada como string vazia) e interessados (`nomesInteressados` retornado como array vazio). Estes campos são omitidos e **não** recebem o texto "Não informado" da RN04. \\ O badge existe para que a ausência desses campos seja lida como restrição legal, e não como falta de cadastro. A supressão do link evita conduzir o usuário à tela de erro do RF-002, que não exibe processo sigiloso.|
 +|RN17|**Relator da Pauta e Relator do Processo são Campos Distintos** – O relator exibido na pauta e o conselheiro registrado no processo **não são o mesmo campo**. \ **Relator da pauta** — origem ''PLD_MEMBRO'', alcançado pelo vínculo ''VPLD_PROCESSOS_SESSAO_PAUTA.PLDMESS_ID'' → ''VPLD_MEMBROS_CAD_SESSAO.PLDMESS_ID''. É a cadeira que relata o processo **naquela sessão** e é o único relator exibido na pauta. \ **Relator do processo** — origem ''PRO_AUTUACAO.GERUSUA_ID_CONSEL'', vinculado desde a autuação. É atributo do processo e é exibido no detalhamento do processo (RF-002); **não integra o contrato da pauta**. \ A substituição de cadeira já vem **resolvida na origem**: o retorno entrega a cadeira que efetivamente relata e não informa que houve substituição. A pauta, portanto, **não exibe marcador de substituição** nem desdobra o relator em dois campos. \ Consequência para a interface: o relator oferecido no filtro, o exibido no card e o listado na composição da sessão são sempre a mesma cadeira, resolvida por ''PLDMESS_ID'' — nunca pelo nome.|
 +|RN18|**Procurador na Pauta é o da Sessão** – Na pauta, o procurador é exclusivamente o **procurador da sessão** (''PLD_MEMBRO.INDR_FUNCAO_A = R'' ou ''PS''), membro da composição, e é exibido apenas na composição da sessão. \ **Não é exibido no card do processo** e **não é filtrável**: seu valor é único dentro da sessão, de modo que filtrar por ele devolveria a pauta inteira. \ O **procurador do processo** (''VWEB_PROCDADOSGERAIS.PROCURADOR'' / ''PRO_AUTUACAO.GERUSUA_ID_PROCURADOR'') é atributo da autuação e permanece no detalhamento do processo (RF-002), não integrando o contrato da pauta. \ A barra de filtros da Tela 02 é composta por: Relator da Pauta, identificador de Colegiado bloqueado e busca livre.|
 +|RN19|**Ordem da Pauta é Agrupada por Relator** – Cada item de pauta possui uma **ordem sequencial**, exibida no card. A pauta é ordenada **por relator**: os processos de uma mesma cadeira ocupam uma **faixa contígua** de ordem — as ordens 1 a 10 pertencem ao relator X, 11 a 15 ao relator Y, e assim sucessivamente. \ **Sequência dos relatores** — segue a coluna ''ORDEM'' de ''VPLD_MEMBROS_CAD_SESSAO'' (precedência protocolar da composição da sessão), desempatada por ''DATA_ENTRADACARGO_D'' (antiguidade no cargo). \ **Exceção — Presidente por último:** quando o Presidente da sessão relata, seus processos ocupam a **última faixa** da listagem, ainda que sua ''ORDEM'' na composição seja ''01''. A exceção alcança apenas a função ''P'' na sessão: Auditor e Auditor Substituto (''A''/''AS'') permanecem na sequência normal, posicionados pela ''ORDEM''. \ **Ordem dentro de cada relator** — ''NUMR_ORDEM_ASSUNTO'' (ordem protocolar por matéria, de ''PLD_ORDEMASSUNTO''), depois ''DESC_ASSUNTO_A'' e ''CODG_PROCESSO_ORDEM''. \ **Origem do número exibido** — o número da ordem é um **contador sequencial atribuído após a ordenação** (''DtoAutuacao.OrdemLista'' → campo ''ordem'' da API). Não é o ''NUMR_ORDEM_ASSUNTO'': este é a ordem protocolar da matéria e **se repete** entre processos de mesmo assunto, não servindo como número de ordem do item. \ A ordem é exibida inclusive em **processo sigiloso**, por ser dado público do item de pauta (RN16). \ A ordem é atributo do item de pauta, não do processo: o mesmo processo pode ocupar ordens distintas em sessões distintas. \ **Escopo:** a regra vale exclusivamente para a **listagem de processos**. O painel "Membros da Sessão" (RN12) usa a ''ORDEM'' pura, com o Presidente encabeçando a composição — são duas ordenações distintas para finalidades distintas. \ **Origem no legado:** o portal atual implementa a exceção do Presidente no JavaScript, em duas passadas — primeiro os membros com ''tituloMembro != "Presidente"'', depois o Presidente; o site MVC percorre ''Model[CONSELHEIRO_RELATOR]'' e em seguida ''Model[PRESIDENTE]''. A regra não estava documentada e se perdeu na reescrita da consulta de processos, sendo restaurada em 2026-08-28. \ **Datas de regressão:** 31/01/2022 (quatro sessões, dois Presidentes relatando), 25/04/2022 (Presidente por último na Primeira Câmara) e 23/04/2025 (Presidente sem processos — ordem segue a composição). Nenhuma delas isolada é suficiente para validar a regra.|
  
 ===== Integrações ===== ===== Integrações =====
Linha 254: Linha 242:
 ==== Catálogo de Serviços TCE-GO ==== ==== Catálogo de Serviços TCE-GO ====
  
-Base URL: ''https://catalogodeservicos.tce.go.gov.br''+Base URL: ''[[https://catalogodeservicos.tce.go.gov.br|https://catalogodeservicos.tce.go.gov.br]]''
  
-^Endpoint^Método^Parâmetros^Usado em^Dados obtidos^ +^Endpoint^Método^Parâmetros^Usado em^Dados obtidos| 
-|''/api/pauta/datas/{mes}/{ano}''|GET|''mes'' (int, path, obrigatório), ''ano'' (int, path, obrigatório)|Calendário|Lista de dias com sessão: ''dia'' (int) + ''titulo'' (string descritivo). Retorna 404 quando não há sessões no período.| +|''/api/pauta/datas/{mes}/{ano}'' |GET|''mes'' (int, path, obrigatório), ''ano'' (int, path, obrigatório)|Calendário|Lista de dias com sessão: ''dia'' (int) + ''titulo'' (string descritivo). Retorna 404 quando não há sessões no período.| 
-|''/api/pauta/sessao/{dia}/{mes}/{ano}''|GET|''dia'' (int, path), ''mes'' (int, path), ''ano'' (int, path) — todos obrigatórios|Calendário + Detalhe|Sessões do dia com: ''nomeCamara'', ''tipoSessao'', ''dataSessao'', ''horarioSessao'', ''informacaoSessao'', ''alertaSessao'', ''definicaoPauta'', ''membros'' (nome + título), ''processos'' (incl. ''julgado: boolean'', ''assunto'', ''ementa'', ''situacaoProcesso''). Retorna 204 quando sem dados.| +|''/api/pauta/sessao/{dia}/{mes}/{ano}'' |GET|''dia'' (int, path), ''mes'' (int, path), ''ano'' (int, path) — todos obrigatórios|Calendário + Detalhe|Sessões do dia com: ''nomeCamara'', ''tipoSessao'', ''dataSessao'', ''horarioSessao'', ''informacaoSessao'', ''alertaSessao'', ''definicaoPauta'', ''membros'' (nome + título), ''processos'' (incl. ''julgado: boolean'', ''assunto'', ''ementa'', ''situacaoProcesso''). Retorna 204 quando sem dados.| 
-|''/api/pauta/videos/{dia}/{mes}/{ano}''|GET|''dia'' (int, path), ''mes'' (int, path), ''ano'' (int, path) — todos obrigatórios|Detalhe|**Fonte primária de gravações por processo.** Retorna ''InformacoesPautaSessaoApi[]'' com os processos que possuem vídeo. O vínculo com os processos de ''/api/pauta/sessao'' é feito pelo campo ''Processo.id''. Processos sem correspondência recebem ''gravacao = null'' e o botão "Assistir gravação" é omitido. \\ ⚠️ A estrutura exata dos campos de vídeo dentro de ''Processo'' precisa ser confirmada com a equipe do catálogo. Retorna 204 quando sem gravações.|+|''/api/pauta/videos/{dia}/{mes}/{ano}'' |GET|''dia'' (int, path), ''mes'' (int, path), ''ano'' (int, path) — todos obrigatórios|Detalhe|**Fonte primária de gravações por processo.** Retorna ''[[:pres:gerti:gestao_de_ativos:portal:informacoespautasessaoapi|InformacoesPautaSessaoApi]][]''com os processos que possuem vídeo. O vínculo com os processos de ''/api/pauta/sessao'' é feito pelo campo ''Processo.id''. Processos sem correspondência recebem ''gravacao = null'' e o botão "Assistir gravação" é omitido. Retorna 204 quando sem gravações.| 
 +|''/api/pauta/sessoes-completas/{dia}/{mes}/{ano}'' |GET|''dia'' (int, path), ''mes'' (int, path), ''ano'' (int, path) — todos obrigatórios|Detalhe|**Fonte da ata de julgamento.** Endpoint criado em 2026-08-25. Retorna as sessões do dia completas, incluindo os dados da ata: **situação**, **data de elaboração** e **arquivo** (''PLDATA_ID'' e ''token''), que alimentam o banner e o download da RN13. \ **A confirmar:** se substitui ''/api/pauta/sessao'' e ''/api/pauta/videos'' ou se convive com eles (PD-06).|
  
 Respostas de erro comuns a todos os endpoints: Respostas de erro comuns a todos os endpoints:
  
-^Código^Descrição^ +^Código^Descrição| 
-|400|Parâmetros inválidos — ''ResultRequest'' com detalhes do erro.| +|400|Parâmetros inválidos — ''[[:pres:gerti:gestao_de_ativos:portal:resultrequest|ResultRequest]]''com detalhes do erro.| 
-|500|Erro inesperado no servidor — ''ResultRequest'' com detalhes do erro.|+|500|Erro inesperado no servidor — ''[[:pres:gerti:gestao_de_ativos:portal:resultrequest|ResultRequest]]''com detalhes do erro.|
  
 ==== Campos Complementares — Oracle Direto (legado) ==== ==== Campos Complementares — Oracle Direto (legado) ====
  
-Campos **não disponíveis** no Catálogo de Serviços; obtidos diretamente via ''RepositorioDeSessao'' / Oracle:+Campos **não disponíveis** no Catálogo de Serviços; obtidos diretamente via ''[[:pres:gerti:gestao_de_ativos:portal:repositoriodesessao|RepositorioDeSessao]]'' / Oracle: 
 + 
 +^Campo^Origem Oracle^Observação| 
 +|''PLDSESS_ID'' (sessaoId)|''PLD_SESSAO.PLDSESS_ID'' |Identificador da sessão — necessário para navegação e vínculo de dados.| 
 +|''INDR_STATUS_A'' (status)|''PLD_SESSAO.INDR_STATUS_A'' |Status estruturado: A=Ativa, E=Encerrada, C=Cancelada, I=Inativa (RN03).| 
 +|''NUMR_SESSAO_N'' |''PLD_SESSAO.NUMR_SESSAO_N'' |Número sequencial da sessão.| 
 +|''DATA_ABERTURA_D'', ''DATA_FECHAMENTO_D'', ''DATA_DIVULGACAO_D'' |''PLD_SESSAO'' |Datas complementares do ciclo de vida da sessão.| 
 +|''plataforma'' derivada|''PLD_SESSAO.INDR_VIRTUAL_A'' |Base para distinção visual (RN06). Sessão estruturada: N=Presencial, V=Videoconferência / S=Virtual| 
 +|''linkTransmissao'' |Campo de plataforma/videoconferência em ''PLD_SESSAO'' |Exibido no cabeçalho quando sessão é Videoconferência (RN15).| 
 +|''PROAUTU_ID'' (autuacaoId por processo)|''VPLD_PROCESSOS_SESSAO_PAUTA.PROAUTU_ID'' |Usado no link para RF-002 (RN01).| 
 +|''INDR_ENTRADA_A'', ''INDR_SAIDA_A'' por processo|''VPLD_PROCESSOS_SESSAO_PAUTA'' |Tipo de entrada/saída do processo na pauta.| 
 +|IDs de navegação (sessão anterior / próxima)|Query por ''DATA_SESSAO_D'' em ''PLD_SESSAO'' |Alimenta botões de navegação (RN07).| 
 +|Ata de julgamento (''situacao'', ''dataElaboracao'', ''PLDATA_ID'', ''token'')|''PLD_ATA'' |Retornada por ''/api/pauta/sessoes-completas''; alimenta o banner de ata e o download do arquivo (RN13).| 
 + 
 +===== Histórico de Revisões =====
  
-^Campo^Origem Oracle^Observação^ +^Data^Alteração^Motivo| 
-|''PLDSESS_ID'' (sessaoId)|''PLD_SESSAO.PLDSESS_ID''|Identificador da sessão — necessário para navegação e vínculo de dados.| +|2026-08-24|RN01 — link do processo passou de nova aba para a **mesma aba**; link suprimido em processo sigiloso|Decisão de Requisitos (PD-12, CA25)| 
-|''INDR_STATUS_A'' (status)|''PLD_SESSAO.INDR_STATUS_A''|Status estruturado: A=Ativa, E=Encerrada, C=Cancelada, I=Inativa (RN09).| +|2026-08-24|RN04 — fallback "Não informado" estendido às datas opcionais do cabeçalho; exceção para processo sigiloso|PD-07 e PD-14| 
-|''NUMR_SESSAO_N''|''PLD_SESSAO.NUMR_SESSAO_N''|Número sequencial da sessão.| +|2026-08-24|RN08 — deixou de descrever o banner "Sessão Cancelada"; passou a reger a **data sem sessão disponível**|A API retorna vazio para sessão cancelada; o banner era inalcançável (PD-02)| 
-|''DATA_ABERTURA_D'', ''DATA_FECHAMENTO_D'', ''DATA_DIVULGACAO_D''|''PLD_SESSAO''|Datas complementares do ciclo de vida da sessão.| +|2026-08-24|RN09 — removida a distinção entre gravação do YouTube e arquivo `.mp4`|A API retorna sempre o link da gravação (PD-08)| 
-|''plataforma'' derivada|''INDR_TIPO_A'' + campo de plataforma em ''PLD_SESSAO''|Base para distinção visual (RN07).| +|2026-08-24|RN10 e Tela 02 — Colegiado deixou de ser filtro selecionável; passou a campo fixo da sessão|Uma sessão pertence a um único colegiado (PD-10)| 
-|''linkTransmissao''|Campo de plataforma/videoconferência em ''PLD_SESSAO''|Exibido no cabeçalho quando sessão é Videoconferência (RN20).| +|2026-08-24|**RN16 acrescentada** — tratamento de processo sigiloso na pauta|Comportamento não documentado, apesar de ser item de cobertura obrigatória do Guia de Critérios de Aceite (PD-14)| 
-|''PROAUTU_ID'' (autuacaoId por processo)|''VPLD_PROCESSOS_SESSAO_PAUTA.PROAUTU_ID''|Usado no link para RF-002 (RN01).| +|2026-08-24|Fluxo 02.2.1, Fluxos 06.3.1 e 07.4.1, Tela 01 — mensagens ao usuário transcritas literalmente|Textos não constavam ou constavam truncados (PD-03, PD-05)| 
-|''INDR_ENTRADA_A'', ''INDR_SAIDA_A'' por processo|''VPLD_PROCESSOS_SESSAO_PAUTA''|Tipo de entrada/saída do processo na pauta.| +|2026-08-24|Fluxo 04.02 — badge passa o `sessaoId`; sem ele, abre a primeira sessão do dia|Substitui a regra de URL base comum a todos os badges do dia (PD-09)| 
-|IDs de navegação (sessão anterior / próxima)|Query por ''DATA_SESSAO_D'' em ''PLD_SESSAO''|Alimenta botões de navegação (RN08, RN18).| +|2026-08-24|Fluxo 04.04.2 desdobrado em 04.2 (data sem sessão → mensagem) e 04.3 (data inválida → erro padrão)|O 404 cobria dois casos distintos (PD-11)| 
-|Ata de julgamento (''situacao'', ''url'', ''dataElaboracao'')|Tabela/view de ata — a mapear|Alimenta banner de ata (RN17).|+|2026-08-24|Fluxos 05.1.1, 09.02 e 10.02 alinhados às decisões acima|Consistência com RN01, RN08 e RN09| 
 +|2026-08-24|Corrigidas referências cruzadas inexistentes: RN17, RN18 e RN20, e RN07/RN09 fora de contexto na tabela Oracle|As RN citadas não existem nesta especificação| 
 +|2026-08-25|RN13 — removidas as pendências em aberto; o novo endpoint `/api/pauta/sessoes-completas/{dia}/{mes}/{ano}` passou a retornar situação, data de elaboração e arquivo da ata. Fluxo 14.02 passou a **download direto**, e o banner Elaborada passou a exibir a data de elaboração|Task de desenvolvimento do `PLDATA_ID` concluída (PD-06)| 
 +|2026-08-25|RN17 acrescentada — relator da pauta e relator do processo são campos distintos, resolvidos por ''PLDMESS_ID''|Decisão de Requisitos: relator no filtro = relator no card = relator na composição| 
 +|2026-08-25|**RN18 acrescentada** — o procurador da pauta é o da sessão, exibido só na composição, não filtrável; procurador do processo permanece no RF-002|Valor único na sessão torna o filtro inócuo; a distinção de escopo vinha da RN17| 
 +|2026-08-25|RN10 alterada — filtro de procurador revogado; busca livre passou a cobrir Interessados|Decorrência da RN18 e da inclusão dos interessados no card| 
 +|2026-08-25|RN04 alterada — Procurador saiu da lista de campos obrigatórios do card; Interessados entrou|O card deixou de exibir procurador e passou a exibir interessados| 
 +|2026-08-25|RN17 alterada — a pauta exibe apenas o relator da pauta, em campo único; relator do processo permanece no RF-002 e a substituição não é sinalizada|O retorno já entrega a cadeira relatora resolvida e omite a substituição| 
 +|2026-08-26|**RN19 acrescentada** — ordem do item de pauta exibida no card, com a pauta agrupada por relator em faixas contíguas|A ordem já vinha no retorno e a RN16 já a citava entre os dados exibidos, mas nenhuma regra definia sua apresentação nem o critério de ordenação| 
 +|2026-08-26|RN12 alterada — explicitado que nenhum membro é omitido da composição: `CS`/`AS` são exibidos como Relator(a) e `PS` como Procurador; nome do membro sem tratamento ou cargo|A redação anterior ("a função Procurador Substituto não é exibida") admitia duas leituras — rótulo omitido ou membro omitido. Decisão de Requisitos: o membro consta, o rótulo de substituto não|
  
---- +— //Gerado com: documentar-funcionalidade-v1.md// \\ 
-//Gerado com: documentar-funcionalidade-v1.md//+— //Revisado por: Paulo Ricardo Amorim Silva - pramorim@tce.go.gov.br// \\ 
 +— //Atualizado em 2026-08-25 pelas respostas às pendências registradas em `testes/pendencias-e-divergencias.md` (PD-06, PD-14 e PD-15)//
  
  • pres/gerti/gestao_de_ativos/portal/er_011.1775825652.txt.gz
  • Última modificação: 10/04/2026 12:54
  • por pramorim