fix(gui): clarifier aide et disponibilite moteurs
Passe theme clair, libelles utilisateur, aides conteneurs, recherche de mise a jour et indication honnete des moteurs optionnels non embarques. Tests GUI unitaires: 126 passed.
This commit is contained in:
@@ -4,6 +4,7 @@ Contrat final aligné sur le portail ``app_aivanov`` :
|
||||
|
||||
- ``activate(token, machine_id)`` → ``POST /api/v1/activate``
|
||||
- ``check(license_ref, machine_id)`` → ``POST /api/v1/check``
|
||||
- ``latest_version()`` → ``GET /api/v1/version``
|
||||
|
||||
Principes :
|
||||
|
||||
@@ -44,6 +45,8 @@ class _HttpResponse(Protocol):
|
||||
class _HttpSession(Protocol):
|
||||
def post(self, url: str, json: dict, timeout: float) -> _HttpResponse: ...
|
||||
|
||||
def get(self, url: str, timeout: float) -> _HttpResponse: ...
|
||||
|
||||
|
||||
@dataclass
|
||||
class LicenseStatus:
|
||||
@@ -138,6 +141,13 @@ class LicenseClient:
|
||||
# Réseau indisponible, DNS, timeout, requests absent… : pas de crash.
|
||||
return None
|
||||
|
||||
def _get(self, endpoint: str) -> Optional[_HttpResponse]:
|
||||
try:
|
||||
session = self._get_session()
|
||||
return session.get(f"{self._base_url}{endpoint}", timeout=self._timeout)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def _parse(response: Optional[_HttpResponse]) -> Optional[dict]:
|
||||
if response is None:
|
||||
@@ -187,6 +197,14 @@ class LicenseClient:
|
||||
self._store.save(payload)
|
||||
return status
|
||||
|
||||
def latest_version(self) -> Optional[dict[str, Any]]:
|
||||
"""Retourne les métadonnées de la version active publiée sur le portail."""
|
||||
response = self._get("/api/v1/version")
|
||||
if response is None or getattr(response, "status_code", 500) >= 400:
|
||||
return None
|
||||
payload = self._parse(response)
|
||||
return payload if payload is not None else None
|
||||
|
||||
def local_status(self) -> LicenseStatus:
|
||||
"""État de licence depuis le stockage local, sans appel réseau."""
|
||||
data = self._store.load()
|
||||
|
||||
Reference in New Issue
Block a user