Essa é uma revisão anterior do documento!
RF-011 — Pautas e Sessões de Julgamento
Disponibiliza ao público um calendário mensal de sessões de julgamento do TCE-GO com distinção visual por tipo de plataforma, e o detalhamento da pauta de cada sessão com filtros, paginação, gravações e navegação entre sessões.
Menu / Local de Acesso: Calendário de Sessões — rotas ``/pautas`` (calendário) e ``/pautas/[DATA]`` (detalhe da sessão)
—
Atores
| Nível | Perfil | Autenticação | Abrangência |
|---|---|---|---|
| Público | Visitante | Não requerida | Acesso irrestrito ao calendário e detalhe das sessões |
—
Telas
Tela 01 — Calendário de Sessões (`/pautas`)
| Elemento | Tipo | Descrição |
|---|---|---|
| Cabeçalho | Banner | Título “Pautas e Sessões de Julgamento” — fundo azul institucional (``–primary``) |
| Navegação de mês | Botões | ``< Mês Anterior`` e ``Próximo Mês >`` — disparam nova consulta à API |
| Grade do calendário | Grade | Semanas × Dias do mês corrente |
| Indicador de dia com sessão | Badge(s) | Um badge colorido por sessão do dia; múltiplos badges empilhados quando há mais de uma sessão |
| Legenda | Componente fixo | Exibida permanentemente abaixo (ou ao lado) do calendário; três cores: Azul (Presencial), Verde (Videoconferência), Laranja (Votação Simultânea) |
| Estado loading | Skeleton | Exibido durante chamada à API |
| Estado empty | Mensagem | Exibido quando nenhuma sessão existe no mês consultado |
| Estado error | Mensagem | Exibido em falha inesperada de API |
Cores dos badges:
| Cor | Token | Tipo de Sessão | Código Legado |
|---|---|---|---|
| Azul | ``–primary`` | Sessão Presencial | ``INDR_TIPO_A = 'O'`` ou ``'X'`` — plataforma presencial |
| Verde | ``–success`` (~#16A34A) | Videoconferência | Plataforma videoconferência |
| Laranja | ``–complementary`` (~#F17300) | Votação Simultânea (Plenário Virtual) | ``INDR_TIPO_A = 'E'`` (Extraordinária Administrativa) |
Combinações possíveis de sessões em um mesmo dia:
| Sessão | Colegiado | Tipo |
|---|---|---|
| Primeira Câmara — Ordinária | ``PRIMEIRA_CAMARA`` | ``ORDINARIA`` |
| Segunda Câmara — Ordinária | ``SEGUNDA_CAMARA`` | ``ORDINARIA`` |
| Tribunal Pleno — Ordinária | ``TRIBUNAL_PLENO`` | ``ORDINARIA`` |
| Tribunal Pleno — Extraord. Administrativa | ``TRIBUNAL_PLENO`` | ``EXTRAORDINARIA_ADMINISTRATIVA`` |
—
Tela 02 — Detalhe da Sessão (`/pautas/[DATA]`)
Cabeçalho da Sessão:
| Campo UI | Campo Oracle / Legado | Formato |
|---|---|---|
| Colegiado | ``INDR_COLEGIADO_A`` | “Primeira Câmara” / “Segunda Câmara” / “Tribunal Pleno” |
| Tipo | ``INDR_TIPO_A`` | “Ordinária” / “Extraordinária Adm.” / “Extraordinária” |
| Plataforma | derivado de ``INDR_TIPO_A`` + campo plataforma | “Presencial”, “Videoconferência” ou “Virtual (Votação Simultânea — Plenário Virtual)” |
| Situação | ``INDR_STATUS_A`` | “Ativa” / “Encerrada” / “Cancelada” / “Inativa” |
| Número da Sessão | ``NUMR_SESSAO_N`` | Numérico |
| Data da Sessão | ``DATA_SESSAO_D`` | ``dd/MM/yyyy HH:mm`` |
| Data de Abertura | ``DATA_ABERTURA_D`` | ``dd/MM/yyyy HH:mm`` |
| Data de Fechamento | ``DATA_FECHAMENTO_D`` | ``dd/MM/yyyy HH:mm`` |
| Data de Divulgação | ``DATA_DIVULGACAO_D`` | ``dd/MM/yyyy HH:mm`` |
| Total de Processos | Calculado no front | Contagem de itens em ``Processos`` |
| Membros | ``VPLD_MEMBROS_CAD_SESSAO`` | Link “ver membros” — abre modal/painel lateral |
| Fundamentação Legal | Texto fixo | “PAUTA (art. 150, Incisos I a VI, RI-TCE)” |
Modal/Painel de Membros:
| Função Exibida | Código Legado (``INDR_FUNCAO_A``) |
|---|---|
| Presidente | ``P`` |
| Relator / Relatora | ``C``, ``A``, ``AS``, ``CS`` |
| Procurador | ``R``, ``PS`` |
| Secretário / Secretária | ``S`` |
Barra de Filtros:
| Filtro | Tipo | Opções | Campo Filtrado |
|---|---|---|---|
| Relator | ``<select>`` | Lista de relatores únicos da sessão | ``relator`` |
| Procurador | ``<select>`` | Lista de procuradores únicos | ``procurador`` |
| Colegiado / Plenário | ``<select>`` | Primeira Câmara / Segunda Câmara / Tribunal Pleno | ``colegiado`` |
| Texto livre | ``<input>`` | Busca parcial, case-insensitive | ``numeroProcesso`` + ``assunto`` + ``ementa`` |
Card de Processo:
| Campo | Campo Legado | Obrigatório | Fallback |
|---|---|---|---|
| N° Processo (link externo) | ``CODG_PROCESSO_N`` | Sim | “Não informado” |
| Assunto | ``DESC_ASSUNTO_A`` | Sim | “Não informado” |
| Ementa | ``TextoEmenta`` (via ``DtoPauta``) | Sim | “Não informado” |
| Relator | ``RELATOR`` (via ``VPLD_MEMBROS_CAD_SESSAO``) | Sim | “Não informado” |
| Procurador | membro com ``INDR_FUNCAO_A = 'R'`` ou ``'PS'`` | Sim | “Não informado” |
| Indicador “Julgado” | ``INDR_ESTADO_A = 'J'`` | Condicional | Badge omitido se não julgado |
| Botão “Assistir gravação” | ``gravacao`` por processo | Condicional | Botão omitido se ``gravacao === null`` |
Ata de Julgamento:
| Situação | Condição | Cor do Banner | Ação Disponível |
|---|---|---|---|
| ``AGUARDANDO_SESSAO`` | Data da sessão não chegou | Azul claro (``blue-50``) | Nenhuma |
| ``EM_ELABORACAO`` | Sessão encerrada, ata em preparo | Amarelo (``amber-50``) | Nenhuma |
| ``ELABORADA`` | Ata finalizada com URL | Verde (``green-50``) | Botão “Baixar Ata” (link para PDF) |
—
Fluxos
Fluxo 01 — Acesso ao Calendário
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário acessa ``/pautas`` | Tela 01 | |
| 02 | Sistema exibe skeleton animado (estado ``loading``) | Tela 01 | |
| 03 | Sistema executa ``GET /api/pautas/calendario?mes={mm}&ano={yyyy}`` com mês/ano correntes | Tela 01 | |
| 03.1 | API retorna sucesso → sistema renderiza grade do calendário com badges coloridos por tipo de sessão | RN03, RN07 | Tela 01 |
| 03.2 | API retorna sucesso e nenhuma sessão no mês → sistema exibe estado ``empty`` com mensagem informativa | Tela 01 | |
| 03.3 | API retorna erro → sistema exibe estado ``error`` com mensagem genérica de falha | Tela 01 | |
| 04 | Sistema exibe legenda persistente de cores abaixo (ou ao lado) do calendário | RN07 | Tela 01 |
—
Fluxo 02 — Navegação entre Meses
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário clica em ``< Mês Anterior`` ou ``Próximo Mês >`` | Tela 01 | |
| 02 | Sistema executa nova chamada ``GET /api/pautas/calendario?mes={mm}&ano={yyyy}`` sem reload de página | Tela 01 | |
| 03 | Sistema atualiza a grade do calendário com os dados do novo mês | RN03, RN07 | Tela 01 |
—
Fluxo 03 — Acesso ao Detalhe da Sessão
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário clica em um dia com badge(s) de sessão no calendário | Tela 01 | |
| 02 | Sistema navega para ``/pautas/[DATA]`` (todos os badges do mesmo dia utilizam a mesma URL) | Tela 02 | |
| 03 | Sistema exibe skeleton animado (estado ``loading``) | Tela 02 | |
| 04 | Sistema executa ``GET /api/pautas/[DATA]`` | Tela 02 | |
| 04.1 | API retorna sucesso → sistema exibe cabeçalho da sessão + Ata de Julgamento + filtros + cards de processos paginados | RN05, RN14, RN17 | Tela 02 |
| 04.2 | API retorna ``not found`` → sistema executa ``notFound()`` (HTTP 404) | Tela 02 | |
| 04.3 | Sessão com ``INDR_STATUS_A = 'C'`` (Cancelada) → sistema exibe banner/alerta “Sessão Cancelada” no cabeçalho | RN09 | Tela 02 |
| 05 | Sistema exibe chips clicáveis “Outras Sessões do Dia” para cada sessão presente na data | RN19 | Tela 02 |
| 06 | Sistema exibe navegação “Sessão anterior” / “Próxima sessão” no topo e na base da página | RN08, RN18 | Tela 02 |
—
Fluxo 04 — Filtro de Processos
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário seleciona valor em ``<select>`` de Relator, Procurador ou Colegiado, ou digita texto no campo de busca livre | RN12, RN13 | Tela 02 |
| 02 | Sistema aplica filtros client-side (``useMemo``) sem nova chamada à API | RN12 | Tela 02 |
| 03 | Sistema exibe contador “Exibindo X de Y processos” abaixo da barra de filtros | RN12 | Tela 02 |
| 04 | Sistema exibe botão “Limpar filtros” (visível apenas quando há filtro ativo) | Tela 02 | |
| 05 | Sistema reseta a paginação para página 1 | RN11 | Tela 02 |
| 05.1 | Filtros sem resultado → sistema exibe mensagem: “Nenhum processo encontrado para os filtros aplicados” | Tela 02 | |
| 06 | Usuário clica em “Limpar filtros” → sistema remove todos os filtros ativos e restaura a lista completa paginada | Tela 02 |
—
Fluxo 05 — Troca de Sessão no Mesmo Dia
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário clica em chip “Outras Sessões do Dia” (ex.: “Primeira Câmara — Ordinária”) | RN19 | Tela 02 |
| 02 | Sistema executa ``GET /api/pautas/[DATA]?sessaoId={id}`` sem alterar a URL do navegador | RN19 | Tela 02 |
| 03 | Sistema atualiza o estado local: cabeçalho da sessão, Ata de Julgamento, filtros e cards de processos | RN05, RN17 | Tela 02 |
—
Fluxo 06 — Acesso ao Processo via Card
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário clica no número do processo no card | RN01 | Tela 02 |
| 02 | Sistema abre ``/processos/[autuacaoId]`` em nova aba (integração com RF-002) | RN01 | Tela 02 |
—
Fluxo 07 — Exibição e Acesso à Gravação por Processo
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Sistema verifica o campo ``gravacao`` de cada processo na resposta da API | RN10 | Tela 02 |
| 01.1 | ``gravacao === null`` → sistema omite botão “Assistir gravação” no card do processo | RN10 | Tela 02 |
| 01.2 | ``gravacao !== null`` → sistema exibe botão “Assistir gravação” com ícone ``Play`` (Lucide) no card | RN10 | Tela 02 |
| 02 | Usuário clica em “Assistir gravação” | Tela 02 | |
| 02.1 | ``gravacao.tipo === “YOUTUBE”`` → sistema abre modal com ``<iframe>`` embed do YouTube | Tela 02 | |
| 02.2 | ``gravacao.tipo === “ARQUIVO”`` → sistema abre modal com ``<video>`` ou link direto para o arquivo ``.mp4`` | Tela 02 |
—
Fluxo 08 — Navegação entre Sessões
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Sistema exibe botões “← Sessão anterior” e “Próxima sessão →” no topo e na base da página | RN08 | Tela 02 |
| 01.1 | Não há sessão anterior → botão “← Sessão anterior” exibido como ``disabled`` (sem link) | RN08 | Tela 02 |
| 01.2 | Não há próxima sessão → botão “Próxima sessão →” exibido como ``disabled`` (sem link) | RN08 | Tela 02 |
| 02 | Usuário clica em “← Sessão anterior” ou “Próxima sessão →” | Tela 02 | |
| 02.1 | Sessão destino é única no dia → sistema navega para ``/pautas/[DATA]`` | RN18 | Tela 02 |
| 02.2 | Sessão destino possui múltiplas sessões no dia → sistema navega para ``/pautas/[DATA]?sessaoId={id}`` | RN18 | Tela 02 |
—
Fluxo 09 — Exibição da Ata de Julgamento
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Sistema verifica o campo ``situacao`` da ``AtaJulgamento`` retornado pela API | RN17 | Tela 02 |
| 01.1 | ``situacao === “AGUARDANDO_SESSAO”`` → sistema exibe banner azul claro (``blue-50``) sem ação disponível | RN17 | Tela 02 |
| 01.2 | ``situacao === “EM_ELABORACAO”`` → sistema exibe banner amarelo (``amber-50``) sem ação disponível | RN17 | Tela 02 |
| 01.3 | ``situacao === “ELABORADA”`` → sistema exibe banner verde (``green-50``) com botão “Baixar Ata” (link para PDF) | RN17 | Tela 02 |
| 02 | Usuário clica em “Baixar Ata” → sistema abre URL do PDF da ata (campo ``url`` da ``AtaJulgamento``) | RN17 | Tela 02 |
—
Fluxo 10 — Membros da Sessão
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | Usuário clica em “ver membros” no cabeçalho da sessão | Tela 02 | |
| 02 | Sistema abre modal/painel lateral com lista de membros da sessão | RN15 | Tela 02 |
| 03 | Sistema exibe nome e função de cada membro; forma (Relator/Relatora, Secretário/Secretária) segue ``INDR_SEXO_A`` (``M``/``F``) | RN15 | Tela 02 |
| 04 | Sistema omite funções internas não mapeadas (exibe somente: Presidente, Relator/a, Procurador, Secretário/a) | RN15 | Tela 02 |
—
RN — Regras de Negócio
| Regra | Descrição |
|---|---|
| RN01 | N° Processo é link para RF-002 — O número do processo no card deve ser um link ``<a href=“/processos/[autuacaoId]” target=“_blank”>`` que abre o detalhamento do processo em nova aba (integração com RF-002) |
| RN02 | Paginação obrigatória — Lista de processos paginada por padrão em 20 itens/página; seletor de itens por página: 10 / 20 / 50; total reflete o conjunto após aplicação dos filtros ativos, não o total bruto |
| RN03 | Sessões CANCELADAS e INATIVAS excluídas do calendário — Apenas sessões com ``INDR_STATUS_A IN ('A', 'E')`` (Ativa e Encerrada) são exibidas no calendário |
| RN04 | Itens de pauta Transferidos, Excluídos e Extraordinários ocultos — Processos com ``INDR_ESTADO_A IN ('T', 'E', 'X')`` são filtrados na query e não aparecem nos cards |
| RN05 | Campo ausente exibe “Não informado” — Aplica-se a: Relator, Procurador, N° Processo, Assunto e Ementa |
| RN06 | Indicador “Julgado” exibido somente em processos julgados — Badge visível apenas quando ``INDR_ESTADO_A = 'J'`` ou campo equivalente de status julgado; omitido nos demais casos |
| RN07 | Distinção visual obrigatória por tipo de plataforma — Cor de fundo do badge do dia no calendário e legenda persistente na tela devem sempre diferenciar: Presencial (azul ``–primary``), Videoconferência (verde ``–success``), Votação Simultânea (laranja ``–complementary``) |
| RN08 | Navegação entre sessões desabilitada quando inexistente — Botão “← Sessão anterior” ou “Próxima sessão →” exibido como ``disabled`` sem link quando não há sessão anterior/seguinte disponível |
| RN09 | Sessão Cancelada exibe banner de aviso no detalhe — Quando ``INDR_STATUS_A = 'C'``, sistema exibe badge/alerta “Sessão Cancelada” no cabeçalho da Tela 02 |
| RN10 | Gravação exibida apenas quando disponível, por processo — Botão “Assistir gravação” é omitido no card quando ``gravacao === null``; exibido individualmente por processo quando preenchido |
| RN11 | Paginação sempre ativa no detalhe — Cards paginados mesmo quando a lista possui ≤ 20 itens; qualquer alteração nos filtros reseta a paginação para a página 1 |
| RN12 | Filtros são cumulativos e client-side — Todos os filtros ativos são combinados por operador AND; não disparam nova chamada à API; contador “Exibindo X de Y processos” reflete o conjunto filtrado |
| RN13 | Filtro de texto busca em N° Processo, Assunto e Ementa — Busca parcial, case-insensitive, nos campos ``numeroProcesso``, ``assunto`` e ``ementa`` simultaneamente |
| RN14 | Fundamentação legal exibida no cabeçalho da sessão — Texto fixo: “PAUTA (art. 150, Incisos I a VI, RI-TCE)” |
| RN15 | Membros exibem somente nome e função — Funções permitidas: Presidente (``P``), Relator/a (``C``, ``A``, ``AS``, ``CS``), Procurador (``R``, ``PS``), Secretário/a (``S``); forma de gênero segue ``INDR_SEXO_A``; demais funções internas são omitidas |
| RN16 | Processos listados como cards, não como tabela — Layout de card com ementa expandível; não utilizar grade tabular para a listagem de processos |
| RN17 | Ata de Julgamento exibe estado atual da sessão — Três situações possíveis: ``AGUARDANDO_SESSAO`` (banner azul, sem ação), ``EM_ELABORACAO`` (banner amarelo, sem ação), ``ELABORADA`` (banner verde, botão “Baixar Ata” com link para PDF) |
| RN18 | Navegação entre sessões usa datas, não IDs — URLs seguem o padrão ``/pautas/[DATA]`` (sessão única no dia) ou ``/pautas/[DATA]?sessaoId={id}`` (múltiplas sessões no dia) |
| RN19 | Troca de sessão no mesmo dia é client-side — Chips “Outras Sessões do Dia” não alteram a URL do navegador; atualizam apenas o estado local via nova chamada ``GET /api/pautas/[DATA]?sessaoId={id}`` |
| RN20 | Sessão de Videoconferência exibe link de transmissão — Quando ``plataforma === “VIDEOCONFERENCIA”`` e campo ``linkTransmissao`` estiver preenchido, sistema exibe link “Assistir transmissão” no cabeçalho da sessão |