Skip to content

Actualización de PQR - pqr-v1-update

Información del Servicio

Endpoint: /api/pqr/v1/update
Método: POST
Versión: 1.0.0
Categoría: Gestión de PQRs

Documentación del Servicio

Descripción general

El servicio pqr-v1-update es un endpoint para actualizar PQRs según su estado y condiciones específicas. Este servicio permite actualizar información de PQRs existentes con diferentes comportamientos según el estado actual de la PQR.

Categoría de negocio: Gestión de PQRs y atención al cliente.

Casos de uso principales:

  • Actualización de PQRs cerradas (solo solución y fecha de solución)
  • Cierre de PQRs en estado "Enviado a Segundo Nivel" con agenda activa
  • Actualización de datos de contacto para PQRs de falla técnica
  • Modificación de estados y descripciones de PQRs

Especificación técnica

  • Endpoint completo: /api/pqr/v1/update
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: PQRController
    • Lógica de negocio: PQRBusiness
    • Acceso a datos: PQRUtil, ConfigurationUtil

Flujo de procesamiento:

  1. Validación de autenticación y autorización
  2. Conversión y validación de datos de entrada
  3. Obtención del origen de la petición
  4. Verificación del estado de la API
  5. Consulta y validación de la PQR
  6. Procesamiento según el estado de la PQR
  7. Actualización de datos según las reglas de negocio
  8. Generación de respuesta con estado de ejecución

Dependencias principales:

  • PQRUtil para consultas de PQRs
  • ConfigurationUtil para configuraciones del sistema
  • AuditUtil para auditoría de transacciones
  • Utilidades de validación y conversión de datos

Consideraciones de seguridad:

  • Autenticación requerida mediante [Authorize]
  • Validación de origen de la petición
  • Auditoría completa de transacciones
  • Validación de permisos y estados

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
WSRequestHeaderobjectCabecera de la petición con información del sistema

Body

CampoTipoObligatorioDescripción
Agenda_DecisionstringNoDecisión de Agendamiento
AuditobjectNoAuditoria de la aplicación
ContactobjectNoContacto de la PQR
PQR_NumberstringNumero de Identificación de la PQR
ResultstringNoDescripcion de La PQR a modificar
StatestringNoEstado de la PQR

Estructura de objetos anidados:

Estructura de WSRequestHeader

CampoTipoObligatorioDescripción
SystemobjectNoInformación asociada al sistema
PropertyarrayNoPropiedades asociadas al consumo del servicio web

Estructura de WSRequestHeader.System

CampoTipoObligatorioDescripción
NamestringNombre del sistema
CorrelationIDstringIdentificador de la petición
ProcessingServerstringServidor de procesamiento del sistema

Estructura de WSRequestHeader.Property

CampoTipoObligatorioDescripción
NamestringNombre de la propiedad
ValuestringValor de la propiedad

Estructura de Audit

CampoTipoObligatorioDescripción
CanalstringNoCanal sobre el cual se hizo la petición
Id_DevicestringNoIdentificador del dispositivo móvil
SOstringNoSistema operativo del dispositivo
IP_AddressstringNoDirección IP desde donde se realiza la petición
WhatsApp_Phone_NumberstringNoNúmero de Whatsapp desde donde se realiza la petición

Estructura de Contact

CampoTipoObligatorioDescripción
Document_NumberstringNoTipo de identificación del contacto existente o del nuevo contacto asociado a la PQR
Document_TypestringNoTipo de identificación del contacto existente o del nuevo contacto asociado a la PQR
EmailstringNoCorreo electrónico de contacto. Este correo electrónico será validado
PhonestringNoNúmero de conexión de contacto. Este número de teléfono debe tener 10 dígitos e iniciar por 3

Respuesta esperada (Response)

Headers

CampoTipoObligatorioDescripción
WSResponseHeaderobjectCabecera de la respuesta con información del sistema y servicio

Body

La respuesta no incluye un body específico, solo la cabecera con el estado de la operación.

Estructura de objetos anidados:

Estructura de WSResponseHeader

CampoTipoObligatorioDescripción
SystemobjectNoInformación asociada al sistema
ServiceobjectNoInformación asociada a la ejecución del servicio
PropertyarrayNoArreglo de propiedades asociado al servicio

Estructura de WSResponseHeader.System

CampoTipoObligatorioDescripción
NamestringNoNombre del sistema
CorrelationIDstringNoIdentificador de la petición
ProcessingServerstringNoServidor de procesamiento del sistema

Estructura de WSResponseHeader.Service

CampoTipoObligatorioDescripción
StatusstringNoEstado de la ejecución del servicio web
ResponseDateDateTimeNoFecha de la respuesta
ProcessingServerstringNoServidor de procesamiento de la solicitud
StatusDetailarrayNoDetalle del procesamiento de la solicitud

Estructura de WSResponseHeader.Property

CampoTipoObligatorioDescripción
NamestringNoNombre de la propiedad
ValuestringNoValor de la propiedad

Manejo de errores

CódigoDescripciónEjemplo
ERROR_04Error en la conversión de datos de entrada"El request es nulo"
ERROR_07PQR inactiva o no válida"La PQR no está activa"
TIPOLOGIA_ENDPOINT_OFFAPI deshabilitada"El servicio no está disponible"

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestUpdatePQR: Modelo de petición principal
  • UpdatePQRRequest: Cuerpo de la petición con campos específicos
  • BaseResponseUpdatePQR: Modelo de respuesta
  • UpdatePQRContactRequest: Modelo para actualización de contactos

