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
- Controlador:
Flujo de procesamiento:
- Validación del servicio activo y tecnología FTTH/FTTC
- Consulta de fallas masivas en la zona de instalación
- Verificación del estado de la ONT (encendida/apagada)
- Validación de parámetros de conexión (potencia, ruido, señal, atenuación)
- Consulta y normalización de velocidades aprovisionadas
- Generación de diagnóstico completo con semáforos
Dependencias principales:
Soporte1NBusiness- Lógica de negocio principalAuditUtil- Utilidad de auditoríaSoporte1nUtil- 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
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Authorization | string | Sí | Token de autenticación Bearer |
| Content-Type | string | Sí | application/json |
| Correlation-ID | string | Sí | Identificador único de la petición |
Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| WSRequestHeader | object | Sí | Cabecera de la petición con información del sistema |
| WSRequestBody | object | Sí | Cuerpo de la petición con datos específicos |
Estructura de objetos anidados:
WSRequestHeader:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| System | object | Sí | Información del sistema solicitante |
System:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| name | string | Sí | Nombre del sistema solicitante (ej: "MIETB") |
| correlationID | string | Sí | Identificador único de correlación |
WSRequestBody:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Audit | object | Sí | Información de auditoría del canal |
| Phone | string | Sí | Número de conexión del servicio |
Audit:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Canal | string | Sí | Canal desde donde se origina la petición |
Respuesta esperada (Response)
Headers
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Content-Type | string | Sí | application/json |
| Correlation-ID | string | Sí | Identificador único de la petición |
Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| WSResponseHeader | object | Sí | Cabecera de la respuesta con estado del servicio |
| WSResponseBody | object | Sí | Cuerpo de la respuesta con resultados del diagnóstico |
Estructura de objetos anidados:
WSResponseHeader:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Service | object | Sí | Información del estado del servicio |
Service:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Status | string | Sí | Estado del servicio (OK/FAIL) |
| StatusDetail | array | Sí | Detalles de estado y errores |
WSResponseBody:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Diagnostic | object | Sí | Resultado del diagnóstico de internet |
| Massive_Failure | object | No | Información de falla masiva si existe |
| Semaphore | object | Sí | Semáforos de estado de la conexión |
Diagnostic:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| ONT_On | boolean | Sí | True si la ONT está encendida |
| Poor_Connection | boolean | Sí | True si la conexión es deficiente |
| Speed_Fault | boolean | Sí | True si hay fallos en las velocidades |
Massive_Failure:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| End_Date | object | No | Fecha fin de la falla (dd/MM) |
| Expected_Solution_Time | integer | No | Tiempo estimado de solución en minutos |
| Priority | integer | No | Prioridad de respuesta a la falla |
| Product | string | No | Producto asociado a la falla masiva |
| Num_PQR | string | No | Número de PQR asociado a la falla masiva |
| Start_Date | object | No | Fecha inicio de la falla (dd/MM) |
Semaphore:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Attenuation | string | Sí | Estado de la atenuación (Verde/Amarillo/Rojo) |
| Modem | string | Sí | Estado del modem (Verde/Amarillo/Rojo) |
| Noise | string | Sí | Estado del ruido (Verde/Amarillo/Rojo) |
| Potency | string | Sí | Estado de la potencia (Verde/Amarillo/Rojo) |
Manejo de errores
| Código | Descripción | Ejemplo |
|---|---|---|
| OK_01 | El diagnóstico fue exitoso | "La solicitud {0} fue exitosa" |
| ERROR_00 | Excepción técnica general | "La solicitud {0} no fue exitosa. Se ha generado una excepción técnica" |
| ERROR_04 | Request inválido o campos faltantes | "La solicitud {0} no fue exitosa. Fueron enviados objetos no acordes a la petición" |
| ERROR_03 | Error 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 logsSoporte1nUtil- Utilidades específicas de soporte técnicoSecurityUtil- 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:
BaseRequestyBaseResponse- Estructuras baseBotBaseResponseHeader- Cabecera estándar de respuestaAudit- 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)
{
"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
{
"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
{
"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
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
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 --> AuditUtil3.3 Secuencia de ejecución
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 ResponsePolí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:
- Implementar cache para consultas de fallas masivas
- Optimizar consultas a plataformas de inventario
- Agregar métricas de performance más detalladas
Optimizaciones posibles:
- Paralelizar consultas a diferentes plataformas
- Implementar circuit breaker para servicios externos
- Agregar retry automático para fallos transitorios
Consideraciones de mantenimiento importantes:
- Monitorear tiempos de respuesta de plataformas externas
- Revisar logs de auditoría para detectar patrones de error
- Mantener actualizada la parametrización de tipologías
Sugerencias de seguridad aplicables:
- Implementar rate limiting más granular
- Agregar validación de IP de origen
- Implementar logging de seguridad para accesos sospechosos
- Revisar periódicamente los permisos de acceso por canal