Skip to main content

Diligências — the shared action catalogue

Source: src/lib/inquiry-action-types.ts (~900 lines), rendered by InquiryActionsList and ActionLandingDrawer.

Two phases embed this engine — Inquérito Prévio with phase="PRELIMINARY_INQUIRY" and Fase de Prova with phase="EVIDENCE_PHASE". It is the single best-built part of the PoC and the part a rebuild should copy most faithfully.

The shape

Each action type is an ActionTypeConfig declaring:

KeyMeaning
substepsthe mini-workflow, each with fields and requiredFields
fieldstyped field definitions — text · textarea · date · datetime · select · switch, with options, rows, required
deliverableTitle / deliverableSectionsthe document the diligência produces
usesQuestionswhether the type gets the question/answer array
suggestedQuestionspre-loaded prompts, hearings only
infoFieldswhich fields surface on the summary card

This is the only declarative field schema in the PoC — everywhere else the fields are hand-written JSX. It is also the only place required means anything before save.

Every type ends with an Encerramento substep carrying Observações finais and a required Data/hora de encerramento.

1. Inquirição de Testemunha → Ata da Inquirição

SubstepInputs
PreparaçãoTestemunha * · Função / Departamento · Relação com os factos · Data prevista * · Local / Modo (Presencial · Remoto) · Notas preparatórias
IdentificaçãoNome completo * · Função * · Departamento · Antiguidade · Relação com o arguido · Relação com os factos
AdvertênciaFoi explicado o objeto da inquirição? * · Foi advertida do dever de verdade? * · Aceitou prestar declarações? * (three switches) · Observações
Perguntasquestion/answer array — 6 suggested questions pre-loaded
EncerramentoObservações finais · A testemunha quis acrescentar algo? · Data/hora de encerramento *

The three switches in Advertência are the procedural-validity record for the hearing: object explained, duty of truth warned, consent given. They are booleans with no timestamp and no signature.

2. Audição do Trabalhador → Ata da Audição

SubstepInputs
PreparaçãoTrabalhador * · Função / Departamento · Data prevista * · Local / Modo · Notas preparatórias
IdentificaçãoNome completo * · Função * · Departamento · Nº de colaborador
Contexto da audiçãoFoi explicado o contexto da audição? * (switch) · Finalidade da audição · O trabalhador foi informado dos seus direitos? (switch) · Observações
Perguntasquestion/answer array
EncerramentoObservações finais · O trabalhador quis acrescentar algo? · Data/hora *

3. Auto de Declarações do Arguido → Auto de Declarações do Arguido

SubstepInputs
PreparaçãoArguido * · Função / Departamento · Data prevista * · Referência à Nota de Culpa * · Forma de convocatória · Notas preparatórias · Local / Modo
Identificação e direitosNome completo * · Função · Departamento · Foram explicados ao arguido os seus direitos de defesa? * · Está presente advogado/mandatário? * · Nome do advogado/mandatário · Observações
Declaraçõesquestion/answer array
Diligências requeridas pelo arguidoDiligências/prova requeridas · Decisão do instrutor sobre as diligências requeridas
EncerramentoObservações finais · O arguido quis acrescentar algo? · Data/hora *

The richest type, and the only one that models the defence's rights explicitly. Referência à Nota de Culpa is a free-text string ("Ex: NC de dd/mm/aaaa") rather than a link to the Nota de Culpa deliverable that exists in the same case.

Its Diligências requeridas pelo arguido substep also duplicates what Resposta do Arguido and Fase de Prova already record — a third place where requested diligences and their rulings live, with no reconciliation between the three.

4. Recolha Documental → Nota de Recolha Documental

SubstepInputs
Origem da documentaçãoFonte documental * · Departamento / sistema de origem · Pessoa de contacto · Data da recolha
Identificação dos documentosLista de documentos * (one per line) · Tipo de documento · Período abrangido
Upload / associaçãoDescrição dos ficheiros associados · Nº total de ficheiros
Descrição / contextoContexto da recolha * · Relevância para o inquérito · Responsável
EncerramentoObservações finais · Data/hora *

Nº total de ficheiros is typed by hand as text, and Upload / associação only asks for a description of the associated files — the substep named after uploading does not upload anything. Chain-of-custody is therefore prose.

5. Análise Documental → Nota de Análise Documental

SubstepInputs
Seleção do documentoDocumento analisado * · Referência / localização · Data da análise · Responsável pela análise
Objeto da análiseObjeto da análise * · Âmbito
Análise / observaçõesObservações da análise * (6 rows) · Pontos relevantes identificados
Conclusões preliminaresConclusões preliminares * · Recomendações
EncerramentoObservações finais · Data/hora *

6. Pedido de Informação Interna → Registo do Pedido / Resposta Interna

SubstepInputs
Identificação do destinatárioÁrea / departamento destinatário * · Pessoa de contacto · Data do pedido · Responsável pelo pedido
Objeto do pedidoObjeto do pedido * · Justificação / contexto
Registo do pedidoForma de envio (Email · Ofício · Verbal · Outro) · Referência do pedido · Notas adicionais
Registo da respostaData da resposta · Resumo da resposta * · Relevância da resposta · Documentos recebidos
EncerramentoObservações finais · Data/hora *

7. Nota do Instrutor → Nota Interna

SubstepInputs
Identificação da notaTítulo * · Data · Autor
Objeto / temaTema / objeto * · Âmbito / delimitação
ConteúdoConteúdo / apreciação * (8 rows)
Conclusão / sínteseConclusão * · Observações finais
EncerramentoData/hora de encerramento *

8. Outro / Diligência Livre → Registo da Diligência

SubstepInputs
IdentificaçãoTítulo * · Data · Responsável
ObjetoObjeto / descrição *
Conteúdo / execuçãoDetalhes da execução * · Anexos (descrição)
ResultadoResultado * · Observações
EncerramentoObservações finais · Data/hora *

Rebuild implication

Keep this catalogue. The substep decomposition, the procedural switches and the per-type deliverable are real domain knowledge, and the declarative SubstepFieldDef shape is close to what a server-side schema wants to be.

Three things to change on the way through:

  • Autor, Responsável, Pessoa de contacto and Nome do advogado are all free text. They should be user or party references where the person is in the system.
  • Referência à Nota de Culpa should be a foreign key, not a typed string.
  • Upload / associação should actually associate files, so the evidence chain stops being a description of itself.