# @skailan/contacts

Servicio de gestión de contactos para la plataforma Skailan.

## Descripción

Este módulo proporciona funcionalidades completas de gestión de contactos para la plataforma Skailan. Incluye:

- Gestión de contactos individuales y empresas
- Categorización y etiquetado de contactos
- Integración con múltiples plataformas (WhatsApp, Telegram, Email)
- Historial de interacciones
- Gestión de información de contacto

## Instalación

```bash
npm install @skailan/contacts
```

## Uso

### Importación básica

```typescript
import { ContactService } from '@skailan/contacts';

const contactService = new ContactService();

// Crear un nuevo contacto
const contact = await contactService.createContact({
  name: "Juan Pérez",
  email: "juan@ejemplo.com",
  phone: "+1234567890",
  organizationId: "org-123"
});
```

### Configuración de variables de entorno

```env
DATABASE_URL="postgresql://user:password@localhost:5432/skailan"
```

## API Endpoints

### Contactos
- `GET /contacts` - Listar contactos
- `POST /contacts` - Crear contacto
- `GET /contacts/:id` - Obtener contacto
- `PUT /contacts/:id` - Actualizar contacto
- `DELETE /contacts/:id` - Eliminar contacto

### Plataformas de contacto
- `GET /contact-platforms` - Listar plataformas
- `POST /contact-platforms` - Crear plataforma
- `GET /contact-platforms/:id` - Obtener plataforma
- `PUT /contact-platforms/:id` - Actualizar plataforma

### Etiquetas de contacto
- `GET /contact-tags` - Listar etiquetas
- `POST /contact-tags` - Crear etiqueta
- `GET /contact-tags/:id` - Obtener etiqueta
- `PUT /contact-tags/:id` - Actualizar etiqueta

## Características

- **Gestión completa de contactos**: CRUD completo para contactos
- **Plataformas múltiples**: Soporte para WhatsApp, Telegram, Email, etc.
- **Sistema de etiquetas**: Categorización flexible de contactos
- **Multitenancy**: Aislamiento de datos por organización
- **Validación robusta**: Validación de datos de entrada
- **Búsqueda avanzada**: Filtros y búsqueda por múltiples criterios

## Dependencias

- Express.js para el servidor web
- Prisma para ORM
- UUID para generación de IDs
- @skailan/core para autenticación

## Desarrollo

```bash
# Instalar dependencias
npm install

# Ejecutar en modo desarrollo
npm run dev

# Construir para producción
npm run build

# Generar cliente Prisma
npm run prisma:generate
```

## Ejemplos de uso

### Crear contacto con plataforma

```typescript
import { ContactService } from '@skailan/contacts';

const contactService = new ContactService();

const contact = await contactService.createContact({
  name: "María García",
  email: "maria@empresa.com",
  phone: "+1234567890",
  organizationId: "org-123",
  platforms: [
    {
      type: "whatsapp",
      identifier: "+1234567890"
    },
    {
      type: "telegram",
      identifier: "@mariagarcia"
    }
  ],
  tags: ["cliente", "vip"]
});
```

### Buscar contactos por etiqueta

```typescript
const contacts = await contactService.findByTag("vip", "org-123");
```

## Licencia

MIT
