← プロジェクトに戻る ウェブアプリケーション・自動車

V. Parrot Garage

高度なフィルター、車両詳細、画像管理機能を備えた車両カタログ。

V. Parrot Garage
プロジェクト

プロジェクト

V. Parrot は、車両カタログ、高度なフィルター、構造化データ、画像管理機能を備えた、よりアプリケーション指向の Symfony アーキテクチャを実証しています。

システムアーキテクチャ & 自動車業務プラットフォーム

Symfony 6、Doctrine ORM、EasyAdmin 4で構築されたフルスタック自動車業務プラットフォーム。成約率を高めるショールームWebサイト、AJAX中古車検索エンジン、ロールベース管理画面(RBAC)、モバイルアプリ向けREST APIを統合。

┌─────────────────────────────────────────────────────────────────────────────┐
│               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検索エンジン

ページリロード不要のnoUiSliderによる動的マルチ条件車両検索。

ロールベースアクセス制御

自動車整備工場の管理者と従業員の間での厳格な権限分離。

疎結合REST API

Flutterモバイルアプリや外部連携システムを支えるセキュアなJSONエンドポイント。

1. 公開ポータル機能

整備工場の技術力をアピールし、成約につながる問い合わせを獲得するための機能群:

整備サービスCMS

修理・メンテナンス(一般整備、板金塗装、定期点検、エアコン整備)の詳細一覧とVichUploaderによる写真管理。

中古車在庫カタログ

カルーセル画像、詳細なスペックバッジ、車両情報が自動連動する問い合わせフォームを備えた車両個別ページ (/occasions/vehicule/{id})。

顧客レビュー & 承認システム

スパムを防ぎ、従業員の事前承認を経て公開される5つ星評価付きのレビュー投稿機能。

営業時間リアルタイム表示

管理画面で設定された最新の営業スケジュールをフッターへ自動挿入するカスタムTwig拡張(HoraireExtension)。

2. AJAXマルチ条件フィルターエンジン

SearchData、SearchForm、VehiculeRepository::findSearch()、非同期JavaScriptコントローラーを組み合わせた高度なファセット検索:

検索条件 UIコンポーネント Doctrine DQLクエリ
価格帯 Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
走行距離 Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
年式 Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
メーカー & モデル 動的連動型ドロップダウンメニュー (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
ボディタイプ、燃料、カテゴリー 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. ロールベースアクセス制御 (RBAC)

EasyAdminとSymfony Securityファイアウォールによる厳格な権限管理:

ROLE_ADMIN 管理者 (Vincent Parrot)

  • 従業員アカウントの管理(登録、複雑性ポリシーに準拠したパスワードリセット)。
  • 工場サービス内容、説明文、画像アセットの完全なCMS管理。
  • 週間営業時間の設定および休業日・祝日の管理。
  • 受信した顧客からの問い合わせ内容の確認および削除。

ROLE_EMPLOYE 工場スタッフ・従業員

  • 中古車在庫の管理(新規登録、複数写真アップロード、装備オプション設定)。
  • DB保存時にログイン中の従業員を作成者として自動関連付け。
  • 顧客レビューの審査(正当なレビューの承認、またはスパムの却下)。
  • 自身の権限を管理者へ昇格させる操作の完全制限。

4. ヘッドレストREST APIエンドポイント

モバイルアプリや外部連携ツール向けのセキュアなJSONエンドポイント:

Method Endpoint URL 操作概要 JSONレスポンス形式
GET /api/vehicules 販売中の全車両在庫リストを取得 JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} スムーズな読み込みのためのページ分割された車両一覧 { data: [...], pagination: { ... } }
GET /api/vehicules/{id} 指定IDの車両詳細スペックおよび画像ギャラリー JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles メーカーおよび関連モデルの完全な階層データ [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact 自動通知メール送信を伴う顧客問い合わせの登録 { status: "success" } (HTTP 201)

5. データモデル & Doctrineリレーション

MySQL上で外部キー制約を徹底した正規化リレーショナルスキーマ:

Vehicule & 画像エンティティ

複数写真を管理するVehiculeImageへのOneToManyカスケードと、EmployesへのManyToMany連携。

自動車データマスター

Marque、Modele、Carburant(ガソリン、ディーゼル、ハイブリッド、EV)、Categorie、Typeの正規化。

業務運用 & 問い合わせ

Service、Horaire、Temoignage(ブール値の承認フラグ付き)、Contactの専用エンティティ。

6. SEOアーキテクチャ & パフォーマンス

ローカルSEO & 構造化データ

AutoRepairおよびProduct/Car向けのSchema.orgマークアップ、トゥールーズ地域を狙ったキーワード設計、クリーンなURL。

パフォーマンス & 部分描画

検索時のデータ転送量を抑えるAJAX部分HTML/JSONレンダリング、VichUploaderによる画像最適化、全フォームでのCSRF保護。

実際のプラットフォームを見る

中古車在庫カタログとAJAXリアルタイム検索フィルターをお試しください。

工場のWebサイトを見る ↗