Primeiro Commit

This commit is contained in:
luisfepsale
2025-10-22 12:52:23 -03:00
parent 27820254e7
commit 235fb538e1
19 changed files with 2132 additions and 426 deletions
+132
View File
@@ -0,0 +1,132 @@
/**
* Configuração de modelos de IA disponíveis
* Mapeia os nomes de exibição para os IDs usados pela API
*/
export interface ModelConfig {
name: string; // Nome exibido na interface
id: string; // ID enviado para a API
description?: string; // Descrição opcional do modelo
}
/**
* Lista de modelos disponíveis
* NOTA: Estes dados correspondem à tabela de modelos do banco de dados.
* Futuramente será integrado com API para buscar dinamicamente.
*/
export const AVAILABLE_MODELS: ModelConfig[] = [
{
name: 'GPT-4.1',
id: '1',
description: 'Modelo GPT-4.1',
},
{
name: 'GPT-4o',
id: '2',
description: 'Modelo GPT-4o',
},
{
name: 'GPT-5 Mini',
id: '3',
description: 'Modelo GPT-5 Mini',
},
{
name: 'Gemini 2.0 Flash',
id: '4',
description: 'Google Gemini 2.0 Flash',
},
{
name: 'Claude Sonnet 4.5',
id: '5',
description: 'Anthropic Claude Sonnet 4.5',
},
{
name: 'DeepSeek V3.2 Chat',
id: '6',
description: 'DeepSeek V3.2 Chat',
},
{
name: 'DeepSeek V3.2 Reasoner',
id: '7',
description: 'DeepSeek V3.2 Reasoner',
},
{
name: 'Gemini 2.5 Flash',
id: '8',
description: 'Google Gemini 2.5 Flash',
},
{
name: 'Gemini 2.5 Flash-Lite',
id: '9',
description: 'Google Gemini 2.5 Flash-Lite',
},
{
name: 'Claude Haiku 4.5',
id: '10',
description: 'Anthropic Claude Haiku 4.5',
},
{
name: 'GPT-4o Mini',
id: '11',
description: 'Modelo GPT-4o Mini',
},
];
/**
* Mapeia o nome do modelo para o ID da API
*
* @param modelName - Nome do modelo exibido na interface
* @returns ID do modelo para a API, ou o próprio nome se não encontrado
*/
export function getModelId(modelName: string): string {
const model = AVAILABLE_MODELS.find(m => m.name === modelName);
return model?.id || modelName;
}
/**
* Mapeia o ID da API para o nome de exibição
*
* @param modelId - ID do modelo na API
* @returns Nome do modelo para exibir, ou o próprio ID se não encontrado
*/
export function getModelName(modelId: string): string {
const model = AVAILABLE_MODELS.find(m => m.id === modelId);
return model?.name || modelId;
}
/**
* Obtém a configuração completa de um modelo pelo nome
*
* @param modelName - Nome do modelo
* @returns Configuração do modelo ou undefined
*/
export function getModelConfig(modelName: string): ModelConfig | undefined {
return AVAILABLE_MODELS.find(m => m.name === modelName);
}
/**
* Retorna apenas os nomes dos modelos para uso em dropdowns
*/
export function getModelNames(): string[] {
return AVAILABLE_MODELS.map(m => m.name);
}
/**
* FUTURA INTEGRAÇÃO COM BANCO DE DADOS
*
* Quando a API estiver pronta, substituir AVAILABLE_MODELS por chamada à API:
*
* export async function fetchModelsFromDatabase(): Promise<ModelConfig[]> {
* const response = await apiService.get('/api/models');
* return response.data.map((model: any) => ({
* name: model.name,
* id: model.id.toString(),
* description: model.description || '',
* }));
* }
*
* Nos componentes, usar:
* - useEffect para carregar modelos na montagem
* - useState para armazenar lista de modelos
* - Loading state durante o fetch
*/