Introduccion ============ El sistema posee un componente de scheduling (planificación) de tareas relativas a la importación y exportación de datos de forma regular y automatizada. Las tareas que ejecuta el planificador actualmente son: * Importación de sorteos * Importación de premios * Importación de depósitos * Importación de información de habilitación/deshabilitación de usuarios * Exportación de apuestas * Exportación de usuarios (archivo maestro) * Exportación de usuarios pendientes de habilitación * Exportación de solicitudes de extracción de fondos Los intervalos en los que se ejecutan las tareas están predeterminadas en esta versión. Asimismo es necesario definir en el archivo `.env` los directorios pertinentes: ``` IMPORT_DIR=... EXPORT_DIR=... ``` Cada tarea registra en la tabla `task_exec` la información de ejecución de la misma. ## Ejecución manual de tareas Se puede lanzar por fuera del sistema cualquiera de las tareas, con el detalle de que **este método no registrará la ejecución de la misma**. Esto se recomienda solamente realizarlo en modo de desarrollo. Los scripts disponibles, correspondientes a las tareas del sistema de planificación, se pueden ejecutar con los comandos `foal run` pertinentes: ``` foal run importexport\bets-export.ts foal run importexport\deposit-import.ts foal run importexport\draw-import.ts foal run importexport\prizes-import.ts foal run importexport\user-master-export.ts foal run importexport\users-permissions-export.ts foal run importexport\users-permissions-import.ts foal run importexport\withdraw-export.ts ``` Cada script requiere un argumento mínimo `file=` seguido de la ruta completa al archivo a procesar o exportar. Formatos de Archivo =================== El sistema usa textos delimitados por coma para exportar e importar ciertos datos. ## Importación ### Activación/Desactivación de Usuarios Permite habilitar o deshabilitar los usuarios ya existentes. Debe proveerse un ID de fila único, DNI y un 0 o 1 si se desea deshabilitar o habilitar, respectivamente. El nombre de archivo debe tener como prefijo `permissions`. Ejemplo: ``` id,dni,enabled 1,93092697,0 2,92724396,1 3,76219113,0 4,34821511,1 ``` ### Depósitos Permite hacer efectivos los depósitos de fondos confirmados por un sistema externo. Debe proveerse ID de fila único, DNI del usuario, monto en centavos y un identificador de depósito o transacción del sistema externo. Esto tiene como motivo mejorar la trazabilidad de las operaciones. El nombre de archivo debe tener como prefijo `deposit`. Ejemplo: ``` id,dni,amountInCents,depositId 1,2048100,40020,"e391504b-098f-4628-bf83-4dbc2a7049c2" 2,1884017,10000,"b039f071-9a4f-4c1d-af99-16c5030cf547" ``` ### Sorteos Permite importar los sorteos a efectuar en el futuro. El nombre del archivo debe tener como prefijo `gameday`. Se acepta un archivo JSON con el formato y el contenido de ejemplo que sigue: ``` { "gameDay":[ { "gameDay":{ "gameDayid":51587, "externalGameDayId":43564, "game":{ "gameCode":80, "gameName":"Quiniela Ciudad", "gameShortName":"La Quiniela", "gamePrefix":"QNL" }, "attributes":{ "gameDayDaily":{ "1":"Diario" }, "gameDayType":{ "5":"Primera" }, "betMinPrice":400, "betMaxPrice":500000 }, "schedule":{ "saleOpenDateTime":"2020-APR-27 05:00:00", "saleCloseDateTime":"2020-APR-27 11:20:00", "expirationDateTime":"2020-MAY-07 00:00:00", "drawScheduledDateTime":"2020-APR-27 11:30:00" }, "Instances":[ { "id":1, "name":"CAPITAL FEDERAL" }, { "id":2, "name":"Buenos Aires" }, { "id":4, "name":"Santa Fe" } ] } }, . . . ] } ``` ### Premios Permite efectivizar los premios para un sorteo. El nombre del archivo debe tener como prefijo `prizes`. Se acepta un archivo JSON con el formato y el contenido de ejemplo que sigue: ``` { "prizes": [ { "gameDayId": 51587, "gameCode": 80, "externalGameDayId": 43564, "ticketId": 59830, "prize": 46288 }, . . . ] } ``` ## Exportación ### Apuestas Las apuestas generadas en un período se exportan como una lista de campos empaquetados, cuyo formato es: ``` AABBBBBBBBCDDEEEEEEEEEEFFFF-FF-FF FF:FF:FFGHHHHHHHHHHIIIIIIIIIIJJJJKLLMMNOOPPQQRRRRSSSSSSSSSSSSSSSSSSSSTUUUU-UU-UU UU:UU:UUVWWWWWWWWWW A = gamecode B = external GameId C = web (siempre 6) D = lugar (siempre 51 = CABA) E = Id Apuesta F = Fecha de apuesta en zona horaria local G = Manual (Siempre 1) H = User Id I = Monto en centavos J = Numero de jugada (Quiniela) K = Digitos L = Desde M = Hasta N = Redoblona O = Numero redoblona P = Numero redoblona (desde) Q = Numero redoblona (hasta) R = Letras S = Instancias T = Cancelada? U = Timestamp cancelada (se debe ignorar si campo anterior = 0) V = Cancelacion manual (siempre 1) W = Id de usuario ``` Ejemplo de archivo: ``` 800004367765100000000022020-05-19 20:53:561000000000500000123000003201021450102MVZV0102000000000000000012020-05-19 18:57:5610000000005 800004367765100000000062020-05-19 20:53:561000000000500000123000000101020000000DJNR0200000000000000000002020-05-20 12:48:3400000000000 800004367765100000000032020-05-19 20:53:561000000000500000123000003201021450102IKCF0100000000000000000002020-05-20 12:48:3400000000000 800004367765100000000082020-05-19 20:53:561000000000500000123000203301020000000GWVK0100000000000000000002020-05-20 12:48:3400000000000 800004367765100000000112020-05-20 09:14:191000000001200000025000009201010000000TQSU0402010000000000000002020-05-20 12:48:3400000000000 800004367765100000000232020-05-20 12:02:451000000001200000025000000201010000000DQWT0100000000000000000002020-05-20 12:48:3400000000000 800004367765100000000242020-05-20 12:18:461000000001900000100000023201010000000GHKZ0100000000000000000002020-05-20 12:48:3400000000000 ``` ### Master file de usuarios Lista la información de los usuarios registrados en el sistema. Ejemplo de salida: ``` id, fullname, dni, cuit, cvu, agencia, provincia, mail, phone 2664, "Keaton Stefan Ramirez", 45707485, "20457074851", "62611758548347032011", "null", "null", "keaton.ramirez9520@gmail.com", "837213781" 2663, "Peyton Thomas", 20295333, "20202953335", "67735751365549227713", "null", "null", "peyton.thomas4489@gmail.com", "316537421" 2662, "Kai Diaz", 71712228, "20717122282", "16788799381275847476", "null", "null", "kai.diaz9770@yahoo.com", "695238813" 2661, "Lukas Price", 19131586, "20191315868", "97999858443097877410", "null", "null", "lukas.price3100@yahoo.com", "793209739" 2660, "Nicolas Anderson", 60664984, "20606649849", "62025362489934991852", "null", "null", "nicolas.anderson10@yahoo.com", "760517255" ``` ### Usuarios pendientes de habilitación Similar al archivo maestro de usuarios pero filtrados por los que están pendientes de ser habilitados. Ejemplo de salida: ``` userid, fullname, dni, cuit, email, phone 2601, "Mayson Alexander", 19264447, "20192644472", "mayson.alexander2128@gmail.com", "658338490" 2603, "Fletcher Cooper", 51351121, "20513511211", "fletcher.cooper778@gmail.com", "188060886" ``` ### Solicitudes de extracción de fondos Lista todas las solicitudes de extracción de fondos hacia un CBU destino. ``` EventId, Timestamp, SourceName, SourceCUIT, AmountInCents, TargetName, TargetCUIT, TargetCBU ```