UNPKG

@anpdgovbr/shared-types

Version:

Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)

193 lines 5.72 kB
/** * Tipos de domínio de Estrutura Organizacional (RH). * * Baseado no schema department.json v1.2.0 do app de atualização de perfis. * Os tipos são independentes de UI e adequados para contratos entre serviços. * * @public */ import { TipoUnidade as TipoUnidadeEnum } from "../../enums"; import type { MetadataSchema } from "./job-titles.types"; type TipoUnidade = TipoUnidadeEnum; /** * Representa uma unidade organizacional na árvore canônica. * * Campos: * - codigo, sigla, nome: identificadores da unidade. * - tipo, nivel: metadados opcionais sobre a unidade. * - unidades / filhos: filhos diretos na árvore (compatibilidade com formatos antigos). * * @public */ export interface UnidadeOrganizacional { codigo: string; sigla: string; nome: string; tipo?: TipoUnidade; nivel?: number; unidades?: UnidadeOrganizacional[]; /** Compatibilidade com estrutura legada. */ filhos?: UnidadeOrganizacional[]; } /** * Índices auxiliares sobre os departamentos para busca e validações. * * - por_tipo: mapeia tipo de unidade para lista de códigos. * - por_nivel: mapeia níveis (ex.: "nivel_1") para lista de códigos. * - por_codigo_siorg: mapeia código SIORG para código interno. * - listas auxiliares para categorias específicas (administrativas, finalistas, colegiados). * * @public */ export interface IndicesDepartamentos { por_tipo: Record<TipoUnidade, string[]>; /** chaves como "nivel_1", "nivel_2", etc. */ por_nivel: Record<string, string[]>; por_codigo_siorg: Record<string, string>; unidades_administrativas: string[]; unidades_finalistas: string[]; orgaos_colegiados: string[]; } /** * Regras e restrições usadas para validação de dados de departamentos. * * - campos_obrigatorios / campos_opcionais: listas de campos esperados. * - valores_validos: domínios permitidos para propriedades (tipo, nivel). * - regras_estruturais: mensagens/descrições de restrições estruturais. * * @public */ export interface ValidacaoDepartamentos { campos_obrigatorios: string[]; campos_opcionais: string[]; valores_validos: { tipo: TipoUnidade[]; nivel: number[]; }; regras_estruturais: Record<string, string>; } /** * Estatísticas pré-calculadas sobre a estrutura organizacional. * * Inclui contagens por tipo/nível, profundidade máxima e contadores de categorias específicas. * * @public */ export interface EstatisticasDepartamentos { total_unidades: number; por_tipo: Record<TipoUnidade, number>; por_nivel: Record<string, number>; unidades_com_subordinados: number; unidades_folha: number; profundidade_maxima: number; coordenacoes_gerais_ativas: number; unidades_administrativas: number; unidades_finalistas: number; orgaos_colegiados: number; } /** * Representa o documento raiz da estrutura organizacional carregada (schema-compliant). * * Contém metadados, enums, a árvore raiz (`organizacao`) e índices/validações/estatísticas. * * @public */ export interface EstruturaOrganizacional { title: string; description: string; metadata: MetadataSchema; enums: { tipos_unidade: TipoUnidade[]; niveis_hierarquicos: number[]; }; organizacao: UnidadeOrganizacional; indices: IndicesDepartamentos; validacao: ValidacaoDepartamentos; estatisticas: EstatisticasDepartamentos; } /** * Representação plana de uma unidade apropriada para formulários e navegação. * * - hierarquia_path: array de siglas do até a raiz. * - hierarquia_display: string legível para exibição. * - pai / filhos: referências a outras unidades no modelo plano. * * @public */ export interface UnidadeFlat { codigo: string; sigla: string; nome: string; tipo: TipoUnidade; nivel: number; /** Ex.: ["ANPD", "CGTI", "DDSS"] */ hierarquia_path: string[]; /** Ex.: "DDSS/CGTI/ANPD" */ hierarquia_display: string; pai?: UnidadeFlat; filhos: UnidadeFlat[]; } /** * Opção simplificada usada em selects e listas (label amigável). * * @public */ export interface UnidadeOption { codigo: string; sigla: string; nome: string; tipo: TipoUnidade; nivel: number; hierarquia_display: string; /** Nome completo para exibição. */ label: string; } /** * Estrutura que descreve a hierarquia de um departamento em contexto de navegação. * * - unidade_atual: focal. * - caminho_completo: sequência do até a raiz. * - subordinadas_diretas / todas_subordinadas: listas de unidades subordinadas. * * @public */ export interface HierarquiaDepartamento { unidade_atual: UnidadeFlat; caminho_completo: UnidadeFlat[]; subordinadas_diretas: UnidadeFlat[]; todas_subordinadas: UnidadeFlat[]; } /** * Dados usados em formulários de criação/edição de departamento. * * - unidade_pai: sigla da unidade pai (opcional). * * @public */ export interface DepartmentFormData { sigla: string; nome: string; tipo: TipoUnidade; codigo_siorg?: string; /** Sigla da unidade pai. */ unidade_pai?: string; } /** * Representação do caminho de departamento compatível com Active Directory. * * - siglas: array de siglas do até a raiz. * - path_string: caminho serializado (ex.: "DDSS/CGTI/ANPD"). * - unidade_principal: sigla do mais próximo (ex.: "DDSS"). * * @public */ export interface ADDepartmentPath { /** Ex.: ["DDSS", "CGTI", "ANPD"] */ siglas: string[]; /** Ex.: "DDSS/CGTI/ANPD" */ path_string: string; /** Ex.: "DDSS" */ unidade_principal: string; } export {}; //# sourceMappingURL=departments.types.d.ts.map