Skip to content

Diagnóstico y Normalización de Servicio de Internet - soporte1n-v3-normalizeinternet

Información del Servicio

Endpoint: /api/soporte1n/v3/normalizeinternet Método: POST Versión: v3 Categoría: Soporte Técnico

Documentación del Servicio

Descripción general

El servicio soporte1n-v3-normalizeinternet es un endpoint para diagnosticar y normalizar el servicio de internet de un cliente hogar con tecnología FTTH o FTTC. Este servicio permite realizar un diagnóstico completo del estado de la conexión, incluyendo la validación del estado de la ONT (modem), la detección de fallas masivas, y la normalización de velocidades cuando sea necesario.

Categoría de negocio: Soporte Técnico y Mantenimiento de Servicios.

Casos de uso principales:

  • Diagnóstico automático de problemas de internet en servicios hogar
  • Detección de fallas masivas que afectan múltiples servicios
  • Validación del estado de la ONT (modem) del cliente
  • Normalización automática de velocidades de internet
  • Consulta de parámetros de conexión (potencia, ruido, atenuación)

Especificación técnica

  • Endpoint completo: /api/soporte1n/v3/normalizeinternet
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: Soporte1NController.NormalizeInternet_v3
    • Lógica de negocio: Soporte1NBusiness.NormalizeInternet_v3
    • Acceso a datos: Servicios CRM y plataformas de inventario

Flujo de procesamiento:

  1. Validación del servicio activo y tecnología FTTH/FTTC
  2. Consulta de fallas masivas en la zona de instalación
  3. Verificación del estado de la ONT (encendida/apagada)
  4. Validación de parámetros de conexión (potencia, ruido, señal, atenuación)
  5. Consulta y normalización de velocidades aprovisionadas
  6. Generación de diagnóstico completo con semáforos

Dependencias principales:

  • Soporte1NBusiness - Lógica de negocio principal
  • AuditUtil - Utilidad de auditoría
  • Soporte1nUtil - Utilidades específicas de soporte
  • Servicios CRM para consulta de información del cliente

Consideraciones de seguridad:

  • Autenticación requerida para acceso al servicio
  • Auditoría completa de todas las transacciones
  • Validación de permisos por canal de acceso
  • Encriptación de datos sensibles en tránsito

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
AuthorizationstringToken de autenticación Bearer
Content-Typestringapplication/json
Correlation-IDstringIdentificador único de la petición

Body

CampoTipoObligatorioDescripción
WSRequestHeaderobjectCabecera de la petición con información del sistema
WSRequestBodyobjectCuerpo de la petición con datos específicos

Estructura de objetos anidados:

WSRequestHeader:

CampoTipoObligatorioDescripción
SystemobjectInformación del sistema solicitante

System:

CampoTipoObligatorioDescripción
namestringNombre del sistema solicitante (ej: "MIETB")
correlationIDstringIdentificador único de correlación

WSRequestBody:

CampoTipoObligatorioDescripción
AuditobjectInformación de auditoría del canal
PhonestringNúmero de conexión del servicio

Audit:

CampoTipoObligatorioDescripción
CanalstringCanal desde donde se origina la petición

Respuesta esperada (Response)

Headers

CampoTipoObligatorioDescripción
Content-Typestringapplication/json
Correlation-IDstringIdentificador único de la petición

Body

CampoTipoObligatorioDescripción
WSResponseHeaderobjectCabecera de la respuesta con estado del servicio
WSResponseBodyobjectCuerpo de la respuesta con resultados del diagnóstico

Estructura de objetos anidados:

WSResponseHeader:

CampoTipoObligatorioDescripción
ServiceobjectInformación del estado del servicio

Service:

CampoTipoObligatorioDescripción
StatusstringEstado del servicio (OK/FAIL)
StatusDetailarrayDetalles de estado y errores

WSResponseBody:

CampoTipoObligatorioDescripción
DiagnosticobjectResultado del diagnóstico de internet
Massive_FailureobjectNoInformación de falla masiva si existe
SemaphoreobjectSemáforos de estado de la conexión

Diagnostic:

CampoTipoObligatorioDescripción
ONT_OnbooleanTrue si la ONT está encendida
Poor_ConnectionbooleanTrue si la conexión es deficiente
Speed_FaultbooleanTrue si hay fallos en las velocidades

Massive_Failure:

CampoTipoObligatorioDescripción
End_DateobjectNoFecha fin de la falla (dd/MM)
Expected_Solution_TimeintegerNoTiempo estimado de solución en minutos
PriorityintegerNoPrioridad de respuesta a la falla
ProductstringNoProducto asociado a la falla masiva
Num_PQRstringNoNúmero de PQR asociado a la falla masiva
Start_DateobjectNoFecha inicio de la falla (dd/MM)

Semaphore:

CampoTipoObligatorioDescripción
AttenuationstringEstado de la atenuación (Verde/Amarillo/Rojo)
ModemstringEstado del modem (Verde/Amarillo/Rojo)
NoisestringEstado del ruido (Verde/Amarillo/Rojo)
PotencystringEstado de la potencia (Verde/Amarillo/Rojo)

Manejo de errores

CódigoDescripciónEjemplo
OK_01El diagnóstico fue exitoso"La solicitud {0} fue exitosa"
ERROR_00Excepción técnica general"La solicitud {0} no fue exitosa. Se ha generado una excepción técnica"
ERROR_04Request inválido o campos faltantes"La solicitud {0} no fue exitosa. Fueron enviados objetos no acordes a la petición"
ERROR_03Error de validación de petición"La solicitud {0} no fue exitosa. No fue posible validar la petición"

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestNormalizeInternet_v3 (request completo)
  • NormalizeInternetRequest_v3 (body de la petición)
  • BaseResponseNormalizeInternet_v3 (response completo)
  • NormalizeInternetResponse_v3 (body de la respuesta)

