# SIO Frontend - Sistema Integral de Operaciones

## Drenax - Sistema de Gestion de Servicios

---

## Informacion General

| Campo | Valor |
|-------|-------|
| Nombre | SIO Frontend |
| Framework | Angular 8.3.29 |
| UI Library | Angular Material |
| Template | Metronic |
| Puerto Local | 4200 |
| URL Produccion | https://sio.consultoria-as.com |

---

## Arquitectura del Sistema

```
                    ┌─────────────────────────────────────┐
                    │           SIO FRONTEND              │
                    │        Angular 8 + Material         │
                    │           Puerto: 4200              │
                    └─────────────────┬───────────────────┘
                                      │ HTTPS
                                      ▼
                    ┌─────────────────────────────────────┐
                    │           SIO BACKEND               │
                    │         Laravel 5.5 (API)           │
                    │           Puerto: 8000              │
                    └─────────────────────────────────────┘
```

---

## Estructura del Proyecto

```
sio-frontend/
├── src/
│   ├── app/
│   │   ├── core/
│   │   │   ├── api/                      # Servicios de comunicacion con API
│   │   │   ├── auth/                     # Autenticacion y guards
│   │   │   └── models/                   # Modelos de datos
│   │   └── views/
│   │       └── pages/
│   │           ├── agenda/               # Modulo Agenda
│   │           │   ├── calendario/       # Vista calendario diario
│   │           │   ├── agenda-medica/    # Agenda medica
│   │           │   ├── por-operador/     # Vista por operador
│   │           │   └── timeline/         # Vista timeline
│   │           ├── catalogos/            # Gestion de catalogos
│   │           │   ├── clientes/         # Clientes
│   │           │   ├── vehiculos/        # Vehiculos
│   │           │   ├── servicios/        # Tipos de servicios
│   │           │   └── usuarios/         # Usuarios del sistema
│   │           ├── dashboard/            # Dashboard principal
│   │           ├── encuesta/             # Encuestas de satisfaccion
│   │           ├── reportes/             # Modulo de reportes
│   │           └── servicios/            # Gestion de servicios
│   │               └── solicitudes-servicio/
│   │                   ├── historial-cambios/    # Historial de modificaciones
│   │                   └── solicitudes-servicio-edit/
│   └── environments/
│       ├── environment.ts                # Configuracion desarrollo
│       └── environment.prod.ts           # Configuracion produccion
├── dist/                                 # Build compilado
├── angular.json                          # Configuracion Angular
├── package.json                          # Dependencias
└── tsconfig.json                         # Configuracion TypeScript
```

---

## Modulos del Sistema

### 1. Dashboard
- Vista general de estadisticas
- Servicios del dia actual
- Indicadores clave de rendimiento (KPIs)
- Accesos rapidos a funciones principales

### 2. Agenda (Servicios Diarios)
- **Vista Diaria:** Navegacion dia a dia con servicios programados
- **Por Operador:** Servicios agrupados por operador asignado
- **Timeline:** Vista de linea de tiempo de servicios
- Filtros por sucursal, operador y estatus

### 3. Servicios
- **Crear/Editar solicitudes de servicio**
- **Asignar operadores y vehiculos**
- **Gestionar estatus:**
  - Pendiente (Amarillo)
  - En Proceso (Azul)
  - Realizado (Verde)
  - Reprogramado (Naranja)
  - Cancelado (Rojo)
  - Negativo (Rojo claro)
  - Sin Asignar (Gris)
- **Historial de cambios:** Tracking automatico de modificaciones
- **Evidencias:** Visualizacion de fotos del servicio

### 4. Catalogos
- **Clientes:** Gestion de clientes con multiples domicilios
- **Vehiculos:** Flota vehicular con tipos y descripciones
- **Servicios:** Tipos de servicios ofrecidos
- **Formas de Pago:** Metodos de pago disponibles
- **Origenes:** Origen de las solicitudes

### 5. Reportes
- Reportes de productividad por operador
- Servicios por periodo (diario/semanal/mensual)
- Encuestas de satisfaccion
- Capacidad aprovechada
- Exportacion a Excel/PDF

---

## Roles y Permisos

| Modulo | Admin | Atencion Cliente | Supervisor | Operador |
|--------|-------|------------------|------------|----------|
| Dashboard | Si | Si | Si | Si |
| Agenda | Si | Si | Si | No |
| Servicios (Ver) | Si | Si | Si | Si |
| Servicios (Editar) | Si | Si | Si | No |
| Catalogos | Si | No | No | No |
| Reportes | Si | Si | Si | No |
| Usuarios | Si | No | No | No |

**Nota:** Usuarios con `permiso_especial = 1` pueden editar servicios independientemente de su rol.

---

## Configuracion

