f8f7571cc0
- RouteEngineInterface (computeMatrix/optimizeOrder/estimateLegDurations) + HaversineRouteEngine V1 (vitesse moyenne parametrable, plus proche voisin)
- TourRouteCalculator : resolution coords, ETA (RG-6.11), exclusion sans coords (RG-6.05), totaux ; optimize = reorder + recompute
- Endpoints API Platform POST /tours/{id}/compute, /optimize, /duplicate (TourDuplicator, RG-6.13) + Processors, security manage
- Feuille de route PDF GET /tours/{id}/roadbook.pdf (Dompdf + Twig) via PdfRendererInterface (Shared), controller priority:1, security view
- TierAddressResolver etendu (coords + location DBAL)
- Tests : HaversineRouteEngine (unit), compute/optimize/duplicate/roadbook (API)
32 lines
1.1 KiB
PHP
32 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Shared\Domain\Contract;
|
|
|
|
/**
|
|
* Contrat de rendu d'un document HTML en PDF binaire.
|
|
*
|
|
* Service GENERIQUE et reutilisable : il ne connait aucune entite metier. Le
|
|
* module appelant decide QUOI mettre dans le document (HTML deja rendu, ex: via
|
|
* Twig) ; cette interface decrit seulement COMMENT produire le binaire PDF. On
|
|
* depend de ce contrat (dans Shared), jamais de l'implementation concrete (regle
|
|
* ABSOLUE n°1).
|
|
*
|
|
* Implementee par App\Shared\Infrastructure\Pdf\DompdfRenderer (non referencee
|
|
* via @see pour ne pas creer d'import Domain -> Infra).
|
|
*/
|
|
interface PdfRendererInterface
|
|
{
|
|
/**
|
|
* Rend un fragment HTML complet en PDF et retourne son contenu binaire.
|
|
*
|
|
* @param string $html document HTML (avec ses styles CSS inline / <style>)
|
|
* @param string $paperSize format papier (ex: 'A4', 'Letter')
|
|
* @param string $orientation 'portrait' ou 'landscape'
|
|
*
|
|
* @return string contenu binaire du fichier PDF
|
|
*/
|
|
public function renderHtml(string $html, string $paperSize = 'A4', string $orientation = 'portrait'): string;
|
|
}
|