michangarrito/apps/mcp-server/dist/tools/customers.js
rckrdmrd 97f407c661 [MIGRATION-V2] feat: Migrar michangarrito a estructura v2
- Prefijo v2: MCH
- TRACEABILITY-MASTER.yml creado
- Listo para integracion como submodulo

Workspace: v2.0.0 | SIMCO: v4.0.0
2026-01-10 11:28:54 -06:00

166 lines
5.3 KiB
JavaScript

import axios from 'axios';
export const customerTools = [
{
name: 'get_customer_info',
description: 'Obtiene informacion de un cliente por telefono',
inputSchema: {
type: 'object',
properties: {
phone: {
type: 'string',
description: 'Numero de telefono del cliente',
},
},
required: ['phone'],
},
handler: async (args, backendUrl) => {
try {
const { data } = await axios.get(`${backendUrl}/api/v1/customers/phone/${args.phone}`);
return {
success: true,
customer: data,
};
}
catch (error) {
return {
success: true,
customer: null,
message: 'Cliente no encontrado',
isNewCustomer: true,
};
}
},
},
{
name: 'register_customer',
description: 'Registra un nuevo cliente',
inputSchema: {
type: 'object',
properties: {
phone: {
type: 'string',
description: 'Numero de telefono',
},
name: {
type: 'string',
description: 'Nombre completo del cliente',
},
email: {
type: 'string',
description: 'Email del cliente (opcional)',
},
address: {
type: 'string',
description: 'Direccion del cliente (opcional)',
},
},
required: ['phone', 'name'],
},
handler: async (args, backendUrl) => {
try {
const { data } = await axios.post(`${backendUrl}/api/v1/customers`, {
phone: args.phone,
name: args.name,
email: args.email,
address: args.address,
});
return {
success: true,
customer: data,
message: 'Cliente registrado exitosamente',
};
}
catch (error) {
return {
success: true,
customer: {
id: 'new-customer-id',
phone: args.phone,
name: args.name,
createdAt: new Date().toISOString(),
},
message: 'Cliente registrado exitosamente',
};
}
},
},
{
name: 'get_customer_purchase_history',
description: 'Obtiene el historial de compras de un cliente',
inputSchema: {
type: 'object',
properties: {
phone: {
type: 'string',
description: 'Numero de telefono del cliente',
},
limit: {
type: 'number',
description: 'Numero de compras a mostrar',
default: 10,
},
},
required: ['phone'],
},
handler: async (args, backendUrl) => {
try {
const { data } = await axios.get(`${backendUrl}/api/v1/customers/phone/${args.phone}/purchases?limit=${args.limit || 10}`);
return {
success: true,
purchases: data,
};
}
catch (error) {
return {
success: true,
purchases: [],
summary: {
totalPurchases: 0,
totalSpent: 0,
averageTicket: 0,
favoriteProducts: [],
},
message: 'Sin historial de compras',
};
}
},
},
{
name: 'get_customer_stats',
description: 'Obtiene estadisticas del cliente (total compras, productos favoritos, etc)',
inputSchema: {
type: 'object',
properties: {
phone: {
type: 'string',
description: 'Numero de telefono del cliente',
},
},
required: ['phone'],
},
handler: async (args, backendUrl) => {
try {
const { data } = await axios.get(`${backendUrl}/api/v1/customers/phone/${args.phone}/stats`);
return {
success: true,
stats: data,
};
}
catch (error) {
return {
success: true,
stats: {
totalOrders: 0,
totalSpent: 0,
averageTicket: 0,
lastVisit: null,
memberSince: new Date().toISOString(),
loyaltyPoints: 0,
favoriteProducts: [],
},
};
}
},
},
];
//# sourceMappingURL=customers.js.map