# DirexCRM - Guía de Instalación y Configuración

## Estado del Proyecto

✅ **Sistema Base Completado**

### Componentes Implementados

#### 1. Base de Datos
- ✅ Migraciones para todos los módulos
- ✅ Modelos Eloquent con relaciones
- ✅ Factories para datos de prueba
- ✅ Seeders (RolesSeeder, DemoSeeder)

#### 2. Autenticación y Autorización
- ✅ Spatie Permission instalado
- ✅ Roles creados: admin, service, ventas, stock, viewer
- ✅ Permisos por módulo configurados
- ✅ Usuario admin: `admin@direxcrm.com` / `password`

#### 3. Panel Administrativo Filament
- ✅ Panel de administración configurado
- ✅ Recursos de Filament creados para:
  - Clientes (ClientResource)
  - Contactos (ClientContactResource)
  - Equipos (DeviceResource)
  - Servicios (ServiceResource)
  - Tickets (TicketResource)
  - Repuestos (SpareResource)
  - Contratos (ContractResource)
  - Facturas (InvoiceResource)

#### 4. Widgets del Dashboard
- ✅ ServicesStatsWidget - KPIs de servicios
- ✅ TicketsStatsWidget - KPIs de tickets
- ✅ StockStatsWidget - KPIs de stock
- ✅ InvoicesStatsWidget - KPIs de facturación

#### 5. Auditoría
- ✅ Observer de auditoría configurado
- ✅ Logs automáticos para cambios críticos
- ✅ Tabla audit_logs creada

#### 6. MediaLibrary
- ✅ Spatie MediaLibrary instalado
- ✅ Configuración de colecciones para:
  - Service (service_attachments)
  - Ticket (ticket_files)

## Acceso al Sistema

### URL del Panel Administrativo
```
http://localhost:8000/admin
```

### Credenciales de Acceso
- **Email:** admin@direxcrm.com
- **Contraseña:** password

## Configuración Pendiente

### 1. Logos de la Empresa
Coloca los logos en: `public/images/`
- `logo_empresa.png` - Para PDFs
- `logo_empresa_small.png` - Para panel admin

### 2. Recursos Filament Adicionales
Crear recursos para:
```bash
php artisan make:filament-resource Import --generate
php artisan make:filament-resource Shipment --generate
php artisan make:filament-resource Board --generate
php artisan make:filament-resource ServiceEvent --generate
php artisan make:filament-resource AuditLog --generate
```

### 3. Políticas de Autorización
Crear políticas para todos los modelos:
```bash
php artisan make:policy ClientPolicy --model=Client
php artisan make:policy DevicePolicy --model=Device
# ... (repetir para cada modelo)
```

### 4. Servicio de PDFs
Crear en: `app/Http/Services/PdfService.php`

### 5. Vistas Blade para PDFs
Crear en: `resources/views/pdf/`
- `service_report.blade.php`
- `shipment_note.blade.php`
- `installed_base_report.blade.php`

### 6. Página Kanban
Crear página personalizada para el tablero Kanban:
```bash
php artisan make:filament-page KanbanBoardPage
```

### 7. Configuración de Email
Configurar mail en `.env`:
```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="noreply@direxcrm.com"
MAIL_FROM_NAME="${APP_NAME}"
```

## Comandos Útiles

### Ejecutar el servidor
```bash
php artisan serve
```

### Compilar assets
```bash
npm run build
npm run dev  # Modo desarrollo con hot reload
```

### Limpiar caches
```bash
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
```

### Ver todas las rutas
```bash
php artisan route:list
```

## Estructura de Archivos

```
app/
├── Filament/
│   ├── Resources/       # Recursos de Filament
│   ├── Widgets/         # Widgets del dashboard
│   └── Pages/           # Páginas personalizadas
├── Http/
│   ├── Controllers/
│   └── Services/        # PdfService, etc.
├── Models/              # Modelos Eloquent
├── Observers/           # Observers para auditoría
└── Providers/

database/
├── migrations/          # Migraciones de base de datos
├── seeders/            # Seeders de datos
└── factories/           # Factories para datos de prueba

resources/
├── views/
│   ├── pdf/            # Plantillas PDF
│   └── vendor/
└── js/

public/
└── images/             # Logos de la empresa
```

## Próximos Pasos

1. **Completar Recursos Filament** - Agregar recursos faltantes
2. **Crear Políticas** - Implementar autorización granular
3. **Implementar Kanban** - Tablero drag & drop
4. **Generar PDFs** - Servicio y vistas
5. **Configurar Email** - Para cierre de servicios
6. **Customizar UI** - Ajustar colores y branding
7. **Agregar Reportes** - Vistas personalizadas
8. **Testing** - Crear tests unitarios

## Solución de Problemas

### Error: No se puede acceder al panel
```bash
php artisan config:clear
php artisan route:clear
php artisan cache:clear
```

### Error: No se encuentran los modelos
```bash
composer dump-autoload
```

### Error: Permisos en storage
```bash
chmod -R 775 storage
chmod -R 775 bootstrap/cache
```

## Soporte

Para más información, consulta la documentación:
- [Filament](https://filamentphp.com/docs)
- [Spatie Permission](https://spatie.be/docs/laravel-permission)
- [Laravel](https://laravel.com/docs)

