Files
logisticsAPI/memory-bank/systemPatterns.md
2026-02-20 08:40:00 +01:00

3.0 KiB

System Patterns

Derniere mise a jour : 2026-02-19

Architecture applicative

Utilisateur --> Filament Dashboard (/admin)
                    |
                    v
              Pages Filament (Livewire)
                    |
                    v
              LogisticsService (app/Services/)
                    |
                    +---> API Logistics (HTTP POST + X-API-KEY)
                    |
                    +---> api_request_logs (MySQL)

Patterns utilises

Service centralise

App\Services\LogisticsService encapsule tous les appels HTTP vers l'API Logistics. Chaque methode publique correspond a un endpoint. Le service :

  • Construit l'URL a partir de config('logistics.base_url'), config('logistics.folder') et le nom de l'endpoint.
  • Ajoute automatiquement le header X-API-KEY.
  • Enregistre chaque requete dans la table api_request_logs.
  • Retourne un tableau PHP avec les cles data, metadata, error.

Pages Filament personnalisees (pas de Resources)

L'application n'utilise pas de Resources Filament (pas de CRUD local). Chaque page Filament :

  • Etend Filament\Pages\Page.
  • Utilise des proprietes Livewire publiques pour les champs de formulaire.
  • Appelle LogisticsService via app(LogisticsService::class) dans des methodes d'action (ex: searchArticles()).
  • Affiche les resultats dans des tableaux HTML dynamiques generes dans les vues Blade.

Configuration externalisee

Les parametres de connexion a l'API sont dans config/logistics.php et lus depuis .env.

Structure des repertoires

app/
  Filament/
    Pages/
      Articles.php          # Recherche articles + stock
      Documents.php         # Recherche documents + detail
      Journaux.php          # Recherche journaux
      TablesExplorer.php    # Exploration tables + colonnes
      Tiers.php             # Recherche tiers + historique
  Models/
    User.php                # Modele utilisateur (Fortify)
  Providers/
    Filament/
      AdminPanelProvider.php  # Configuration du panel (sans auth)
  Services/
    LogisticsService.php    # Service centralise API Logistics

config/
  logistics.php             # Configuration API Logistics

database/
  migrations/
    ...create_users_table.php
    ...create_cache_table.php
    ...create_jobs_table.php
    ...add_two_factor_columns_to_users_table.php
    ...create_api_request_logs_table.php

resources/views/
  filament/pages/
    articles.blade.php
    documents.blade.php
    journaux.blade.php
    tables-explorer.blade.php
    tiers.blade.php

tests/Feature/
  LogisticsServiceTest.php  # 8 tests avec mocks HTTP

Conventions

  • Filament v5 : les icones de navigation utilisent l'enum Filament\Support\Icons\Heroicon (pas de strings).
  • Filament v5 : la propriete $view est non-static (protected string $view).
  • Les proprietes statiques ($navigationIcon, $navigationLabel, $title, $navigationSort) restent static.
  • Les appels API passent toujours par LogisticsService, jamais directement par Http::.