From 1306770f2e5541af525e86899e4aa387892acbb6 Mon Sep 17 00:00:00 2001 From: stephan Date: Wed, 22 Jul 2026 21:49:57 -0400 Subject: [PATCH] =?UTF-8?q?MSIN-4328=20=E2=80=94=20Introduce=20verbose=20l?= =?UTF-8?q?ogging=20option=20in=20the=20ChronoTrack=20API=20for=20detailed?= =?UTF-8?q?=20entry=20logs.=20Update=20push=20panel=20UI=20to=20include=20?= =?UTF-8?q?a=20checkbox=20for=20verbose=20logs=20and=20adjust=20related=20?= =?UTF-8?q?functions=20to=20conditionally=20log=20detailed=20information?= =?UTF-8?q?=20based=20on=20user=20selection.=20Increment=20version=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- php/chronotrack_api/fx_chronotrack_admin.php | 10 ++++-- php/chronotrack_api/fx_chronotrack_sync.php | 37 ++++++++++++++++---- superadm/ajax_chronotrack_api.php | 4 ++- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/php/chronotrack_api/fx_chronotrack_admin.php b/php/chronotrack_api/fx_chronotrack_admin.php index 6496b72..63ae9ea 100644 --- a/php/chronotrack_api/fx_chronotrack_admin.php +++ b/php/chronotrack_api/fx_chronotrack_admin.php @@ -460,8 +460,13 @@ function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false, $ar echo ''; echo ''; + echo '
'; + echo ''; + echo ''; + echo '
'; echo '

Envoyer = nouveaux / modifiés. ' - . 'Tout renvoyer = tous les éligibles (même barre %). Logs à chaque envoi.

'; + . 'Tout renvoyer = tous les éligibles (même barre %).

