@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
201 lines • 5.53 kB
TypeScript
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