Järjestelmäarkkitehtuuri & Liiketoiminta-alusta
Täysiverinen autoalan yritysalusta toteutettuna Symfony 6:lla, Doctrine ORM:llä ja EasyAdmin 4:llä. Yhdistää korkean konversion julkisen portaalin, AJAX-vaihtoautohakukoneen, roolipohjaisen hallinnan (RBAC) ja mobiilisovellusten REST-rajapinnat.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Garage Vincent Parrot — Architecture Dual-Tier │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
🚗 Moteur Véhicules & AJAX 👥 Back-Office RBAC 📡 API REST Headless
• noUiSlider (Prix, Km, Année) • EasyAdmin 4 Dashboard • Serializer JMS Groups
• Dropdowns dépendants BDD • Isolation ROLE_ADMIN/EMP • Endpoints paginés (/api)
• Rendu partiel JSON/Twig • Modération avis clients • Support Mobile & Cross-App
• VichUploader multi-photos • Gestion horaires & services • Sécurité CORS & CSRF
AJAX-hakukone
Dynaaminen monikriteerinen ajoneuvohaku noUiSliderilla ilman sivun uudelleenlatausta.
Roolipohjainen pääsynhallinta (RBAC)
Tiukka oikeuksien erottelu korjaamon omistajan ja henkilökunnan välillä.
Itsenäinen REST API
Turvalliset JSON-rajapinnat, jotka syöttävät tietoa Flutter-mobiilisovellukselle ja ulkoisille järjestelmille.
1. Julkisen portaalin ominaisuudet
Suunniteltu esittelemään korjaamon osaamista ja kääntämään kävijät tarjouspyynnöiksi:
Korjaamopalveluiden CMS
Yksilöity korjaamopalveluiden esittely (mekaniikka, peltityöt, määräaikaishuollot, ilmastointi) VichUploader-kuvanhallinnalla.
Vaihtoautojen varastoluettelo
Yksityiskohtaiset ajoneuvosivut (/occasions/vehicule/{id}) kuvakarusellilla, varustelistoilla ja esitäytetyillä lomakkeilla.
Asiakasarviot & Moderointi
5 tähden arviointijärjestelmä roskapostisuojauksella ja henkilökunnan esitarkastuksella ennen julkaisua.
Dynaamiset aukioloajat
Oma Twig-laajennus (HoraireExtension), joka näyttää automaattisesti aina ajantasaiset aukioloajat sivuston alatunnisteessa.
2. Asynkroninen AJAX-monikriteerisuodatin
Tarkennettu haku yhdistää SearchData-, SearchForm-, VehiculeRepository::findSearch() -kokonaisuuden ja asynkronisen JavaScript-ohjaimen:
| Hakukriteeri |
Käyttöliittymäelementti |
Doctrine DQL -kysely |
| Hintahaarukka |
Dual-handle noUiSlider |
p.prix >= :prixmin AND p.prix <= :prixmax |
| Kilometrimäärä |
Dual-handle noUiSlider |
p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax |
| Käyttöönottovuosi |
Dual-handle noUiSlider (1970 - 2026) |
p.annee >= :anneemin AND p.annee <= :anneemax |
| Merkki & Malli |
Dynaamisesti ketjutetut pudotusvalikot (/modeles/fetch) |
m.id IN (:marque) AND d.id IN (:modele) |
| Korimalli, Polttoaine & Luokka |
Checkboxes (Carrosserie, Énergie) |
t.id IN (:type), a.id IN (:carburant) |
// Rendu partiel asynchrone JSON dans OccasionsController.php
if ($request->get('ajax')) {
return new JsonResponse([
'content' => $this->renderView('occasions/_occasions.html.twig', ['occasions' => $occasions]),
'sorting' => $this->renderView('occasions/_sorting.html.twig', ['occasions' => $occasions]),
'pagination' => $this->renderView('occasions/_pagination.html.twig', ['occasions' => $occasions]),
'prixmin' => $prixmin, 'prixmax' => $prixmax,
'kmmin' => $kmmin, 'kmmax' => $kmmax,
'anneemin' => $anneemin,'anneemax'=> $anneemax
]);
}
3. Roolipohjainen pääsynhallinta (RBAC)
Käyttöoikeuksien ja hallintanäkymien hallinta EasyAdminin ja Symfony Security -palomuurien kautta:
ROLE_ADMIN
Ylläpitäjä (Vincent Parrot)
- Työntekijätilien hallinta (luonti, salasanan palautus tiukoilla monimutkaisuusvaatimuksilla).
- Korjaamopalveluiden, tekstien ja kuvien täysi CMS-hallinta.
- Viikoittaisten aukioloaikojen ja loma-aikojen poikkeusten määrittäminen.
- Saapuneiden asiakasyhteydenottojen tarkastelu ja hallinta.
ROLE_EMPLOYE
Korjaamon työntekijät
- Vaihtoautovaraston hallinta (lisäys, useiden kuvien lataus, varustelistan määritys).
- Kirjautuneen työntekijän automaattinen liittäminen ilmoituksen tekijäksi tallennusvaiheessa.
- Asiakasarvioiden moderointi (aitojen arvioiden hyväksyntä tai roskapostin hylkäys).
- Käyttöoikeustason nostaminen ylläpitäjäksi on estetty.
4. Headless REST API -rajapinnat
Turvalliset JSON-rajapinnat mobiilisovellukselle ja ulkoisille järjestelmille:
| Method |
Endpoint URL |
Toiminto |
JSON-vastausrakenne |
| GET |
/api/vehicules |
Koko myynnissä olevan ajoneuvovaraston haku |
JSON Array (JMS getVehicules group) |
| GET |
/api/vehiculesby?page={n} |
Sivutettu ajoneuvolistaus sujuvaan selaamiseen |
{ data: [...], pagination: { ... } } |
| GET |
/api/vehicules/{id} |
Yksittäisen ajoneuvon täydet tekniset tiedot ja kuvagalleria |
JSON Object (Véhicule, Galerie, Options) |
| GET |
/api/marques-modeles |
Kaikkien saatavilla olevien automerkkien ja mallien hierarkia |
[{ id, nom, modeles: [{ id, nom }] }] |
| POST |
/api/contact |
Asiakasyhteydenoton lähetys ja automaattinen sähköposti-ilmoitus |
{ status: "success" } (HTTP 201) |
5. Tietomalli & Doctrine-relaatiot
Normalisoitu relaatioskeema viite-eheyksillä MySQL-tietokannassa:
Vehicule & Mediatietokanta
OneToMany-kaskadi VehiculeImage-entiteettiin monikuvaustuelle ja ManyToMany-kytkös Employes-tauluun.
Automalliluokittelu
Normalisoidut entiteetit Marque, Modele, Carburant (bensiini, diesel, hybridi, sähkö), Categorie ja Type.
Toiminta & Yhteydenotot
Omat entiteetit kohteille Service, Horaire, Temoignage (hyväksymislipulla) ja Contact.
6. SEO-arkkitehtuuri & Suorituskyky
Paikallinen SEO & Rakenteinen data
Schema.org-merkinnät AutoRepair- ja Product/Car-tietotyypeille, Toulousen alueelle kohdistettu avainsanarakenne ja kanoniset URL-osoitteet.
Suorituskyky & Osittainen renderöinti
Asynkroninen osittainen AJAX-renderöinti tiedonsiirron minimoimiseksi suodatuksen aikana, kuvaoptimointi ja CSRF-suojaus kaikissa lomakkeissa.
Tutustu verkkopalveluun
Selaa vaihtoautovalikoimaa ja testaa reaaliaikaista hakusuodatinta suoraan verkossa.
Avaa autoliikkeen sivusto ↗