### Environment (Desarrollo)
```typescript
// src/environments/environment.ts
export const environment = {
  production: false,
  isMockEnabled: false,
  authTokenKey: 'drence9d66b410c149d5992a30073637e4L5',
  API: "http://localhost:8000/api/",
  STORAGE: 'http://localhost:8000/storage/'
};
```

### Environment (Produccion)
```typescript
// src/environments/environment.prod.ts
export const environment = {
  production: true,
  isMockEnabled: false,
  authTokenKey: 'drence9d66b410c149d5992a30073637e4L5',
  API: "https://sio-api.consultoria-as.com/api/",
  STORAGE: 'https://sio-api.consultoria-as.com/storage/'
};
```

---

## Instalacion

### Requisitos
- Node.js 14.x
- NPM 6.x
- Angular CLI 8.3.29

### Pasos de Instalacion

```bash
# Clonar repositorio
git clone https://git.consultoria-as.com/consultoria-as/Sio-Front.git
cd Sio-Front

# Instalar dependencias
npm install

# Instalar Angular CLI (si no esta instalado)
npm install -g @angular/cli@8.3.29

# Ejecutar en desarrollo
ng serve

# Compilar para produccion
ng build --configuration=production
```

### Ejecutar en Produccion

```bash
# Compilar
ng build --configuration=production

# Servir archivos estaticos (usando http-server)
cd dist
http-server -p 4200 --cors
```

---

## Servicios API Consumidos

### Autenticacion
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/login | Iniciar sesion |
| GET | /api/refresh | Refrescar token JWT |
| POST | /api/recoverpassword | Recuperar contrasena |

### Servicios
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/atencionclientes/solicitud_servicios | Listar servicios |
| POST | /api/atencionclientes/solicitud_servicios | Crear servicio |
| GET | /api/atencionclientes/solicitud_servicios/{id} | Ver detalle |
| PUT | /api/atencionclientes/solicitud_servicios/{id} | Actualizar |
| POST | /api/atencionclientes/solicitud_servicios/agenda | Obtener agenda |
| GET | /api/atencionclientes/solicitud_servicios/{id}/historial | Ver historial |

### Catalogos
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/atencionclientes/solicitud_servicios/clientes | Listar clientes |
| GET | /api/atencionclientes/solicitud_servicios/operadores | Listar operadores |
| GET | /api/atencionclientes/solicitud_servicios/vehiculos | Listar vehiculos |
| GET | /api/atencionclientes/solicitud_servicios/cat_servicios | Catalogo servicios |
| GET | /api/atencionclientes/solicitud_servicios/estatus_servicios | Catalogo estatus |

---

## Funcionalidades Especiales

### Historial de Cambios
El sistema registra automaticamente todos los cambios realizados a los servicios:
- Campo modificado
- Valor anterior y nuevo
- Usuario que realizo el cambio
- Fecha, hora e IP

**Campos rastreados:**
- Estatus del servicio
- Operador asignado
- Vehiculo asignado
- Auxiliares (1, 2, 3)
- Costo del servicio
- Fecha de solicitud
- Duracion
- Comentarios

### Validacion de Disponibilidad
Antes de asignar un operador o vehiculo, el sistema valida:
- Que no esten asignados a otro servicio en el mismo horario
- Disponibilidad de auxiliares
- Sugiere alternativas si hay conflictos

---

## Comandos Utiles

```bash
# Desarrollo
ng serve                          # Servidor de desarrollo
ng serve --host 0.0.0.0          # Accesible desde red local

# Build
ng build                          # Build de desarrollo
ng build --configuration=production  # Build de produccion

# Generar componentes
ng generate component nombre      # Nuevo componente
ng generate service nombre        # Nuevo servicio
ng generate module nombre         # Nuevo modulo

# Tests
ng test                           # Unit tests
ng e2e                            # End-to-end tests

# Linting
ng lint                           # Verificar codigo
```

---

## Troubleshooting

### Error de CORS
- Verificar que el backend tenga configurado CORS correctamente
- Revisar que las URLs en environment apunten al servidor correcto

### Login no funciona
- Verificar URL del API en environment
- Confirmar que el backend este ejecutandose
- Revisar consola del navegador para errores

### Cambios no se reflejan
- Limpiar cache del navegador
- Recompilar la aplicacion: `ng build`
- Verificar que se este sirviendo la version correcta

---

## Tecnologias Utilizadas

- **Angular 8.3.29** - Framework principal
- **Angular Material** - Componentes UI
- **Metronic Template** - Template base
- **RxJS** - Programacion reactiva
- **TypeScript** - Lenguaje de programacion
- **SCSS** - Preprocesador CSS
- **JWT** - Autenticacion

---

## Contacto

| Campo | Valor |
|-------|-------|
| Sistema | SIO (Sistema Integral de Operaciones) |
| Empresa | Drenax |
| Dominio | consultoria-as.com |

---

**Version:** 1.0
**Ultima actualizacion:** 2026-01-17
