Layer-api-excel-service
Este servicio es de apoyo para el proceso de ingesta de tareas por archivos excel, por el momento solo se realiza en base a archivos xls y xlsx.
La lectura de archivos funciona solamente en base a extracción de archivos base64 obtenidos de alguna url.
Este servicio hace uso de la librería Apache POI para realizar la lectura, escritura de los archivos xls o xlsx, de igual manera al momento todos los archivos son obtenidos a través del servicio layer-api-multimedia-service esto debido a que algunos de ellos provienen del storage de malla y este servicio cuenta con los accesos necesarios para extracción de archivos de dicho ambiente. Otros archivos son registrados a través del front podlet-web-sheet-uploader el cual los registra dentro de la base de datos del servicio layer-api-multimedia-service.
Dependencias
Base de Datos
Dentro de las funcionalidades de este servicio existe la extracción de datos de archivo a json y su posible almacenamiento en base de datos, esta función de almacenamiento regularmente es utilizada por el proceso de ingesta de tareas en base a archivo excel, el cual es llevado a cabo por el servicio layer-api-sheet -publisher-service.
Schema | Tablas |
serv_layer_api_excel_service |
TABLE public.excelcontent ( updated_cells_json jsonb NULL, |
Secrets
- secret-layer-api-excel-service:
{
"nameSpace": "app-autonomation",
"secretName": "secret-layer-api-excel-service",
"secretParams": [
{
"paramName": "dbname",
"paramValue": "Microservicios"
},
{
"paramName": "defschema",
"paramValue": "serv_layer_api_excel_service"
},
{
"paramName": "instance",
"paramValue": "{instancia_db_depende_ambiente}"
},
{
"paramName": "password",
"paramValue": "{user_db_password}"
},
{
"paramName": "projectid",
"paramValue": "{projectid_depende_ambiente}"
},
{
"paramName": "username",
"paramValue": "{user_db_name}"
}
]
}
- secret-layer-api-excel-service-env:
{
"nameSpace": "app-autonomation",
"secretName": "secret-layer-api-excel-service",
"secretParams": [
{
"paramName": "boveda_application_id",
"paramValue": "{depende_ambiente}"
},
{
"paramName": "boveda_id_service_account",
"paramValue": "{depende_ambiente}"
},
{
"paramName": "boveda_secret",
"paramValue": "{depende_ambiente}"
},
{
"paramName": "layer_api_error_handler",
"paramValue": "{url layer-api-error-handler-service segun ambiente}"
},
{
"paramName": "project_timezone",
"paramValue": "America/Mexico_City"
},
{
"paramName": "url_api_multimedia",
"paramValue": "{url layer-api-multimedia-service segun ambiente}"
}
]
}
Endpoints
POST: ~/api/readsheet : Mediante este endpoint se pueden realizar extracciones de información los cuales deben ser rigurozamente numericos de no ser asi resultados falsos, esto debido a que su desarrollo original se realizo para el proceso FSIM el cual se requiere extraccion de valores numericos y su salida es en formato respuesta de cuestionario.
Request: {
{ "data": [{ "cell_name": " "data_destination" "cell_location_ }, { "cell_name": " "data_destination" "cell_location_ } ], "filepath": "https://storage.googleapis.com/findep-valija-uat/MULTIMEDIA/AEF/11E3C9260A244A043DB11303C98E8B7F.XLSX" }
|
Las respuestas exitosas serán arrojadas similar al siguiente ejemplo:
{ "success": true, "result": { "resumenRespuestas": [ { " " "question": "¿ "description": "answerYesNo": }, { " " "question": "¿ "description": "answerYesNo": } ], "outData": { "leverage": 0. " }, "codeResult": "OK" } }
|
Las respuestas con errores serán arrojadas similares a las siguientes:
Celda No Encontrada: { "success": false, "result": { "resumenRespuestas": [ { " " "question": "¿ "description": "answerYesNo": }, { " "question": "¿ "description": "answerYesNo": "reasonNo": " } ], "outData": { " }, "codeResult": "ERRD", "errors": "Error } } Valor No Numerico: { "success": false, "result": { "resumenRespuestas": [ { " " "question": "¿ "description": "answerYesNo": }, { " " "question": "¿ "description": "answerYesNo": "reasonNo": " } ], "outData": { "revenues": null, " }, "codeResult": "ERRD", "errors": "El valor } } Archivo No Encontrado O No Valido: { "success": false, "result": { "resumenRespuestas": [ { "question": "¿ "description": "answerYesNo": "reasonNo": " } ], "outData": null, "codeResult": "ERRF", "errors": "Error al } } |