diff --git a/apps/frontend/app/dashboard/layout.tsx b/apps/frontend/app/dashboard/layout.tsx
index 97653c0..9fae45f 100644
--- a/apps/frontend/app/dashboard/layout.tsx
+++ b/apps/frontend/app/dashboard/layout.tsx
@@ -25,6 +25,7 @@ export default function DashboardLayout({ children }: { children: React.ReactNod
{ name: 'Dashboard', href: '/dashboard', icon: '📊' },
{ name: 'Bookings', href: '/dashboard/bookings', icon: '📦' },
{ name: 'Documents', href: '/dashboard/documents', icon: '📄' },
+ { name: 'Wiki', href: '/dashboard/wiki', icon: '📚' },
{ name: 'My Profile', href: '/dashboard/profile', icon: '👤' },
{ name: 'Organization', href: '/dashboard/settings/organization', icon: '🏢' },
// ADMIN and MANAGER only navigation items
diff --git a/apps/frontend/app/dashboard/wiki/assurance/page.tsx b/apps/frontend/app/dashboard/wiki/assurance/page.tsx
new file mode 100644
index 0000000..a9c7a8c
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/assurance/page.tsx
@@ -0,0 +1,210 @@
+/**
+ * Assurance Maritime - Wiki Page
+ *
+ * Protection des marchandises en transit
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const clausesICC = [
+ {
+ code: 'ICC A',
+ name: 'All Risks',
+ coverage: 'Tous risques',
+ description: 'Couverture la plus complète. Couvre tous les risques de perte ou dommage sauf exclusions spécifiques.',
+ includes: ['Vol', 'Casse', 'Mouille', 'Manquants', 'Chute', 'Écrasement'],
+ excludes: ['Vice propre', 'Emballage insuffisant', 'Guerre', 'Grèves'],
+ recommended: true,
+ },
+ {
+ code: 'ICC B',
+ name: 'With Average',
+ coverage: 'Risques majeurs',
+ description: 'Couverture intermédiaire incluant les événements majeurs de transport.',
+ includes: ['Incendie', 'Naufrage', 'Échouement', 'Collision', 'Jet à la mer', 'Avarie commune'],
+ excludes: ['Vol', 'Mouille', 'Manquants (hors avarie commune)', 'Casse isolée'],
+ recommended: false,
+ },
+ {
+ code: 'ICC C',
+ name: 'Free of Particular Average',
+ coverage: 'Risques minimaux',
+ description: 'Couverture de base pour les sinistres majeurs uniquement.',
+ includes: ['Incendie', 'Naufrage', 'Échouement', 'Collision', 'Avarie commune'],
+ excludes: ['Vol', 'Mouille', 'Casse', 'Manquants', 'Perte partielle'],
+ recommended: false,
+ },
+];
+
+const extensionsGaranties = [
+ { name: 'Guerre et grèves', description: 'Extension pour couvrir les risques de guerre, grèves, émeutes.' },
+ { name: 'Magasin à magasin', description: 'Couverture étendue incluant les phases de stockage.' },
+ { name: 'Frais de réexpédition', description: 'Couvre les frais en cas de changement de destination.' },
+ { name: 'Pertes financières', description: 'Perte de marge, frais supplémentaires liés au sinistre.' },
+ { name: 'Transport frigorifique', description: 'Risques spécifiques liés au froid (panne, variation).' },
+];
+
+export default function AssurancePage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 🛡️
+
Assurance Maritime (Cargo Insurance)
+
+
+ L'assurance transport maritime protège les marchandises contre les risques de perte ou de dommage
+ pendant le transit. Elle est régie par les Institute Cargo Clauses (ICC) de l'Institute of London Underwriters.
+
+
+
+ {/* Why insure */}
+
+
+
Pourquoi s'assurer ?
+
+
Responsabilité limitée du transporteur : Maximum ~2 DTS/kg (Convention de Bruxelles)
+
Délai de réclamation court : 3 jours pour les réserves au transporteur
+
Preuves difficiles : Charge de la preuve souvent sur l'expéditeur
+
Exigence bancaire : Souvent requise pour les lettres de crédit (CIF, CIP)
Coût + Assurance + Fret jusqu'au port de destination
+
+
+
+ 10%
+
Majoration standard pour couvrir le profit espéré
+
+
+
Taux de prime
+
0.1% à 1% selon marchandise, trajet, clause
+
+
+
+
+
+
+ {/* Extensions */}
+
+
➕ Extensions de Garantie
+
+ {extensionsGaranties.map((ext) => (
+
+
+
{ext.name}
+
{ext.description}
+
+
+ ))}
+
+
+
+ {/* Process */}
+
+
+
📝 En Cas de Sinistre
+
+
Constater : Émettre des réserves précises sur le bon de livraison
+
Préserver : Ne pas modifier l'état des marchandises (photos, témoins)
+
Notifier : Informer l'assureur sous 5 jours ouvrés
+
Documenter : Rassembler tous les documents (B/L, facture, expertise)
+
Réclamer : Déposer une réclamation formelle avec justificatifs
+
+
+
+
+ {/* Tips */}
+
+
+
💡 Conseils Pratiques
+
+
Toujours opter pour ICC A (All Risks) sauf marchandises très résistantes
+
Vérifier les exclusions et souscrire les extensions nécessaires
+
Photographier la marchandise avant expédition
+
Conserver tous les documents originaux
+
Ne jamais signer "reçu conforme" sans avoir vérifié
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx b/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx
new file mode 100644
index 0000000..f9c01bc
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx
@@ -0,0 +1,269 @@
+/**
+ * Calcul du Fret Maritime - Wiki Page
+ *
+ * Comment sont calculés les coûts de transport
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const surcharges = [
+ {
+ code: 'BAF',
+ name: 'Bunker Adjustment Factor',
+ description: 'Surcharge carburant liée aux fluctuations du prix du fuel maritime.',
+ variation: 'Mensuelle',
+ },
+ {
+ code: 'CAF',
+ name: 'Currency Adjustment Factor',
+ description: 'Ajustement monétaire pour compenser les variations de taux de change.',
+ variation: 'Mensuelle',
+ },
+ {
+ code: 'THC',
+ name: 'Terminal Handling Charges',
+ description: 'Frais de manutention au terminal portuaire (chargement/déchargement).',
+ variation: 'Par port',
+ },
+ {
+ code: 'ISPS',
+ name: 'International Ship & Port Security',
+ description: 'Surcharge sécurité conforme au code ISPS (post 11 septembre).',
+ variation: 'Fixe',
+ },
+ {
+ code: 'LSS',
+ name: 'Low Sulphur Surcharge',
+ description: 'Surcharge carburant bas soufre (réglementation IMO 2020).',
+ variation: 'Mensuelle',
+ },
+ {
+ code: 'PSS',
+ name: 'Peak Season Surcharge',
+ description: 'Surcharge haute saison (généralement août-octobre vers l\'Europe).',
+ variation: 'Saisonnière',
+ },
+ {
+ code: 'GRI',
+ name: 'General Rate Increase',
+ description: 'Augmentation générale des tarifs, généralement annoncée à l\'avance.',
+ variation: 'Variable',
+ },
+ {
+ code: 'EBS',
+ name: 'Emergency Bunker Surcharge',
+ description: 'Surcharge d\'urgence en cas de hausse brutale du carburant.',
+ variation: 'Exceptionnelle',
+ },
+];
+
+const fraisAdditionnels = [
+ { name: 'Documentation Fee', description: 'Frais d\'émission du B/L ou autres documents', typical: '35-75 USD' },
+ { name: 'Seal Fee', description: 'Coût du plomb de sécurité du conteneur', typical: '10-25 USD' },
+ { name: 'VGM Fee', description: 'Frais de certification du poids vérifié', typical: '25-50 USD' },
+ { name: 'Container Cleaning', description: 'Nettoyage du conteneur si requis', typical: '50-150 USD' },
+ { name: 'Customs Clearance', description: 'Frais de dédouanement (honoraires)', typical: '50-200 USD' },
+ { name: 'Inspection Fee', description: 'Frais d\'inspection (scanner, phytosanitaire)', typical: '50-300 USD' },
+];
+
+export default function CalculFretPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 🧮
+
Calcul du Fret Maritime
+
+
+ Le coût du transport maritime se compose du fret de base et de nombreuses surcharges.
+ Comprendre ces éléments est essentiel pour bien estimer ses coûts logistiques.
+
+
+
+ {/* Base Calculation */}
+
+
+
📐 Principes de Base
+
+
+
FCL (Conteneur Complet)
+
+ Prix forfaitaire par conteneur (20', 40', 40'HC), indépendant du poids (dans les limites).
+
+
Ex: 1,500 USD/20' Shanghai → Rotterdam
+
+
+
LCL (Groupage)
+
+ Prix au mètre cube (CBM) ou à la tonne, selon le plus avantageux pour le transporteur.
+
+
Ex: 45 USD/CBM (minimum 1 CBM)
+
+
+
+
+
+ {/* Weight Calculation */}
+
+
+
⚖️ Poids Taxable (LCL)
+
+
+
+ Poids taxable = MAX (Volume CBM × 1000, Poids brut kg)
+
+
+
+
+
+
Exemple 1 : Marchandise légère
+
+
Volume : 2 CBM
+
Poids : 500 kg
+
Volume équivalent : 2 × 1000 = 2000 kg
+
→ Taxé sur 2 CBM (ou 2 tonnes)
+
+
+
+
Exemple 2 : Marchandise lourde
+
+
Volume : 1 CBM
+
Poids : 2000 kg
+
Volume équivalent : 1 × 1000 = 1000 kg
+
→ Taxé sur 2 tonnes (poids réel)
+
+
+
+
+ Ratio standard : 1 CBM = 1 tonne (1000 kg). Certaines compagnies utilisent 1 CBM = 333 kg pour l'aérien.
+
+ Les conteneurs maritimes sont standardisés selon les normes ISO. Comprendre les différents
+ types permet de choisir le conteneur adapté à votre marchandise et d'optimiser les coûts.
+
Un 40' HC offre 30% de volume en plus qu'un 20' mais coûte rarement le double
+
Les Reefer nécessitent une alimentation électrique au port et sur le navire
+
Les conteneurs spéciaux (OT, FR, Tank) ont une disponibilité limitée - réservez à l'avance
+
Vérifiez le poids maximum autorisé sur les routes du pays de destination
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx b/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx
new file mode 100644
index 0000000..416f316
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx
@@ -0,0 +1,249 @@
+/**
+ * Documents de Transport Maritime - Wiki Page
+ *
+ * Essential documents for maritime shipping
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const documents = [
+ {
+ name: 'Bill of Lading (B/L)',
+ french: 'Connaissement',
+ description: 'Document principal du transport maritime. Il fait preuve du contrat de transport, accuse réception des marchandises et constitue un titre de propriété négociable.',
+ types: [
+ { name: 'B/L à ordre', desc: 'Négociable, peut être endossé' },
+ { name: 'B/L nominatif', desc: 'Au nom d\'un destinataire précis' },
+ { name: 'B/L au porteur', desc: 'Propriété à celui qui le détient' },
+ ],
+ importance: 'Critique',
+ icon: '📄',
+ },
+ {
+ name: 'Sea Waybill',
+ french: 'Lettre de transport maritime',
+ description: 'Document non négociable servant de preuve du contrat de transport et de reçu. Plus simple que le B/L car pas besoin de présenter l\'original pour retirer les marchandises.',
+ types: [
+ { name: 'Standard', desc: 'Pour expéditions entre parties de confiance' },
+ { name: 'Express', desc: 'Libération rapide sans documents originaux' },
+ ],
+ importance: 'Important',
+ icon: '📋',
+ },
+ {
+ name: 'Manifest',
+ french: 'Manifeste de cargaison',
+ description: 'Liste complète de toutes les marchandises chargées à bord d\'un navire. Utilisé par les autorités douanières et portuaires.',
+ types: [
+ { name: 'Cargo Manifest', desc: 'Liste détaillée des marchandises' },
+ { name: 'Freight Manifest', desc: 'Inclut les informations de fret' },
+ ],
+ importance: 'Obligatoire',
+ icon: '📑',
+ },
+ {
+ name: 'Packing List',
+ french: 'Liste de colisage',
+ description: 'Document détaillant le contenu de chaque colis, ses dimensions et son poids. Essentiel pour le dédouanement.',
+ types: [
+ { name: 'Simple', desc: 'Liste basique des contenus' },
+ { name: 'Détaillée', desc: 'Avec poids, dimensions, marquage' },
+ ],
+ importance: 'Important',
+ icon: '📦',
+ },
+ {
+ name: 'Commercial Invoice',
+ french: 'Facture commerciale',
+ description: 'Facture établie par le vendeur décrivant les marchandises, leur valeur et les conditions de vente. Base pour le calcul des droits de douane.',
+ types: [
+ { name: 'Proforma', desc: 'Avant expédition, pour cotation' },
+ { name: 'Définitive', desc: 'Document final de facturation' },
+ ],
+ importance: 'Critique',
+ icon: '🧾',
+ },
+ {
+ name: 'Certificate of Origin',
+ french: 'Certificat d\'origine',
+ description: 'Document certifiant le pays de fabrication ou de transformation des marchandises. Requis pour les préférences tarifaires.',
+ types: [
+ { name: 'EUR.1', desc: 'Pour les échanges UE' },
+ { name: 'Form A', desc: 'Système de préférences généralisées' },
+ { name: 'Non préférentiel', desc: 'Attestation simple d\'origine' },
+ ],
+ importance: 'Selon destination',
+ icon: '🏭',
+ },
+];
+
+const additionalDocs = [
+ {
+ name: 'Dangerous Goods Declaration',
+ description: 'Obligatoire pour les marchandises dangereuses (IMDG)',
+ },
+ {
+ name: 'Phytosanitary Certificate',
+ description: 'Pour les produits végétaux et alimentaires',
+ },
+ {
+ name: 'Insurance Certificate',
+ description: 'Preuve de couverture d\'assurance cargo',
+ },
+ {
+ name: 'Inspection Certificate',
+ description: 'Rapport de contrôle qualité avant embarquement',
+ },
+ {
+ name: 'VGM Declaration',
+ description: 'Déclaration du poids vérifié du conteneur (SOLAS)',
+ },
+];
+
+export default function DocumentsTransportPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 📋
+
Documents de Transport Maritime
+
+
+ Le transport maritime international nécessite une documentation précise et complète.
+ Ces documents servent de preuve de propriété, de contrat de transport et sont essentiels
+ pour le passage en douane.
+
+
+
+ {/* Importance Warning */}
+
+
+
Important
+
+ Une erreur ou un manque de document peut entraîner des retards considérables, des frais
+ de surestaries (demurrage) et même le refus d'entrée des marchandises dans le pays de destination.
+
+
+
+
+ {/* Main Documents */}
+
Documents Principaux
+
+ {documents.map((doc) => (
+
+
+
+
+ {doc.icon}
+
+ {doc.name}
+ ({doc.french})
+
+
+
+ {doc.importance}
+
+
+
+
+
{doc.description}
+
+
Types:
+
+ {doc.types.map((type) => (
+
+ {type.name}:
+ {type.desc}
+
+ ))}
+
+
+
+
+ ))}
+
+
+ {/* Bill of Lading Detail */}
+
+
+ Focus: Le Bill of Lading (B/L)
+
+
+
+ Le B/L remplit trois fonctions essentielles:
+
+
+
+
1. Reçu
+
+ Confirme que le transporteur a reçu les marchandises dans l'état décrit
+
+
+
+
2. Contrat
+
+ Preuve du contrat de transport entre le chargeur et le transporteur
+
+
+
+
3. Titre
+
+ Document de titre permettant le transfert de propriété des marchandises
+
+
+
+
+
+
+ {/* Additional Documents */}
+
Documents Complémentaires
+
+
+
+ {additionalDocs.map((doc) => (
+
+ ✓
+
+
{doc.name}
+
{doc.description}
+
+
+ ))}
+
+
+
+
+ {/* Tips */}
+
+
+
Conseils Pratiques
+
+
Vérifiez la cohérence entre tous les documents (noms, adresses, descriptions)
+
Conservez des copies de tous les originaux
+
Anticipez les délais d'obtention des certificats (origine, sanitaire, etc.)
+
En cas de L/C, les documents doivent correspondre exactement aux exigences
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/douanes/page.tsx b/apps/frontend/app/dashboard/wiki/douanes/page.tsx
new file mode 100644
index 0000000..d119438
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/douanes/page.tsx
@@ -0,0 +1,218 @@
+/**
+ * Procédures Douanières - Wiki Page
+ *
+ * Guide des formalités douanières import/export
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const regimesDouaniers = [
+ {
+ code: 'IM4',
+ name: 'Mise en libre pratique',
+ description: 'Importation définitive avec paiement des droits et taxes. La marchandise entre dans le circuit économique.',
+ },
+ {
+ code: 'IM5',
+ name: 'Admission temporaire',
+ description: 'Importation temporaire avec suspension des droits. Pour les marchandises réexportées en l\'état.',
+ },
+ {
+ code: 'IM6',
+ name: 'Perfectionnement actif',
+ description: 'Importation pour transformation et réexportation. Suspension des droits sur les intrants.',
+ },
+ {
+ code: 'IM7',
+ name: 'Entrepôt douanier',
+ description: 'Stockage sous douane sans paiement des droits jusqu\'à la mise en consommation.',
+ },
+ {
+ code: 'EX1',
+ name: 'Exportation définitive',
+ description: 'Sortie définitive des marchandises du territoire douanier.',
+ },
+ {
+ code: 'EX2',
+ name: 'Exportation temporaire',
+ description: 'Sortie temporaire avec réimportation prévue en l\'état.',
+ },
+ {
+ code: 'EX3',
+ name: 'Perfectionnement passif',
+ description: 'Exportation pour transformation à l\'étranger et réimportation.',
+ },
+];
+
+const documentsDouane = [
+ {
+ name: 'DAU (Document Administratif Unique)',
+ description: 'Formulaire standard pour toutes les déclarations douanières dans l\'UE.',
+ obligatoire: true,
+ },
+ {
+ name: 'Facture commerciale',
+ description: 'Document de base indiquant la valeur des marchandises.',
+ obligatoire: true,
+ },
+ {
+ name: 'Liste de colisage',
+ description: 'Détail du contenu de chaque colis (poids, dimensions, contenu).',
+ obligatoire: true,
+ },
+ {
+ name: 'Certificat d\'origine',
+ description: 'Atteste l\'origine des marchandises pour les accords préférentiels.',
+ obligatoire: false,
+ },
+ {
+ name: 'Licence d\'importation/exportation',
+ description: 'Autorisation pour certaines marchandises réglementées.',
+ obligatoire: false,
+ },
+ {
+ name: 'Certificat sanitaire/phytosanitaire',
+ description: 'Pour les produits alimentaires, animaux et végétaux.',
+ obligatoire: false,
+ },
+];
+
+export default function DouanesPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 🛃
+
Procédures Douanières
+
+
+ Les formalités douanières sont obligatoires pour toute marchandise traversant une frontière.
+ Elles permettent le contrôle des échanges, la perception des droits et taxes, et l'application
+ des réglementations commerciales.
+
+
+
+ {/* Key Concepts */}
+
+
+
Concepts Clés
+
+
+
Valeur en douane
+
Base de calcul des droits, généralement la valeur CIF (coût + assurance + fret).
+
+
+
Code SH / NC
+
Classification tarifaire harmonisée des marchandises (6 ou 8 chiffres).
+
+
+
Origine
+
Pays de fabrication ou de transformation substantielle de la marchandise.
+
+
+
OEA (Opérateur Économique Agréé)
+
Statut de confiance accordé par les douanes pour des procédures simplifiées.
+ Le Code IMDG (International Maritime Dangerous Goods) est le référentiel international pour
+ le transport maritime de marchandises dangereuses. Publié par l'OMI, il est mis à jour tous
+ les deux ans et est obligatoire depuis janvier 2004.
+
+
+
+ {/* Key Info */}
+
+
+
⚠️ Responsabilités de l'Expéditeur
+
+
Classer correctement la marchandise selon le Code IMDG
+
Utiliser des emballages homologués UN
+
Étiqueter et marquer conformément aux exigences
+
Remplir la déclaration de marchandises dangereuses (DGD)
+ Chaque matière dangereuse est identifiée par un numéro ONU à 4 chiffres.
+ Ce numéro permet de retrouver toutes les informations dans le Code IMDG.
+
+
+
+
UN 1203
+
Essence
+
+
+
UN 2794
+
Batteries acide/plomb
+
+
+
UN 3481
+
Batteries lithium-ion
+
+
+
+
+
+ {/* Packaging Groups */}
+
+
📦 Groupes d'Emballage
+
+
+
+ {packagingGroups.map((pg) => (
+
+
+ {pg.group}
+
+
+
Groupe {pg.group} - Danger {pg.danger}
+
{pg.description}
+
+
+ ))}
+
+
+
+
+
+ {/* Documents */}
+
+
📄 Documents Requis
+
+
+
+ {documentsRequired.map((doc) => (
+
+
+
+
{doc.name}
+
{doc.description}
+
+
+ ))}
+
+
+
+
+
+ {/* Labeling */}
+
+
+
🏷️ Marquage et Étiquetage
+
+
+
Colis
+
+
• Étiquette(s) de danger (losanges)
+
• Numéro ONU précédé de "UN"
+
• Nom technique de la matière
+
• Marque d'homologation UN de l'emballage
+
+
+
+
Conteneur
+
+
• Plaques-étiquettes (4 faces)
+
• Numéro ONU en grands caractères
+
• Certificat d'empotage affiché
+
• Marine Pollutant si applicable
+
+
+
+
+
+
+ {/* Segregation */}
+
+
+
🔀 Ségrégation
+
+ Certaines classes de marchandises dangereuses ne peuvent pas être chargées ensemble.
+ Le Code IMDG définit des règles strictes de ségrégation :
+
+
+
+
1
+
Away from
+
+
+
2
+
Separated from
+
+
+
3
+
Separated by compartment
+
+
+
4
+
Separated longitudinally
+
+
+
+
+
+ {/* Tips */}
+
+
+
💡 Conseils Pratiques
+
+
Vérifier l'acceptation par la compagnie maritime (certaines refusent certaines classes)
+
Anticiper les surcharges DG (dangerous goods) qui peuvent être significatives
+
Former le personnel aux procédures d'urgence
+
Utiliser un transitaire spécialisé en marchandises dangereuses
+
Consulter les réglementations locales (certains ports ont des restrictions)
+
Batteries lithium : attention aux réglementations très strictes (UN 3480, 3481)
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/incoterms/page.tsx b/apps/frontend/app/dashboard/wiki/incoterms/page.tsx
new file mode 100644
index 0000000..1e9da2b
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/incoterms/page.tsx
@@ -0,0 +1,224 @@
+/**
+ * Incoterms 2020 - Wiki Page
+ *
+ * Detailed information about international commercial terms
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const incoterms = [
+ {
+ code: 'EXW',
+ name: 'Ex Works',
+ description: 'Le vendeur met la marchandise à disposition dans ses locaux. L\'acheteur assume tous les risques et coûts.',
+ risk: 'Acheteur',
+ transport: 'Tous modes',
+ category: 'Départ',
+ },
+ {
+ code: 'FCA',
+ name: 'Free Carrier',
+ description: 'Le vendeur livre la marchandise au transporteur désigné par l\'acheteur.',
+ risk: 'Transfert à la livraison au transporteur',
+ transport: 'Tous modes',
+ category: 'Départ',
+ },
+ {
+ code: 'CPT',
+ name: 'Carriage Paid To',
+ description: 'Le vendeur paie le transport jusqu\'à destination. Le risque est transféré à la remise au transporteur.',
+ risk: 'Transfert à la livraison au transporteur',
+ transport: 'Tous modes',
+ category: 'Arrivée',
+ },
+ {
+ code: 'CIP',
+ name: 'Carriage and Insurance Paid To',
+ description: 'Comme CPT mais le vendeur doit aussi assurer la marchandise.',
+ risk: 'Transfert à la livraison au transporteur',
+ transport: 'Tous modes',
+ category: 'Arrivée',
+ },
+ {
+ code: 'DAP',
+ name: 'Delivered at Place',
+ description: 'Le vendeur livre la marchandise prête à être déchargée au lieu convenu.',
+ risk: 'Vendeur jusqu\'à destination',
+ transport: 'Tous modes',
+ category: 'Arrivée',
+ },
+ {
+ code: 'DPU',
+ name: 'Delivered at Place Unloaded',
+ description: 'Le vendeur livre et décharge la marchandise au lieu de destination.',
+ risk: 'Vendeur jusqu\'au déchargement',
+ transport: 'Tous modes',
+ category: 'Arrivée',
+ },
+ {
+ code: 'DDP',
+ name: 'Delivered Duty Paid',
+ description: 'Le vendeur assume tous les risques et coûts, y compris les droits de douane.',
+ risk: 'Vendeur (maximum)',
+ transport: 'Tous modes',
+ category: 'Arrivée',
+ },
+ {
+ code: 'FAS',
+ name: 'Free Alongside Ship',
+ description: 'Le vendeur livre la marchandise le long du navire au port d\'embarquement.',
+ risk: 'Transfert le long du navire',
+ transport: 'Maritime uniquement',
+ category: 'Maritime',
+ },
+ {
+ code: 'FOB',
+ name: 'Free On Board',
+ description: 'Le vendeur livre la marchandise à bord du navire. Très utilisé en maritime.',
+ risk: 'Transfert à bord du navire',
+ transport: 'Maritime uniquement',
+ category: 'Maritime',
+ },
+ {
+ code: 'CFR',
+ name: 'Cost and Freight',
+ description: 'Le vendeur paie le fret jusqu\'au port de destination. Le risque passe à bord.',
+ risk: 'Transfert à bord du navire',
+ transport: 'Maritime uniquement',
+ category: 'Maritime',
+ },
+ {
+ code: 'CIF',
+ name: 'Cost, Insurance and Freight',
+ description: 'Comme CFR mais le vendeur doit aussi assurer la marchandise.',
+ risk: 'Transfert à bord du navire',
+ transport: 'Maritime uniquement',
+ category: 'Maritime',
+ },
+];
+
+export default function IncotermsPage() {
+ const categories = ['Départ', 'Arrivée', 'Maritime'];
+
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 📜
+
Incoterms 2020
+
+
+ Les Incoterms (International Commercial Terms) sont des règles publiées par la Chambre de Commerce
+ Internationale (ICC) qui définissent les responsabilités des vendeurs et acheteurs dans les transactions
+ internationales. La version 2020 est entrée en vigueur le 1er janvier 2020.
+
+
+
+ {/* Key Points */}
+
+
+
Points Clés
+
+
11 Incoterms au total : 7 multimodaux et 4 maritimes
+
Définissent le transfert des risques et des coûts
+
Ne définissent PAS le transfert de propriété
+
Doivent être suivis de la version (ex: FOB Incoterms 2020)
+ Plus on va vers la droite, plus le vendeur assume de responsabilités
+
+
+
+
+
+ {/* Tips */}
+
+
+
Conseils Pratiques
+
+
Utilisez FOB ou CIF pour le maritime, FCA ou CIP pour le multimodal
+
Précisez toujours le lieu exact (ex: FOB Shanghai Port)
+
Vérifiez la cohérence entre l'Incoterm et la lettre de crédit
+
EXW et DDP sont les termes extrêmes - à utiliser avec précaution
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx b/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx
new file mode 100644
index 0000000..eb89732
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx
@@ -0,0 +1,283 @@
+/**
+ * LCL vs FCL - Wiki Page
+ *
+ * Comparison between Less than Container Load and Full Container Load
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+export default function LclVsFclPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ ⚖️
+
LCL vs FCL
+
+
+ Choisir entre LCL (Less than Container Load) et FCL (Full Container Load) est une décision
+ cruciale qui impacte les coûts, les délais et la sécurité de vos marchandises.
+
+
+
+ {/* Definitions */}
+
+
+
+
+ 📦
+ LCL - Groupage
+
+
+
+
+ Less than Container Load - Vos marchandises partagent un conteneur
+ avec d'autres expéditeurs. Vous payez uniquement pour l'espace utilisé.
+
+
+
Caractéristiques:
+
+
• Volume: généralement < 15 m³
+
• Consolidation en entrepôt (CFS)
+
• Facturation au m³ ou tonne
+
• Délai transit plus long (+3-7 jours)
+
+
+
+
+
+
+
+
+ 🚛
+ FCL - Complet
+
+
+
+
+ Full Container Load - Vous réservez un conteneur entier, même s'il
+ n'est pas plein. Vos marchandises ne sont pas mélangées.
+
+
+
Caractéristiques:
+
+
• Volume: 20', 40' ou 40'HC
+
• Chargement direct porte-à-porte
+
• Facturation par conteneur
+
• Transit direct (plus rapide)
+
+
+
+
+
+
+ {/* Comparison Table */}
+
Comparaison Détaillée
+
+
+
+
+
+
+
Critère
+
LCL
+
FCL
+
+
+
+
+
Coût
+
Payez au m³/tonne
+
Prix fixe par conteneur
+
+
+
Seuil de rentabilité
+
< 10-15 m³
+
> 15 m³
+
+
+
Transit time
+
+3-7 jours (consolidation)
+
Direct, plus rapide
+
+
+
Manutention
+
Multiple (risque de dommage)
+
Minimale
+
+
+
Sécurité
+
Marchandises mélangées
+
Conteneur scellé
+
+
+
Flexibilité
+
Haute (petits volumes)
+
Moyenne
+
+
+
Documentation
+
Plus complexe
+
Simplifiée
+
+
+
+
+
+
+
+ {/* Cost Calculation */}
+
+
+ Calcul du Seuil de Rentabilité
+
+
+
+ Le point où FCL devient plus économique que LCL dépend de la route et des tarifs.
+ Voici un exemple de calcul:
+
+
+
+
+
LCL
+
Tarif: 80 €/m³
+
Pour 15 m³: 15 × 80 = 1,200 €
+
+
+
FCL 20'
+
Tarif conteneur: 1,100 €
+
Capacité: ~28 m³ pour 1,100 €
+
+
+
+ Conclusion: Dans cet exemple, le FCL devient rentable à partir de ~14 m³.
+ Demandez toujours des cotations LCL et FCL pour comparer.
+
+
+
+
+
+ {/* When to Choose */}
+
+
+
+ Choisissez LCL si:
+
+
+
+
+ ✓
+ Volume inférieur à 10-15 m³
+
+
+ ✓
+ Expéditions régulières de petites quantités
+
Demandez toujours des cotations LCL ET FCL pour comparer
+
En LCL, emballez solidement car vos marchandises seront manipulées plusieurs fois
+
Vérifiez les frais additionnels (CFS, manutention) qui peuvent surprendre en LCL
+
Un conteneur 40' n'est pas le double du prix d'un 20' - parfois 20-30% plus cher seulement
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx b/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx
new file mode 100644
index 0000000..6033c08
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx
@@ -0,0 +1,298 @@
+/**
+ * Lettre de Crédit (L/C) - Wiki Page
+ *
+ * Instrument de paiement international sécurisé
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const typesLC = [
+ {
+ type: 'Irrévocable',
+ description: 'Ne peut être modifiée ou annulée sans l\'accord de toutes les parties',
+ usage: 'Standard depuis UCP 600',
+ recommended: true,
+ },
+ {
+ type: 'Confirmée',
+ description: 'Une banque (généralement dans le pays du vendeur) ajoute sa garantie',
+ usage: 'Recommandé pour les pays à risque',
+ recommended: true,
+ },
+ {
+ type: 'Transférable',
+ description: 'Peut être transférée à un second bénéficiaire (sous-traitant)',
+ usage: 'Négoce, intermédiaires',
+ recommended: false,
+ },
+ {
+ type: 'Revolving',
+ description: 'Se reconstitue automatiquement après chaque utilisation',
+ usage: 'Commandes répétitives',
+ recommended: false,
+ },
+ {
+ type: 'Stand-by',
+ description: 'Garantie de paiement en cas de défaillance (rarement utilisée)',
+ usage: 'Garantie bancaire',
+ recommended: false,
+ },
+ {
+ type: 'Red/Green Clause',
+ description: 'Permet un paiement anticipé avant expédition',
+ usage: 'Préfinancement du vendeur',
+ recommended: false,
+ },
+];
+
+const parties = [
+ { role: 'Donneur d\'ordre (Applicant)', description: 'L\'acheteur/importateur qui demande l\'ouverture de la L/C' },
+ { role: 'Bénéficiaire', description: 'Le vendeur/exportateur qui recevra le paiement' },
+ { role: 'Banque émettrice', description: 'Banque de l\'acheteur qui émet la L/C' },
+ { role: 'Banque notificatrice', description: 'Banque du vendeur qui notifie la L/C (sans engagement)' },
+ { role: 'Banque confirmatrice', description: 'Banque qui ajoute sa propre garantie (optionnel)' },
+];
+
+const documentsTypiques = [
+ { document: 'Facture commerciale', obligatoire: true },
+ { document: 'Bill of Lading (connaissement)', obligatoire: true },
+ { document: 'Liste de colisage', obligatoire: true },
+ { document: 'Certificat d\'origine', obligatoire: false },
+ { document: 'Certificat d\'assurance', obligatoire: false },
+ { document: 'Certificat d\'inspection', obligatoire: false },
+ { document: 'Certificat phytosanitaire', obligatoire: false },
+];
+
+const erreursFrequentes = [
+ 'Nom du bénéficiaire mal orthographié',
+ 'Dates d\'expédition ou d\'expiration dépassées',
+ 'Description des marchandises ne correspondant pas exactement',
+ 'Documents présentés en retard (au-delà du délai de présentation)',
+ 'Incoterm incohérent avec les documents',
+ 'Montant des documents différent de la L/C',
+ 'Connaissement avec réserves (claused B/L)',
+];
+
+export default function LettreCreditPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 💳
+
Lettre de Crédit (L/C)
+
+
+ La lettre de crédit documentaire (L/C ou Documentary Credit) est un engagement de paiement
+ émis par une banque pour le compte de l'acheteur, garantissant au vendeur d'être payé
+ contre présentation de documents conformes. Elle est régie par les Règles UCP 600 de la CCI.
+
+
+
+ {/* How it works */}
+
+
+
🔄 Fonctionnement Simplifié
+
+ {[
+ { step: '1', title: 'Demande', desc: 'Acheteur demande l\'ouverture à sa banque' },
+ { step: '2', title: 'Émission', desc: 'Banque émettrice envoie la L/C' },
+ { step: '3', title: 'Notification', desc: 'Banque du vendeur notifie la L/C' },
+ { step: '4', title: 'Expédition', desc: 'Vendeur expédie et présente les documents' },
+ { step: '5', title: 'Paiement', desc: 'Banque paie après vérification' },
+ ].map((item) => (
+
+ Date limite pour expédier les marchandises (Latest Shipment Date)
+
+
+
+
Délai de présentation
+
+ Généralement 21 jours après expédition pour présenter les documents
+
+
+
+
Date de validité
+
+ Date limite absolue de la L/C (Expiry Date)
+
+
+
+
+
+
+ {/* Costs */}
+
+
+
💰 Coûts Typiques
+
+
+
+
Côté Acheteur
+
+
• Commission d'ouverture : 0.1% - 0.5%
+
• Frais de modification : fixes
+
• Commission d'engagement : si non utilisée
+
+
+
+
Côté Vendeur
+
+
• Frais de notification : fixes
+
• Commission de confirmation : 0.1% - 2%+
+
• Frais de négociation : variable
+
+
+
+
+ Note : Les frais de confirmation peuvent être très élevés pour les pays à risque.
+
+
+
+
+
+ {/* Common Errors */}
+
+
+
⚠️ Erreurs Fréquentes (Réserves)
+
+ Ces erreurs entraînent des "réserves" de la banque et peuvent bloquer le paiement :
+
+
+ {erreursFrequentes.map((err) => (
+
{err}
+ ))}
+
+
+
+
+ {/* UCP 600 */}
+
+
+
📜 Règles UCP 600
+
+ Les Règles et Usances Uniformes (UCP 600) de la Chambre de Commerce Internationale (CCI)
+ régissent les lettres de crédit documentaires depuis 2007. Points clés :
+
+
+
Délai standard d'examen des documents : 5 jours ouvrés bancaires
+
La L/C est irrévocable par défaut (même si non mentionné)
+
Les banques examinent les documents, pas les marchandises
+
Les documents doivent être "conformes en apparence"
+
+
+
+
+ {/* Tips */}
+
+
+
💡 Conseils Pratiques
+
+
Vérifier minutieusement les termes de la L/C dès réception
+
Demander des modifications AVANT expédition si nécessaire
+
Préparer les documents exactement comme demandé (virgules, orthographe)
+
Respecter les délais avec marge de sécurité
+
Travailler avec un transitaire expérimenté en documentaire
+
Conserver des copies de tous les documents
+
Envisager une L/C confirmée pour les nouveaux clients ou pays risqués
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/page.tsx b/apps/frontend/app/dashboard/wiki/page.tsx
new file mode 100644
index 0000000..713cafe
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/page.tsx
@@ -0,0 +1,149 @@
+/**
+ * Wiki Page - Maritime Import/Export Knowledge Base
+ *
+ * Main page displaying cards for all wiki topics
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@/components/ui/card';
+
+const wikiTopics = [
+ {
+ title: 'Incoterms 2020',
+ description: 'Les règles internationales pour l\'interprétation des termes commerciaux',
+ icon: '📜',
+ href: '/dashboard/wiki/incoterms',
+ tags: ['FOB', 'CIF', 'EXW', 'DDP'],
+ },
+ {
+ title: 'Documents de Transport',
+ description: 'Les documents essentiels pour le transport maritime',
+ icon: '📋',
+ href: '/dashboard/wiki/documents-transport',
+ tags: ['B/L', 'Sea Waybill', 'Manifest'],
+ },
+ {
+ title: 'Conteneurs et Types de Cargo',
+ description: 'Guide complet des types de conteneurs maritimes',
+ icon: '📦',
+ href: '/dashboard/wiki/conteneurs',
+ tags: ['20\'', '40\'', 'Reefer', 'Open Top'],
+ },
+ {
+ title: 'LCL vs FCL',
+ description: 'Différences entre groupage et conteneur complet',
+ icon: '⚖️',
+ href: '/dashboard/wiki/lcl-vs-fcl',
+ tags: ['Groupage', 'Complet', 'Coûts'],
+ },
+ {
+ title: 'Procédures Douanières',
+ description: 'Guide des formalités douanières import/export',
+ icon: '🛃',
+ href: '/dashboard/wiki/douanes',
+ tags: ['Déclaration', 'Tarifs', 'Régimes'],
+ },
+ {
+ title: 'Assurance Maritime',
+ description: 'Protection des marchandises en transit',
+ icon: '🛡️',
+ href: '/dashboard/wiki/assurance',
+ tags: ['ICC A', 'ICC B', 'ICC C'],
+ },
+ {
+ title: 'Calcul du Fret Maritime',
+ description: 'Comment sont calculés les coûts de transport',
+ icon: '🧮',
+ href: '/dashboard/wiki/calcul-fret',
+ tags: ['CBM', 'THC', 'BAF', 'CAF'],
+ },
+ {
+ title: 'Ports et Routes Maritimes',
+ description: 'Les principales routes commerciales mondiales',
+ icon: '🌍',
+ href: '/dashboard/wiki/ports-routes',
+ tags: ['Hub', 'Détroits', 'Canaux'],
+ },
+ {
+ title: 'VGM (Verified Gross Mass)',
+ description: 'Obligation de pesée des conteneurs (SOLAS)',
+ icon: '⚓',
+ href: '/dashboard/wiki/vgm',
+ tags: ['SOLAS', 'Pesée', 'Certification'],
+ },
+ {
+ title: 'Marchandises Dangereuses (IMDG)',
+ description: 'Transport de matières dangereuses par mer',
+ icon: '⚠️',
+ href: '/dashboard/wiki/imdg',
+ tags: ['Classes', 'Étiquetage', 'Sécurité'],
+ },
+ {
+ title: 'Lettre de Crédit (L/C)',
+ description: 'Instrument de paiement international sécurisé',
+ icon: '💳',
+ href: '/dashboard/wiki/lettre-credit',
+ tags: ['Banque', 'Paiement', 'Sécurité'],
+ },
+ {
+ title: 'Transit Time et Délais',
+ description: 'Comprendre les délais en transport maritime',
+ icon: '⏱️',
+ href: '/dashboard/wiki/transit-time',
+ tags: ['Cut-off', 'Free time', 'Demurrage'],
+ },
+];
+
+export default function WikiPage() {
+ return (
+
+ {/* Header */}
+
+
Wiki Maritime
+
+ Base de connaissances sur l'import/export maritime. Cliquez sur un sujet pour en savoir plus.
+
+ Besoin d'aide ? Ces guides sont régulièrement mis à jour avec les dernières réglementations et bonnes pratiques du secteur maritime.
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx b/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx
new file mode 100644
index 0000000..e1566e4
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx
@@ -0,0 +1,301 @@
+/**
+ * Ports et Routes Maritimes - Wiki Page
+ *
+ * Les principales routes commerciales mondiales
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const majorRoutes = [
+ {
+ name: 'Asie - Europe',
+ description: 'La plus importante route commerciale mondiale',
+ transitTime: '28-35 jours',
+ volume: '~24 millions TEU/an',
+ keyPorts: ['Shanghai', 'Singapour', 'Rotterdam', 'Hambourg', 'Anvers'],
+ passages: ['Canal de Suez', 'Détroit de Malacca'],
+ },
+ {
+ name: 'Asie - Amérique du Nord (Pacifique)',
+ description: 'Deuxième route la plus importante',
+ transitTime: '12-18 jours',
+ volume: '~26 millions TEU/an',
+ keyPorts: ['Shanghai', 'Busan', 'Los Angeles', 'Long Beach', 'Seattle'],
+ passages: ['Traversée Pacifique directe'],
+ },
+ {
+ name: 'Europe - Amérique du Nord (Atlantique)',
+ description: 'Route transatlantique historique',
+ transitTime: '8-12 jours',
+ volume: '~8 millions TEU/an',
+ keyPorts: ['Rotterdam', 'Anvers', 'New York', 'Savannah', 'Charleston'],
+ passages: ['Traversée Atlantique directe'],
+ },
+ {
+ name: 'Asie - Méditerranée',
+ description: 'Variante de la route Asie-Europe via Med',
+ transitTime: '18-25 jours',
+ volume: '~6 millions TEU/an',
+ keyPorts: ['Shanghai', 'Pirée', 'Gênes', 'Barcelone', 'Tanger Med'],
+ passages: ['Canal de Suez', 'Détroit de Gibraltar'],
+ },
+];
+
+const strategicPassages = [
+ {
+ name: 'Canal de Suez',
+ location: 'Égypte',
+ opened: '1869',
+ length: '193.3 km',
+ transitTime: '12-16 heures',
+ traffic: '~20,000 navires/an',
+ importance: 'Relie la Méditerranée à la Mer Rouge. Raccourcit de 7,000 km la route Europe-Asie.',
+ },
+ {
+ name: 'Canal de Panama',
+ location: 'Panama',
+ opened: '1914',
+ length: '82 km',
+ transitTime: '8-10 heures',
+ traffic: '~14,000 navires/an',
+ importance: 'Relie l\'Atlantique au Pacifique. Crucial pour le commerce Asie-Côte Est USA.',
+ },
+ {
+ name: 'Détroit de Malacca',
+ location: 'Malaisie/Indonésie',
+ opened: 'Naturel',
+ length: '800 km',
+ transitTime: '12 heures',
+ traffic: '~90,000 navires/an',
+ importance: 'Point de passage obligé entre Océan Indien et Mer de Chine. 25% du commerce mondial.',
+ },
+ {
+ name: 'Détroit de Gibraltar',
+ location: 'Espagne/Maroc',
+ opened: 'Naturel',
+ length: '60 km',
+ transitTime: '2-3 heures',
+ traffic: '~100,000 navires/an',
+ importance: 'Entrée en Méditerranée depuis l\'Atlantique.',
+ },
+];
+
+const majorPorts = [
+ { name: 'Shanghai', country: 'Chine', volume: '47.0', rank: 1 },
+ { name: 'Singapour', country: 'Singapour', volume: '37.2', rank: 2 },
+ { name: 'Ningbo-Zhoushan', country: 'Chine', volume: '33.0', rank: 3 },
+ { name: 'Shenzhen', country: 'Chine', volume: '30.0', rank: 4 },
+ { name: 'Guangzhou', country: 'Chine', volume: '24.2', rank: 5 },
+ { name: 'Busan', country: 'Corée du Sud', volume: '22.7', rank: 6 },
+ { name: 'Qingdao', country: 'Chine', volume: '22.0', rank: 7 },
+ { name: 'Rotterdam', country: 'Pays-Bas', volume: '14.5', rank: 8 },
+ { name: 'Dubai/Jebel Ali', country: 'EAU', volume: '14.1', rank: 9 },
+ { name: 'Tianjin', country: 'Chine', volume: '14.0', rank: 10 },
+];
+
+export default function PortsRoutesPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ 🌍
+
Ports et Routes Maritimes
+
+
+ Le transport maritime assure plus de 80% du commerce mondial en volume.
+ Comprendre les grandes routes et les ports stratégiques est essentiel pour optimiser sa supply chain.
+
Source: World Shipping Council, données approximatives
+
+
+
+
+ {/* Hub Ports Info */}
+
+
+
🔄 Ports Hub vs Ports Régionaux
+
+
+
Ports Hub (Transbordement)
+
+ Grands ports où les conteneurs sont transférés entre navires mères et feeders.
+ Ex: Singapour, Tanger Med, Algésiras.
+
+
Avantage: Desserte mondiale, fréquence élevée
+
+
+
Ports Régionaux (Gateway)
+
+ Ports desservant directement un hinterland économique.
+ Ex: Le Havre, Marseille, Hambourg.
+
+
Avantage: Proximité du marché final, moins de manutention
+
+
+
+
+
+ {/* Tips */}
+
+
+
💡 Conseils Pratiques
+
+
Privilégiez les routes directes pour réduire les délais et risques
+
Anticipez les congestions portuaires (Los Angeles, Rotterdam en haute saison)
+
Surveillez les perturbations géopolitiques (Canal de Suez, Détroit d'Ormuz)
+
Comparez les transbordements vs les services directs selon vos priorités (coût vs délai)
+
Vérifiez les connexions ferroviaires/fluviales depuis les ports
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/transit-time/page.tsx b/apps/frontend/app/dashboard/wiki/transit-time/page.tsx
new file mode 100644
index 0000000..e4798e3
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/transit-time/page.tsx
@@ -0,0 +1,354 @@
+/**
+ * Transit Time et Délais - Wiki Page
+ *
+ * Comprendre les délais en transport maritime
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const etapesTimeline = [
+ {
+ etape: 'Booking',
+ description: 'Réservation de l\'espace sur le navire',
+ delai: '1-7 jours avant cut-off',
+ responsable: 'Transitaire/Exportateur',
+ },
+ {
+ etape: 'Container pickup',
+ description: 'Enlèvement du conteneur vide au dépôt',
+ delai: '2-5 jours avant cut-off',
+ responsable: 'Transporteur terrestre',
+ },
+ {
+ etape: 'Empotage (Stuffing)',
+ description: 'Chargement des marchandises dans le conteneur',
+ delai: '1-3 jours avant cut-off',
+ responsable: 'Exportateur',
+ },
+ {
+ etape: 'Documentation cut-off',
+ description: 'Date limite pour soumettre les documents (B/L, VGM)',
+ delai: '24-48h avant ETD',
+ responsable: 'Transitaire',
+ },
+ {
+ etape: 'Cargo cut-off',
+ description: 'Date limite de dépôt du conteneur au terminal',
+ delai: '24-48h avant ETD',
+ responsable: 'Transporteur terrestre',
+ },
+ {
+ etape: 'ETD (Estimated Time of Departure)',
+ description: 'Départ estimé du navire du port d\'origine',
+ delai: 'Jour J',
+ responsable: 'Compagnie maritime',
+ },
+ {
+ etape: 'Transit maritime',
+ description: 'Traversée maritime (variable selon route)',
+ delai: '10-45 jours',
+ responsable: 'Compagnie maritime',
+ },
+ {
+ etape: 'ETA (Estimated Time of Arrival)',
+ description: 'Arrivée estimée au port de destination',
+ delai: 'Jour J + transit',
+ responsable: 'Compagnie maritime',
+ },
+ {
+ etape: 'Déchargement',
+ description: 'Déchargement du navire et mise à quai',
+ delai: '1-3 jours après ETA',
+ responsable: 'Terminal portuaire',
+ },
+ {
+ etape: 'Dédouanement',
+ description: 'Formalités douanières à destination',
+ delai: '1-5 jours',
+ responsable: 'Commissionnaire en douane',
+ },
+ {
+ etape: 'Livraison',
+ description: 'Acheminement final au destinataire',
+ delai: '1-5 jours',
+ responsable: 'Transporteur terrestre',
+ },
+];
+
+const fraisRetard = [
+ {
+ nom: 'Demurrage',
+ definition: 'Frais pour le conteneur resté au terminal au-delà du free time',
+ taux: '50-150 USD/jour/conteneur',
+ lieu: 'Terminal portuaire',
+ },
+ {
+ nom: 'Detention',
+ definition: 'Frais pour le conteneur gardé hors terminal au-delà du free time',
+ taux: '30-100 USD/jour/conteneur',
+ lieu: 'Chez l\'importateur',
+ },
+ {
+ nom: 'Storage',
+ definition: 'Frais de stockage au terminal (séparés du demurrage)',
+ taux: 'Variable selon port',
+ lieu: 'Terminal portuaire',
+ },
+ {
+ nom: 'Per Diem',
+ definition: 'Frais journaliers combinés (parfois utilisé pour demurrage+detention)',
+ taux: '50-200 USD/jour',
+ lieu: 'Variable',
+ },
+];
+
+const transitTimes = [
+ { route: 'Shanghai → Rotterdam', temps: '28-32 jours', via: 'Suez' },
+ { route: 'Shanghai → Le Havre', temps: '30-35 jours', via: 'Suez' },
+ { route: 'Shanghai → Los Angeles', temps: '12-15 jours', via: 'Direct Pacifique' },
+ { route: 'Shanghai → New York', temps: '35-40 jours', via: 'Suez ou Panama' },
+ { route: 'Rotterdam → New York', temps: '10-14 jours', via: 'Direct Atlantique' },
+ { route: 'Mumbai → Rotterdam', temps: '18-22 jours', via: 'Suez' },
+ { route: 'Santos → Rotterdam', temps: '18-22 jours', via: 'Direct Atlantique' },
+];
+
+export default function TransitTimePage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ ⏱️
+
Transit Time et Délais
+
+
+ La gestion des délais est cruciale en transport maritime. Comprendre les différentes étapes,
+ les cut-off dates et les frais de retard permet d'optimiser sa supply chain et d'éviter
+ les coûts supplémentaires.
+
+
+
+ {/* Key Terms */}
+
+
+
📖 Termes Clés
+
+
+
ETD
+
Estimated Time of Departure - Départ estimé
+
+
+
ETA
+
Estimated Time of Arrival - Arrivée estimée
+
+
+
Cut-off
+
Date/heure limite de dépôt
+
+
+
Free time
+
Jours gratuits avant frais de retard
+
+
+
+
+
+ {/* Timeline */}
+
+
📅 Timeline d'une Expédition FCL
+
+ {etapesTimeline.map((item, index) => (
+
+
+
+
+ {index + 1}
+
+
+
+
{item.etape}
+ {item.delai}
+
+
{item.description}
+
Responsable : {item.responsable}
+
+
+
+
+ ))}
+
+
+
+ {/* Transit Times */}
+
+
🚢 Transit Times Indicatifs
+
+
+
+
+
+
+
Route
+
Transit Time
+
Via
+
+
+
+ {transitTimes.map((tt) => (
+
+
{tt.route}
+
{tt.temps}
+
{tt.via}
+
+ ))}
+
+
+
+
+ Note : Ces temps sont indicatifs et varient selon les rotations, transbordements et conditions.
+
+
+
+
+
+ {/* Free Time */}
+
+
+
⏰ Free Time (Jours Gratuits)
+
+ Période pendant laquelle le conteneur peut rester au terminal ou chez l'importateur
+ sans frais supplémentaires.
+
• Peak Season (août-octobre) : surcharges, retards
+
• Fêtes de fin d'année : rush avant Christmas
+
+
+
+
+
+
+ {/* Roll-over */}
+
+
+
🔄 Roll-over (Report)
+
+ Situation où un conteneur n'est pas chargé sur le navire prévu et est reporté
+ sur le prochain départ.
+
+
+
Causes fréquentes :
+
+
• Navire plein (overbooking)
+
• Conteneur arrivé après le cargo cut-off
+
• Documents manquants ou incorrects
+
• VGM non transmis à temps
+
• Problème avec la marchandise (DG, inspection)
+
+
+ Impact : Généralement +7 jours de délai (service hebdomadaire)
+
+
+
+
+
+ {/* Tips */}
+
+
+
💡 Conseils pour Optimiser les Délais
+
+
Réserver tôt, surtout en haute saison (2-3 semaines d'avance)
+
Respecter les cut-off avec une marge de sécurité (24h minimum)
+
Préparer les documents en parallèle de l'empotage
+
Négocier du free time supplémentaire pour les volumes importants
+
Tracker activement les navires (AIS, portails compagnies)
+
Anticiper le dédouanement (pré-clearing si possible)
+
Avoir un plan B en cas de roll-over (service alternatif)
+
Éviter les expéditions critiques pendant les périodes à risque
+
+
+
+
+ );
+}
diff --git a/apps/frontend/app/dashboard/wiki/vgm/page.tsx b/apps/frontend/app/dashboard/wiki/vgm/page.tsx
new file mode 100644
index 0000000..b0c81ca
--- /dev/null
+++ b/apps/frontend/app/dashboard/wiki/vgm/page.tsx
@@ -0,0 +1,268 @@
+/**
+ * VGM (Verified Gross Mass) - Wiki Page
+ *
+ * Obligation de pesée des conteneurs (SOLAS)
+ */
+
+import Link from 'next/link';
+import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
+
+const methodesPesee = [
+ {
+ method: 'Méthode 1',
+ name: 'Pesée du conteneur complet',
+ description: 'Pesée du conteneur chargé et scellé sur une balance étalonnée.',
+ process: [
+ 'Empotage du conteneur',
+ 'Scellage du conteneur',
+ 'Pesée sur pont-bascule certifié',
+ 'Transmission du VGM',
+ ],
+ advantages: ['Plus précis', 'Moins de calculs'],
+ disadvantages: ['Nécessite un pont-bascule', 'Conteneur déjà scellé'],
+ },
+ {
+ method: 'Méthode 2',
+ name: 'Calcul par addition',
+ description: 'Addition de la tare du conteneur et du poids de tous les éléments chargés.',
+ process: [
+ 'Pesée de chaque colis individuellement',
+ 'Addition de tous les poids',
+ 'Ajout des matériaux d\'arrimage',
+ 'Addition de la tare conteneur',
+ ],
+ advantages: ['Pas besoin de pont-bascule', 'Peut être fait progressivement'],
+ disadvantages: ['Plus complexe', 'Risque d\'erreur cumulative'],
+ },
+];
+
+const sanctions = [
+ { region: 'France', sanction: 'Amende jusqu\'à 7,500€ et refus d\'embarquement' },
+ { region: 'USA', sanction: 'Refus d\'embarquement, amende par la garde côtière' },
+ { region: 'Chine', sanction: 'Refus d\'embarquement, pénalités portuaires' },
+ { region: 'Union Européenne', sanction: 'Application variable selon pays membre' },
+];
+
+const elementsVGM = [
+ { element: 'Tare conteneur', description: 'Poids à vide du conteneur (inscrit sur la porte)', example: '2,200 kg (20\')' },
+ { element: 'Marchandises', description: 'Poids brut de toutes les marchandises', example: 'Variable' },
+ { element: 'Emballages', description: 'Palettes, cartons, film plastique...', example: '200-500 kg' },
+ { element: 'Matériaux d\'arrimage', description: 'Bois de calage, sangles, airbags...', example: '50-200 kg' },
+];
+
+export default function VGMPage() {
+ return (
+
+ {/* Header with back link */}
+
+
+
+ Retour au Wiki
+
+
+
+ {/* Title */}
+
+
+ ⚓
+
VGM (Verified Gross Mass)
+
+
+ Depuis le 1er juillet 2016, la Convention SOLAS (Safety of Life at Sea) exige que le poids
+ vérifié de tout conteneur soit transmis avant embarquement. Cette obligation vise à prévenir
+ les accidents liés aux conteneurs mal déclarés.
+
+
+
+ {/* Why VGM */}
+
+
+
Pourquoi le VGM ?
+
+
+
🛡️ Sécurité
+
Les conteneurs mal déclarés causent des accidents graves (chute de conteneurs, navires instables).
+
+
+
⚖️ Stabilité du navire
+
Le capitaine doit connaître le poids exact pour calculer le plan de chargement.
+
+
+
🏗️ Équipements portuaires
+
Les grues et portiques sont dimensionnés pour des charges maximales.
+
+
+
🚛 Transport terrestre
+
Évite les surcharges sur les camions et wagons de pré/post-acheminement.