namespace Nalu.Web.Services; /// /// Credit cost per validator. 1 = deterministic, 2 = light LLM, 5 = heavy LLM (70B context-aware). /// public static class CreditCosts { private static readonly Dictionary _costs = new(StringComparer.OrdinalIgnoreCase) { // 1 credit — deterministic ["validate_cpf"] = 1, ["validate_cep"] = 1, ["validate_cnpj"] = 1, ["validate_email"] = 1, ["validate_phone_br"] = 1, ["validate_plate_br"] = 1, ["validate_postal_code"]= 1, // 2 credits — light LLM ["validate_full_name"] = 2, ["validate_yes_no"] = 2, ["validate_birthdate"] = 2, ["validate_handoff"] = 2, ["validate_cancel_intent"] = 2, ["validate_company_name"] = 2, // 5 credits — heavy LLM (validate_reply) ["validate_reply"] = 5, }; public static int Get(string validatorId) => _costs.TryGetValue(validatorId, out var cost) ? cost : 1; // Endpoint aliases → validator IDs private static readonly Dictionary _aliases = new(StringComparer.OrdinalIgnoreCase) { ["name"] = "validate_full_name", ["cpf"] = "validate_cpf", ["cep"] = "validate_cep", ["phone"] = "validate_phone_br", ["email"] = "validate_email", ["postal-code"] = "validate_postal_code", ["yes-no"] = "validate_yes_no", ["birthdate"] = "validate_birthdate", ["handoff"] = "validate_handoff", ["cancel-intent"]= "validate_cancel_intent", ["cnpj"] = "validate_cnpj", ["plate-br"] = "validate_plate_br", ["company-name"] = "validate_company_name", ["reply"] = "validate_reply", }; public static int GetByEndpoint(string endpoint) => _aliases.TryGetValue(endpoint, out var id) ? Get(id) : 1; }