Configuração centralizada, validada uma vez no start_link.
Passada para todos os processos da supervision tree via conf:.
Inspirado no padrão do Oban: um struct imutável que carrega todas
as configurações necessárias, eliminando Application.get_env espalhado
e permitindo múltiplas instâncias com configurações diferentes.
Summary
Types
@type t() :: %MeliGraph.Config{ algorithms: [atom()], cluster_call_timeout: pos_integer(), distribution: :local | :horde, graph_type: :directed | :bipartite, name: atom(), on_ready: on_ready(), plugins: [{module(), keyword()}], reconcile_grace: non_neg_integer(), reconcile_interval: pos_integer(), registry: atom(), result_ttl: pos_integer(), segment_max_edges: pos_integer(), segment_ttl: pos_integer(), testing: :disabled | :sync }
Functions
Cria e valida uma nova configuração a partir das opções fornecidas.
Opções obrigatórias
:name- nome da instância (atom):graph_type-:directedou:bipartite
Opções opcionais
:segment_max_edges- máximo de arestas por segmento (padrão: 1_000_000):segment_ttl- TTL dos segmentos em ms (padrão: 24h):result_ttl- TTL dos resultados em cache em ms (padrão: 30min):algorithms- lista de algoritmos habilitados (padrão: [:pagerank, :salsa]):testing- modo de testing::disabledou:sync(padrão: :disabled):plugins- lista de {módulo, opts} dos plugins (padrão: Pruner + CacheCleaner):distribution-:local(padrão) ou:horde(modo distribuído opt-in):on_ready- MFA{module, function, args}chamada quando a instância sobe (e em cada realocação no modo:horde) para reconstruir o grafo;nil(padrão) marca a instância como pronta imediatamente:cluster_call_timeout- timeout em ms das chamadas cross-node (padrão: 15s):reconcile_interval- intervalo em ms do reconciliador que vigia a presença do dono no modo:horde(padrão: 2s); só usado em:horde:reconcile_grace- quanto tempo em ms o grafo pode ficar sem dono antes do reconciliador re-disparar a alocação (padrão: 5s). Deve ser maior que a recuperação automática do Horde (~1-2s) para evitar dupla-alocação