- `public/assets/js/app-js/orderMode/orderModeToggles.js` — 
- `public/assets/js/app-js/orderMode/orderModeToggles.js` — Centralise l’activation des modes coupe et livraison avec mutation d’état booléenne et événements de rafraîchissement UI ciblés. | Fonctions: `toBool`, `dispatchUIRefresh`, `setBoolFlag`, `setCoupeMode`, `toggleCoupeMode`, `setLivraisonMode`, `toggleLivraisonMode` | Liens: `Aucun`

- `api/_lib/db.php` — Fabrique centralisée de connexion PDO avec bootstrap `config.php` et repli sur variables d’environnement. | Fonctions: `db` | Liens: `config.php`
- `api/_lib/http.php` — Helpers HTTP JSON pour poser les en-têtes et lire un corps JSON en sécurité. | Fonctions: `jsonHeader`, `noCacheHeaders`, `readJsonBody` | Liens: `api/pos_printers.php`, `api/pos_text_sms.php`
- `api/first_names.php` — API CRUD JSON des prénoms avec normalisation et détection de doublons accent-insensible. | Fonctions: `respond`, `readJsonBody`, `normalize_firstname`, `fold_key` | Liens: `api/_lib/db.php`
- `api/pos_printers.php` — API CRUD JSON des imprimantes POS avec validation des champs et du format MAC. | Fonctions: `normalizeStr`, `normalizeMac`, `isMacValid`, `clampActive`, `requireFields`, `outOk`, `outErr` | Liens: `api/_lib/http.php`, `api/_lib/db.php`
- `api/pos_text_sms.php` — API CRUD JSON des modèles SMS POS avec filtres de liste et contrôle d’unicité métier. | Fonctions: `normalizeStr`, `clampActive`, `requireFields`, `outOk`, `outErr`, `rowById`, `conflictExists` | Liens: `api/_lib/http.php`, `api/_lib/db.php`
- `app/views/layout.php` — Layout HTML global de la PWA qui charge assets, pages, manifest et service worker selon `?page=`. | Fonctions: `asset_url` | Liens: `app/views/pages/home.php`, `app/views/pages/liste_commandes.php`, `public/assets/css/app.css`, `public/assets/css/liste_commandes.css`, `public/assets/js/app.js`, `public/assets/js/pages/liste_commandes.js`
- `app/views/pages/home.php` — Squelette DOM de la page d’accueil caisse avec zones d’ancrage remplies côté JavaScript. | Fonctions: `Aucune` | Liens: `app/views/layout.php`, `public/assets/js/app.js`
- `app/views/pages/liste_commandes.php` — Squelette DOM de la page liste des commandes avec conteneur principal pour le rendu JS. | Fonctions: `Aucune` | Liens: `app/views/layout.php`, `public/assets/js/pages/liste_commandes.js`
- `auth.secret.php` — Stockage hors webroot du hash bcrypt utilisé pour l’accès interne “device authorized”. | Fonctions: `Aucune` | Liens: `Aucun`
- `caisse/index.php` — Point d’entrée historique minimal du module caisse laissé comme placeholder legacy. | Fonctions: `Aucune` | Liens: `Aucun`
- `config.php` — Bootstrap PDO principal du projet avec identifiants MySQL OVH et initialisation du handle `$pdo`. | Fonctions: `Aucune` | Liens: `api/_lib/db.php`
- `public/api/_lib/badgeValueOverride.php` — Lecture défensive d’une surcharge de badge pour un magasin et une date donnés. | Fonctions: `fetchBadgeValueOverrideForDate` | Liens: `Aucun`
- `public/api/_lib/allergenesStore.php` — Gère le stockage JSON des allergènes, leur normalisation et la propagation des codes vers les ingrédients en base. | Fonctions: `allergenes_storage_path`, `allergenes_default_rows`, `allergenes_normalize_code`, `allergenes_guess_label`, `allergenes_parse_codes`, `allergenes_normalize_csv_value`, `allergenes_normalize_row`, `allergenes_sort_rows`, `allergenes_ensure_storage_dir`, `allergenes_collect_used_codes`, `allergenes_load_rows`, `allergenes_save_rows`, `allergenes_replace_code_in_ingredients`, `allergenes_strip_code_from_ingredients` | Liens: `config.php`, `public/api/allergenes.php`
- `public/api/_lib/chipSlots.php` — Construction et normalisation de la grille horaire des chips d’interface. | Fonctions: `parseHHMMToMinutes`, `normalizeHHMM`, `buildChipSlots`, `buildChipSlotsFromHHMM` | Liens: `Aucun`
- `public/api/_lib/clientPhoneResolver.php` — Résolution déterministe d’un client à partir d’un téléphone normalisé sans ambiguïté de propriétaire. | Fonctions: `resolveClientByPhoneMatch` | Liens: `public/api/_lib/clientUpsert.php`
- `public/api/_lib/clientUpsert.php` — Helpers partagés d’upsert client avec normalisation du téléphone et sémantique merge-patch. | Fonctions: `normalizePhoneForDb`, `cleanStr`, `bindValueNullable`, `executeClientUpdateWithNullFallback`, `upsertClientFromPayload` | Liens: `public/api/_lib/clientPhoneResolver.php`
- `public/api/_lib/escposBuilder.php` — Constructeur minimal de flux ESC/POS pour générer des tickets imprimables sans dépendance externe. | Fonctions: `EscposBuilder::bytes`, `EscposBuilder::init`, `EscposBuilder::selectCharTable`, `EscposBuilder::fontA`, `EscposBuilder::fontB`, `EscposBuilder::modeNormal`, `EscposBuilder::modeDoubleWidthHeight`, `EscposBuilder::modeDoubleWidth`, `EscposBuilder::reverse`, `EscposBuilder::emphasis`, `EscposBuilder::justifyLeft`, `EscposBuilder::justifyCenter`, `EscposBuilder::justifyRight`, `EscposBuilder::encodeText`, `EscposBuilder::text`, `EscposBuilder::lf`, `EscposBuilder::cut` | Liens: `public/api/_lib/invoiceTicketEscpos.php`
- `public/api/_lib/escposFormat.php` — Helper partagé de formatage texte ESC/POS pour les ingrédients retirés. | Fonctions: `escpos_format_removed_ingredient` | Liens: `public/api/_lib/invoiceTicketEscpos.php`
- `public/api/_lib/firstNamesUpsert.php` — Auto-apprentissage des prénoms clients vers la table de référence des prénoms. | Fonctions: `normalizeFirstNameForStore`, `rememberFirstName`, `rememberFirstNameFromClientId` | Liens: `api/first_names.php`
- `public/api/_lib/invoiceTicketEscpos.php` — Construction des tickets facture ESC/POS en version menus ou détaillée à partir d’une commande. | Fonctions: `invoiceResolveStoreTables`, `invoiceFetchData`, `invoiceComputeTotalFromItems`, `invoiceFormatAmount`, `invoiceUcFirstMb`, `invoiceFormatFrenchFullDateCap`, `invoiceMbLen`, `invoiceSafeSpaces`, `invoiceMbWrapLines`, `invoiceWriteLeftRight`, `invoiceBuildHeader`, `invoiceBuildVatBlock`, `invoiceBuildThanksAndCut`, `invoiceComputeTotal`, `invoiceGetOrderDateTime`, `invoiceNumberFromOrder`, `buildInvoiceMenusEscposBytesFromOrderId`, `buildInvoiceDetailedEscposBytesFromOrderId` | Liens: `public/api/_lib/escposBuilder.php`, `public/api/_lib/escposFormat.php`
- `public/api/_lib/onlinePayments.php` — Helpers de lecture stricte des paiements en ligne réussis et de leur rattachement aux commandes par magasin. | Fonctions: `onlinePaymentsOrderInfoForStore`, `format_vads_trans_date`, `get_successful_online_payments_by_order_id`, `has_successful_online_payment_for_order` | Liens: `config.php`
- `public/api/_lib/onlinePrintState.php` — Helper d’idempotence serveur pour revendiquer une impression ticket en ligne une seule fois par commande. | Fonctions: `claimOnlineReceiptPrintOnce` | Liens: `Aucun`
- `public/api/_lib/onlineReprints.php` — Refile les tickets de paiements en ligne marqués à réimprimer en évitant les doublons concurrents. | Fonctions: `reprintFlaggedOnlineTicketsFromPosPay` | Liens: `public/api/_lib/printJobs.php`, `public/api/_lib/onlinePayments.php`
- `public/api/_lib/ordersListService.php` — Service partagé d’agrégation des commandes, articles, paiements en ligne et statistiques de synthèse. | Fonctions: `normalize_bool`, `infer_kind_from_base`, `choose_base_price`, `ordersList_buildPayload` | Liens: `public/api/_lib/onlinePayments.php`, `public/api/ordersList.php`, `public/api/briefingSoiree.php`
- `public/api/_lib/ovhClient.php` — Client minimal signé pour l’API OVH avec cache local du décalage horaire serveur. | Fonctions: `ovh_cache_get`, `ovh_cache_set`, `ovh_fetch_server_time`, `ovh_get_time_delta_seconds`, `ovh_request` | Liens: `Aucun`
- `public/api/_lib/parisSlots.php` — Convertit un timestamp millisecondes en créneau horaire strict Europe/Paris sans arrondi. | Fonctions: `parisSlotFromEpochMs` | Liens: `Aucun`
- `public/api/_lib/payLink.php` — Génère des identifiants de paiement courts et des codes de vérification à 4 chiffres. | Fonctions: `generateUniquePayLinkId`, `generateUniquePayLinkIdForTable`, `generateVerificationCode` | Liens: `Aucun`
- `public/api/_lib/printJobs.php` — File d’attente d’emplois d’impression ESC/POS pour tickets de test, reçus et alertes d’acompte. | Fonctions: `buildEscposTicketTestBytes`, `queuePosPrintJob`, `queueStaticTestTicketJob`, `queueMissingAccountNotReceivedTicketJob`, `queueOrderReceiptTicketJob` | Liens: `public/api/_lib/ticketReceiptEscpos.php`
- `public/api/_lib/recapTicketProd.php` — Construit les tickets de récapitulatif production ESC/POS pour une liste de commandes. | Fonctions: `rc_mb_len`, `rc_mb_sub`, `rc_clean_text`, `rc_escpos_fit_left_right`, `rc_compute_avance_retard`, `rc_count_valid_pizzas`, `rc_fetch_orders`, `rc_fetch_pizzas`, `rc_build_double_line_spacing`, `buildRecapProdTicketBytes` | Liens: `public/api/_lib/escposBuilder.php`, `public/api/_lib/escposFormat.php`
- `public/api/_lib/smsQueue.php` — Prépare et insère des SMS clients en file d’attente à partir de templates, données de commande et préférences d’opt-out. | Fonctions: `smsq_renderTemplate`, `smsq_fetchTemplate`, `smsq_fetchClientSmsPrefs`, `smsq_formatHeurePrepa`, `smsq_formatDateOnlyFromMs`, `smsq_addMinutesHHMM`, `smsq_formatPriceEuro`, `smsq_buildOrderData`, `queueRawClientSms`, `queueOrderSms` | Liens: `api/pos_text_sms.php`
- `public/api/_lib/storeSlotConfig.php` — Charge et normalise la configuration de créneaux par magasin depuis les tables de configuration en ligne. | Fonctions: `normalizeDbTimeToHHMM`, `normalizeNonNegativeInt`, `fetchStoreSlotConfig` | Liens: `Aucun`
- `public/api/_lib/ticketReceiptEscpos.php` — Génère les tickets de caisse ESC/POS et les tickets d’alerte acompte depuis les données de commande et client. | Fonctions: `escposEncCp1252`, `escposInit`, `escposCharTable`, `escposPrintMode`, `escposEmphasis`, `escposJustify`, `escposReverse`, `escposCutFull`, `escposText`, `formatPhoneNumberReceipt`, `buildMissingAccountTicketEscposBytes`, `safeSpaces`, `mbWrapLines`, `escposPrintLeftRight`, `resolveStoreTablesReceipt`, `fetchReceiptData`, `computeTotalFromItems`, `formatFrenchFullDate`, `buildReceiptTicketEscposBytesFromOrderId` | Liens: `public/api/_lib/escposFormat.php`, `public/api/_lib/printJobs.php`
- `public/api/auth.php` — Endpoint POST d’authentification qui vérifie un mot de passe contre le hash stocké hors du répertoire public. | Fonctions: `Aucune` | Liens: `auth.secret.php`
- `public/api/allergenes.php` — Endpoint CRUD JSON des allergènes avec persistance fichier et synchronisation transactionnelle des codes dans les ingrédients. | Fonctions: `respond`, `readJsonBody`, `asStr`, `asInt`, `asBool01` | Liens: `config.php`, `public/api/_lib/allergenesStore.php`
- `public/api/briefingSoiree.php` — Endpoint JSON qui expose un briefing synthétique du soir pour Lançon et Pélissanne à partir du service partagé. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/ordersListService.php`
- `public/api/catalog.php` — Endpoint JSON qui expose le catalogue pizzas, options, ingrédients et associations pour le frontend. | Fonctions: `respond` | Liens: `config.php`
- `public/api/clientLookup.php` — Endpoint JSON de recherche client par téléphone avec calcul des points fidélité et indicateurs d’usage. | Fonctions: `respond`, `normalizePhoneForDb` | Liens: `config.php`, `public/api/lib/loyalty.php`, `public/api/_lib/clientPhoneResolver.php`
- `public/api/deleteOrder.php` — Endpoint JSON de suppression logique de commande avec envoi optionnel d’un SMS d’annulation. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/smsQueue.php`
- `public/api/firstNames.php` — Endpoint JSON public qui renvoie la liste dédupliquée des prénoms triée par saisie la plus récente. | Fonctions: `Aucune` | Liens: `config.php`
- `public/api/ingredients.php` — Endpoint CRUD JSON des ingrédients avec conversions de types et suppression transactionnelle des associations. | Fonctions: `respond`, `readJsonBody`, `asStr`, `asNullStr`, `asInt`, `asFloat`, `asBool01` | Liens: `config.php`
- `public/api/lib/loyalty.php` — Helpers fidélité pour calculer, mettre à jour et projeter les points clients et familiaux. | Fonctions: `computeCustomerPointsFidTotal`, `setCustomerPointsFid`, `loadCustomerById`, `hasLoyaltyUsedOnDay`, `computeCustomerLoyaltyUsedForDay`, `resolveCustomerScopeIds`, `countReservedLoyaltyPizzas`, `computeCustomerLoyaltyDisplay` | Liens: `public/api/clientLookup.php`
- `public/api/lib/pointsStats.php` — Met à jour les statistiques journalières de points fidélité par magasin dans `pos_points`. | Fonctions: `incrementDailyPointsStat` | Liens: `Aucun`
- `public/api/orderDetails.php` — Endpoint JSON de détail d’une commande avec client, lignes, modifs, fidélité et paiements en ligne. | Fonctions: `respond` | Liens: `config.php`, `public/api/lib/loyalty.php`, `public/api/_lib/onlinePayments.php`
- `public/api/orders.php` — Endpoint JSON qui liste les `id_date` du jour et les créneaux livraison stricts d’un magasin. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/parisSlots.php`, `public/api/_lib/chipSlots.php`, `public/api/_lib/storeSlotConfig.php`
- `public/api/ordersByClientToday.php` — Endpoint JSON qui renvoie les commandes du jour ou à venir d’un client ainsi que ses paniers d’attente. | Fonctions: `respond` | Liens: `config.php`
- `public/api/ordersList.php` — Endpoint JSON qui expose la liste agrégée des commandes d’un magasin via le service partagé. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/ordersListService.php`
- `public/api/ovhLiveCaller.php` — Endpoint JSON qui interroge OVH liveCalls pour récupérer l’appelant en cours d’une ligne configurée. | Fonctions: `respond`, `s`, `normalize_phone_digits`, `extract_call_id` | Liens: `config.php`, `public/api/_lib/ovhClient.php`
- `public/api/pizzaIngredients.php` — Endpoint CRUD JSON des associations pizza-ingrédient avec upsert du flag de retrait possible. | Fonctions: `respond`, `readJsonBody`, `asInt`, `asBool01` | Liens: `config.php`
- `public/api/pizzas.php` — Endpoint CRUD JSON du catalogue pizzas avec garde-fou sur la suppression historique. | Fonctions: `respond`, `readJsonBody`, `asStr`, `asNullStr`, `asInt`, `asFloat`, `asBool01` | Liens: `config.php`
- `public/api/pizzasPerSlot.php` — Endpoint JSON qui retourne la capacité pizzas par créneau pour un magasin et un jour donné. | Fonctions: `respond`, `is_iso_date` | Liens: `config.php`, `public/api/_lib/badgeValueOverride.php`
- `public/api/pollOnlineOrders.php` — Endpoint JSON de polling des commandes en ligne avec impression initiale, réimpressions et alertes d’acompte. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/printJobs.php`, `public/api/_lib/onlinePayments.php`, `public/api/_lib/onlinePrintState.php`, `public/api/_lib/onlineReprints.php`
- `public/api/printInvoice.php` — Endpoint POST qui génère une facture ESC/POS et la met en file d’impression. | Fonctions: `Aucune` | Liens: `config.php`, `public/api/_lib/printJobs.php`, `public/api/_lib/invoiceTicketEscpos.php`
- `public/api/recapOrders.php` — Endpoint JSON qui groupe les commandes du jour par créneau de production avec comptage de pizzas. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/parisSlots.php`, `public/api/_lib/chipSlots.php`, `public/api/_lib/storeSlotConfig.php`
- `public/api/recapPrint.php` — Endpoint POST qui génère un ticket récapitulatif production et marque les commandes comme imprimées. | Fonctions: `respond`, `readJsonBody`, `uniqPositiveInts` | Liens: `config.php`, `public/api/_lib/recapTicketProd.php`
- `public/api/saveOrder.php` — Endpoint POST de création de commande avec upsert client, lignes, impression ticket et envoi SMS transactionnels. | Fonctions: `respond`, `normalizeBool`, `computeDayBoundsMs`, `computeNextIdDate` | Liens: `config.php`, `public/api/_lib/clientUpsert.php`, `public/api/_lib/payLink.php`, `public/api/_lib/printJobs.php`, `public/api/_lib/smsQueue.php`, `public/api/_lib/firstNamesUpsert.php`
- `public/api/settingsLines.php` — Endpoint JSON d’administration des lignes téléphoniques et profils de credentials opérateur. | Fonctions: `respond`, `bool01`, `s`, `iOrNull`, `fetchCredentials`, `fetchPhones`, `normalizeCredentialRow`, `normalizePhoneRow`, `syncCredentials`, `syncPhones` | Liens: `config.php`
- `public/api/slotBadges.php` — Endpoint JSON qui calcule les badges de charge par créneau à partir des capacités et commandes du jour. | Fonctions: `respond` | Liens: `config.php`, `public/api/_lib/parisSlots.php`, `public/api/_lib/chipSlots.php`, `public/api/_lib/storeSlotConfig.php`, `public/api/_lib/badgeValueOverride.php`
- `public/api/updateClientProbleme.php` — Endpoint POST qui met à jour le champ `probleme` d’un client avec sémantique merge-patch. | Fonctions: `respond`, `readJsonBody` | Liens: `config.php`, `public/api/_lib/clientUpsert.php`
- `public/api/updateClientStopSms.php` — Endpoint JSON qui active ou désactive l’opt-out SMS d’un client. | Fonctions: `respond` | Liens: `config.php`
- `public/api/updateLoyaltyPoints.php` — Endpoint POST qui modifie les points fidélité d’un client et met à jour les stats journalières. | Fonctions: `readJsonBody`, `respond` | Liens: `config.php`, `public/api/lib/loyalty.php`, `public/api/lib/pointsStats.php`
- `public/api/updateOrder.php` — Endpoint POST de mise à jour de commande avec diff de lignes, recalcul de SMS et réimpression ticket. | Fonctions: `respond`, `normalizeBool`, `cleanStrLocal`, `round2Local`, `moneyToCentsLocal`, `fetchOrderTotalCentsLocal`, `normalizeLineForInsert`, `normalizeUpdateLine`, `normalizeDeleteLine`, `validateModifsArray` | Liens: `config.php`, `public/api/_lib/storeSlotConfig.php`, `public/api/_lib/chipSlots.php`, `public/api/_lib/clientUpsert.php`, `public/api/_lib/printJobs.php`, `public/api/_lib/smsQueue.php`, `public/api/_lib/firstNamesUpsert.php`
- `public/assets/css/app.css` — Feuille de style globale de la PWA caisse couvrant layout, modales, formulaires, cartes et écrans de réglages. | Fonctions: `Aucune` | Liens: `app/views/layout.php`
- `public/assets/css/liste_commandes.css` — Feuille de style dédiée à la page liste des commandes avec colonnes horaires, cartes commande et blocs briefing. | Fonctions: `Aucune` | Liens: `app/views/layout.php`, `app/views/pages/liste_commandes.php`
- `public/manifest.webmanifest` — Manifest PWA public qui déclare nom, scope, thème et icônes de l’application. | Fonctions: `Aucune` | Liens: `public/index.php`
- `public/assets/js/app-js/appState.js` — Initialise l’état global de l’application caisse à partir du mock, du stockage local et des helpers d’état. | Fonctions: `createPOSAppState` | Liens: `public/assets/js/data/state/appState.js`, `public/assets/js/app-js/date/selectedDate.js`, `public/assets/js/app-js/state/client.js`, `public/assets/js/app-js/phoneLines/selectedPhoneLine.js`
- `public/assets/js/app-js/authGate.js` — Monte l’overlay d’authentification appareil et le choix initial du point de vente côté frontend. | Fonctions: `mountAuthGate` | Liens: `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/dev.js`, `public/assets/js/app-js/storage.js`, `public/assets/js/app-js/pdv.js`, `public/api/auth.php`
- `public/assets/js/app-js/bindings/keyboard.js` — Lie les raccourcis clavier de sélection rapide des résultats de recherche pizza. | Fonctions: `bindPosKeyboardShortcuts` | Liens: `Aucun`
- `public/assets/js/app-js/bindings/pizzaEvents.js` — Lie les événements documentaires des pizzas pour rafraîchir le panneau droit après modification. | Fonctions: `bindPizzaEvents` | Liens: `Aucun`
- `public/assets/js/app-js/bindings/saveOrderValidation.js` — Orchestre la validation frontend des commandes avec pré-contrôles, création, mise à jour et construction des diffs de lignes. | Fonctions: `asInt`, `bool01`, `cleanStr`, `normalizeFoldLocal`, `parseDisplayLineLabelPrice`, `buildDisplayLineInfoMap`, `cleanKeyLabel`, `normalizeModifsForCompare`, `stableLineKeyForCompare`, `buildClientPayloadForSave`, `normClientValue`, `getOrigClientValue`, `buildClientPatchPayload`, `makeDataIdFromLine`, `pickPosPizzaId`, `buildAdresseTemporaireFromClient`, `round2`, `resolveRowFromKey`, `buildPizzaModifs`, `bindSaveOrderValidation` | Liens: `public/assets/js/pos/orderSummary.js`, `public/assets/js/services/api/saveOrderApi.js`, `public/assets/js/services/api/updateOrderApi.js`, `public/assets/js/ui/toast.js`, `public/assets/js/app-js/loaders/ordersLoader.js`, `public/assets/js/app-js/state/afterOrderSavedSuccess.js`, `public/assets/js/app-js/loaders/firstNamesLoader.js`, `public/assets/js/app-js/validations/preValidateChecks.js`, `public/assets/js/app-js/time/activeTime.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/ui/dom.js`
- `public/assets/js/app-js/bindings/wheel.js` — Convertit certains scrolls verticaux en défilement horizontal sur les bandes de chips et d’actions. | Fonctions: `enhanceHorizontalWheel` | Liens: `Aucun`
- `public/assets/js/app-js/catalogCache.js` — Gère le cache local du catalogue, les classes de base pizza et les index de recherche/catalogue. | Fonctions: `baseClass`, `ensurePizzaBase`, `getCatalogCache`, `saveCatalogCache`, `isCatalogStale`, `buildCatalogIndex`, `precomputePizzaHaystacks` | Liens: `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/storage.js`, `public/assets/js/app-js/pizzaSearch.js`
- `public/assets/js/app-js/clock.js` — Met à jour en direct l’horloge affichée dans la topbar sans rerender complet. | Fonctions: `formatTimeFR`, `startLiveClock` | Liens: `Aucun`
- `public/assets/js/app-js/constants.js` — Centralise les constantes partagées du frontend pour localStorage, PDV, TTL et focus. | Fonctions: `Aucune` | Liens: `Aucun`
- `public/assets/js/app-js/date/dayCompare.js` — Compare une date ISO au jour courant Europe/Paris pour détecter les jours passés. | Fonctions: `isPastParisDay` | Liens: `public/assets/js/utils/date/paris.js`
- `public/assets/js/app-js/date/presetOptions.js` — Construit les options de presets de date du footer et leurs libellés français. | Fonctions: `buildFooterPresetOptions` | Liens: `public/assets/js/app-js/date/selectedDate.js`
- `public/assets/js/app-js/date/selectedDate.js` — Gère la persistance, l’URL et les décalages de la date sélectionnée dans l’application. | Fonctions: `isISODate`, `getURLDateISO`, `setURLDateISO`, `clearURLDateISO`, `readPersistedSelectedDateISO`, `persistSelectedDateISO`, `clearPersistedSelectedDateISO`, `shiftISODate` | Liens: `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/storage.js`, `public/assets/js/utils/date/paris.js`
- `public/assets/js/app-js/dev.js` — Détermine si les fonctions de reset développeur doivent être exposées dans le frontend. | Fonctions: `isDevResetEnabled` | Liens: `Aucun`
- `public/assets/js/app-js/focus.js` — Gère le focus robuste du champ de recherche, le refocus par clic central et les retries après chargement ou remontage du SearchCard. | Fonctions: `requestSearchFocus`, `requestSearchFocusSelect`, `ensureSearchFocusOnLoad`, `bindCenterClickToSearchFocus`, `bindSearchMountedFocusRetry` | Liens: `public/assets/js/app-js/constants.js`
- `public/assets/js/app-js/index.js` — Point d’entrée frontend de la caisse qui orchestre boot, changements de date, chargements parallèles, polling et initialisation du mode vocal. | Fonctions: `refreshAfterPDVChange`, `refreshDailyListsParallel`, `bootApp`, `boot` | Liens: `public/assets/js/data/mock.js`, `public/assets/js/utils/date/paris.js`, `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/authGate.js`, `public/assets/js/app-js/clock.js`, `public/assets/js/app-js/posSearchResultsDom.js`, `public/assets/js/app-js/search/clear.js`, `public/assets/js/app-js/appState.js`, `public/assets/js/app-js/date/selectedDate.js`, `public/assets/js/app-js/state/reset.js`, `public/assets/js/app-js/loaders/ordersLoader.js`, `public/assets/js/app-js/loaders/slotBadgesLoader.js`, `public/assets/js/app-js/loaders/catalogLoader.js`, `public/assets/js/app-js/loaders/firstNamesLoader.js`, `public/assets/js/app-js/loaders/pizzasPerSlotLoader.js`, `public/assets/js/app-js/time/scrollManager.js`, `public/assets/js/app-js/loaders/phoneLinesLoader.js`, `public/assets/js/app-js/ui/controller.js`, `public/assets/js/app-js/pos/pickPizza.js`, `public/assets/js/app-js/search/selection.js`, `public/assets/js/app-js/bindings/keyboard.js`, `public/assets/js/app-js/bindings/saveOrderValidation.js`, `public/assets/js/app-js/bindings/pizzaEvents.js`, `public/assets/js/app-js/bindings/wheel.js`, `public/assets/js/app-js/polling/onlineOrdersPolling.js`, `public/assets/js/app-js/voice/voiceMode.js`
- `public/assets/js/app-js/loaders/catalogLoader.js` — Charge le catalogue côté frontend en cache-first puis recalcule les résultats de recherche pizza. | Fonctions: `loadCatalog` | Liens: `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/search/selection.js`, `public/assets/js/app-js/catalogCache.js`, `public/api/catalog.php`
- `public/assets/js/app-js/loaders/firstNamesLoader.js` — Charge et maintient le cache local des prénoms pour l’autocomplétion client. | Fonctions: `invalidateFirstNamesCache`, `addFirstNameToCache`, `loadFirstNames` | Liens: `public/assets/js/app-js/constants.js`, `public/api/firstNames.php`
- `public/assets/js/app-js/loaders/ordersLoader.js` — Charge les onglets du jour et importe une commande API dans l’état frontend et le panier courant. | Fonctions: `recoverOrder`, `loadDailyOrderTabs`, `loadOrderByIdDate` | Liens: `public/assets/js/services/api/ordersApi.js`, `public/assets/js/services/api/orderDetailsApi.js`, `public/assets/js/ui/dom.js`, `public/assets/js/pos/pizzaOrder.js`, `public/assets/js/pos/orderLine.js`, `public/assets/js/data/mock.js`, `public/assets/js/app-js/time/activeTime.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/catalogCache.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/app-js/state/client.js`, `public/assets/js/app-js/time/livraisonSlots.js`, `public/assets/js/app-js/time/timechipsScroll.js`, `public/assets/js/app-js/loaders/slotBadgesLoader.js`, `public/api/orders.php`, `public/api/orderDetails.php`
- `public/assets/js/app-js/loaders/phoneLinesLoader.js` — Charge et normalise les lignes téléphoniques configurées puis resynchronise la sélection persistée. | Fonctions: `loadPhoneLines` | Liens: `public/assets/js/ui/api/settingsLinesApi.js`, `public/assets/js/app-js/phoneLines/selectedPhoneLine.js`, `public/api/settingsLines.php`
- `public/assets/js/app-js/loaders/pizzasPerSlotLoader.js` — Charge la capacité pizzas par créneau pour le jour et le PDV courants avec repli mock en cas d’erreur. | Fonctions: `loadPizzasPerSlot` | Liens: `public/assets/js/services/api/pizzasPerSlotApi.js`, `public/assets/js/app-js/pdv.js`, `public/api/pizzasPerSlot.php`
- `public/assets/js/app-js/loaders/slotBadgesLoader.js` — Charge les badges de créneaux, reconstruit la grille horaire et démarre les mises à jour live côté client. | Fonctions: `loadSlotBadges` | Liens: `public/assets/js/services/api/slotBadgesApi.js`, `public/assets/js/app-js/time/slotBadgesCalc.js`, `public/assets/js/app-js/time/slotBadgesLive.js`, `public/assets/js/data/mock.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/time/timechipsScroll.js`, `public/api/slotBadges.php`
- `public/assets/js/app-js/orders/existingOrderFlow.js` — Gère la détection de commandes existantes ou waiting d’un client et leur récupération dans la caisse. | Fonctions: `ensureNoDuplicateTodayOrder` | Liens: `public/assets/js/app-js/pdv.js`, `public/assets/js/ui/dom.js`, `public/assets/js/services/api/ordersByClientTodayApi.js`, `public/assets/js/app-js/loaders/ordersLoader.js`, `public/assets/js/app-js/orders/orderDetailsPreview.js`, `public/assets/js/app-js/orders/waitingOrderImport.js`, `public/assets/js/utils/date/paris.js`, `public/assets/js/ui/components/modals/duplicateOrdersModal.js`, `public/api/ordersByClientToday.php`
- `public/assets/js/app-js/orders/orderDetailsPreview.js` — Construit des lignes d’aperçu compactes d’une commande pour les modales de sélection. | Fonctions: `fetchOrderPreviewLines` | Liens: `public/assets/js/services/api/orderDetailsApi.js`, `public/api/orderDetails.php`
- `public/assets/js/app-js/orders/waitingOrderImport.js` — Importe un panier waiting JSON dans le panier courant en recréant les lignes métier frontend. | Fonctions: `importWaitingBasketIntoState` | Liens: `public/assets/js/pos/orderLine.js`
- `public/assets/js/app-js/pdv.js` — Centralise l’état d’autorisation appareil et la gestion du point de vente courant dans le stockage local. | Fonctions: `isAuthorized`, `getPDVDefault`, `refreshAuthTimestamps`, `normalizePDVStorage`, `getPDVCurrent`, `setPDVDefaultAndCurrent`, `togglePDV`, `resetDeviceAuth`, `storeToSuffix` | Liens: `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/storage.js`
- `public/assets/js/app-js/phoneLines/selectedPhoneLine.js` — Gère la persistance locale de la ligne téléphonique sélectionnée sur l’appareil. | Fonctions: `readPersistedSelectedPhoneLineId`, `persistSelectedPhoneLineId`, `clearPersistedSelectedPhoneLineId` | Liens: `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/storage.js`
- `public/assets/js/app-js/pizzaSearch.js` — Implémente la recherche pizza avec exclusion des boissons web, priorité aux raccourcis puis repli sur les préfixes de mots du nom. | Fonctions: `normalizeText`, `splitRaccTokens`, `buildPizzaNameHaystack`, `buildPizzaHaystack`, `computePizzaResults` | Liens: `public/assets/js/app-js/search/sortByPositionId.js`
- `public/assets/js/app-js/polling/onlineOrdersPolling.js` — Poll les commandes en ligne par PDV et rafraîchit la caisse sans casser la saisie en cours. | Fonctions: `startOnlineOrdersPolling` | Liens: `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/time/activeTime.js`, `public/assets/js/services/api/pollOnlineOrdersApi.js`, `public/assets/js/ui/dom.js`, `public/api/pollOnlineOrders.php`
- `public/assets/js/app-js/pos/basket.js` — Gère l’ajout, la suppression ciblée des lignes pizza du panier, y compris par commande vocale, et le recalcul des extras/options. | Fonctions: `addPizzaToBasket`, `removeAddedItemAt`, `removeBasketPizzaByVoice`, `confirmDeletePizzaAt`, `normalizeKeyFromName`, `normalizeFold`, `stripKeyPrefix`, `getRowNameByKey`, `removeKeysMatchingLabel`, `recomputeExtraForLine`, `recomputeManualExtrasAggregate`, `removeLineItemAt` | Liens: `public/assets/js/app-js/catalogCache.js`, `public/assets/js/pos/pizzaOrder.js`, `public/assets/js/pos/orderLine.js`, `public/assets/js/app-js/voice/matching/voicePizzaMatcher.js`, `public/assets/js/ui/dom.js`
- `public/assets/js/app-js/pos/editAllPizzas.js` — Applique un patch global d’édition sur toutes les pizzas du panier via la modale partagée puis recalcule extras et lignes modifiées. | Fonctions: `getPizzaLines`, `norm`, `ensureArray`, `removeLineByNormalizedLabel`, `buildIngredientNameMap`, `findCompositionMetaByLabel`, `hasAddedIngredientByLabel`, `applyGlobalPizzaPatch`, `editAllPizzas` | Liens: `public/assets/js/app-js/voice/voiceModalLock.js`, `public/assets/js/app-js/pos/editPizza.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/ui/dom.js`
- `public/assets/js/app-js/pos/editPizza.js` — Ouvre l’édition d’une pizza du panier, résout sa composition via le catalogue indexé puis applique le patch retourné par la modale. | Fonctions: `getPizzaCompositionForLine`, `editPizzaAt` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/app-js/voice/voiceModalLock.js`
- `public/assets/js/app-js/pos/pickPizza.js` — Crée le handler de sélection d’un résultat de recherche, synchronise la sélection clavier top/second résultat puis refocus le champ de recherche. | Fonctions: `createPickPizzaHandler` | Liens: `public/assets/js/app-js/search/selection.js`, `public/assets/js/app-js/pos/basket.js`
- `public/assets/js/app-js/posSearchResultsDom.js` — Rend dynamiquement la liste de résultats de recherche pizza avec ingrédients, raccourcis, sélection visuelle et bases harmonisées. | Fonctions: `updateSearchResultsDOM` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/app-js/catalogCache.js`
- `public/assets/js/app-js/search/clear.js` — Nettoie défensivement l’état et le DOM de la recherche POS. | Fonctions: `clearSearchUI` | Liens: `Aucun`
- `public/assets/js/app-js/search/selection.js` — Encadre la sélection clavier des résultats de recherche aux deux premiers éléments et expose le résultat courant sûr. | Fonctions: `clampSelectedSearchIndex`, `getSelectedSearchPizza` | Liens: `Aucun`
- `public/assets/js/app-js/search/sortByPositionId.js` — Trie de façon déterministe les résultats de recherche par position puis identifiant. | Fonctions: `stableSortByPositionThenId` | Liens: `Aucun`
- `public/assets/js/app-js/state/afterOrderSavedSuccess.js` — Réinitialise l’UI après sauvegarde réussie d’une commande et recharge les données du jour. | Fonctions: `afterOrderSavedSuccess` | Liens: `public/assets/js/app-js/state/reset.js`, `public/assets/js/app-js/search/clear.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/loaders/ordersLoader.js`, `public/assets/js/app-js/loaders/slotBadgesLoader.js`
- `public/assets/js/app-js/state/client.js` — Construit les objets client injectés depuis l’API ou vides pour l’état frontend. | Fonctions: `buildInjectedClientFromApi`, `buildEmptyClient` | Liens: `Aucun`
- `public/assets/js/app-js/state/reset.js` — Regroupe les helpers de reset d’état pour changement de jour, sortie de mode édition et vidage complet d’UI. | Fonctions: `resetLoadedOrderState`, `resetCurrentOrderUIKeepClient`, `resetCurrentOrderUIAllClear` | Liens: `public/assets/js/app-js/state/client.js`, `public/assets/js/app-js/utils/phone/normalizePhone.js`
- `public/assets/js/app-js/storage.js` — Regroupe les helpers d’accès horodaté et sécurisé au localStorage côté frontend. | Fonctions: `nowTs`, `nowMs`, `storageGet`, `storageSet`, `storageDel`, `safeJsonParse`, `storageGetTrimmed` | Liens: `Aucun`
- `public/assets/js/app-js/time/activeTime.js` — Centralise la sélection et la désélection du créneau horaire actif avec rerender UI. | Fonctions: `setActiveTime`, `clearActiveTime` | Liens: `Aucun`
- `public/assets/js/app-js/time/livraisonSlots.js` — Construit la table des créneaux marqués livraison à partir de la réponse API. | Fonctions: `buildLivraisonBySlot` | Liens: `Aucun`
- `public/assets/js/app-js/time/scrollManager.js` — Pilote les règles de scroll et d’auto-suivi des chips horaires selon le jour et l’activité utilisateur. | Fonctions: `applyScrollRule`, `notifyUserActivity`, `startIdleAutoFollow`, `stopIdleAutoFollow` | Liens: `public/assets/js/utils/date/paris.js`
- `public/assets/js/app-js/time/scrollToCurrentSlot.js` — Fournit un wrapper legacy de compatibilité qui délègue le scroll des chips au manager unifié. | Fonctions: `scrollTimechipsToNow` | Liens: `public/assets/js/app-js/time/scrollManager.js`
- `public/assets/js/app-js/time/scrollToSlot.js` — Fait défiler la bande des créneaux jusqu’à une heure donnée sans contrainte sur le jour affiché. | Fonctions: `scrollTimechipsToHHMM` | Liens: `Aucun`
- `public/assets/js/app-js/time/slotBadgesCalc.js` — Calcule les badges BM/TR des créneaux avec propagation de surcharge et réduction dynamique en temps réel. | Fonctions: `buildRemainingBySlot`, `buildTRBySlot` | Liens: `Aucun`
- `public/assets/js/app-js/time/slotBadgesLive.js` — Met à jour en direct les badges et couleurs de capacité des créneaux déjà rendus dans le DOM. | Fonctions: `startSlotBadgesLiveUpdates` | Liens: `public/assets/js/app-js/time/slotBadgesCalc.js`, `public/assets/js/app-js/date/dayCompare.js`, `public/assets/js/ui/helpers/capacityColors.js`
- `public/assets/js/app-js/time/timechipsScroll.js` — Capture et restaure la position de scroll horizontale de la bande des créneaux horaires. | Fonctions: `captureTimeChipsScroll`, `restoreTimeChipsScroll`, `isSlotInDOM` | Liens: `Aucun`
- `public/assets/js/app-js/ui/controller.js` — Orchestre le rendu principal de la caisse, les rafraîchissements ciblés, la récupération d’appel OVH, l’impression de facture et les actions UI métier. | Fonctions: `createUIController` | Liens: `public/assets/js/app-js/time/activeTime.js`, `public/assets/js/utils/date/paris.js`, `public/assets/js/ui/dom.js`, `public/assets/js/app-js/date/presetOptions.js`, `public/assets/js/ui/components/topbars.js`, `public/assets/js/ui/components/clientCard.js`, `public/assets/js/ui/components/searchCard.js`, `public/assets/js/ui/components/rightPanel.js`, `public/assets/js/ui/components/actionsBar.js`, `public/assets/js/pos/orderSummary.js`, `public/assets/js/app-js/date/dayCompare.js`, `public/assets/js/app-js/ui/hstripFocus.js`, `public/assets/js/app-js/time/scrollManager.js`, `public/assets/js/app-js/time/timechipsScroll.js`, `public/assets/js/app-js/time/scrollToSlot.js`, `public/assets/js/app-js/constants.js`, `public/assets/js/app-js/dev.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/posSearchResultsDom.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/app-js/pos/editPizza.js`, `public/assets/js/app-js/phoneLines/selectedPhoneLine.js`, `public/assets/js/services/api/ovhLiveCallerApi.js`, `public/assets/js/services/api/printInvoiceApi.js`
- `public/assets/js/app-js/ui/hstripFocus.js` — Gère le focus clavier sur la bande horizontale la plus pertinente après navigation de date. | Fonctions: `focusPreferredHstripInner` | Liens: `Aucun`
- `public/assets/js/app-js/utils/phone/normalizePhone.js` — Normalise un numéro saisi vers le format de recherche base de données. | Fonctions: `normalizePhoneForDb` | Liens: `Aucun`
- `public/assets/js/app-js/utils/phone/parseAndValidatePhone.js` — Analyse et valide un numéro avant de déclencher une recherche client backend. | Fonctions: `parseAndValidatePhone` | Liens: `public/assets/js/app-js/utils/phone/normalizePhone.js`
- `public/assets/js/app-js/validations/offeredDrinks.js` — Regroupe les règles de comptage et d’éligibilité des boissons offertes selon le panier. | Fonctions: `countPizzas`, `hasLoyaltyReduction`, `computeEligiblePizzaCount`, `countOfferedDrinks`, `computeOfferedDrinksNeeded` | Liens: `Aucun`
- `public/assets/js/app-js/validations/offeredDrinksEligibility.js` — Vérifie que le nombre de pizzas éligibles couvre bien les boissons offertes présentes dans la commande. | Fonctions: `validateOfferedDrinksEligibility` | Liens: `public/assets/js/app-js/validations/offeredDrinks.js`
- `public/assets/js/app-js/validations/orderTotalCents.js` — Calcule le total d’une commande en centimes entiers pour des comparaisons robustes. | Fonctions: `computeOrderTotalCents` | Liens: `public/assets/js/pos/orderSummary.js`
- `public/assets/js/app-js/validations/preValidateChecks.js` — Exécute les contrôles UI préalables à la validation d’une commande, dont boissons offertes et total nul. | Fonctions: `runPreValidateChecks` | Liens: `public/assets/js/app-js/validations/offeredDrinks.js`, `public/assets/js/app-js/validations/orderTotalCents.js`, `public/assets/js/app-js/validations/offeredDrinksEligibility.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/ui/dom.js`, `public/assets/js/ui/toast.js`
- `public/assets/js/app-js/voice/voiceMode.js` — Orchestre la reconnaissance vocale continue de la caisse, le découpage multi-commandes, la mise en attente des actions de modale et l’exécution des actions de recherche, panier, client, horaires et édition pizza. | Fonctions: `getSpeechRecognitionCtor`, `normalizeVoiceText`, `ensureVoiceState`, `setVoiceState`, `getVoiceStatus`, `syncVoiceButtons`, `parseSingleVoiceCommand`, `parseVoiceCommands`, `applySearchQuery`, `dispatchValidateOrder`, `initVoiceMode`, `waitForUiFlush`, `deferVoiceEditCommand`, `stopListening`, `enqueueVoiceCommands`, `executeVoiceCommand`, `buildRecognition`, `startListening`, `toggleListening`, `onDocumentClick`, `onSearchMounted` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/voice/resolveVoicePizzaSelection.js`, `public/assets/js/app-js/voice/phoneRefreshCommand.js`, `public/assets/js/app-js/voice/clientFieldVoiceCommand.js`, `public/assets/js/app-js/voice/applyClientFieldVoiceCommand.js`, `public/assets/js/app-js/voice/orderModeVoiceCommand.js`, `public/assets/js/app-js/voice/selectTimeCommand.js`, `public/assets/js/app-js/voice/voiceModalLock.js`, `public/assets/js/app-js/voice/basketEditVoiceCommand.js`, `public/assets/js/app-js/voice/removeBasketPizzaVoiceCommand.js`, `public/assets/js/app-js/voice/voiceCommandRegistry.js`, `public/assets/js/app-js/voice/voiceMultiCommandParser.js`, `public/assets/js/app-js/voice/voicePendingEditCommands.js`, `public/assets/js/app-js/posSearchResultsDom.js`, `public/assets/js/app-js/orderMode/orderModeToggles.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/app-js/pos/editAllPizzas.js`
- `public/assets/js/app-js/voice/addPizzaVoiceCommand.js` — Parse la commande vocale d’ajout de pizza et conserve le libellé dicté comme valeur exploitable ou liste brute. | Fonctions: `parseAddPizzaVoiceCommand` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/applyClientFieldVoiceCommand.js` — Applique une commande vocale de saisie client à l’état et tente de resynchroniser immédiatement le champ de formulaire correspondant. | Fonctions: `ensureClientState`, `syncClientInput`, `dispatchClientRefresh`, `applyClientFieldVoiceCommand` | Liens: `Aucun`
- `public/assets/js/app-js/voice/basketEditVoiceCommand.js` — Parse et pilote les commandes vocales d’édition de pizza panier ou globale, y compris actions différées sur modale, ingrédients, options et texte libre. | Fonctions: `getOpenEditModal`, `dispatchInputEvents`, `buildBasketEditFollowUpCommand`, `parseBasketEditFollowUpVoiceCommand`, `parseBasketEditVoiceCommand`, `findBasketPizzaIndexByVoiceName`, `findBasketPizzaButton`, `requestApplyVoiceEditText`, `requestValidateVoiceEditText`, `requestCloseVoiceEditModal`, `requestAddVoiceEditIngredient`, `dispatchVoiceEditCompositionIngredientEvent`, `requestRemoveVoiceEditIngredient`, `requestRestoreVoiceEditIngredient`, `requestAddVoiceEditOption`, `openBasketPizzaEditorByVoice` | Liens: `public/assets/js/app-js/voice/resolveVoiceIngredientSelection.js`, `public/assets/js/app-js/voice/resolveVoiceOptionSelection.js`, `public/assets/js/app-js/voice/voiceCommandRegistry.js`, `public/assets/js/app-js/voice/matching/voicePizzaMatcher.js`, `public/assets/js/app-js/pos/editPizza.js`
- `public/assets/js/app-js/voice/matching/voiceOptionMatcher.js` — Construit les entrées d’options vocales et résout une option dictée contre le catalogue avec matching tolérant partagé. | Fonctions: `buildOptionEntries`, `resolveOptionByVoice` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`
- `public/assets/js/app-js/voice/removeBasketPizzaVoiceCommand.js` — Parse la commande vocale de suppression d’une pizza du panier en conservant le libellé dicté. | Fonctions: `parseRemoveBasketPizzaVoiceCommand` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/resolveVoiceOptionSelection.js` — Réexporte l’API de résolution vocale des options pour conserver la compatibilité des imports existants. | Fonctions: `resolveVoiceOptionSelection` | Liens: `public/assets/js/app-js/voice/matching/voiceOptionMatcher.js`
- `public/assets/js/app-js/voice/clientFieldVoiceCommand.js` — Parse les commandes vocales de saisie des champs client en conservant la valeur dictée brute pour l’écriture métier. | Fonctions: `cleanCapturedValue`, `buildFieldCommand`, `parseClientFieldVoiceCommand` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/orderModeVoiceCommand.js` — Parse les commandes vocales simples d’activation ou désactivation des modes livraison et coupe. | Fonctions: `parseOrderModeVoiceCommand` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/phoneRefreshCommand.js` — Détecte et parse les commandes vocales dédiées au rafraîchissement du téléphone client. | Fonctions: `isRefreshPhoneVoiceCommand`, `parseRefreshPhoneVoiceCommand` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/matching/voiceIngredientMatcher.js` — Construit les entrées d’ingrédients vocales à partir du catalogue ou d’une liste fournie puis résout un ingrédient dicté avec matching tolérant. | Fonctions: `getIngredientLabel`, `getIngredientKey`, `buildIngredientEntries`, `resolveIngredientByVoice` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`
- `public/assets/js/app-js/voice/matching/voiceFuzzyMatch.js` — Fournit le scoring fuzzy borné des libellés vocaux normalisés via distance de Levenshtein par token. | Fonctions: `normalizeNormalizedVoiceLabel`, `splitNormalizedVoiceTokens`, `getVoiceFuzzyTokenMaxDistance`, `computeBoundedLevenshteinDistance`, `computeNormalizedVoiceLabelFuzzyScore`, `compareVoiceFuzzyScores`, `findBestNormalizedVoiceFuzzyLabel` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`
- `public/assets/js/app-js/voice/matching/voiceLabelCore.js` — Fournit le noyau partagé de normalisation, variantes et matching vocal exact, partiel ou fuzzy pour les libellés métier. | Fonctions: `canonicalVoiceToken`, `tokenizeVoiceLabel`, `normalizeVoiceLabelForMatch`, `voiceLabelsEqual`, `buildVoiceLabelVariants`, `collectNormalizedVoiceLabels`, `classifyVoiceLabelMatch`, `findSingleVoiceEntryMatch` | Liens: `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/voice/matching/voiceFuzzyMatch.js`
- `public/assets/js/app-js/voice/matching/voicePizzaMatcher.js` — Résout les pizzas du catalogue ou du panier à partir d’un libellé vocal unique ou d’une liste en réutilisant le noyau de matching partagé. | Fonctions: `getCatalogPizzas`, `splitRaccourcisLabels`, `normalizePizzaListChunk`, `tokenizePizzaListChunk`, `hasExplicitPizzaListSyntax`, `splitPizzaListOnConjunction`, `chooseBetterPizzaSequence`, `resolveCatalogPizzaSequenceFromTokens`, `buildCatalogPizzaVoiceEntries`, `findCatalogPizzaById`, `getCatalogPizzaForBasketLine`, `buildCatalogPizzaVoiceLabels`, `resolveCatalogPizzaByVoice`, `resolveCatalogPizzaListByVoice`, `buildBasketPizzaVoiceLabels`, `findBasketPizzaIndexByVoice` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`, `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/resolveVoiceIngredientSelection.js` — Réexporte l’API de résolution vocale des ingrédients pour conserver la compatibilité des imports existants. | Fonctions: `resolveVoiceIngredientSelection` | Liens: `public/assets/js/app-js/voice/matching/voiceIngredientMatcher.js`
- `public/assets/js/app-js/voice/resolveVoicePizzaSelection.js` — Réexporte les résolveurs vocaux de pizza unitaire ou multiple pour conserver la compatibilité des imports existants. | Fonctions: `resolveVoicePizzaSelection`, `resolveVoicePizzaSelections` | Liens: `public/assets/js/app-js/voice/matching/voicePizzaMatcher.js`
- `public/assets/js/app-js/voice/selectTimeCommand.js` — Parse et applique une commande vocale de sélection de créneau avec validation, scroll UI et toast de retour. | Fonctions: `pad2`, `normalizeVoiceSlotTime`, `parseSelectTimeVoiceCommand`, `applyVoiceSelectTimeCommand` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/time/activeTime.js`, `public/assets/js/app-js/time/scrollToSlot.js`
- `public/assets/js/app-js/voice/voiceCommandRegistry.js` — Registre central des commandes vocales et moteur de matching (exact, préfixe, regex) avec extraction des phrases de départ pour le parsing multi-commandes. | Fonctions: `normalizeRawVoiceTranscript`, `normalizeVoiceCommandText`, `cleanVoiceCommandValue`, `cloneRegistryEntry`, `buildPrefixPayload`, `buildMatchResult`, `getVoiceCommandRegistry`, `getVoiceCommandDefinition`, `getVoiceCommandStartPhrases`, `matchVoiceCommand`, `matchVoiceCommandInOrder` | Liens: `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/voice/voiceMultiCommandParser.js`
- `public/assets/js/app-js/voice/voiceModalLock.js` — Gère un verrou d’état empêchant les commandes vocales concurrentes tant qu’une modale voix reste active. | Fonctions: `ensureVoiceModalLockState`, `setVoiceModalLock`, `clearVoiceModalLock`, `isVoiceModalLocked`, `getVoiceModalLockType`, `isVoiceModalCommandAllowed`, `getVoiceModalLockLabel` | Liens: `public/assets/js/app-js/voice/voiceMode.js`, `public/assets/js/app-js/pos/editAllPizzas.js`, `public/assets/js/app-js/pos/editPizza.js`
- `public/assets/js/app-js/voice/voiceMode-js/constants.js` — Centralise les délais de déduplication et de redémarrage utilisés par le contrôleur de reconnaissance vocale. | Fonctions: `Aucune` | Liens: `public/assets/js/app-js/voice/voiceMode-js/voiceModeController.js`
- `public/assets/js/app-js/voice/voiceMode-js/speechRecognition.js` — Résout le constructeur natif de reconnaissance vocale selon le navigateur disponible. | Fonctions: `getSpeechRecognitionCtor` | Liens: `public/assets/js/app-js/voice/voiceMode-js/voiceModeController.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceState.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor.js` — Assemble l’exécuteur vocal en chaînant les handlers panier, client, commande et modale, avec blocage conditionnel par verrou de modale. | Fonctions: `createVoiceCommandExecutor` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/voice/voiceModalLock.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/editModalCommandHandler.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/orderCommandHandler.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/clientCommandHandler.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/basketCommandHandler.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/basketCommandHandler.js` — Gère les commandes vocales de panier pour ajouter, éditer ou supprimer des pizzas avec résolution de listes et toasts d’erreur ciblés. | Fonctions: `waitForUiRefresh`, `showUnresolvedPizzasToast`, `createVoiceBasketCommandHandler` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/voice/basketEditVoiceCommand.js`, `public/assets/js/app-js/pos/basket.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/pizzaSelectionActions.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/clientCommandHandler.js` — Traite les commandes vocales de saisie des champs client et applique la valeur dictée dans l’état avec retour toast. | Fonctions: `isClientFieldCommand`, `createVoiceClientCommandHandler` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/voice/applyClientFieldVoiceCommand.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/editModalCommandHandler.js` — Exécute les commandes vocales liées à la modale d’édition pizza, avec différé si la modale n’est pas encore ouverte. | Fonctions: `showDeferredEditToast`, `createDeferredVoiceEditCommand`, `showIngredientResultError`, `createVoiceEditModalCommandHandler` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/voice/basketEditVoiceCommand.js`, `public/assets/js/app-js/voice/voiceModalLock.js`, `public/assets/js/app-js/voice/voicePendingEditCommands.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/orderCommandHandler.js` — Gère les commandes vocales de validation, modes de commande, créneau, téléphone et édition globale des pizzas. | Fonctions: `createVoiceOrderCommandHandler` | Liens: `public/assets/js/ui/toast.js`, `public/assets/js/app-js/voice/selectTimeCommand.js`, `public/assets/js/app-js/orderMode/orderModeToggles.js`, `public/assets/js/app-js/pos/editAllPizzas.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceSearch.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor/pizzaSelectionActions.js` — Mutualise la résolution vocale d’une ou plusieurs pizzas puis leur ajout au panier via la recherche et la sélection UI. | Fonctions: `awaitMaybePromise`, `createPizzaSelectionActions`, `addPizzaFromVoiceText`, `addResolvedVoicePizzaItem` | Liens: `public/assets/js/app-js/voice/resolveVoicePizzaSelection.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceSearch.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceModeController.js` — Initialise le contrôleur de reconnaissance vocale continue, gère cycle start/stop/restart, déduplication et file d’exécution des commandes. | Fonctions: `initVoiceModeController`, `waitForUiFlush`, `stopListening`, `enqueueVoiceCommands`, `buildRecognition`, `startListening`, `toggleListening`, `onDocumentClick`, `onSearchMounted` | Liens: `public/assets/js/app-js/voice/voiceMode-js/constants.js`, `public/assets/js/app-js/voice/voiceMode-js/speechRecognition.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceState.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceParser.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceCommandExecutor.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceParser.js` — Parse un transcript vocal unique ou multi-segments en commandes métier ordonnées avec éventuelles sous-commandes chaînées. | Fonctions: `parseSingleVoiceCommand`, `parseVoiceCommands` | Liens: `public/assets/js/app-js/voice/phoneRefreshCommand.js`, `public/assets/js/app-js/voice/clientFieldVoiceCommand.js`, `public/assets/js/app-js/voice/orderModeVoiceCommand.js`, `public/assets/js/app-js/voice/selectTimeCommand.js`, `public/assets/js/app-js/voice/basketEditVoiceCommand.js`, `public/assets/js/app-js/voice/removeBasketPizzaVoiceCommand.js`, `public/assets/js/app-js/voice/addPizzaVoiceCommand.js`, `public/assets/js/app-js/voice/voiceCommandRegistry.js`, `public/assets/js/app-js/voice/voiceMultiCommandParser.js`, `public/assets/js/app-js/voice/voiceMode-js/voiceState.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceSearch.js` — Applique une requête de recherche pizza côté UI ou état local puis déclenche la validation de commande via événement document. | Fonctions: `applySearchQuery`, `dispatchValidateOrder` | Liens: `public/assets/js/app-js/pdv.js`, `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/posSearchResultsDom.js`
- `public/assets/js/app-js/voice/voiceMode-js/voiceState.js` — Maintient l’état du mode vocal, normalise le texte et synchronise les boutons d’activation selon support, écoute et erreurs. | Fonctions: `normalizeVoiceText`, `ensureVoiceState`, `getVoiceStatus`, `syncVoiceButtons`, `setVoiceState` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`, `public/assets/js/app-js/voice/voiceMode-js/speechRecognition.js`
- `public/assets/js/app-js/voice/voiceMode.js` — Expose un wrapper public minimal qui délègue l’initialisation du mode vocal au contrôleur dédié. | Fonctions: `initVoiceMode` | Liens: `public/assets/js/app-js/voice/voiceMode-js/voiceModeController.js`
- `public/assets/js/app-js/voice/voiceMultiCommandParser.js` — Découpe un transcript vocal en segments de commandes successives à partir des phrases de départ connues du registre. | Fonctions: `normalizeRawTranscript`, `buildPhraseTokensList`, `stripVoiceBoundaryPunctuation`, `matchesPhraseAt`, `tokenizeRawTranscript`, `collectBoundaryIndexes`, `splitVoiceTranscriptIntoSegments` | Liens: `public/assets/js/app-js/voice/voiceCommandRegistry.js`
- `public/assets/js/app-js/voice/voicePendingEditCommands.js` — Met en file temporaire les commandes vocales d’édition de modale et les restitue par contexte tant qu’elles ne sont pas expirées. | Fonctions: `isPendingVoiceEditCommandStale`, `clonePendingVoiceEditCommand`, `isPendingVoiceEditCommand`, `queuePendingVoiceEditCommand`, `takePendingVoiceEditCommands` | Liens: `public/assets/js/app-js/voice/voiceMode.js`, `public/assets/js/ui/dom-js/modals/edit-pizza-modal.js`
- `public/assets/js/app-js/voice/voiceIngredientLabelNormalizer.js` — Expose un wrapper rétrocompatible de normalisation et d’égalité des libellés ingrédients basé sur le cœur de matching vocal partagé. | Fonctions: `normalizeVoiceIngredientLabel`, `voiceIngredientLabelsEqual`, `buildVoiceIngredientLabelVariants` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`
- `public/assets/js/app-js/voice/voicePizzaLabelNormalizer.js` — Expose un wrapper rétrocompatible de normalisation et d’égalité des libellés pizza basé sur le cœur de matching vocal partagé. | Fonctions: `normalizeVoicePizzaLabel`, `voicePizzaLabelsEqual`, `buildVoicePizzaLabelVariants` | Liens: `public/assets/js/app-js/voice/matching/voiceLabelCore.js`
- `public/assets/js/app.js` — Point d’entrée minimal qui délègue tout le boot de la caisse au module app-js. | Fonctions: `Aucune` | Liens: `public/assets/js/app-js/index.js`
- `public/assets/js/data/mock.js` — Fournit les données mock centralisées et les générateurs de grille horaire utilisés en fallback frontend. | Fonctions: `buildTimes`, `buildTimeBadges` | Liens: `Aucun`
- `public/assets/js/data/state/appState.js` — Crée et normalise le conteneur mutable d’état global de la PWA caisse. | Fonctions: `createAppState` | Liens: `Aucun`
- `public/assets/js/pages/liste_commandes.js` — Boote la page liste des commandes, gère le retour par triple-clic et charge les données serveur. | Fonctions: `boot` | Liens: `public/assets/js/pages/liste_commandes_render.js`, `public/api/ordersList.php`
- `public/assets/js/pages/liste_commandes_render.js` — Rend la grille des commandes et les blocs de briefing pour la page dédiée et les modales PWA. | Fonctions: `renderBriefingHTML`, `renderBriefingModalHTML`, `renderOrdersGrid` | Liens: `public/assets/js/pages/liste_commandes.js`
- `public/assets/js/pos/orderLine.js` — Construit des lignes de commande typées pizza, boisson ou réduction avec IDs persistables. | Fonctions: `makeOrderLine` | Liens: `Aucun`
- `public/assets/js/pos/orderSummary.js` — Calcule le nombre de pizzas et le total du panier à partir des lignes POS. | Fonctions: `computeOrderSummary` | Liens: `Aucun`
- `public/assets/js/pos/pizzaOrder.js` — Construit une ligne pizza éditable avec structure d’extras et de composition. | Fonctions: `makePizzaLine` | Liens: `Aucun`
- `public/assets/js/services/api/briefingSoireeApi.js` — Client API qui récupère le briefing soirée pour une date donnée. | Fonctions: `briefingSoireeGet` | Liens: `public/api/briefingSoiree.php`
- `public/assets/js/services/api/clientLookupApi.js` — Client API qui recherche un client par téléphone et date optionnelle. | Fonctions: `fetchClientByPhone` | Liens: `public/api/clientLookup.php`
- `public/assets/js/services/api/clientUpdateLoyaltyPointsApi.js` — Client API qui met à jour les points fidélité d’un client avec normalisation du magasin. | Fonctions: `updateClientLoyaltyPoints` | Liens: `public/api/updateLoyaltyPoints.php`
- `public/assets/js/services/api/clientUpdateProblemeApi.js` — Client API qui met à jour le champ problème d’un client via un patch JSON. | Fonctions: `updateClientProbleme` | Liens: `public/api/updateClientProbleme.php`
- `public/assets/js/services/api/clientUpdateStopSmsApi.js` — Client API qui active ou désactive l’opt-out SMS d’un client. | Fonctions: `updateClientStopSms` | Liens: `public/api/updateClientStopSms.php`
- `public/assets/js/services/api/deleteOrderApi.js` — Client API qui supprime logiquement une commande côté serveur. | Fonctions: `deleteOrder` | Liens: `public/api/deleteOrder.php`
- `public/assets/js/services/api/orderDetailsApi.js` — Client API qui charge le détail complet d’une commande pour un magasin, une date et un id_date. | Fonctions: `fetchOrderDetails` | Liens: `public/api/orderDetails.php`
- `public/assets/js/services/api/ordersApi.js` — Client API qui charge le résumé quotidien des commandes, créneaux livraison et grille horaire. | Fonctions: `fetchOrdersSummary`, `fetchOrderIdDates` | Liens: `public/api/orders.php`
- `public/assets/js/services/api/ordersByClientTodayApi.js` — Client API qui récupère les commandes et paniers waiting d’un client pour le jour ou l’à-venir. | Fonctions: `fetchOrdersByClientToday` | Liens: `public/api/ordersByClientToday.php`
- `public/assets/js/services/api/ovhLiveCallerApi.js` — Client API frontend qui récupère le numéro d’appel OVH en cours pour une ligne sélectionnée. | Fonctions: `fetchLiveCaller` | Liens: `public/api/ovhLiveCaller.php`
- `public/assets/js/services/api/pizzasPerSlotApi.js` — Client API qui charge la capacité pizzas par créneau pour un magasin et un jour. | Fonctions: `fetchPizzasPerSlot` | Liens: `public/api/pizzasPerSlot.php`
- `public/assets/js/services/api/pollOnlineOrdersApi.js` — Client API qui poll les nouvelles commandes en ligne à partir d’un last_id. | Fonctions: `pollOnlineOrders` | Liens: `public/api/pollOnlineOrders.php`
- `public/assets/js/services/api/printInvoiceApi.js` — Client API qui déclenche l’impression d’une facture en résolvant dynamiquement la base de chemin API. | Fonctions: `printInvoice` | Liens: `public/api/printInvoice.php`
- `public/assets/js/services/api/saveOrderApi.js` — Client API qui enregistre une nouvelle commande et remonte les erreurs HTTP détaillées. | Fonctions: `saveOrder` | Liens: `public/api/saveOrder.php`
- `public/assets/js/services/api/slotBadgesApi.js` — Client API qui charge et normalise les badges de charge des créneaux. | Fonctions: `fetchSlotBadges` | Liens: `public/api/slotBadges.php`
- `public/assets/js/services/api/updateOrderApi.js` — Client API qui met à jour une commande et remonte les erreurs HTTP détaillées. | Fonctions: `updateOrder` | Liens: `public/api/updateOrder.php`
- `public/assets/js/ui/alpha/alpha-slider.js` — Rend le sélecteur alphabétique A–Z et valide la lettre choisie selon les buckets disponibles. | Fonctions: `renderAlphaSlider` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/alpha/util-alpha.js`
- `public/assets/js/ui/alpha/util-alpha.js` — Regroupe les helpers de normalisation et d’indexation alphabétique A–Z pour l’UI. | Fonctions: `clampInt`, `alphaIndexToLetter`, `alphaLetterToIndex`, `normalizeFold`, `firstAlphaLetter`, `nearestAvailableAlphaIndex` | Liens: `Aucun`
- `public/assets/js/ui/api/firstNamesApi.js` — Client API CRUD des prénoms pour les écrans de réglages et l’autocomplétion. | Fonctions: `firstNamesList`, `firstNamesCreate`, `firstNamesUpdate`, `firstNamesDelete` | Liens: `api/first_names.php`
- `public/assets/js/ui/api/httpJson.js` — Helper partagé de fetch JSON avec erreurs enrichies pour les petits clients API UI. | Fonctions: `fetchJson` | Liens: `Aucun`
- `public/assets/js/ui/api/posPrintersApi.js` — Client API CRUD des imprimantes POS utilisé par les écrans de configuration. | Fonctions: `listPosPrinters`, `createPosPrinter`, `updatePosPrinter`, `deletePosPrinter` | Liens: `public/assets/js/ui/api/httpJson.js`, `api/pos_printers.php`
- `public/assets/js/ui/api/posTextSmsApi.js` — Client API CRUD des modèles SMS POS avec filtres de liste côté réglages. | Fonctions: `listPosTextSms`, `createPosTextSms`, `updatePosTextSms`, `deletePosTextSms` | Liens: `public/assets/js/ui/api/httpJson.js`, `api/pos_text_sms.php`
- `public/assets/js/ui/api/settingsLinesApi.js` — Client API des réglages de lignes téléphoniques avec chargement et sauvegarde des credentials et phones. | Fonctions: `fetchSettingsLines`, `fetchPhoneLines`, `saveSettingsLines` | Liens: `public/api/settingsLines.php`
- `public/assets/js/ui/components/actionsBar.js` — Rend la barre d’actions basse avec statistiques, navigation de date, presets pilotés par modale et actions commande. | Fonctions: `ActionsBar` | Liens: `public/assets/js/ui/dom.js`
- `public/assets/js/ui/components/clientCard.js` — Rend la carte client éditable avec lookup téléphone, fidélité, problème et gestion Stop SMS. | Fonctions: `ClientCard` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/format/phone.js`, `public/assets/js/app-js/utils/phone/normalizePhone.js`, `public/assets/js/app-js/utils/phone/parseAndValidatePhone.js`, `public/assets/js/services/api/clientLookupApi.js`, `public/assets/js/app-js/state/client.js`, `public/assets/js/app-js/orders/existingOrderFlow.js`, `public/assets/js/app-js/focus.js`, `public/assets/js/app-js/pizzaSearch.js`, `public/assets/js/app-js/search/selection.js`, `public/assets/js/services/api/clientUpdateLoyaltyPointsApi.js`, `public/assets/js/services/api/clientUpdateProblemeApi.js`, `public/assets/js/services/api/clientUpdateStopSmsApi.js`, `public/assets/js/app-js/pdv.js`
- `public/assets/js/ui/components/modals/duplicateOrdersModal.js` — Affiche une modale de choix entre commandes existantes et paniers waiting pour un client. | Fonctions: `duplicateOrdersModal` | Liens: `public/assets/js/ui/dom.js`
- `public/assets/js/ui/components/presetMenu.js` — Fournit un menu dropup de presets de date avec support du calendrier natif. | Fonctions: `PresetMenu` | Liens: `public/assets/js/ui/dom.js`
- `public/assets/js/ui/components/rightPanel.js` — Rend le panneau droit du panier avec validation, switches, paiements, édition pizza et suppression par glisser-déposer des lignes ou sous-lignes. | Fonctions: `RightPanel` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/app-js/validations/orderTotalCents.js`
- `public/assets/js/ui/components/searchCard.js` — Rend la carte de recherche POS avec input, mode vocal, refresh catalogue et liste de résultats pizzas enrichie. | Fonctions: `SearchCard` | Liens: `public/assets/js/ui/dom.js`
- `public/assets/js/ui/components/settings/firstNamesManagerModal.js` — Ouvre la modale de gestion CRUD des prénoms et resynchronise le cache d’autocomplétion. | Fonctions: `openFirstNamesManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/api/firstNamesApi.js`, `public/assets/js/app-js/loaders/firstNamesLoader.js`
- `public/assets/js/ui/components/settings/linesManagerModal.js` — Ouvre la modale de gestion des lignes téléphoniques et credentials avec sauvegarde en base. | Fonctions: `openLinesManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/api/settingsLinesApi.js`
- `public/assets/js/ui/components/settings/phoneLineSelectModal.js` — Ouvre la modale de sélection de la ligne téléphonique active et persiste le choix appareil. | Fonctions: `openPhoneLineSelectModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/app-js/phoneLines/selectedPhoneLine.js`
- `public/assets/js/ui/components/settings/pizzasPerSlotManagerModal.js` — Ouvre la modale de gestion du nombre de pizzas par créneau pour un PDV avec chargement et sauvegarde API. | Fonctions: `getTodayISO`, `openPizzasPerSlotManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/services/api/pizzasPerSlotApi.js`
- `public/assets/js/ui/components/settings/pdvConfigMenuModal.js` — Ouvre la modale de configuration d’un PDV et route aujourd’hui vers l’écran de gestion des créneaux du magasin choisi. | Fonctions: `openPDVConfigMenuModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/components/settings/pizzasPerSlotManagerModal.js`, `public/assets/js/ui/components/settingsModals.js`
- `public/assets/js/ui/components/settings/pdvDefaultSelectModal.js` — Ouvre la modale de choix du PDV par défaut de l’appareil avec application immédiate et persistance locale. | Fonctions: `toStr`, `buildSelect`, `openPDVDefaultSelectModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/app-js/pdv.js`
- `public/assets/js/ui/components/settings/pizzasIngredients/api.js` — Regroupe les appels API CRUD du catalogue pizzas, ingrédients et associations pizza-ingrédient. | Fonctions: `fetchCatalog`, `createPizza`, `updatePizza`, `deletePizza`, `createIngredient`, `updateIngredient`, `deleteIngredient`, `upsertPizzaIngredientAssociation`, `deletePizzaIngredientAssociation` | Liens: `public/api/catalog.php`, `public/api/pizzas.php`, `public/api/ingredients.php`, `public/api/pizzaIngredients.php`
- `public/assets/js/ui/components/settings/pizzasIngredients/allergenesUi.js` — Construit le champ UI de sélection des allergènes d’un ingrédient avec chips actives, résumé et effacement global. | Fonctions: `sortAllergenes`, `createIngredientAllergenesField` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/components/settings/pizzasIngredients/helpers.js`
- `public/assets/js/ui/components/settings/pizzasIngredients/assocUi.js` — Construit l’onglet UI de gestion des associations pizzas-ingrédients avec ajout, retrait et flag retirable. | Fonctions: `createPizzaIngredientsAssociationsTab` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/components/settings/pizzasIngredients/helpers.js`, `public/assets/js/ui/components/settings/pizzasIngredients/api.js`, `public/assets/js/app-js/loaders/catalogLoader.js`
- `public/assets/js/ui/components/settings/pizzasIngredients/helpers.js` — Fournit les helpers utilitaires de clonage, conversion et formatage pour les écrans pizzas/ingrédients. | Fonctions: `safeStr`, `deepClone`, `pick`, `isDirty`, `asNumberOrNull`, `asIntOrNull`, `bool01`, `formatPriceEUR` | Liens: `Aucun`
- `public/assets/js/ui/components/settings/pizzasIngredients/schema.js` — Déclare les champs de formulaire et les valeurs par défaut des entités pizza et ingrédient. | Fonctions: `defaultPizza`, `defaultIngredient` | Liens: `public/assets/js/ui/components/settings/pizzasIngredientsManagerModal.js`
- `public/assets/js/ui/components/settings/pizzasIngredientsManagerModal.js` — Ouvre la modale d’administration CRUD des pizzas, ingrédients et associations avec rechargement du catalogue. | Fonctions: `openPizzasIngredientsManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/components/settings/pizzasIngredients/api.js`, `public/assets/js/ui/components/settings/pizzasIngredients/schema.js`, `public/assets/js/ui/components/settings/pizzasIngredients/helpers.js`, `public/assets/js/ui/components/settings/pizzasIngredients/assocUi.js`, `public/assets/js/app-js/loaders/catalogLoader.js`
- `public/assets/js/ui/components/settings/printersManagerModal.js` — Ouvre la modale CRUD des imprimantes POS avec validation MAC et état actif. | Fonctions: `openPrintersManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/api/posPrintersApi.js`
- `public/assets/js/ui/components/settings/smsManagerModal.js` — Ouvre la modale CRUD des templates SMS avec filtres par magasin, type et mode. | Fonctions: `openSmsManagerModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/api/posTextSmsApi.js`
- `public/assets/js/ui/components/settingsModals.js` — Ouvre le menu des paramètres et route chaque entrée vers sa modale dédiée ou un placeholder UI simple. | Fonctions: `openSimpleModal`, `openPlaceholderModal`, `openSettingsMenuModal` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/components/settings/linesManagerModal.js`, `public/assets/js/ui/components/settings/printersManagerModal.js`, `public/assets/js/ui/components/settings/smsManagerModal.js`, `public/assets/js/ui/components/settings/phoneLineSelectModal.js`, `public/assets/js/ui/components/settings/pdvDefaultSelectModal.js`, `public/assets/js/ui/components/settings/pdvConfigMenuModal.js`, `public/assets/js/ui/components/settings/pizzasIngredientsManagerModal.js`, `public/assets/js/ui/components/settings/firstNamesManagerModal.js`, `public/assets/js/ui/components/settings/pizzasPerSlotManagerModal.js`
- `public/assets/js/ui/components/timeChipsBar.js` — Rend la bande partagée des chips horaires avec badges BM/TR/L et couleurs de capacité. | Fonctions: `TimeChipsBar` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/ui/helpers/capacityColors.js`
- `public/assets/js/ui/components/topbars.js` — Rend les trois barres supérieures de la caisse avec navigation, onglets commandes et créneaux horaires. | Fonctions: `TopBars` | Liens: `public/assets/js/ui/dom.js`, `public/assets/js/app-js/pdv.js`, `public/assets/js/ui/components/settingsModals.js`, `public/assets/js/ui/components/timeChipsBar.js`, `public/assets/js/ui/helpers/relaxedDoubleClick.js`
- `public/assets/js/ui/dom.js` — Point d’entrée de réexport public des helpers DOM, toasts, gardes de modale, modales partagées et ouverture de gestion des créneaux pizzas. | Fonctions: `Aucune` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/svg-icon.js`, `public/assets/js/ui/dom-js/core/toast.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/dom-js/modals/confirm-modal.js`, `public/assets/js/ui/dom-js/modals/confirm-sms-cancel-modal.js`, `public/assets/js/ui/dom-js/modals/alert-modal.js`, `public/assets/js/ui/dom-js/modals/content-modal.js`, `public/assets/js/ui/dom-js/modals/select-confirm-modal.js`, `public/assets/js/ui/dom-js/modals/loyalty-points-modal.js`, `public/assets/js/ui/dom-js/modals/offered-drinks-picker-modal.js`, `public/assets/js/ui/dom-js/modals/date-preset-modal.js`, `public/assets/js/ui/dom-js/modals/time-slot-required-modal.js`, `public/assets/js/ui/dom-js/modals/edit-pizza-modal.js`, `public/assets/js/ui/components/settings/pizzasPerSlotManagerModal.js`
- `public/assets/js/ui/dom-js/core/dom-helpers.js` — Fournit la fabrique minimale d’éléments DOM et le helper d’effacement de nœuds. | Fonctions: `el`, `clear` | Liens: `Aucun`
- `public/assets/js/ui/dom-js/core/modal-state.js` — Centralise l’état partagé “une seule modale ouverte à la fois”. | Fonctions: `isModalOpen`, `setModalOpen`, `__uiModalGuard` | Liens: `Aucun`
- `public/assets/js/ui/dom-js/core/svg-helpers.js` — Fournit la fabrique d’éléments SVG namespace-aware pour les composants UI. | Fonctions: `svgEl` | Liens: `Aucun`
- `public/assets/js/ui/dom-js/core/svg-icon.js` — Expose un jeu minimal d’icônes SVG inline réutilisables dans l’interface. | Fonctions: `svgIcon` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/svg-helpers.js`
- `public/assets/js/ui/dom-js/core/toast.js` — Gère l’affichage des toasts non bloquants en bas d’écran ou ancrés à un élément. | Fonctions: `toast` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`
- `public/assets/js/ui/dom-js/core/utils.js` — Regroupe des utilitaires partagés de texte, prix, ingrédients et identifiants pizza pour les modales UI. | Fonctions: `plural`, `isDessertOnlyIngredient`, `normalizeFold`, `firstAlphaLetterOfText`, `normClassLower`, `getStablePosPizzaIdFromRow`, `fmtEuro`, `fmtEuroSigned`, `parseEuro`, `ingredientKey`, `ingredientName`, `ingredientPrice` | Liens: `Aucun`
- `public/assets/js/ui/dom-js/modals/alert-modal.js` — Affiche une modale d’alerte bloquante simple avec garde d’ouverture unique. | Fonctions: `alertModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`
- `public/assets/js/ui/dom-js/modals/confirm-modal.js` — Affiche une modale de confirmation oui/non et restaure le focus de recherche à la fermeture. | Fonctions: `confirmModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/helpers/afterModalClose.js`
- `public/assets/js/ui/dom-js/modals/confirm-sms-cancel-modal.js` — Affiche une modale de suppression avec choix SMS oui/non/annuler. | Fonctions: `confirmSmsCancelModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/helpers/afterModalClose.js`
- `public/assets/js/ui/dom-js/modals/content-modal.js` — Affiche une modale générique de contenu texte ou DOM avec carte personnalisable. | Fonctions: `contentModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`
- `public/assets/js/ui/dom-js/modals/date-preset-modal.js` — Affiche une modale de sélection de preset de date avec support du calendrier natif. | Fonctions: `datePresetModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`
- `public/assets/js/ui/dom-js/modals/edit-pizza-modal.js` — Affiche la modale d’édition d’une pizza simple ou globale avec extras, composition, options, filtre alphabétique, commandes vocales avancées et rejeu des actions différées. | Fonctions: `buildChip`, `editPizzaModal`, `parseManualExtraInput`, `collectManualExtrasFromInputs`, `cleanup`, `done`, `clampExtraCents`, `sectionTitle`, `setExtraSubmitting`, `suppressDblClick`, `syncAutoLabel`, `syncExtraUI`, `applyStep`, `buildIngredientLineText`, `buildOptionLineText`, `optionNameEquals`, `lineBaseEquals`, `compositionHasIngredientName`, `buildCompositionIngredientMeta`, `getCompositionIngredientMetas`, `findCompositionIngredientMetaByKey`, `findCompositionIngredientMetaByLabel`, `resolveVoiceCompositionIngredient`, `shouldDisplayMozzaReplacement`, `shouldHideOption`, `rebuildBulkRemovals`, `recomputeExtra`, `computeAddedLines`, `computeOptionLines`, `commitIngredientsOptionsLive`, `syncComputedHint`, `rebuildComposition`, `rebuildIngredients`, `computeIngredientAlphaCounts`, `syncAlphaReset`, `renderIngredientsAlphaSlider`, `rebuildOptions`, `commitExtraOnly`, `getRemovedNamesFromComposition`, `commitRemovedLive`, `onVoiceFillText`, `publishVoiceIngredientResult`, `publishVoiceRemoveIngredientResult`, `publishVoiceRestoreIngredientResult`, `onVoiceAddIngredient`, `onVoiceRemoveIngredient`, `onVoiceRestoreIngredient`, `publishVoiceOptionResult`, `onVoiceAddOption`, `onVoiceValidateText`, `onKeyDown`, `onVoiceClose`, `dispatchVoiceModalReady`, `makeSyntheticVoiceEvent`, `flushPendingVoiceEditCommands`, `commitAndClose` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/dom-js/core/toast.js`, `public/assets/js/ui/helpers/afterModalClose.js`, `public/assets/js/ui/dom-js/core/utils.js`, `public/assets/js/ui/alpha/alpha-slider.js`, `public/assets/js/app-js/voice/resolveVoiceIngredientSelection.js`, `public/assets/js/app-js/voice/resolveVoiceOptionSelection.js`, `public/assets/js/app-js/voice/voicePendingEditCommands.js`
- `public/assets/js/ui/dom-js/modals/loyalty-points-modal.js` — Affiche la modale d’ajustement des points fidélité avec stepper et sauvegarde callback. | Fonctions: `loyaltyPointsModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`
- `public/assets/js/ui/dom-js/modals/offered-drinks-picker-modal.js` — Affiche une modale de sélection des boissons offertes manquantes avec ajout progressif ou saut explicite. | Fonctions: `offeredDrinksPickerModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/dom-js/core/utils.js`
- `public/assets/js/ui/dom-js/modals/select-confirm-modal.js` — Affiche une modale de confirmation avec sélection d’un élément parmi une liste radio. | Fonctions: `selectConfirmModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/helpers/afterModalClose.js`
- `public/assets/js/ui/dom-js/modals/time-slot-required-modal.js` — Affiche une modale imposant le choix d’un créneau horaire via les chips partagées. | Fonctions: `timeSlotRequiredModal` | Liens: `public/assets/js/ui/dom-js/core/dom-helpers.js`, `public/assets/js/ui/dom-js/core/modal-state.js`, `public/assets/js/ui/helpers/scrollToNow.js`, `public/assets/js/ui/components/timeChipsBar.js`
- `public/assets/js/ui/format/phone.js` — Formate un numéro de téléphone pour l’affichage UI sans modifier la valeur brute métier. | Fonctions: `formatPhoneForDisplay` | Liens: `Aucun`
- `public/assets/js/ui/helpers/afterModalClose.js` — Redonne le focus au champ de recherche POS après fermeture de modale si rien ne le bloque. | Fonctions: `focusSearchAfterModalClose` | Liens: `public/assets/js/app-js/focus.js`
- `public/assets/js/ui/helpers/capacityColors.js` — Calcule les styles/couleurs des chips horaires selon capacité restante, saturation ou inactivité. | Fonctions: `getCapacityColorStyle` | Liens: `Aucun`
- `public/assets/js/ui/helpers/relaxedDoubleClick.js` — Fournit un binding double-clic tolérant pour souris et tactile avec déduplication pointer/click. | Fonctions: `bindRelaxedDoubleClick` | Liens: `Aucun`
- `public/assets/js/ui/helpers/scrollToNow.js` — Fait défiler une bande de créneaux vers l’heure de Paris moins dix minutes pour le jour courant. | Fonctions: `scrollHstripToParisNowMinus10` | Liens: `public/assets/js/utils/date/paris.js`
- `public/assets/js/ui/toast.js` — Affiche un toast autonome stylé inline avec variante succès ou erreur. | Fonctions: `showToast` | Liens: `Aucun`
- `public/assets/js/utils/date/paris.js` — Regroupe les helpers de date Europe/Paris pour ISO du jour et formats français d’affichage. | Fonctions: `getParisTodayISO`, `formatISODateLongFR`, `formatISODateShortNoYearFR`, `formatFooterNavFR` | Liens: `Aucun`
- `public/index.php` — Sert de point d’entrée HTTP public qui délègue le rendu shell PWA au layout applicatif. | Fonctions: `Aucune` | Liens: `app/views/layout.php`
- `public/printing/get_job.php` — Endpoint JSON qui purge la file au besoin puis retourne les jobs d’impression en attente enrichis de l’adresse MAC cible. | Fonctions: `Aucune` | Liens: `config.php`
- `public/printing/validate_job.php` — Endpoint JSON qui valide ou met à jour le statut d’un job d’impression avec garde optionnelle PDV/position. | Fonctions: `Aucune` | Liens: `config.php`
- `public/recap_com/_lib/assets.php` — Ajoute un cache-busting par `filemtime` aux assets JS/CSS du module `recap_com`. | Fonctions: `recap_com_asset` | Liens: `public/recap_com/index.php`
- `public/recap_com/css/recap_com.css` — Définit le thème, la grille, les boutons, l’auth gate et la modale de date du module recap cuisine. | Fonctions: `Aucune` | Liens: `public/recap_com/index.php`
- `public/recap_com/index.php` — Rend la page HTML du module recap cuisine avec header, PDV, date, KPI et boot JS. | Fonctions: `Aucune` | Liens: `public/recap_com/_lib/assets.php`, `public/recap_com/css/recap_com.css`, `public/recap_com/js/recap_com.js`
- `public/recap_com/js/_api.js` — Fournit les helpers GET/POST JSON du module recap cuisine avec erreurs HTTP enrichies. | Fonctions: `fetchJson`, `postJson` | Liens: `Aucun`
- `public/recap_com/js/_authGate.js` — Monte l’overlay d’authentification du module recap cuisine et persiste l’autorisation appareil. | Fonctions: `mountAuthGate` | Liens: `public/recap_com/js/_constants.js`, `public/recap_com/js/_storage.js`, `public/api/auth.php`
- `public/recap_com/js/_clock.js` — Démarre l’horloge live du module recap cuisine en heure de Paris avec fallback local. | Fonctions: `startParisClock` | Liens: `Aucun`
- `public/recap_com/js/_constants.js` — Centralise les constantes PDV, clés de stockage local et TTL d’autorisation du module recap cuisine. | Fonctions: `Aucune` | Liens: `Aucun`
- `public/recap_com/js/_date.js` — Fournit la date ISO du jour calculée selon le fuseau Europe/Paris. | Fonctions: `parisTodayISO` | Liens: `Aucun`
- `public/recap_com/js/_poll.js` — Lance un polling tolérant avec jitter, pause en arrière-plan et protection contre les requêtes concurrentes. | Fonctions: `startRecapPoll` | Liens: `Aucun`
- `public/recap_com/js/_print.js` — Regroupe la collecte des commandes à imprimer, l’appel d’impression recap et la mise à jour locale des états imprimés. | Fonctions: `collectOrderIdsForSlot`, `collectOrderIdsForOne`, `printOrders`, `applyPrintedToDom`, `applyPrintedToState`, `recomputeRemaining` | Liens: `public/recap_com/js/_api.js`, `public/api/recapPrint.php`
- `public/recap_com/js/_render.js` — Rend la table des créneaux et les boutons de commandes du module recap cuisine. | Fonctions: `renderSlotsTable` | Liens: `public/recap_com/js/_slots.js`
- `public/recap_com/js/_scroll.js` — Calcule le créneau cible et fait défiler horizontalement la grille recap vers la colonne pertinente. | Fonctions: `pickFocusSlot`, `pickFirstUnprintedSlot`, `scrollSlotsTo` | Liens: `Aucun`
- `public/recap_com/js/_slots.js` — Fournit les helpers de génération et formatage des créneaux horaires du module recap cuisine. | Fonctions: `buildSlotsStatic`, `formatSlotHeader` | Liens: `Aucun`
- `public/recap_com/js/_storage.js` — Encapsule le localStorage du module recap cuisine et valide la durée d’autorisation appareil. | Fonctions: `nowTs`, `storageGet`, `storageSet`, `storageDel`, `isAuthValid` | Liens: `public/recap_com/js/_constants.js`
- `public/recap_com/js/recap_com.js` — Boote le module recap cuisine avec auth gate, rendu, polling, changement de date et impression par créneau ou commande. | Fonctions: `Aucune` | Liens: `public/recap_com/js/_constants.js`, `public/recap_com/js/_storage.js`, `public/recap_com/js/_authGate.js`, `public/recap_com/js/_render.js`, `public/recap_com/js/_date.js`, `public/recap_com/js/_api.js`, `public/recap_com/js/_clock.js`, `public/recap_com/js/_scroll.js`, `public/recap_com/js/_poll.js`, `public/recap_com/js/_print.js`, `public/recap_com/js/ui/datePickerModal.js`
- `public/recap_com/js/ui/datePickerModal.js` — Affiche la modale locale de choix de date du module recap cuisine avec validation ISO et libellé français. | Fonctions: `sanitizeISODate`, `formatDateLabelFR`, `openDatePickerModal` | Liens: `Aucun`
- `public/sw.js` — Service worker minimal en mode network-only qui supprime les caches legacy et évite toute obsolescence d’assets. | Fonctions: `Aucune` | Liens: `Aucun`