using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Nalu.Web.Pages;

public class IndexModel : PageModel
{
    public record FaqItem(string Q, string A);

    public IReadOnlyList<ValidatorCard> Validators { get; } =
    [
        new("🔤", "validate_name",         "Extrai nome completo, ignora saudações e títulos.",                        3),
        new("🆔", "validate_cpf",          "Valida CPF com mod 11. Formata XXX.XXX.XXX-XX.",                           3),
        new("📮", "validate_cep",          "Extrai CEP e retorna endereço enriquecido.",                               3),
        new("📱", "validate_phone",        "Extrai telefone com DDD. Valida DDDs ANATEL.",                             3),
        new("✉️", "validate_email",        "Extrai email e corrige typos (gmail→gmail.com).",                          3),
        new("🌍", "validate_postal_code",  "Código postal internacional (não CEP).",                                   3),
        new("☑️", "validate_yes_no",       "Detecta sim/não em qualquer idioma e forma indireta.",                     3),
        new("🎂", "validate_birthdate",    "Data de nascimento em qualquer formato. Detecta menores.",                 3),
        new("🤝", "validate_handoff",      "Detecta intenção de falar com humano (urgência 1-3).",                     3),
        new("🚫", "validate_cancel_intent","Diferencia cancelamento de serviço vs operação atual.",                    3),
        new("🏢", "validate_cnpj",         "Valida CNPJ com mod 11. Formata XX.XXX.XXX/XXXX-XX.",                     3),
        new("🚗", "validate_plate_br",     "Placa Mercosul e formato antigo. Aceita por extenso.",                     3),
        new("🧠", "validate_reply",        "Analisa contexto conversacional. Detecta contrapropostas, handoffs, cancelamentos.",  5, IsNew: true),
    ];

    public IReadOnlyList<FaqItem> Faqs { get; } =
    [
        new("O que acontece quando meus créditos acabam?",
            "Suas chamadas retornam 429 com sugestão de upgrade. Sem cobrança surpresa. Seus dados e chaves continuam intactos."),
        new("Por que validate_reply custa 5 créditos?",
            "Requer análise de contexto aprofundada sobre o par agente+usuário como unidade semântica. Os demais validadores usam extração em camadas mais rápida."),
        new("Funciona com n8n e Make?",
            "Sim. É uma API REST padrão. Se o seu tool aceita HTTP, funciona com NALU. Também disponível via MCP para Claude Code e Cursor."),
        new("Posso usar o MCP com Claude Code?",
            "Sim. Adicione o servidor NALU ao Claude Code e chame os validadores como ferramentas nativas. Ver /docs/mcp."),
        new("Meus dados ficam armazenados?",
            "Não. Os diálogos enviados são usados apenas para processar a chamada e descartados. Não armazenamos o conteúdo das conversas."),
    ];

    public void OnGet() { }
}
