BCard - Documentation technique

ScanController extends AbstractController
in package

Scan de cartes de visite et création de contacts.

Deux modes de scan sont pris en charge :

  • RG1 : carte papier photographiée, analysée par IA pour en extraire les coordonnées ;
  • RG2 : QR code d'une carte BCard, résolu par hash public (ou identifiant numérique legacy).

Dans les deux cas, un Contact est créé pour l'utilisateur connecté, après contrôle d'unicité sur l'adresse e-mail.

Préfixe de route : /scan. Authentification requise (IS_AUTHENTICATED).

Attributes
#[IsGranted]
'IS_AUTHENTICATED'
#[Route]
'/scan'

Table of Contents

Properties

$aiAnalysisService  : AIAnalysisService
$businessCardAizeRepository  : BusinessCardAizeRepository
$contactRepository  : ContactRepository
$entityManager  : EntityManagerInterface
$logger  : LoggerInterface
$uploaderService  : UploaderService

Methods

__construct()  : mixed
handlePaperCardScan()  : Response
Analyse la photo d'une carte de visite papier et enregistre le contact extrait.
scanCard()  : Response
Affiche le formulaire de scan et aiguille le traitement selon le type de scan.
extractBCardIdFromData()  : int|null
Extrait l'identifiant BCard des données de formulaire.
handleBCardScan()  : Response
Importe un contact à partir du QR code d'une carte BCard.

Properties

$entityManager read-only

private EntityManagerInterface $entityManager

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, UploaderService $uploaderService, ContactRepository $contactRepository, BusinessCardAizeRepository $businessCardAizeRepository, AIAnalysisService $aiAnalysisService, LoggerInterface $logger) : mixed
Parameters
$entityManager : EntityManagerInterface

Gestionnaire d'entités Doctrine.

$uploaderService : UploaderService

Upload et stockage des photos de carte.

$contactRepository : ContactRepository

Accès aux contacts de l'utilisateur.

$businessCardAizeRepository : BusinessCardAizeRepository

Accès aux cartes BCard.

$aiAnalysisService : AIAnalysisService

Analyse IA des cartes papier.

$logger : LoggerInterface

Journalisation des erreurs d'analyse.

handlePaperCardScan()

Analyse la photo d'une carte de visite papier et enregistre le contact extrait.

public handlePaperCardScan(Request $request) : Response

La photo est soumise à l'IA (AIAnalysisService), les coordonnées extraites sont contrôlées contre les contacts existants (unicité de l'e-mail), puis le contact est persisté avec la photo uploadée. Les champs absents sont remplis avec « Non spécifié » ; l'adresse, la ville, le code postal, le pays et le site web sont concaténés dans la note du contact.

Route : /scan/card/paper-scan (POST), nom app_card_paper_scan.

Parameters
$request : Request

Requête contenant le fichier photo.

Attributes
#[Route]
'/card/paper-scan'
$name: 'app_card_paper_scan'
$methods: ['POST']
Return values
Response

Réponse JSON : success, message, éventuellement messageType et redirect_url. Statut 400 si la photo est absente, invalide, illisible par l'IA, ou si le contact existe déjà.

scanCard()

Affiche le formulaire de scan et aiguille le traitement selon le type de scan.

public scanCard(Request $request) : Response

En GET, rend la page de scan. En POST, délègue à self::handlePaperCardScan() pour une carte papier (scan_type = paper) ou à handleBCardScan() pour un QR code BCard (scan_type = bcard).

Route : /scan/card (GET, POST), nom app_scan_card.

Parameters
$request : Request

Requête contenant scan_type, activity_sector, country, note et bcard_identifier.

Attributes
#[Route]
'/card'
$name: 'app_scan_card'
$methods: ['GET', 'POST']
Return values
Response

Réponse JSON pour un scan papier, redirection pour un scan BCard, ou page HTML de scan sinon.

extractBCardIdFromData()

Extrait l'identifiant BCard des données de formulaire.

private extractBCardIdFromData(array<string, mixed> $data) : int|null

La méthode extractBCardIdFromData n'est plus utilisée directement, l'extraction se fait maintenant via handleBCardScan qui gère Hash et ID.

Parameters
$data : array<string, mixed>

Données du formulaire de scan.

Return values
int|null

Toujours null : l'implémentation a été vidée.

handleBCardScan()

Importe un contact à partir du QR code d'une carte BCard.

private handleBCardScan(array<string, mixed> $data) : Response

L'identifiant est résolu d'abord par publicHash, puis — en repli et uniquement s'il est numérique et de longueur inférieure à 20 — par identifiant primaire (compatibilité avec les anciens QR codes). Le contact n'est créé que si son e-mail n'est pas déjà présent dans le réseau de l'utilisateur.

Parameters
$data : array<string, mixed>

Données du formulaire : bcard_identifier, activity_sector, country.

Return values
Response

Redirection vers la liste des contacts en cas de succès, vers la page de scan sinon (message flash d'erreur).


        
On this page

Search results