UNPKG

@anpdgovbr/shared-types

Version:

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

201 lines 5.53 kB
import type { FamiliaFuncionalLiteral, NivelSenioridadeLiteral, TipoUnidadeLiteral, TipoVinculoLiteral } from "../../enums"; type FamiliaFuncional = FamiliaFuncionalLiteral; type NivelSenioridade = NivelSenioridadeLiteral; type TipoUnidade = TipoUnidadeLiteral; type TipoVinculo = TipoVinculoLiteral; /** * Escala salarial/administrativa do cargo. * * Valores possíveis representando tabelas ou regimes de remuneração utilizadas no catálogo. * * @public */ export type EscalaCargo = "FCE" | "CCE"; /** * Estrutura que descreve remuneração associada a um cargo. * * - escala_cargo: escalas aplicáveis (ou null se não aplicável) * - faixa_nivel: faixas ou classes de nível salarial (ou null) * * @public */ export interface RemuneracaoCargo { escala_cargo: EscalaCargo[] | null; faixa_nivel: string[] | null; } /** * Representa a posição do cargo na hierarquia organizacional. * * - nivel: profundidade ou nível hierárquico * - superior: id do cargo superior (ou null) * - subordinados: lista de ids de cargos subordinados * * @public */ export interface HierarquiaCargo { nivel: number; superior: string | null; subordinados: string[]; } /** * Modelo que representa um cargo no catálogo. * * Contém metadados, vínculo, hierarquia, competências e outros atributos. * * @public */ export interface Cargo { id: string; titulo_canonico: string; familia: FamiliaFuncional; subespecialidade: string | null; senioridade: NivelSenioridade | null; remuneracao: RemuneracaoCargo; vinculo: TipoVinculo | TipoVinculo[]; lideranca: boolean; is_head_of_unit: boolean; unit_type: TipoUnidade | null; ativo: boolean; hierarquia: HierarquiaCargo; competencias: string[]; observacoes: string; } /** * Índices e listas auxiliares para navegação e consulta do catálogo de cargos. * * Agrupa cargos por família, senioridade, tipo de vínculo, e informações sobre lideranças. * * @public */ export interface IndicesCargos { por_familia: Record<FamiliaFuncional, string[]>; por_senioridade: Record<NivelSenioridade, string[]>; por_lideranca: { lideranca: string[]; execucao: string[]; }; por_vinculo: Record<TipoVinculo, string[]>; por_head_unit: { chefes_unidade: string[]; nao_chefes: string[]; }; } /** * Regras de validação do catálogo de cargos. * * Contém listas de campos obrigatórios/opcionais, valores válidos e regras de negócio documentadas. * * @public */ export interface ValidacaoCargos { campos_obrigatorios: string[]; campos_opcionais: string[]; valores_validos: { familia: FamiliaFuncional[]; vinculo: TipoVinculo[]; escala_cargo: EscalaCargo[]; unit_type: TipoUnidade[]; lideranca: boolean[]; is_head_of_unit: boolean[]; ativo: boolean[]; }; regras_negocio: Record<string, string>; } /** * Estatísticas derivadas do catálogo de cargos. * * Números agregados como total de cargos, distribuições por família/vínculo e contagens de liderança. * * @public */ export interface EstatisticasCargos { total_cargos: number; por_familia: Record<FamiliaFuncional, number>; cargos_lideranca: number; cargos_execucao: number; chefes_unidade: number; nao_chefes_unidade: number; por_vinculo: Record<TipoVinculo, number>; escalas_remuneracao: { FCE_CCE: number; FCE_apenas: number; sem_escala: number; }; } /** * Metadados do arquivo/schema de catálogo gerado. * * Inclui timestamp de geração, versão do schema, autor da última atualização e fonte. * * @public */ export interface MetadataSchema { generated_at: string; schema_version: string; last_updated_by: string; source: string; notes: string; } /** * Estrutura completa do catálogo de cargos. * * Contém título, descrição, metadados, enums suportados, lista de cargos e artefatos de suporte. * * @public */ export interface CatalogoCargos { title: string; description: string; metadata: MetadataSchema; enums: { familias: FamiliaFuncional[]; escalas_cargo: EscalaCargo[]; niveis_senioridade: NivelSenioridade[]; tipos_vinculo: TipoVinculo[]; tipos_unidade: TipoUnidade[]; }; cargos: Cargo[]; indices: IndicesCargos; validacao: ValidacaoCargos; estatisticas: EstatisticasCargos; } /** * Dados usados para criar/editar um cargo via formulários. * * Campos opcionais refletem inputs que podem ser omitidos na UI. * * @public */ export interface CargoFormData { titulo_canonico: string; familia: FamiliaFuncional; subespecialidade?: string; senioridade?: NivelSenioridade; escala_cargo?: EscalaCargo[]; faixa_nivel?: string[]; vinculo: TipoVinculo[]; lideranca: boolean; is_head_of_unit: boolean; unit_type?: TipoUnidade; competencias: string[]; observacoes?: string; } /** * Representação simplificada de um cargo para listas/seleção na UI. * * Contém rótulo, id e atributos essenciais para exibição. * * @public */ export interface CargoOption { id: string; label: string; titulo_canonico: string; familia: FamiliaFuncional; senioridade?: NivelSenioridade | null; escala_cargo?: EscalaCargo[] | null; faixa_nivel?: string[] | null; is_head_of_unit: boolean; } export {}; //# sourceMappingURL=job-titles.types.d.ts.map