'; echo '
'; echo '
'; @@ -1971,7 +1976,8 @@ function fxChronotrackApiAdminRenderPageScript($intEveId, $arrConfig, $blnClosed data: { a: 'sync_push_prepare', eve_id: intEveId, - force_full: blnForceFull ? 1 : 0 + force_full: blnForceFull ? 1 : 0, + verbose_logs: $('#ct_api_verbose_logs').is(':checked') ? 1 : 0 } }).done(function (prep) { if (rejectIfSessionLost(prep)) { diff --git a/php/chronotrack_api/fx_chronotrack_sync.php b/php/chronotrack_api/fx_chronotrack_sync.php index 8a7c90a..933c0a7 100644 --- a/php/chronotrack_api/fx_chronotrack_sync.php +++ b/php/chronotrack_api/fx_chronotrack_sync.php @@ -1153,11 +1153,23 @@ function fxChronotrackApiSyncPostEntries($intCtEventId, array $tabEntries) { } /** - * MSIN-4328 — log push_entry (succès). + * MSIN-4328 — logs push_entry un-pour-un (défaut = off, résumé lots seulement). + * @param bool|null $blnSet null = lire, bool = fixer pour la requête courante + */ +function fxChronotrackApiSyncVerboseEntryLogs($blnSet = null) { + static $blnVerbose = false; + if ($blnSet !== null) { + $blnVerbose = (bool)$blnSet; + } + return $blnVerbose; +} + +/** + * MSIN-4328 — log push_entry (succès). Uniquement si logs détaillés cochés. */ function fxChronotrackApiSyncLogPushEntryOk($intEveId, array $arrM, array $arrPayload, $strPrefix = '') { $intEveId = intval($intEveId); - if ($intEveId <= 0) { + if ($intEveId <= 0 || !fxChronotrackApiSyncVerboseEntryLogs()) { return; } $strBibMs1 = trim((string)($arrM['bib_ms1'] ?? $arrM['bib'] ?? '')); @@ -1175,6 +1187,17 @@ function fxChronotrackApiSyncLogPushEntryOk($intEveId, array $arrM, array $arrPa fxChronotrackApiSyncLog($intEveId, intval($arrM['par_id'] ?? 0), 'push_entry', 'ok', trim($strMsg)); } +/** + * MSIN-4328 — log push_entry détail (conflit bib, etc.) si mode verbose. + */ +function fxChronotrackApiSyncLogPushEntryDetail($intEveId, $intParId, $strStatus, $strMessage) { + $intEveId = intval($intEveId); + if ($intEveId <= 0 || !fxChronotrackApiSyncVerboseEntryLogs()) { + return; + } + fxChronotrackApiSyncLog($intEveId, intval($intParId), 'push_entry', $strStatus, $strMessage); +} + /** * MSIN-4328 — 1 entry : tenter avec bib ; si conflit CT → clear + file pour 2e passe. * @@ -1238,10 +1261,9 @@ function fxChronotrackApiSyncPushOneEntryWithBibConflictHandling( if ($strEntryId === '') { fxChronotrackApiSyncApplyEntryIdsFromApiJson($arrClearRes['json'] ?? null, array($arrMeta)); } - fxChronotrackApiSyncLog( + fxChronotrackApiSyncLogPushEntryDetail( $intEveId, intval($arrMeta['par_id'] ?? 0), - 'push_entry', 'ok', 'conflit_bib → sans dossard (retry plus tard) external_id=' . ($arrMeta['external_id'] ?? '') @@ -1396,10 +1418,9 @@ function fxChronotrackApiSyncPostEntriesAdaptive($intCtEventId, array $tabEntrie if ($strEntryIdOne === '') { fxChronotrackApiSyncApplyEntryIdsFromApiJson($arrClearRes['json'] ?? null, array($arrM)); } - fxChronotrackApiSyncLog( + fxChronotrackApiSyncLogPushEntryDetail( $intEveId, intval($arrM['par_id'] ?? 0), - 'push_entry', 'ok', 'conflit_bib → sans dossard (retry plus tard) external_id=' . ($arrM['external_id'] ?? '') @@ -2243,6 +2264,8 @@ function fxChronotrackApiSyncPushJobClear($intEveId) { function fxChronotrackApiSyncPushPrepare($intEveId, $arrOptions = array()) { $intEveId = intval($intEveId); $blnForceFull = !empty($arrOptions['force_full']); + $blnVerboseLogs = !empty($arrOptions['verbose_logs']); + fxChronotrackApiSyncVerboseEntryLogs($blnVerboseLogs); $arrConfig = fxChronotrackApiConfigGet($intEveId); if ($arrConfig === null) { return array('state' => 'error', 'message' => 'Événement non lié à ChronoTrack'); @@ -2331,6 +2354,7 @@ function fxChronotrackApiSyncPushPrepare($intEveId, $arrOptions = array()) { 'meta' => $tabMeta, 'blocked_count' => $arrClass['blocked_count'], 'force_full' => $blnForceFull ? 1 : 0, + 'verbose_logs' => $blnVerboseLogs ? 1 : 0, 'ok_sum' => 0, 'err_sum' => 0, 'bib_retry' => array(), @@ -2387,6 +2411,7 @@ function fxChronotrackApiSyncPushEvent($intEveId, $arrOptions = array()) { $tabMetaAll = $arrJob['meta']; $intTotal = count($tabBatchAll); $intSkipped = intval($arrJob['blocked_count'] ?? 0); + fxChronotrackApiSyncVerboseEntryLogs(!empty($arrJob['verbose_logs'])); $tabBatch = array_slice($tabBatchAll, $intOffset, $intLimit); $tabMeta = array_slice($tabMetaAll, $intOffset, $intLimit); diff --git a/superadm/ajax_chronotrack_api.php b/superadm/ajax_chronotrack_api.php index 187015b..3870b13 100644 --- a/superadm/ajax_chronotrack_api.php +++ b/superadm/ajax_chronotrack_api.php @@ -187,8 +187,10 @@ switch ($strAction) { } set_time_limit(180); $blnForceFull = (intval($_REQUEST['force_full'] ?? 0) === 1); + $blnVerboseLogs = (intval($_REQUEST['verbose_logs'] ?? 0) === 1); $tabRetour = fxChronotrackApiSyncPushPrepare($intEveId, array( - 'force_full' => $blnForceFull, + 'force_full' => $blnForceFull, + 'verbose_logs' => $blnVerboseLogs, )); break;