Utilidades y servicios comunes:

  • PQRUtil: Utilidades para gestión de PQRs
  • ConfigurationUtil: Utilidades de configuración del sistema
  • AuditUtil: Utilidades de auditoría

Patrones de diseño implementados:

  • Singleton pattern en PQRBusiness
  • Factory pattern para creación de respuestas
  • Strategy pattern para diferentes tipos de actualización

Componentes reutilizados:

  • BotBaseRequestHeader: Cabecera base para peticiones
  • BotBaseResponseHeader: Cabecera base para respuestas
  • Audit: Modelo de auditoría estándar

Referencias cruzadas:

  • PQRController: Controlador principal
  • PQRBusiness: Lógica de negocio
  • PQRUtil: Acceso a datos

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "Name": "SISTEMA_CLIENTE",
      "CorrelationID": "CORR-001-2024",
      "ProcessingServer": "SRV-001"
    },
    "Property": [
      {
        "Name": "NUM_ORDEN",
        "Value": "ORD-123456"
      }
    ]
  },
  "WSRequestBody": {
    "PQR_Number": "PQR-2024-001",
    "State": "CERRADA",
    "Result": "Problema resuelto satisfactoriamente",
    "Audit": {
      "Canal": "WEB",
      "IP_Address": "192.168.1.100",
      "Id_Device": "DEVICE-001"
    },
    "Contact": {
      "Document_Number": "12345678",
      "Document_Type": "CC",
      "Email": "cliente@ejemplo.com",
      "Phone": "3001234567"
    }
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.17537218292273005",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-07-31T02:39:01.3817374Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "La solicitud LUZ-0.5970594921401777 fue exitosa",
          "errorMessage": "La solicitud fue exitosa",
          "errorMessageUser": null
        }
      ]
    },
    "Property": [
      {
        "name": null,
        "value": null
      },
      {
        "name": null,
        "value": null
      }
    ]
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "System": {
      "Name": "SISTEMA_CLIENTE",
      "CorrelationID": "CORR-001-2024",
      "ProcessingServer": "SRV-001"
    },
    "Service": {
      "Status": "FAIL",
      "ResponseDate": "2024-12-19T10:30:00",
      "ProcessingServer": "SRV-001",
      "StatusDetail": [
        {
          "ErrorCode": "ERROR_07",
          "ErrorMessage": "La PQR no está activa",
          "ErrorMessageUser": "La PQR no está activa"
        }
      ]
    },
    "Property": [
      {
        "Name": "NUM_ORDEN",
        "Value": "ORD-123456"
      }
    ]
  }
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[PQRController]
  B --> C[PQRBusiness.Update_v1]
  C --> D[Validación de datos]
  D --> E[Consulta de PQR]
  E --> F[Validación de estado]
  F --> G[Procesamiento según estado]
  G --> H[Actualización de datos]
  H --> I[Generación de respuesta]
  I --> J[Auditoría de salida]

3.2 Arquitectura de clases

mermaid
classDiagram
  class PQRController {
    +Update_v1(BaseRequestUpdatePQR)
  }
  class PQRBusiness {
    +Update_v1(BaseRequest, string)
  }
  class PQRUtil {
    +Get_By_Id(string)
    +Is_Active(PQRModel)
  }
  class ConfigurationUtil {
    +Get_Origin(BaseRequest, Audit, string)
    +Is_Api_Turned_On(RequestModel, string)
  }
  PQRController --> PQRBusiness
  PQRBusiness --> PQRUtil
  PQRBusiness --> ConfigurationUtil

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant PQRController
  participant PQRBusiness
  participant PQRUtil
  participant ConfigurationUtil
  participant AuditUtil
  
  Cliente->>PQRController: POST /api/pqr/v1/update
  PQRController->>PQRBusiness: Update_v1(request)
  PQRBusiness->>AuditUtil: Save_Request()
  PQRBusiness->>ConfigurationUtil: Get_Origin()
  PQRBusiness->>ConfigurationUtil: Is_Api_Turned_On()
  PQRBusiness->>PQRUtil: Get_By_Id()
  PQRBusiness->>PQRUtil: Is_Active()
  PQRBusiness->>AuditUtil: Save_Response()
  PQRBusiness-->>PQRController: BaseResponseUpdatePQR
  PQRController-->>Cliente: Respuesta

Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Autenticación requerida mediante [Authorize]
  • Validación de origen de la petición
  • Auditoría completa de transacciones

Validaciones de seguridad implementadas:

  • Validación de datos de entrada
  • Verificación de estados de PQR
  • Control de acceso por configuración

Límites de tasa (rate limits):

  • Controlado por configuración del sistema
  • Validación de origen de peticiones

SLAs aplicables:

  • Tiempo de respuesta: < 5 segundos
  • Disponibilidad: 99.9%

Recomendaciones y mejores prácticas

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

  1. Implementar validaciones más robustas en el controlador
  2. Agregar logging detallado para debugging
  3. Mejorar el manejo de excepciones específicas

Optimizaciones posibles:

  1. Implementar cache para configuraciones frecuentes
  2. Optimizar consultas a base de datos
  3. Agregar métricas de rendimiento

Consideraciones de mantenimiento importantes:

  1. Mantener actualizadas las configuraciones de tipologías
  2. Revisar regularmente los logs de auditoría
  3. Monitorear el rendimiento del servicio

Sugerencias de seguridad aplicables:

  1. Implementar rate limiting más granular
  2. Agregar validación de tokens JWT
  3. Implementar encriptación de datos sensibles