🎉 First commit
This commit is contained in:
92
memory-bank/systemPatterns.md
Normal file
92
memory-bank/systemPatterns.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# 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::`.
|
||||
Reference in New Issue
Block a user