@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
145 lines • 5.84 kB
TypeScript
/**
* Utilitários para manipulação da estrutura organizacional (departamentos).
*
* Contém funções para converter a árvore em lista plana, buscar unidades,
* construir/parsear caminhos no formato AD, validar hierarquias e gerar
* visualizações hierárquicas amigáveis.
*/
import type { ADDepartmentPath, HierarquiaDepartamento, UnidadeFlat, UnidadeOption, UnidadeOrganizacional } from "./departments.types";
import { TipoUnidade } from "../../enums";
/**
* Converter estrutura hierárquica em lista plana.
*
* Recebe uma unidade organizacional (nó da árvore) e produz uma lista plana
* de unidades (UnidadeFlat) contendo referências ao pai, filhos e metadados
* de hierarquia.
*
* @param unidade Unidade raiz a ser convertida.
* @param pai Unidade pai no nível superior (opcional).
* @param nivel Nível atual na árvore (padrão: 1).
* @param caminho Caminho acumulado de siglas até a unidade atual.
* @returns Array de UnidadeFlat representando a subárvore em lista plana.
*/
export declare function converterParaListaPlana(unidade: UnidadeOrganizacional, pai?: UnidadeFlat, nivel?: number, caminho?: string[]): UnidadeFlat[];
/**
* Obter todas as unidades como lista plana.
*
* @returns Array com todas as unidades da organização na forma plana (UnidadeFlat).
*/
export declare function obterTodasUnidadesFlat(): UnidadeFlat[];
/**
* Buscar unidade por sigla (case-insensitive).
*
* @param sigla Sigla da unidade a buscar.
* @returns UnidadeFlat correspondente ou undefined se não encontrada.
*/
export declare function buscarUnidadePorSigla(sigla: string): UnidadeFlat | undefined;
/**
* Buscar unidade por código SIORG.
*
* @param codigo Código SIORG da unidade.
* @returns UnidadeFlat correspondente ou undefined se não encontrada.
*/
export declare function buscarUnidadePorCodigo(codigo: string): UnidadeFlat | undefined;
/**
* Buscar unidades por termo (sigla ou nome).
*
* Faz busca parcial (case-insensitive) em sigla e nome e retorna opções
* formatadas para uso em selects/autocomplete.
*
* @param termo Termo de busca.
* @returns Array de UnidadeOption com unidades que casam com o termo.
*/
export declare function buscarUnidades(termo: string): UnidadeOption[];
/**
* Obter todas as unidades como opções para select.
*
* @returns Array de UnidadeOption com todas as unidades disponíveis.
*/
export declare function obterOpcoesUnidadesTodas(): UnidadeOption[];
/**
* Obter unidades por tipo.
*
* @param tipo Tipo de unidade (ex.: 'servico', 'setor', etc.).
* @returns Array de UnidadeOption filtrado pelo tipo informado.
*/
export declare function obterUnidadesPorTipo(tipo: TipoUnidade): UnidadeOption[];
/**
* Obter hierarquia completa de uma unidade.
*
* Retorna a unidade atual, o caminho completo da raiz até ela, as subordinadas
* diretas e todas as subordinadas (recursivamente).
*
* @param sigla Sigla da unidade alvo.
* @returns HierarquiaDepartamento com informações da hierarquia ou null se não encontrada.
*/
export declare function obterHierarquiaUnidade(sigla: string): HierarquiaDepartamento | null;
/**
* Construir visualização hierárquica formatada para exibição textual.
*
* Gera uma string com linhas indentadas representando o caminho da raiz até
* a unidade, usando caracteres gráficos e espaços não-quebráveis para preservar
* alinhamento.
*
* @param sigla Sigla da unidade a ser exibida.
* @returns String formatada com a visualização hierárquica (linhas separadas por '\n').
*/
export declare function construirVisualizacaoHierarquica(sigla: string): string;
/**
* Converter caminho de hierarquia do AD para objeto estruturado.
*
* Ex.: "DDSS/CGTI/ANPD" -> { siglas: ["DDSS","CGTI","ANPD"], path_string: "...", unidade_principal: "DDSS" }
*
* @param adPath Caminho no formato AD.
* @returns ADDepartmentPath contendo siglas, path_string e unidade_principal.
*/
export declare function parseADDepartmentPath(adPath: string): ADDepartmentPath;
/**
* Construir caminho do AD a partir de uma sigla de unidade.
*
* Retorna o caminho formatado (hierarquia_display) ou a própria sigla se a unidade não for encontrada.
*
* @param sigla Sigla da unidade.
* @returns Caminho AD (ex.: "DDSS/CGTI/ANPD") ou a sigla original quando não encontrada.
*/
export declare function construirADDepartmentPath(sigla: string): string;
/**
* Validar se um caminho de hierarquia é válido.
*
* Verifica existência das siglas, consistência da hierarquia e casos especiais
* (ex.: caminho de uma única sigla deve ser "ANPD").
*
* @param siglas Array de siglas representando o caminho hierárquico.
* @returns true se válido, false caso contrário.
*/
export declare function validarHierarquiaPath(siglas: string[]): boolean;
/**
* Obter unidades que podem ser pai de um determinado tipo.
*
* A função aplica regras de quais tipos são permitidos como pai para cada tipo
* de unidade e retorna as opções correspondentes.
*
* @param tipo Tipo de unidade cujo pai possível será buscado.
* @returns Array de UnidadeOption com os candidatos a pai.
*/
export declare function obterUnidadesPaiPossiveis(tipo: TipoUnidade): UnidadeOption[];
/**
* Obter estatísticas da estrutura organizacional.
*
* Retorna o objeto de estatísticas carregado do modelo estático.
*
* @returns Objeto de estatísticas da estrutura.
*/
export declare function obterEstatisticasEstrutura(): import("./departments.types").EstatisticasDepartamentos;
/**
* Obter enums disponíveis da estrutura organizacional.
*
* Retorna enums (tipos e constantes) presentes no modelo estático.
*
* @returns Objeto com enums da estrutura.
*/
export declare function obterEnumsEstrutura(): {
tipos_unidade: TipoUnidade[];
niveis_hierarquicos: number[];
};
//# sourceMappingURL=departments.utils.d.ts.map