Utilidades y servicios comunes:

  • AuditUtil - Gestión de auditoría y logs
  • Soporte1nUtil - Utilidades específicas de soporte técnico
  • SecurityUtil - Validación de autenticación y autorización

Patrones de diseño implementados:

  • Patrón Factory para creación de respuestas
  • Patrón Strategy para diferentes tipos de diagnóstico
  • Patrón Observer para auditoría de transacciones

Componentes reutilizados:

  • BaseRequest y BaseResponse - Estructuras base
  • BotBaseResponseHeader - Cabecera estándar de respuesta
  • Audit - Modelo de auditoría

Referencias cruzadas:

  • /api/soporte1n/v2/normalizeinternet - Versión anterior del servicio
  • /api/soporte1n/v1/normalizeinternet - Versión obsoleta
  • /soap/soporte1n/v3/normalizeinternet - Versión SOAP del servicio

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.30637205904628273",
      "processingServer": null
    },
    "Property": []
  },
  "WSRequestBody": {
    "Phone": "6016407584",
    "Audit": {
      "Canal": null,
      "Date": "2025-07-25",
      "Hour": "01:16:35"
    }
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.5717113363663459",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-07-25T00:28:05.0647178Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "La solicitud fue exitosa",
          "errorMessage": "La solicitud LUZ-0.5717113363663459 fue exitosa",
          "errorMessageUser": null
        }
      ]
    },
    "Property": []
  },
  "WSResponseBody": {
    "Diagnostic": {
      "ONT_On": true,
      "Poor_Connection": false,
      "Speed_Fault": false
    },
    "Massive_Failure": null,
    "Semaphore": {
      "Attenuation": "",
      "Modem": "Verde",
      "Noise": "",
      "Potency": "Verde"
    }
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "Service": {
      "Status": "FAIL",
      "StatusDetail": [
        {
          "errorCode": "ERROR_04",
          "errorMessage": "La solicitud req-12345-67890 no fue exitosa. Fueron enviados objetos no acordes a la petición"
        }
      ]
    }
  },
  "WSResponseBody": null
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[Soporte1NController]
  B --> C[Validación de autenticación]
  C --> D[Soporte1NBusiness]
  D --> E[Validación de servicio activo]
  E --> F[Consulta de falla masiva]
  F --> G[Verificación ONT]
  G --> H[Validación parámetros conexión]
  H --> I[Consulta velocidades]
  I --> J[Normalización si es necesario]
  J --> K[Generación respuesta]
  K --> L[Auditoría de salida]

3.2 Arquitectura de clases

mermaid
classDiagram
  class Soporte1NController {
    +NormalizeInternet_v3()
  }
  class Soporte1NBusiness {
    +NormalizeInternet_v3()
  }
  class NormalizeInternetRequest_v3 {
    +Audit
    +Phone
  }
  class NormalizeInternetResponse_v3 {
    +Diagnostic
    +Massive_Failure
    +Semaphore
  }
  class AuditUtil {
    +Save_Request_Async()
  }
  Soporte1NController --> Soporte1NBusiness
  Soporte1NBusiness --> NormalizeInternetRequest_v3
  Soporte1NBusiness --> NormalizeInternetResponse_v3
  Soporte1NBusiness --> AuditUtil

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant Controller
  participant Business
  participant AuditUtil
  participant CRM
  participant Inventario
  Cliente->>Controller: POST /v3/normalizeinternet
  Controller->>Business: NormalizeInternet_v3()
  Business->>AuditUtil: Save_Request_Async()
  Business->>CRM: Consultar servicio
  Business->>Inventario: Verificar falla masiva
  Business->>Inventario: Consultar estado ONT
  Business->>Inventario: Validar parámetros
  Business->>Inventario: Consultar velocidades
  Business->>Inventario: Normalizar si es necesario
  Business->>AuditUtil: Save_Request_Async()
  Business-->>Controller: Respuesta
  Controller-->>Cliente: JSON Response

Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Autenticación mediante token Bearer
  • Validación de permisos por canal de acceso
  • Verificación de usuario asociado al número de teléfono

Validaciones de seguridad implementadas:

  • Validación de formato de número de teléfono
  • Verificación de servicio activo y tecnología compatible
  • Control de acceso por canal y sistema solicitante

Límites de tasa (rate limits):

  • Límite por usuario: 10 solicitudes por minuto
  • Límite por IP: 100 solicitudes por hora
  • Límite global: 1000 solicitudes por minuto

SLAs aplicables:

  • Tiempo de respuesta: < 30 segundos
  • Disponibilidad: 99.9%
  • Tiempo de procesamiento: < 15 segundos

Recomendaciones y mejores prácticas

Puntos de mejora específicos en el código:

  1. Implementar cache para consultas de fallas masivas
  2. Optimizar consultas a plataformas de inventario
  3. Agregar métricas de performance más detalladas

Optimizaciones posibles:

  1. Paralelizar consultas a diferentes plataformas
  2. Implementar circuit breaker para servicios externos
  3. Agregar retry automático para fallos transitorios

Consideraciones de mantenimiento importantes:

  1. Monitorear tiempos de respuesta de plataformas externas
  2. Revisar logs de auditoría para detectar patrones de error
  3. Mantener actualizada la parametrización de tipologías

Sugerencias de seguridad aplicables:

  1. Implementar rate limiting más granular
  2. Agregar validación de IP de origen
  3. Implementar logging de seguridad para accesos sospechosos
  4. Revisar periódicamente los permisos de acceso por canal