feat(commercial) : géolocalisation des adresses Tiers (lat/lng + géocodage BAN + pin ajustable) (ERP-122)
Ajoute la géolocalisation aux adresses Client et Fournisseur, socle de la tournée commerciale (M6 field-sales). Back : - migration : latitude/longitude NUMERIC(10,7), geo_manual BOOLEAN, geocoded_at TIMESTAMPTZ sur client_address et supplier_address (+ COMMENT ON COLUMN FR) - GeolocatableAddressInterface (Shared/Domain/Contract) implémenté par les deux entités ; bornes WGS84 validées (Range -90/90, -180/180, messages FR) - GeocoderInterface + BanGeocoder (api-adresse.data.gouv.fr), branché via AddressGeocoder dans les processors ; géocodage auto au create/update - RG-6.08 : geo_manual=true fige les coordonnées (pas de réécriture auto) - symfony/http-client passe en dépendance de production Front : - AddressGeoPin (Leaflet + OSM) : marqueur déplaçable -> PATCH lat/lng + geoManual=true, bouton Re-géocoder, badges « à géolocaliser » / « pin manuel » - intégration dans les blocs adresse Client et Fournisseur Tests : PHPUnit (géocodage create, non-réécriture RG-6.08, mapping BAN, bornes) + Vitest (drag du pin, badges, re-géocodage).
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Tests\Fixtures\Geocoding;
|
||||
|
||||
use App\Shared\Domain\Contract\GeocoderInterface;
|
||||
use App\Shared\Domain\ValueObject\Coordinates;
|
||||
|
||||
/**
|
||||
* Geocodeur en memoire branche a la place de BanGeocoder en env test
|
||||
* (alias when@test de config/services.yaml) : deterministe, sans reseau.
|
||||
*
|
||||
* Renvoie toujours les memes coordonnees (Poitiers) — suffisant pour verifier
|
||||
* le geocodage au create/update et la RG-6.08 (les tests posent un pin manuel
|
||||
* a des coordonnees DIFFERENTES pour detecter une reecriture indue).
|
||||
*/
|
||||
final class InMemoryGeocoder implements GeocoderInterface
|
||||
{
|
||||
public const string LATITUDE = '46.5802596';
|
||||
public const string LONGITUDE = '0.3404333';
|
||||
|
||||
public function geocode(string $address): ?Coordinates
|
||||
{
|
||||
if ('' === trim($address)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Coordinates(self::LATITUDE, self::LONGITUDE);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user