====== [ER_011] Requisitos - Pautas e Sessões de Julgamento ====== **Descrição**: Funcionalidade que disponibiliza ao público um calendário mensal de sessões de julgamento do TCE-GO, com distinção visual obrigatória entre sessões Presenciais, Videoconferência e Votação Simultânea (Plenário Virtual). Permite ao usuário navegar entre meses, acessar o detalhamento de cada sessão com os processos dispostos em cards, aplicar filtros, visualizar a ata de julgamento e assistir às gravações vinculadas por processo. A fundamentação legal da pauta observa o **art. 150, Incisos I a VI, do Regimento Interno do TCE-GO (RI-TCE)**. **Menu / Local de acesso**: Portal TCE-GO | Pautas e Sessões de Julgamento | `/pautas` (calendário) · `/pautas/[DATA]` (detalhe da sessão) ===== Atores ===== ^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.| ===== Telas ===== ==== Tela 01 - Calendário de Sessões (`/pautas`) ==== {{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-124027.png}} Tela responsável por exibir o calendário mensal de sessões de julgamento com distinção visual por tipo de plataforma. ^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`).| |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).| |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).| |Estado "Sem sessões no mês"|Mensagem Informativa|Condicional|Mensagem informativa|–|Exibido quando nenhuma sessão existe no mês consultado.| |Estado de Carregamento|Skeleton animado|Condicional|–|–|Exibido durante a chamada à API.| ==== 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-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. **Cabeçalho da Sessã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".| |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)".| |Situação|Oracle|`PLD_SESSAO.INDR_STATUS_A`|Sim|"Ativa" / "Encerrada" / "Cancelada" / "Inativa". Sessão Cancelada exibe banner de aviso (RN08).| |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 de Abertura|Oracle|`PLD_SESSAO.DATA_ABERTURA_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |Data de Fechamento|Oracle|`PLD_SESSAO.DATA_FECHAMENTO_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |Data de Divulgação|Oracle|`PLD_SESSAO.DATA_DIVULGACAO_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |Total de Processos|Catálogo (`/api/pauta/sessao`)|Calculado a partir de `processosCamaraSessao` de todos os membros|Sim|–| |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).| |Alerta de Sessão|Catálogo (`/api/pauta/sessao`)|`alertaSessao`|Condicional|Exibido quando `alertaSessao` estiver preenchido (ex.: sessão cancelada) (RN08).| |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).| **Ata de Julgamento:** ^Elemento^Situação^Condição^Cor do Banner^Ação Disponível| |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 — Elaborada|`ELABORADA`|Ata finalizada com URL disponível|Verde (`green-50`)|Botão "Baixar Ata" (link para PDF) (RN13).| **Barra de Filtros (client-side):** ^Filtro^Tipo^Campo Filtrado^Observação| |Relator|Seleção (``)|`procurador`|Lista de procuradores únicos da sessão corrente.| |Colegiado / Plenário|Seleção (``)|`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).| |Botão "Limpar filtros"|Botão|–|Visível apenas quando ao menos um filtro estiver ativo. Paginação reseta para página 1 ao aplicar qualquer filtro (RN02, RN10).| **Card de Processo:** ^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).| |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).| |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).| |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).| |Paginação|–|Componente de paginação|Sim|Padrão: 20 itens/página; seletor: 10 / 20 / 50. Total reflete conjunto filtrado (RN02).| **Navegação entre Sessões:** ^Elemento^Tipo^Observação| |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).| ===== Fluxos ===== ==== Fluxo 01 - Acessar Calendário de Sessões (Fluxo Principal) ==== ^Passo^Ação^Regra^Tela| |01|O usuário acessa a rota `/pautas`.| |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.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| ==== Fluxo 02 - Renderizar Calendário ==== ^Passo^Ação^Regra^Tela| |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.1|Caso não haja sessões, o sistema exibe mensagem informativa de mês sem sessões.| |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.1|Quando um mesmo dia possui múltiplas sessões, o sistema exibe um badge por sessão, empilhados ou em linha.|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| ==== Fluxo 03 - Navegar entre Meses ==== ^Passo^Ação^Regra^Tela| |01|O usuário aciona o botão "Mês Anterior" ou "Próximo Mês".| |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| |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 ==== ^Passo^Ação^Regra^Tela| |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| |03|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 02| |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.2|Caso a DATA seja inválida ou não possua sessão, o sistema retorna 404 (`notFound()`).| |Tela 02| ==== Fluxo 05 - Renderizar Detalhe da Sessão ==== ^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.1|Caso a sessão possua status Cancelada, o sistema exibe banner de aviso "Sessão Cancelada".|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| |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| |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.| | | |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 ==== ^Passo^Ação^Regra^Tela| |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| |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| |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.1|Campos ausentes são exibidos como "Não informado".|RN04|Tela 02| ==== Fluxo 07 - Aplicar Filtros nos Cards ==== ^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| |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| |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| |05|O sistema exibe o botão "Limpar filtros".|RN10|Tela 02| ==== Fluxo 08 - Limpar Filtros ==== ^Passo^Ação^Regra^Tela| |01|O usuário aciona o botão "Limpar filtros".| |Tela 02| |02|O sistema remove todos os valores de filtro ativos.|RN10|Tela 02| |03|O sistema reseta a paginação para a página 1.|RN02|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| ==== Fluxo 09 - Acessar Detalhamento de Processo ==== ^Passo^Ação^Regra^Tela| |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|–| ==== Fluxo 10 - Assistir Gravação do Processo ==== ^Passo^Ação^Regra^Tela| |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.1|Caso `gravacao.tipo === "YOUTUBE"`: o sistema abre modal com `