harden(gui): centraliser fail-close repli + garde-fou logging + doc mutex (revue finale Plan 1a)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -57,9 +57,12 @@ def main(argv=None) -> int:
|
||||
if "--self-test" in argv:
|
||||
return _self_test()
|
||||
|
||||
from gui_v6.logging_setup import setup_file_logging
|
||||
try:
|
||||
from gui_v6.logging_setup import setup_file_logging
|
||||
|
||||
setup_file_logging()
|
||||
setup_file_logging()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
from gui_v6.app import AnonymisationApp
|
||||
from gui_v6.single_instance import AlreadyRunningError, SingleInstance
|
||||
|
||||
@@ -130,10 +130,11 @@ class RunSummary:
|
||||
|
||||
|
||||
def _default_process_fn(doc_path: Path, out_dir: Path) -> dict:
|
||||
# Import paresseux : aucun manager NER chargé à l'import du runner.
|
||||
from anonymizer_core_refactored_onnx import process_document
|
||||
# Passe par make_process_fn pour bénéficier du fail-close P0-1 (refus si le
|
||||
# NER obligatoire est indisponible), même sur ce chemin de repli.
|
||||
from gui_v6.engine_bridge import EngineSettings, make_process_fn
|
||||
|
||||
return process_document(doc_path, out_dir)
|
||||
return make_process_fn(EngineSettings())(doc_path, out_dir)
|
||||
|
||||
|
||||
class ProcessingRunner:
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
"""Protection multi-instance de la GUI V6 (P0-7).
|
||||
|
||||
- Windows (frozen) : mutex nommé kernel via ctypes — c'est CE nom que l'installeur
|
||||
Inno détecte (``AppMutex``) pour fermer l'app avant une mise à jour (D8).
|
||||
- Windows (frozen) : mutex nommé kernel via ctypes — ce nom DEVRA être déclaré comme
|
||||
``AppMutex`` dans installer/Anonymisation.iss (Plan 3 / D8) pour que l'installeur
|
||||
ferme l'app avant une mise à jour.
|
||||
- POSIX (dev/test) : verrou ``fcntl`` exclusif sur un fichier dans le dossier app.
|
||||
"""
|
||||
|
||||
@@ -11,7 +12,7 @@ import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Nom partagé avec installer/Anonymisation.iss (AppMutex). NE PAS modifier seul.
|
||||
# Nom destiné à l'AppMutex de installer/Anonymisation.iss (Plan 3 / D8). NE PAS modifier sans synchroniser le .iss.
|
||||
APP_MUTEX_NAME = "AivanonymAnonymisationV6"
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from gui_v6.single_instance import (
|
||||
|
||||
|
||||
def test_mutex_name_is_stable():
|
||||
# Nom partagé avec l'installeur (Inno AppMutex). Ne pas changer sans MAJ .iss.
|
||||
# Nom destiné à l'installeur (Inno AppMutex, Plan 3). Sentinelle anti-renommage accidentel.
|
||||
assert APP_MUTEX_NAME == "AivanonymAnonymisationV6"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user