@runnerpro/backend 1.21.1 → 1.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/types/workout/estructuraWorkout.d.ts.map +1 -1
- package/lib/cjs/types/workout/saveWorkoutAplication.d.ts.map +1 -1
- package/lib/cjs/types/workout/saveWorkoutLaps.d.ts.map +1 -1
- package/lib/cjs/workout/estructuraWorkout.js +18 -2
- package/lib/cjs/workout/saveWorkoutAplication.js +1 -0
- package/lib/cjs/workout/saveWorkoutLaps.js +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estructuraWorkout.d.ts","sourceRoot":"","sources":["../../../../src/workout/estructuraWorkout.ts"],"names":[],"mappings":"AAuCA,QAAA,MAAM,mBAAmB,YAAa,GAAG,cAAc,GAAG,QAiCzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,wBAAwB,cAAqB,GAAG,kBAkBrD,CAAC;
|
|
1
|
+
{"version":3,"file":"estructuraWorkout.d.ts","sourceRoot":"","sources":["../../../../src/workout/estructuraWorkout.ts"],"names":[],"mappings":"AAuCA,QAAA,MAAM,mBAAmB,YAAa,GAAG,cAAc,GAAG,QAiCzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,wBAAwB,cAAqB,GAAG,kBAkBrD,CAAC;AAuPF,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveWorkoutAplication.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutAplication.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveWorkoutAplication.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutAplication.ts"],"names":[],"mappings":"AAwPA;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB,SACnB,GAAG,UAED,GAAG,KACV,QAAQ,MAAM,GAAG,IAAI,CA0DvB,CAAC;AA+DF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveWorkoutLaps.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutLaps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"saveWorkoutLaps.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutLaps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,QAAA,MAAM,eAAe,cAAqB,GAAG,QAAQ,GAAG,EAAE,mBAAmB,GAAG,KAAG,QAAQ,IAAI,CAuB9F,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -116,7 +116,17 @@ const saveDoneStructuraWorkoutWatch = (idWorkout, streamData, laps, workout, est
|
|
|
116
116
|
});
|
|
117
117
|
const numPasos = estructura.length;
|
|
118
118
|
const numLaps = laps.length;
|
|
119
|
-
|
|
119
|
+
// Casos aceptados:
|
|
120
|
+
// - numLaps === numPasos: cada paso tiene su lap (1:1).
|
|
121
|
+
// - numLaps === numPasos - 1: el cooldown no se marcó como lap aparte
|
|
122
|
+
// (típico cuando el plan acaba en el último intervalo de trabajo y el
|
|
123
|
+
// runner enfría sin pulsar lap).
|
|
124
|
+
// - numLaps === numPasos + 1: el runner siguió moviéndose tras la vuelta
|
|
125
|
+
// a la calma planeada antes de parar el reloj → el lap "extra" final
|
|
126
|
+
// se absorbe en el último paso del plan (ver bucle abajo).
|
|
127
|
+
// Cualquier otra desviación es anómala (faltan laps en medio, doble extra,
|
|
128
|
+
// etc.) y se reporta para auditoría manual.
|
|
129
|
+
if (numPasos !== numLaps && numPasos !== numLaps + 1 && numLaps !== numPasos + 1) {
|
|
120
130
|
return (0, sendMail_1.sendMail)({
|
|
121
131
|
title: 'Estructura workout: laps no coinciden con pasos',
|
|
122
132
|
subject: 'Dedup cross-proveedor - Error saving steps structure workout',
|
|
@@ -155,7 +165,13 @@ const saveDoneStructuraWorkoutWatch = (idWorkout, streamData, laps, workout, est
|
|
|
155
165
|
}
|
|
156
166
|
if (lapIndex !== null && lapIndex >= 0 && lapIndex < laps.length) {
|
|
157
167
|
const currentLap = laps[lapIndex];
|
|
158
|
-
|
|
168
|
+
// Si hay un lap más que pasos y estamos en el último paso (cooldown),
|
|
169
|
+
// absorbemos el lap extra (post-cooldown): ignoramos laps[lapIndex+1]
|
|
170
|
+
// como límite y consideramos toda la actividad hasta workout.duration
|
|
171
|
+
// como parte de este paso. La duración resultante = cooldown planeado
|
|
172
|
+
// + lo que el runner siguió moviéndose después.
|
|
173
|
+
const isLastStepAbsorbingExtraLap = numLaps === numPasos + 1 && i === numPasos - 1;
|
|
174
|
+
const nextLap = isLastStepAbsorbingExtraLap ? null : laps[lapIndex + 1];
|
|
159
175
|
if (nextLap) {
|
|
160
176
|
duration = nextLap.durationStartLap - currentLap.durationStartLap;
|
|
161
177
|
}
|
|
@@ -95,6 +95,7 @@ function camelizeRow(row) {
|
|
|
95
95
|
});
|
|
96
96
|
return aux;
|
|
97
97
|
}
|
|
98
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
98
99
|
const withTx = (fn) => __awaiter(void 0, void 0, void 0, function* () {
|
|
99
100
|
const client = yield db_1.pool.connect();
|
|
100
101
|
try {
|
|
@@ -37,6 +37,7 @@ const estructuraWorkout_1 = require("./estructuraWorkout");
|
|
|
37
37
|
* @param {{index:number,durationStartLap:number}[]} laps
|
|
38
38
|
* @param {number} aplicationType TIPO_APLICACION.* (reservado para trazabilidad)
|
|
39
39
|
*/
|
|
40
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
40
41
|
const saveWorkoutLaps = (idWorkout, laps, aplicationType) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
42
|
if (!idWorkout)
|
|
42
43
|
return;
|