from app.db.database import SessionLocal from app.repositories.tool_repository import ToolRepository def get_tools_definitions(): return [ { "name": "consultar_estoque", "description": "Use esta ferramenta para consultar veículos disponíveis no estoque até um preço máximo informado pelo cliente, opcionalmente filtrando por categoria (Hatch, Sedan, SUV, etc.). Ideal quando o cliente quer saber quais carros cabem no orçamento ou comparar opções dentro de uma faixa de preço.", "parameters": { "type": "object", "properties": { "preco_max": { "type": "number", "description": "Preço máximo do veículo em reais (BRL)." }, "categoria": { "type": "string", "description": "Categoria do veículo, por exemplo: Hatch, Sedan, SUV. Opcional." }, }, "required": ["preco_max"], }, }, { "name": "validar_cliente_venda", "description": "Use esta ferramenta quando precisar avaliar se o cliente pode financiar um veículo específico. Ela recebe o CPF e o valor do veículo, consulta um score simulado e retorna se o cliente está aprovado ou reprovado para a compra, juntamente com o score e um limite de crédito estimado.", "parameters": { "type": "object", "properties": { "cpf": { "type": "string", "description": "CPF do cliente, com ou sem formatação (apenas dígitos também é aceito)." }, "valor_veiculo": { "type": "number", "description": "Valor do veículo em reais (BRL) que o cliente deseja comprar." }, }, "required": ["cpf", "valor_veiculo"], }, }, { "name": "avaliar_veiculo_troca", "description": "Use esta ferramenta quando o cliente quiser saber quanto o carro dele vale como entrada em uma negociação. Ela recebe modelo, ano e quilometragem do veículo atual e devolve um valor estimado de avaliação para troca, já considerando depreciação por ano e quilometragem.", "parameters": { "type": "object", "properties": { "modelo": { "type": "string", "description": "Modelo do veículo que o cliente deseja oferecer na troca (por exemplo, 'Toyota Corolla')." }, "ano": { "type": "integer", "description": "Ano de fabricação do veículo do cliente." }, "km": { "type": "integer", "description": "Quilometragem atual do veículo do cliente." }, }, "required": ["modelo", "ano", "km"], }, }, { "name": "agendar_revisao", "description": "Use esta ferramenta quando o cliente quiser marcar uma revisão ou manutenção para o veículo. Ela recebe a placa e a data/hora desejada, cria um agendamento simulado e retorna um identificador, além do status do agendamento.", "parameters": { "type": "object", "properties": { "placa": { "type": "string", "description": "Placa do veículo que será levado para revisão." }, "data_hora": { "type": "string", "description": "Data e hora desejada para a revisão, em formato ISO 8601 (por exemplo, '2026-03-10T09:00:00-03:00')." }, }, "required": ["placa", "data_hora"], }, }, { "name": "cancelar_pedido", "description": "Use esta ferramenta quando o cliente solicitar o cancelamento de um pedido já registrado. Ela recebe o número do pedido e o motivo do cancelamento, atualiza o status para 'Cancelado' e retorna os detalhes do cancelamento para que você explique o resultado ao cliente.", "parameters": { "type": "object", "properties": { "numero_pedido": { "type": "string", "description": "Número do pedido que o cliente deseja cancelar." }, "motivo": { "type": "string", "description": "Motivo do cancelamento informado pelo cliente (por exemplo, atraso, mudança de planos, condição de pagamento, etc.)." }, }, "required": ["numero_pedido", "motivo"], }, }, ] def seed_tools(): db = SessionLocal() try: repo = ToolRepository(db) existing = repo.get_all() existing_names = {t.name for t in existing} for tool_def in get_tools_definitions(): if tool_def["name"] in existing_names: continue repo.create( name=tool_def["name"], description=tool_def["description"], parameters=tool_def["parameters"], ) finally: db.close() if __name__ == "__main__": seed_tools()