| Próxima revisão | Revisão anterior |
| pres:gerti:gestao_de_ativos:portal:er_011 [09/04/2026 11:44] – criada pramorim | pres:gerti:gestao_de_ativos:portal:er_011 [28/08/2026 19:41] (atual) – pramorim |
|---|
| ====== RF-011 — Pautas e Sessões de Julgamento ====== | ====== [ER_011] Requisitos - 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. | **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:** Calendário de Sessões — rotas ``/pautas`` (calendário) e ``/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 | Visitante | Não requerida | Acesso irrestrito ao calendário e detalhe das sessões | | |**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`) ==== |
| |
| ^ Elemento ^ Tipo ^ Descrição ^ | {{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-124027.png}} |
| | 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:** | Tela responsável por exibir o calendário mensal de sessões de julgamento com distinção visual por tipo de plataforma. |
| |
| ^ Cor ^ Token ^ Tipo de Sessão ^ Código Legado ^ | ^Elemento^Tipo^Obrigatório^Valores Possíveis^Valor Padrão^Observação| |
| | Azul | ``--primary`` | Sessão Presencial | ``INDR_TIPO_A = 'O'`` ou ``'X'`` — plataforma presencial | | |Cabeçalho da Página|Texto estático|Sim|"Pautas e Sessões de Julgamento"|–|Exibido em fundo azul (`–primary`).| |
| | Verde | ``--success`` (~#16A34A) | Videoconferência | Plataforma videoconferência | | |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).| |
| | Laranja | ``--complementary`` (~#F17300) | Votação Simultânea (Plenário Virtual) | ``INDR_TIPO_A = 'E'`` (Extraordinária Administrativa) | | |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|"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.| |
| |
| **Combinações possíveis de sessões em um mesmo dia:** | ==== Tela 02 - Detalhe da Sessão (`/pautas/[DATA]`) ==== |
| |
| ^ Sessão ^ Colegiado ^ Tipo ^ | {{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125224.png}}{{:pres:gerti:gestao_de_ativos:portal:pasted:20260410-125409.png}} |
| | 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 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 02 — Detalhe da Sessão (`/pautas/[DATA]`) ==== | |
| |
| **Cabeçalho da Sessão:** | **Cabeçalho da Sessão:** |
| |
| ^ Campo UI ^ Campo Oracle / Legado ^ Formato ^ | ^Elemento^Fonte^Campo / Origem^Obrigatório^Observação| |
| | Colegiado | ``INDR_COLEGIADO_A`` | "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 | ``INDR_TIPO_A`` | "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 | derivado de ``INDR_TIPO_A`` + campo plataforma | "Presencial", "Videoconferência" ou "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 | ``INDR_STATUS_A`` | "Ativa" / "Encerrada" / "Cancelada" / "Inativa" | | |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 | ``NUMR_SESSAO_N`` | Numérico | | |Número da Sessão|Oracle|`PLD_SESSAO.NUMR_SESSAO_N`|Sim|–| |
| | Data da Sessão | ``DATA_SESSAO_D`` | ``dd/MM/yyyy HH:mm`` | | |Data da Sessão|Catálogo (`/api/pauta/sessao`)|`dataSessao` + `horarioSessao` → formato `dd/MM/yyyy HH:mm`|Sim|–| |
| | Data de Abertura | ``DATA_ABERTURA_D`` | ``dd/MM/yyyy HH:mm`` | | |Data de Abertura|Oracle|`PLD_SESSAO.DATA_ABERTURA_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |
| | Data de Fechamento | ``DATA_FECHAMENTO_D`` | ``dd/MM/yyyy HH:mm`` | | |Data de Fechamento|Oracle|`PLD_SESSAO.DATA_FECHAMENTO_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |
| | Data de Divulgação | ``DATA_DIVULGACAO_D`` | ``dd/MM/yyyy HH:mm`` | | |Data de Divulgação|Oracle|`PLD_SESSAO.DATA_DIVULGACAO_D` — formato `dd/MM/yyyy HH:mm`|Não|–| |
| | Total de Processos | Calculado no front | Contagem de itens em ``Processos`` | | |Total de Processos|Catálogo (`/api/pauta/sessao`)|Calculado a partir de `processosCamaraSessao` de todos os membros|Sim|–| |
| | Membros | ``VPLD_MEMBROS_CAD_SESSAO`` | Link "ver membros" — abre modal/painel lateral | | |Membros|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` + `Membro.tituloMembro`|Sim|Link "ver membros" abre modal/painel lateral (RN12).| |
| | Fundamentação Legal | Texto fixo | "PAUTA (art. 150, Incisos I a VI, RI-TCE)" | | |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, 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).| |
| | |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).| |
| |
| **Modal/Painel de Membros:** | **Ata de Julgamento:** |
| |
| ^ Função Exibida ^ Código Legado (``INDR_FUNCAO_A``) ^ | ^Elemento^Situação^Condição^Cor do Banner^Ação Disponível| |
| | Presidente | ``P`` | | |Ata — Aguardando Sessão|`AGUARDANDO_SESSAO`|Data da sessão ainda não chegou|Azul claro (`blue-50`)|Nenhuma.| |
| | Relator / Relatora | ``C``, ``A``, ``AS``, ``CS`` | | |Ata — Em Elaboração|`EM_ELABORACAO`|Sessão encerrada, ata em preparo|Amarelo (`amber-50`)|Nenhuma.| |
| | Procurador | ``R``, ``PS`` | | |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).| |
| | Secretário / Secretária | ``S`` | | |
| |
| **Barra de Filtros:** | **Barra de Filtros (client-side):** |
| |
| ^ Filtro ^ Tipo ^ Opções ^ Campo Filtrado ^ | ^Filtro^Tipo^Campo Filtrado^Observação| |
| | Relator | ``<select>`` | Lista de relatores únicos da sessão | ``relator`` | | |Relator|Seleção (`<select>`)|`relator`|Lista de relatores únicos da sessão corrente.| |
| | Procurador | ``<select>`` | Lista de procuradores únicos | ``procurador`` | | |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 | ``<select>`` | Primeira Câmara / Segunda Câmara / Tribunal Pleno | ``colegiado`` | | |Texto livre|Campo Texto (`<input>`)|`numeroProcesso` + `assunto` + `ementa`|Busca parcial, case-insensitive (RN10).| |
| | Texto livre | ``<input>`` | Busca parcial, case-insensitive | ``numeroProcesso`` + ``assunto`` + ``ementa`` | | |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:** | **Card de Processo:** |
| |
| ^ Campo ^ Campo Legado ^ Obrigatório ^ Fallback ^ | ^Campo^Fonte^Campo / Origem^Obrigatório^Fallback| |
| | N° Processo (link externo) | ``CODG_PROCESSO_N`` | Sim | "Não informado" | | |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 | ``DESC_ASSUNTO_A`` | Sim | "Não informado" | | |Assunto|Catálogo (`/api/pauta/sessao`)|`Processo.assunto`|Sim|"Não informado" (RN04).| |
| | Ementa | ``TextoEmenta`` (via ``DtoPauta``) | Sim | "Não informado" | | |Ementa|Catálogo (`/api/pauta/sessao`)|`Processo.ementa`|Sim|"Não informado" (RN04). Em processo sigiloso, omitida (RN16).| |
| | Relator | ``RELATOR`` (via ``VPLD_MEMBROS_CAD_SESSAO``) | Sim | "Não informado" | | |Relator|Catálogo (`/api/pauta/sessao`)|`Membro.nomeMembro` com função Relator|Sim|"Não informado" (RN04).| |
| | Procurador | membro com ``INDR_FUNCAO_A = 'R'`` ou ``'PS'`` | Sim | "Não informado" | | |Badge "Julgado"|Catálogo (`/api/pauta/sessao`)|`Processo.julgado` (boolean)|Condicional|Badge omitido quando `julgado = false` (RN05).| |
| | Indicador "Julgado" | ``INDR_ESTADO_A = 'J'`` | Condicional | Badge omitido se não julgado | | |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).| |
| | Botão "Assistir gravação" | ``gravacao`` por processo | Condicional | Botão omitido se ``gravacao === null`` | | |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).| |
| |
| **Ata de Julgamento:** | **Navegação entre Sessões:** |
| |
| ^ Situação ^ Condição ^ Cor do Banner ^ Ação Disponível ^ | ^Elemento^Tipo^Observação| |
| | ``AGUARDANDO_SESSAO`` | Data da sessão não chegou | Azul claro (``blue-50``) | Nenhuma | | |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).| |
| | ``EM_ELABORACAO`` | Sessão encerrada, ata em preparo | Amarelo (``amber-50``) | Nenhuma | | |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).| |
| | ``ELABORADA`` | Ata finalizada com URL | Verde (``green-50``) | Botão "Baixar Ata" (link para PDF) | | |
| | |
| --- | |
| |
| ===== Fluxos ===== | ===== Fluxos ===== |
| |
| ==== Fluxo 01 — Acesso ao Calendário ==== | ==== Fluxo 01 - Acessar Calendário de Sessões (Fluxo Principal) ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^Passo^Ação^Regra^Tela| |
| |01|Usuário acessa ``/pautas``| |Tela 01| | |01|O usuário acessa a rota `/pautas`.| |Tela 01| |
| |02|Sistema exibe skeleton animado (estado ``loading``)| |Tela 01| | |02|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 01| |
| |03|Sistema executa ``GET /api/pautas/calendario?mes={mm}&ano={yyyy}`` com mês/ano correntes| |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|API retorna sucesso → sistema renderiza grade do calendário com badges coloridos por tipo de sessão|RN03, RN07|Tela 01| | |03.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_02_-_renderizar_calendario|Fluxo 02]]** .| | | |
| |03.2|API retorna sucesso e nenhuma sessão no mês → sistema exibe estado ``empty`` com mensagem informativa| |Tela 01| | |03.2|Caso a chamada retorne erro, o sistema exibe estado de erro genérico.| |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 - Renderizar Calendário ==== |
| | |
| ==== Fluxo 02 — Navegação entre Meses ==== | |
| |
| ^Passo^Ação^Regra^Tela| | ^Passo^Ação^Regra^Tela| |
| |01|Usuário clica em ``< Mês Anterior`` ou ``Próximo Mês >``| |Tela 01| | |01|O sistema recebe a lista de sessões do mês retornada pela API.| | | |
| |02|Sistema executa nova chamada ``GET /api/pautas/calendario?mes={mm}&ano={yyyy}`` sem reload de página| |Tela 01| | |02|O sistema verifica se há sessões no mês consultado.| | | |
| |03|Sistema atualiza a grade do calendário com os dados do novo mês|RN03, RN07|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| |
| | |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 03 — Acesso ao Detalhe da Sessão ==== | ==== Fluxo 04 - Acessar Detalhe de Sessão ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^Passo^Ação^Regra^Tela| |
| |01|Usuário clica em um dia com badge(s) de sessão no calendário| |Tela 01| | |01|O usuário clica em um badge de sessão em um dia do calendário.| |Tela 01| |
| |02|Sistema navega para ``/pautas/[DATA]`` (todos os badges do mesmo dia utilizam a mesma URL)| |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|Sistema exibe skeleton animado (estado ``loading``)| |Tela 02| | |03|O sistema exibe o estado de carregamento (skeleton animado).| |Tela 02| |
| |04|Sistema executa ``GET /api/pautas/[DATA]``| |Tela 02| | |04|O sistema executa `GET /api/pautas/[DATA]`.| | | |
| |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.1|Caso a chamada retorne sucesso, o sistema executa o **[[#fluxo_05_-_renderizar_detalhe_da_sessao|Fluxo 05]]**.| | | |
| |04.2|API retorna ``not found`` → sistema executa ``notFound()`` (HTTP 404)| |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|Sessão com ``INDR_STATUS_A = 'C'`` (Cancelada) → sistema exibe banner/alerta "Sessão Cancelada" no cabeçalho|RN09|Tela 02| | |04.3|Caso a DATA esteja em formato inválido, o sistema exibe a página de erro padrão.| |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 05 - Renderizar Detalhe da Sessão ==== |
| |
| ==== Fluxo 04 — Filtro de Processos ==== | ^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|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| |
| | |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| | ^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| | |01|O sistema recupera a lista completa de processos da sessão retornada pela API.| |Tela 02| |
| |02|Sistema aplica filtros client-side (``useMemo``) sem nova chamada à API|RN12|Tela 02| | |02|O sistema aplica os filtros ativos (relator da pauta, texto livre) de forma cumulativa.|RN10|Tela 02| |
| |03|Sistema exibe contador "Exibindo X de Y processos" abaixo da barra de filtros|RN12|Tela 02| | |03|O sistema exibe o contador "Exibindo X de Y processos" quando ao menos um filtro estiver ativo.|RN10|Tela 02| |
| |04|Sistema exibe botão "Limpar filtros" (visível apenas quando há filtro ativo)| |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| |
| |05|Sistema reseta a paginação para página 1|RN11|Tela 02| | |04|O sistema renderiza os cards paginados do conjunto filtrado.|RN02|Tela 02| |
| |05.1|Filtros sem resultado → sistema exibe mensagem: "Nenhum processo encontrado para os filtros aplicados"| |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| |
| |06|Usuário clica em "Limpar filtros" → sistema remove todos os filtros ativos e restaura a lista completa paginada| |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| |
| |
| --- | ==== Fluxo 07 - Aplicar Filtros nos Cards ==== |
| |
| ==== Fluxo 05 — Troca de Sessão no Mesmo Dia ==== | ^Passo^Ação^Regra^Tela| |
| | |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| |
| | |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. 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| |
| | |
| | ==== Fluxo 08 - Limpar Filtros ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^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| | |01|O usuário aciona o botão "Limpar filtros".| |Tela 02| |
| |02|Sistema executa ``GET /api/pautas/[DATA]?sessaoId={id}`` sem alterar a URL do navegador|RN19|Tela 02| | |02|O sistema remove todos os valores de filtro ativos.|RN10|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| | |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 ==== |
| |
| ==== Fluxo 06 — Acesso ao Processo via Card ==== | ^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]` 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 ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^Passo^Ação^Regra^Tela| |
| |01|Usuário clica no número do processo no card|RN01|Tela 02| | |01|O usuário clica no botão "Assistir gravação" dentro do card do processo.|RN09|Tela 02| |
| |02|Sistema abre ``/processos/[autuacaoId]`` em nova aba (integração com RF-002)|RN01|Tela 02| | |02|O sistema exibe o reprodutor com a gravação vinculada ao processo, a partir do link retornado pela API.|RN09|Tela 02| |
| |
| --- | ==== Fluxo 11 - Trocar Sessão no Mesmo Dia ==== |
| |
| ==== Fluxo 07 — Exibição e Acesso à Gravação por Processo ==== | ^Passo^Ação^Regra^Tela| |
| | |01|O usuário clica em um chip "Outras Sessões do Dia".| |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| |
| | |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 ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^Passo^Ação^Regra^Tela| |
| |01|Sistema verifica o campo ``gravacao`` de cada processo na resposta da API|RN10|Tela 02| | |01|O usuário aciona o botão "Sessão anterior" ou "Próxima sessão".|RN07|Tela 02| |
| |01.1|``gravacao === null`` → sistema omite botão "Assistir gravação" no card do processo|RN10|Tela 02| | |02|O sistema verifica se a sessão destino existe.|RN07| | |
| |01.2|``gravacao !== null`` → sistema exibe botão "Assistir gravação" com ícone ``Play`` (Lucide) no card|RN10|Tela 02| | |02.1|Caso o botão esteja desabilitado (`disabled`), nenhuma ação é executada.|RN07| | |
| |02|Usuário clica em "Assistir gravação"| |Tela 02| | |03|O sistema verifica a quantidade de sessões no dia destino.| | | |
| |02.1|``gravacao.tipo === "YOUTUBE"`` → sistema abre modal com ``<iframe>`` embed do YouTube| |Tela 02| | |03.1|Caso o dia destino possua apenas uma sessão, o sistema navega para `/pautas/[DATA]`.| |Tela 02| |
| |02.2|``gravacao.tipo === "ARQUIVO"`` → sistema abre modal com ``<video>`` ou link direto para o arquivo ``.mp4``| |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.| | | |
| |
| --- | ==== Fluxo 13 - Visualizar Membros da Sessão ==== |
| | |
| | ^Passo^Ação^Regra^Tela| |
| | |01|O usuário aciona o link "ver membros" no cabeçalho da sessão.| |Tela 02| |
| | |02|O sistema abre modal/painel lateral com a lista de membros.|RN12|Tela 02| |
| | |03|O sistema exibe exclusivamente nome (`nomeMembro`) e função (`tituloMembro`) de cada membro, conforme retornado pelo Catálogo de Serviços.|RN12|Tela 02| |
| |
| ==== Fluxo 08 — Navegação entre Sessões ==== | ==== Fluxo 14 - Baixar Ata de Julgamento ==== |
| |
| ^Passo^Ação^Regra^Tela| | ^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|O usuário aciona o botão "Baixar Ata" exibido no banner de ata quando a situação for `ELABORADA`.|RN13|Tela 02| |
| |01.1|Não há sessão anterior → botão "← Sessão anterior" exibido como ``disabled`` (sem link)|RN08|Tela 02| | |02|O sistema realiza o download do arquivo da ata.|RN13|–| |
| |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| | |
| |
| --- | ===== RN – Regras de Negócio ===== |
| |
| ==== Fluxo 09 — Exibição da Ata de Julgamento ==== | ^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) **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.| |
| | |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, 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.| |
| | |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.| |
| | |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 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 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)"**.| |
| | |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 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".| |
| | |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.| |
| |
| ^Passo^Ação^Regra^Tela| | ===== Integrações ===== |
| |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| | |
| |
| --- | ==== Catálogo de Serviços TCE-GO ==== |
| |
| ==== Fluxo 10 — Membros da Sessão ==== | Base URL: ''[[https://catalogodeservicos.tce.go.gov.br|https://catalogodeservicos.tce.go.gov.br]]'' |
| |
| ^Passo^Ação^Regra^Tela| | ^Endpoint^Método^Parâmetros^Usado em^Dados obtidos| |
| |01|Usuário clica em "ver membros" no cabeçalho da sessão| |Tela 02| | |''/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.| |
| |02|Sistema abre modal/painel lateral com lista de membros da sessão|RN15|Tela 02| | |''/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.| |
| |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| | |''/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.| |
| |04|Sistema omite funções internas não mapeadas (exibe somente: Presidente, Relator/a, Procurador, Secretário/a)|RN15|Tela 02| | |''/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: |
| | |
| | ^Código^Descrição| |
| | |400|Parâmetros inválidos — ''[[:pres:gerti:gestao_de_ativos:portal:resultrequest|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 **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 ===== |
| |
| ===== RN — Regras de Negócio ===== | ^Data^Alteração^Motivo| |
| | |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)| |
| | |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| |
| | |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)| |
| | |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)| |
| | |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)| |
| | |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)| |
| | |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)| |
| | |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)| |
| | |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)| |
| | |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| |
| |
| ^ Regra ^ Descrição ^ | — //Gerado com: documentar-funcionalidade-v1.md// \\ |
| | 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) | | — //Revisado por: Paulo Ricardo Amorim Silva - pramorim@tce.go.gov.br// \\ |
| | 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 | | — //Atualizado em 2026-08-25 pelas respostas às pendências registradas em `testes/pendencias-e-divergencias.md` (PD-06, PD-14 e PD-15)// |
| | 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 | | |
| |