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:
|
if "--self-test" in argv:
|
||||||
return _self_test()
|
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.app import AnonymisationApp
|
||||||
from gui_v6.single_instance import AlreadyRunningError, SingleInstance
|
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:
|
def _default_process_fn(doc_path: Path, out_dir: Path) -> dict:
|
||||||
# Import paresseux : aucun manager NER chargé à l'import du runner.
|
# Passe par make_process_fn pour bénéficier du fail-close P0-1 (refus si le
|
||||||
from anonymizer_core_refactored_onnx import process_document
|
# 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:
|
class ProcessingRunner:
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
"""Protection multi-instance de la GUI V6 (P0-7).
|
"""Protection multi-instance de la GUI V6 (P0-7).
|
||||||
|
|
||||||
- Windows (frozen) : mutex nommé kernel via ctypes — c'est CE nom que l'installeur
|
- Windows (frozen) : mutex nommé kernel via ctypes — ce nom DEVRA être déclaré comme
|
||||||
Inno détecte (``AppMutex``) pour fermer l'app avant une mise à jour (D8).
|
``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.
|
- POSIX (dev/test) : verrou ``fcntl`` exclusif sur un fichier dans le dossier app.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -11,7 +12,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
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"
|
APP_MUTEX_NAME = "AivanonymAnonymisationV6"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from gui_v6.single_instance import (
|
|||||||
|
|
||||||
|
|
||||||
def test_mutex_name_is_stable():
|
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"
|
assert APP_MUTEX_NAME == "AivanonymAnonymisationV6"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user