Painel Administrativo
O Painel Administrativo do Tarefa AI oferece controle completo sobre o sistema, permitindo gerenciar usuários, monitorar execuções, criar cupons e visualizar métricas em tempo real.
Acesso ao Painel
O painel admin está disponível em /admin e requer permissões de administrador.
Requisitos
- Conta com role
ADMIN - Autenticação ativa
- Permissões adequadas no banco de dados
// Verificar se usuário é admin
if (user.role === 'ADMIN') {
// Permitir acesso ao painel
}Dashboard Overview
Métricas Principais
O dashboard exibe estatísticas em tempo real:
- Total de Usuários: Quantidade de usuários registrados
- Tarefas Ativas: Tarefas agendadas e em execução
- Execuções (24h): Total de execuções nas últimas 24 horas
- Taxa de Sucesso: Percentual de execuções bem-sucedidas
interface DashboardMetrics {
totalUsers: number;
activeTasks: number;
executionsLast24h: number;
successRate: number;
}Gráficos e Visualizações
Execuções ao Longo do Tempo
Gráfico de linha mostrando a quantidade de execuções por hora/dia.
{
chart: 'line',
data: [
{ time: '00:00', executions: 15 },
{ time: '01:00', executions: 12 },
// ...
]
}Distribuição de Status
Gráfico de pizza com a distribuição de status das execuções:
- Success (verde)
- Failed (vermelho)
- Running (azul)
- Pending (amarelo)
Gerenciamento de Usuários
Acesse a página de usuários em /admin/users.
Listar Usuários
Visualize todos os usuários com:
- Nome e email
- Role (USER, ADMIN)
- Data de criação
- Status da conta
- Ações disponíveis
Pesquisar Usuários
Use a barra de pesquisa para filtrar por:
// Exemplo de filtros
{
query: 'email@example.com',
role: 'USER',
status: 'active'
}Ações de Usuário
Para cada usuário, você pode:
- Visualizar Detalhes: Ver informações completas
- Editar Permissões: Alterar role (USER ↔ ADMIN)
- Suspender Conta: Desativar temporariamente
- Excluir Usuário: Remover permanentemente (com confirmação)
// Server Action
async function updateUserRole(userId: string, role: 'USER' | 'ADMIN') {
'use server';
await db.update(users)
.set({ role })
.where(eq(users.id, userId));
}Ver Tarefas do Usuário
Clique em um usuário para ver:
- Todas as tarefas criadas
- Histórico de execuções
- Uso de créditos/limites
- Atividade recente
Sistema de Cupons
Gerencie cupons de desconto e trial extensions em /admin/coupons.
Criar Novo Cupom
Preencha os campos:
interface CouponForm {
code: string; // Código único (ex: WELCOME50)
type: 'TRIAL_EXTENSION'; // Tipo do cupom
value: number; // Dias de extensão
maxUses: number; // Máximo de usos (0 = ilimitado)
expiresAt?: Date; // Data de expiração (opcional)
}Exemplo: Cupom de Boas-Vindas
{
code: 'WELCOME30',
type: 'TRIAL_EXTENSION',
value: 30,
maxUses: 100,
expiresAt: new Date('2025-12-31')
}Gerenciar Cupons Existentes
Para cada cupom, visualize:
- Código e tipo
- Quantidade de usos (usados/máximo)
- Data de criação e expiração
- Status (ativo/expirado)
Ver Usuários do Cupom
Clique em "Ver Usuários" para ver quem usou o cupom:
- Nome do usuário
- Data de ativação
- Status do trial
Desativar Cupons
Desative cupons que não devem mais ser usados.
Logs do Sistema
Acesse logs detalhados em /admin/logs.
Tipos de Logs
- Auth: Login, logout, falhas de autenticação
- Tasks: Criação, execução, erros de tarefas
- Admin: Ações administrativas
- System: Eventos do sistema
Filtros Disponíveis
interface LogFilters {
level: 'INFO' | 'WARN' | 'ERROR';
type: 'auth' | 'task' | 'admin' | 'system';
userId?: string;
startDate?: Date;
endDate?: Date;
}Visualização de Logs
Cada log exibe:
- Timestamp
- Nível de severidade
- Tipo de evento
- Mensagem detalhada
- Usuário relacionado
- Metadados adicionais (JSON)
{
"timestamp": "2025-01-17T10:30:00Z",
"level": "ERROR",
"type": "task",
"message": "Task execution failed",
"userId": "user_123",
"metadata": {
"taskId": "task_456",
"error": "API rate limit exceeded"
}
}Exportar Logs
Exporte logs em formato CSV ou JSON para análise externa.
Configurações do Sistema
Configure parâmetros globais em /admin/settings.
Sistema de Cupons
Ative ou desative o sistema de cupons globalmente:
{
couponsEnabled: boolean;
}Quando desativado:
- Cupons existentes não podem ser resgatados
- Página de ativação retorna erro
- Cupons ativos continuam valendo para quem já resgatou
Limites e Quotas
Configure limites padrão:
interface SystemLimits {
maxTasksPerUser: number;
maxExecutionsPerDay: number;
maxFileSizeMB: number;
trialDurationDays: number;
}Configurações de Email
Configure SMTP para notificações:
{
smtpHost: 'smtp.resend.com',
smtpPort: 587,
smtpUser: 'resend',
smtpPassword: process.env.RESEND_API_KEY,
fromEmail: 'noreply@tarefaai.com',
fromName: 'Tarefa AI'
}Monitoramento em Tempo Real
Execuções Ativas
Veja tarefas executando no momento:
- Nome da tarefa
- Usuário proprietário
- Tempo de execução
- Progress (se disponível)
Fila de Tarefas
Monitore a fila de agendamento:
- Tarefas pendentes
- Próximas execuções
- Atrasos na fila
Health Checks
Monitore a saúde do sistema:
interface HealthStatus {
database: 'healthy' | 'degraded' | 'down';
scheduler: 'healthy' | 'degraded' | 'down';
aiProviders: {
openrouter: 'healthy' | 'degraded' | 'down';
};
uptime: number; // segundos
}Ações em Massa
Execute ações em múltiplos usuários/tarefas:
Selecionar Múltiplos
Use checkboxes para selecionar vários itens.
Ações Disponíveis
- Enviar email para usuários selecionados
- Suspender múltiplas contas
- Deletar tarefas em massa
- Aplicar cupom para múltiplos usuários
async function bulkAction(
userIds: string[],
action: 'suspend' | 'activate' | 'delete'
) {
'use server';
for (const userId of userIds) {
await performAction(userId, action);
}
}Auditoria e Compliance
Registro de Ações
Todas as ações administrativas são registradas:
interface AuditLog {
adminId: string;
action: string;
targetType: 'user' | 'task' | 'coupon' | 'system';
targetId: string;
timestamp: Date;
details: Record<string, any>;
}Relatórios de Compliance
Gere relatórios para:
- GDPR: Dados de usuários
- SOC 2: Logs de acesso
- ISO 27001: Segurança
Boas Práticas
Segurança
- Nunca compartilhe credenciais admin
- Use 2FA para contas administrativas
- Revise logs regularmente
- Audite permissões periodicamente
Performance
- Use filtros ao visualizar logs
- Exporte dados grandes ao invés de visualizar no browser
- Configure alertas para métricas críticas
- Monitore uso de recursos
Gestão de Usuários
- Revise contas inativas periodicamente
- Verifique padrões de uso suspeitos
- Responda rapidamente a reports de abuso
- Mantenha comunicação com usuários
Troubleshooting
Painel Não Carrega
Verifique:
- Permissões de administrador
- Conexão com banco de dados
- Logs do servidor
Métricas Incorretas
- Limpe cache do browser
- Verifique workers do scheduler
- Confirme integridade do banco
Ações Falham
- Verifique logs de erro
- Confirme permissões
- Teste em ambiente de dev
Recursos Avançados
API Programática
Acesse funcionalidades admin via API:
// Listar usuários
const users = await adminActions.listUsers({
page: 1,
limit: 50,
role: 'USER'
});
// Estatísticas
const stats = await adminActions.getSystemStats();Webhooks Administrativos
Configure webhooks para eventos administrativos:
{
url: 'https://seu-sistema.com/admin-webhook',
events: [
'user.created',
'user.suspended',
'coupon.used',
'system.error'
]
}Próximos Passos
Ajuda: Se precisar de assistência, entre em contato com o suporte técnico.