v2.3.2#POST /api/customers/payments)invoice_ar_id inexistants ou appartenant à un autre client sont désormais rejetés avec un 404 ou 422 explicite (ex. "0Comptoir (id:1)"), avant l'acquisition du lock COM.GET /api/inventory/category-items et GET /api/inventory/product-items servent désormais depuis le cache local lorsqu'aucun filtre avancé n'est appliqué (chemin SDK direct préservé pour les requêtes filtrées).customer.code ajouté au cache invoice_ar : le code propriétaire est disponible sans lookup secondaire une fois les enregistrements ré-indexés (fallback transparent pour les anciens enregistrements).product_items : passe d'une accumulation full-memory à paginate_sdk_interface — prévient les crashs OOM observés à fort volume.product_suppliers (~74 K enregistrements/cycle, aucun consommateur du cache, pas d'index modifié SDK).product_categories (doublon strict de categories).product_serials (volume massif, accumulation mémoire → crash enfant observé en test client).product_components (aucune propriété TimeModified côté SDK).supplier_payment_lines : entité désormais correctement déclarée dans REMOVED_INDEXING_ENTITIES (élimine le statut « missing » résiduel).IndexingRecord / IndexingStatus / IndexingEntityPolicy au prochain démarrage pour les 4 entités retirées./system/indexing/* et /system/sync/* (toggle indexation, déclenchement de sync, gestion des fenêtres). Les routes métier /api/* continuent d'exiger scope_write=true — il s'agit ici de contrôles d'opérations runtime, pas de CUD sur les données Acomba.⚠️ Note opérationnelle : les caches SDK des entités product_suppliers,product_categories,product_serials,product_componentssont supprimés au démarrage. Les endpoints concernés continuent de fonctionner via lecture SDK directe (et cache pourcategory_items/product_items).
UPSTREAM_TIMEOUT_SECONDS : 300 s (relais + superviseur).REMOVED_INDEXING_ENTITIES enrichi des 4 entités ci-dessus.helpers/helper_service.py) nettoyé en conséquence.