Operational Dashboard - Cambios y Soluciones
Esta página cubre los cambios y correcciones proporcionados a Operational Dashboard para la versión de IPF 2025.3.0
Cambios Importantes
Actualización de Angular 19
A partir de 2025.3 el Operational Dashboard y todos los módulos relacionados han sido actualizados a Angular 19.
Para migrar:
-
Actualice los paquetes npm @iconsolutions/* como se detalla a continuación:
@iconsolutions/audit
-
Aumente el módulo npm a
"@iconsolutions/audit": "^1910.0.2 "en el paquete.json
@iconsolutions/cluster-health
-
Aumente el módulo npm a
"@iconsolutions/cluster-health": "^1910.0.2 "en el paquete.json
@iconsolutions/común
-
Aumente el módulo npm a
"@iconsolutions/common": "^1910.0.2 "en el paquete.json
@iconsolutions/metrics
-
Aumente el módulo npm a
"@iconsolutions/metrics": "^1910.0.2 "en el paquete.json
@iconsolutions/permisos
-
Aumente el módulo npm a
"@iconsolutions/permissions": "^1910.0.2 "en el paquete.json
Migración a PrimeNG para Componentes Comunes
Ciertos componentes comunes ahora utilizan PrimeNG. Para asegurar que todo funcione correctamente, estos paquetes deben ser instalados:
-
"primeng": "^19.1.4" -
"primeicons": "^7.0.0" -
"@primeng/themes": "^19.1.4"
Para instalar, ejecute el siguiente comando:
npm install primeng@^19.1.4 primeicons@^7.0.0 @primeng/themes@^19.1.4
Resumen de búsqueda CSV Exportar
La exportación a CSV para los resultados de búsqueda del resumen se ha modificado para soportar custom campos de resumen. Esto añade campos adicionales a una exportación de resumen, y esos campos pueden cambiar dependiendo de los resúmenes que se incluyan en la exportación.
Mientras implementaba esto, notamos un posible error que es más probable con custom campos de resumen. Arreglar ese error, desafortunadamente, resulta en cambios en el comportamiento del CSV exportar.
Todos los cambios se enumeran a continuación con ejemplos de antes/después.
Valores Nulos
Los valores nulos se exportan como null, no como un espacio en blanco entre comillas.
Ejemplo:
header1, header2, header3, header4
" ","value"," ","another value"
se convierte
header1, header2, header3, header4
,"value",,"another value"
Valores Cotizados
No todos los encabezados y valores están entre comillas. Solo aquellos con espacios, comas o aquellos que son particularmente largos.
"header1","header 2","returnedInterbankSettlementAmountCurrency"
"nospaces","value with spaces","value,with,commas"
se convierte
header1,"header 2","returnedInterbankSettlementAmountCurrency"
nospaces,"value with spaces","value,with,commas"
CSV Soporte de Separadores y Espacios en Blanco
Los valores de resumen pueden contener comas y espacios en blanco, como saltos de línea. Hasta este cambio, estos valores habrían resultado en un inválido CSV.
header1, header2
"a","b","c","d","e"
se convierte
header1, header2
"a,b,c","d,e"
Orden de Columnas
Las columnas en el CSV La exportación está ordenada lexicográficamente. El comportamiento anterior dependía del orden de los campos en algún código generado, el cual podría cambiar. El nuevo orden debería ser más estable.
header1, header2, header10, headerZ, headerA
1, 2, 3, 4, 5
se convierte
header1, header10, header2, headerA, headerZ
1, 3, 2, 5, 4
Custom Campos de Resumen
Custom los campos de resumen están incluidos en el CSV exportar. Los campos siempre se encuentran al final de la salida, después de todas las columnas predeterminadas, y también están ordenados lexicográficamente.
Un efecto secundario de incluir estos campos es que el CSV La exportación puede ser diferente dependiendo de los resúmenes incluidos en ella. No todos los resúmenes contendrán lo mismo.custom campos.
unitOfWorkId,createdAt
uow1,"17/03/2022 08:53:16Z"
uow2,"18/03/2022 08:53:16Z"
se convierte
unitOfWorkId,createdAt,customBoolean,customNumber,customString,customZ
uow1,"17/03/2022 08:53:16Z", true,42,"some value",
uow2,"18/03/2022 08:53:16Z", false,,,"value for custom field z"
Se eliminó datetimeInput de la Configuración de Formatos de Fecha
El datetimeInput La propiedad ha sido eliminada de la configuración de formatos de fecha, ya que ya no se utiliza en la interfaz de usuario. Con el cambio al selector de fecha de PrimeNG, el formato de entrada de fecha y hora ya no es necesario, ya que los selectores de fecha solo admiten horas, minutos y segundos. La hora se ha configurado por defecto en un reloj de 24 horas.
Actualización de la lista de códigos de razón
La lista de Códigos de Razón en la configuración de ops-gui-service-ng ha sido actualizada para incluir nuevos reason codes así como eliminar los obsoletos.
La estructura del objeto de código de razón se actualizó para incluir una nueva propiedad llamada definitionKey, que le permite definir una clave de traducción para la definición del código de razón.
Si no se proporciona un valor de definitionKey, entonces se utiliza el valor de definición como respaldo. Sin embargo, la propiedad definitionKey debe ser añadida a la configuración, incluso si se deja vacía. La cadena definitionKey debe ser "definition.<reason-code>", donde <reason-code> es el código de razón en sí. Puede ver un ejemplo a continuación.
Ejemplo de configuración de nuevo código de razón:
reason-codes = [
{
reasonCode = "AB06",
definition = "Transaction stopped due to timeout at the Instructed Agent.",
definitionKey = "definition. AB06",
source = "ISO"
},
{
reasonCode = "AB07",
definition = "Agent of message is not online. Generic usage if it cannot be determined who exactly is not online.",
definitionKey = "definition. AB07",
source = "ISO"
},
{
reasonCode = "AB08",
definition = "Creditor Agent is not online.",
definitionKey = "definition. AB08",
source = "ISO"
}
]
Nuevo
Visualización de Flujo en ODS
Hemos introducido una nueva pestaña "Ciclo de Vida" en la pantalla de visualización para pagos, retiradas,bulks, y lotes. Esta pestaña proporciona una alternativa a la pestaña "Detalles" existente, centrándose en una representación visual de cómo un pago específico, un recordatorio,bulk, o lote trasladado a través del sistema. Incluye un cuadro de búsqueda de filtro rápido para permitir a los usuarios encontrar rápidamente pasos específicos en el flujo.
Cambiado
-
supportingDataahora mostrado en HTM Vista de tareas (PAY-14654)
`taskDetails.supportingData`puede ahora ser mostrado en HTM Vista de tareas añadiendo los valores relevantes a la HTM custom configuración de página.
-
Los campos de resumen personalizados están incluidos en el CSV exportar. El soporte de esta funcionalidad introduce algunos cambios potencialmente disruptivos, consulte la sección de cambios disruptivos para más información.
Este es un cambio importante ya que el tipo de taskDetails en el HTM State ha cambiado de TaskDetails to ParsedTaskDetails.
El único cambio entre estos modelos es que anteriormente,taskDetails.supportingData.value era una cadena. Ahora es un objeto.
ParsedTaskDetails {
// all other fields are unchanged
supportingData?: {
type?: string;
value?: object;
}
}
-
Agregar
executionResultDatato HTM Tarea (PAY-13686)
El formulario de ejecución ahora está predefinido y puede ser incluido añadiendo una tarjeta que contenga únicamente predefined = "EXECUTION_FORM" a cualquier panel:
panels = [
{
cards = [
{
predefined = "EXECUTION_FORM"
}
]
}
]
La entrada de todos los demás grupos de formularios se añade a executionResultData en la solicitud de ejecución.
Por favor, consulte la Documentación de Configuración de Página HTM para más detalles.
Actualización de la lista de códigos de razón
La lista de Códigos de Razón en la configuración de ops-gui-service-ng ha sido actualizada para incluir nuevos reason codes así como eliminar los obsoletos.
La estructura del objeto de código de razón se actualizó para incluir una nueva propiedad llamada definitionKey, que le permite definir una clave de traducción para la definición del código de razón.
Si no se proporciona un definitionKey, entonces se utiliza el valor de definición como respaldo. La cadena definitionKey debe ser "definition.<reason-code>", donde <reason-code> es el código de razón en sí. Puede ver un ejemplo a continuación.
Ejemplo de configuración de nuevo código de razón:
reason-codes = [
{
reasonCode = "AB06",
definition = "Transaction stopped due to timeout at the Instructed Agent.",
definitionKey = "definition. AB06",
source = "ISO"
},
{
reasonCode = "AB07",
definition = "Agent of message is not online. Generic usage if it cannot be determined who exactly is not online.",
definitionKey = "definition. AB07",
source = "ISO"
},
{
reasonCode = "AB08",
definition = "Creditor Agent is not online.",
definitionKey = "definition. AB08",
source = "ISO"
}
]
Movido ODS Formularios de búsqueda para configurar el soporte Custom Campos
Los formularios de búsqueda para ODS páginas de búsqueda (pago, recuperación,bulk, y el lote) se han trasladado a la configuración para permitir custom campos que se deben agregar.
Cualquier custom los campos que añada a los formularios de búsqueda deben estar precedidos por 'custom_' por ejemplo custom_customSearchableStringField.
Todos los formularios de búsqueda deben ser añadidos a una propiedad de configuración llamada search-forms, que es un arreglo de objetos de formulario de búsqueda. En el ejemplo a continuación, mostramos la configuración para el formulario de búsqueda de pagos.
Si desea añadir la recuperación,bulk o formularios de búsqueda por lotes, puede seguir la misma estructura que el formulario de búsqueda de pagos y cambiar el searchType a cualquiera de recall,bulk or batch.
Si no se proporciona ninguna configuración, se utilizarán los formularios de búsqueda predeterminados.
Ejemplo de configuración para el formulario de búsqueda de pagos:
search-forms = [
{
searchType: "payment",
formSections: [
{
id: "ids",
name: "heading.ids",
size: "DOUBLE",
fields: [
{
id: "uowId",
name: "formField.unitOfWorkId",
type: "STRING"
},
{
id: "clientRequestId",
name: "formField.clientRequestId",
type: "STRING"
},
{
id: "instructionId",
name: "formField.instructionId",
type: "STRING"
},
{
id: "transactionId",
name: "formField.transactionId",
type: "STRING"
},
{
id: "uetr",
name: "formField.uetr",
type: "STRING"
},
{
name: "formField.alternativeIdentifierName",
type: "ALTERNATIVE_IDENTIFIER"
},
{
id: "alternativeIdentifierValue",
name: "formField.alternativeIdentifierValue",
type: "STRING"
},
{
id: "relatedUnitOfWorkId",
name: "formField.relatedUnitOfWorkId",
type: "STRING"
}
]
},
{
id: "summary",
name: "heading.summaryInfo",
size: "SINGLE",
fields: [
{
name: "formField.reasonCode",
type: "REASON_CODE"
},
{
name: "formField.globalStatus",
type: "GLOBAL_STATUS"
},
{
name: "formField.transactionType",
type: "TRANSACTION_TYPE"
},
{
id: "csm",
name: "formField.csm",
type: "STRING"
}
]
},
{
id: "dates",
name: "heading.dates",
fields: [
{
id: "date",
name: "formField.date",
type: "PAYMENT_DATES"
}
]
},
{
id: "amounts",
name: "heading.amounts",
fields: [
{
id: "amount",
name: "formField.amount",
type: "PAYMENT_AMOUNTS"
}
]
},
{
id: "debtor",
name: "heading.debtorDetails",
size: "SINGLE",
fields: [
{
id: "debtorName",
name: "formField.debtorName",
type: "STRING"
},
{
id: "debtorAccount",
name: "formField.debtorAccount",
type: "STRING"
},
{
id: "debtorAgentBIC",
name: "formField.debtorAgentBIC",
type: "STRING"
},
{
id: "debtorBIC",
name: "formField.debtorBIC",
type: "STRING"
}
]
},
{
id: "creditor",
name: "heading.creditorDetails",
size: "SINGLE",
fields: [
{
id: "creditorName",
name: "formField.creditorName",
type: "STRING"
},
{
id: "creditorAccount",
name: "formField.creditorAccount",
type: "STRING"
},
{
id: "creditorAgentBIC",
name: "formField.creditorAgentBIC",
type: "STRING"
},
{
id: "creditorBIC",
name: "formField.creditorBIC",
type: "STRING"
}
]
},
{
id: "accounts",
name: "heading.accountDetails",
size: "SINGLE",
fields: [
{
id: "creditAccount",
name: "formField.creditAccount",
type: "STRING"
},
{
id: "debitAccount",
name: "formField.debitAccount",
type: "STRING"
},
{
id: "customSearchableStringField",
name: "formField.customField1",
type: "STRING"
},
{
id: "customSearchableStringField2",
name: "formField.customField2",
type: "STRING"
},
{
id: "customSearchableStringField3",
name: "formField.customField3",
type: "STRING"
}
]
}
]
}
]
Explicación de los campos:
Nombre |
Descripción |
searchType: Cadena |
El tipo de formulario de búsqueda que desea configurar. Esto puede ser pago, recuperación,bulk, o lote. |
formSections: FormSection[] |
La sección del formulario que se mostrará. Una FormSection es un grupo de campos de formulario que aparecen en el formulario de búsqueda. |
id: Cadena |
El identificador único para la sección del formulario. |
nombre: Cadena |
El nombre de la sección del formulario. Este es el título que se mostrará en la interfaz de usuario y debe ser una clave de traducción. |
tamaño: Tamaño |
Este es el tamaño de la sección del formulario. Es un enumerado de Tamaño que puede ser SIMPLE o DOBLE. SIMPLE ocupará una columna y DOBLE ocupará más de una columna. |
campos: FormField[] |
Los campos del formulario que se mostrarán en la sección del formulario. Un FormField es un único campo que aparece en el formulario de búsqueda. |
id: Cadena |
El identificador único para el campo del formulario. Esto debe ser el mismo que el nombre del campo en el PDS or MDS que se devuelve del backend. |
nombre: Cadena |
El nombre del campo del formulario. Esta es la etiqueta que se mostrará en la interfaz de usuario y debe ser una clave de traducción. |
tipo: FormFieldType |
El tipo del campo del formulario. Es un enumerado FieldType que puede ser uno de los siguientes: CADENA, IDENTIFICADOR_ALTERNATIVO, CÓDIGO_DE_RAZÓN, ESTADO_GLOBAL, TIPO_DE_TRANSACCIÓN, FECHAS_DE_PAGO, MONTOS_DE_PAGO, FECHAS_DE_RECALL, CANTIDADES_DE_RECALL, BULK_DATES, BULK_AMOUNTS, FECHAS_DE_LOTE, CANTIDADES_DE_LOTE, CASILLA_DE_VERIFICACIÓN, NÚMERO, FECHA, FECHA_HORA |
Existen diferentes tipos de fecha y cantidad para el pago, el recordatorio,bulk, y lote, por lo que existen diferentes tipos de campo para cada uno de estos, por ejemplo, PAYMENT_DATES, RECALL_DATES, BULK_DATES, FECHAS_DE_LOTE, MONTOS_DE_PAGO, MONTOS_DE_RECALL, BULK_AMOUNTS, CANTIDADES_DE_LOTE. Las fechas y los montos deben estar en su propia sección, ya que, según el tipo de fecha o monto seleccionado, se mostrarán diferentes campos en la interfaz de usuario.
Los tipos de campo ALTERNATIVE_IDENTIFIER, REASON_CODE, TRANSACTION_TYPE y GLOBAL_STATUS mostrarán un campo de autocompletar o un menú desplegable en la interfaz de usuario con los valores definidos en la configuración para alternative identifiers,reason codes, tipos de transacción y estados globales respectivamente.
Traducciones
Las siguientes claves de traducción han sido añadidas o actualizadas en esta versión:
odsSearch
Añadir:
{
"text": {
"ariaQuickFilter": "Text input to filter flow events"
},
"formField": {
"quickFilter": "Quick Filter"
},
"tab": {
"lifecycle": "Lifecycle"
}
}
común
Cambiar:
{
"formField": {
"dateFrom": "Date From",
"dateTo": "Date To"
}
}
A:
{
"formField": {
"dateRange": "Date Range",
}
}
Añadir:
{
"button": {
"goBack": "Go Back"
},
"error": {
"error": "Error",
},
"heading": {
"unsavedChanges": "Unsaved Changes"
},
"text": {
"ariaFilterLabel": "Filter items",
"rowIsClickableMessage": "This row is clickable and navigates to {{item}}",
"unsavedChangesMessage": "Your changes have not been saved. Are you sure you want to leave?"
}
}
métricas
Cambiar:
{
"formField": {
"timestampFrom": "Timestamp From",
"timestampTo": "Timestamp To",
}
}
A:
{
"formField": {
"timestampFrom": "Timestamp From:",
"timestampTo": "Timestamp To:",
}
}
htm Cambiar:
{
"columnHeader": {
"fromDueDate": "From Due Date",
"toDueDate": "To Due Date",
}
}
A:
{
"columnHeader": {
"fromDueDateTime": "From Due Date",
"toDueDateTime": "To Due Date",
}
}
mdsSearch
Añadir:
{
"columnHeader": {
"unitOfWorkId": "Unit of Work ID",
"clientRequestId": "Client Request ID",
"actions": "Actions"
},
"tooltip": {
"linkToUnitOfWork": "Link to Unit of Work",
"viewChildren": "View Children",
"exploreChildren": "Explore Children"
}
}
permisos
Cambiar:
{
"roleDescriptions": {
"ROLE_DPS_PE_C": "View Processing Entity within Processing Settings module.",
"ROLE_DPS_PE_R": "Create Processing Entity within Processing Settings module.",
}
}
A:
{
"roleDescriptions": {
"ROLE_DPS_PE_C": "Create Processing Entity within Processing Settings module.",
"ROLE_DPS_PE_R": "View Processing Entity within Processing Settings module.",
}
}