Expert du Pipeline Affaires Diplomatiques complet de consulat.ga. S'active automatiquement pour tout travail sur le module diplomatique : ciblage d'operateurs economiques, avancement de pipeline, transition de phases, gestion des priorites diplomatiques, tableau de bord diplomatique, KPI diplomatiques, state machine du pipeline, integration IA Gemini pour la diplomatie, ou architecture globale du module. Skill orchestrateur qui reference les 3 skills specialises (diplomatic-strategic-plan, diplomatic-project, diplomatic-document-generation).
Ce skill s'active quand la requete contient :
affaires diplomatiques, module diplomatique, pipeline diplomatiqueciblage, cible operateur, decouvrir cible, enrichir cibleavancer phase, transition pipeline, phase pipelinepriorites diplomatiques, axe prioritairetableau de bord diplomatique, dashboard diplomatieKPI diplomatique, indicateurs diplomatielettre diplomatique, courrier officielrapport reunion, compte-rendu reuniondossier operateur, dossier cibleCe skill est l' qui coordonne 3 skills specialises :
| Skill | Perimetre | Quand l'utiliser |
|---|---|---|
diplomatic-strategic-plan | Plans strategiques R1-R4 | Quand on travaille sur l'analyse et la strategie d'approche |
diplomatic-project | Projets de cooperation | Quand on structure ou enrichit un projet |
diplomatic-document-generation | Generation DOCX/PPTX/ZIP | Quand on genere ou exporte des documents |
Regle : Si la requete porte sur un sujet couvert par un skill specialise, lire d'abord CE skill specialise puis revenir ici pour le contexte global.
Lire IMPERATIVEMENT avant toute action :
convex/_generated/ai/guidelines.md — Regles Convex (CRITIQUE)convex/schemas/diplomaticAffairs.ts — Schema completconvex/functions/diplomaticAffairs.ts — Fonctions CRUDconvex/ai/diplomaticAI.ts — Actions IA GeminiTables existantes :
| Table | Role |
|---|---|
diplomaticTargets | Cibles identifiees (operateurs economiques) |
diplomaticPlans | Plans strategiques lies a une cible |
diplomaticLetters | Lettres diplomatiques (invitation, proposition, etc.) |
diplomaticReports | Rapports de reunion et comptes-rendus |
diplomaticProjects | Projets de cooperation structures |
diplomaticPriorities | Axes prioritaires de la politique gabonaise |
Tables a ajouter :
| Table | Role |
|---|---|
diplomaticFolders | Dossiers virtuels (arborescence par secteur/cible) |
diplomaticDocuments | Documents generes (DOCX, PPTX, PDF) avec storageId |
targeting → strategy → outreach → reporting → project
Matrice de transition :
const transitionMatrix = {
targeting: ["strategy"], // Cible → Plan
strategy: ["outreach", "targeting"], // Plan → Lettres (ou retour ciblage)
outreach: ["reporting", "strategy"], // Lettres → Rapports (ou retour strategie)
reporting: ["project", "outreach"], // Rapports → Projet (ou retour contact)
project: [], // Phase finale
};
Regles de transition :
project est terminalehistoriqueEtapesChaque entite a son propre cycle de statuts :
Cible (Target) :
identifie → en_analyse → qualifie → contacte → en_negociation → partenaire → archive → rejete
Plan Strategique :
brouillon → en_revue → approuve → archive
Lettre :
brouillon → en_revue → approuvee → envoyee → reponse_recue → archive
Rapport :
brouillon → en_revue → valide → archive
Projet :
identification → formulation → en_revue → approuve → en_cours → termine → archive
6 actions dans convex/ai/diplomaticAI.ts :
| Action | Role | Declencheur |
|---|---|---|
discoverTargets | Decouvrir des cibles potentielles | Bouton "Decouvrir" sur le dashboard |
enrichTarget | Enrichir une cible avec des donnees publiques | Bouton "Enrichir" sur la fiche cible |
generateStrategy | Generer un plan strategique (standard ou complet) | Bouton "Generer strategie" |
draftLetter | Rediger un projet de lettre diplomatique | Bouton "Rediger lettre" |
compileReport | Compiler un rapport depuis des notes | Bouton "Compiler rapport" |
structureProject | Structurer ou enrichir un projet | Bouton "Structurer projet" |
Pattern commun :
export const actionName = authAction({
args: { orgId: v.id("orgs"), targetId: v.id("diplomaticTargets"), ... },
handler: async (ctx, args) => {
// 1. Recuperer les donnees necessaires
// 2. Construire le prompt Gemini
// 3. Appeler Gemini via generateJSON() ou generateText()
// 4. Sauvegarder le resultat via ctx.runMutation(...)
// 5. Retourner le resultat
}
});
CRITIQUE — Ne JAMAIS utiliser les fonctions Convex brutes.
// ✅ CORRECT
import { authQuery, authMutation, authAction } from "../lib/customFunctions";
import { rawInternalMutation, rawInternalQuery, rawInternalAction } from "../_generated/server";
// ❌ INTERDIT
import { query, mutation, action } from "../_generated/server";
Pour les fonctions internes (hooks, schedulers) :
import { rawInternalMutation as internalMutation } from "../_generated/server";
Les 7 axes prioritaires qui guident TOUT le pipeline :
Ces priorites sont stockees dans la table diplomaticPriorities et chaque cible/plan/projet est evalue par rapport a elles.
┌─────────────────────────┐
│ diplomaticPriorities │
│ (axes prioritaires) │
└──────────┬──────────────┘
│ aligne
┌──────────▼──────────────┐
discoverTargets │ diplomaticTargets │
enrichTarget │ (cibles operateurs) │
└──────────┬──────────────┘
│ targetId
┌──────────▼──────────────┐
generateStrategy│ diplomaticPlans │
│ (plans strategiques) │
└──────────┬──────────────┘
│ targetId + planId
┌──────────▼──────────────┐
draftLetter │ diplomaticLetters │
│ (lettres officielles) │
└──────────┬──────────────┘
│ targetId
┌──────────▼──────────────┐
compileReport │ diplomaticReports │
│ (rapports reunion) │
└──────────┬──────────────┘
│ targetId + reportIds
┌──────────▼──────────────┐
structureProject│ diplomaticProjects │
│ (projets cooperation) │
└──────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
diplomaticFolders diplomaticDocuments [Export ZIP]
App : apps/agent-web (TanStack Router)
/affaires-diplomatiques
├── / → Dashboard (KPI, pipeline, carte monde)
├── /cibles → Liste des cibles (filtres, recherche)
├── /cibles/:id → Fiche cible detaillee
├── /plans → Liste des plans strategiques
├── /plans/:id → Plan strategique detaille
├── /lettres → Liste des lettres
├── /lettres/:id → Lettre detaillee
├── /rapports → Liste des rapports
├── /rapports/:id → Rapport detaille
├── /projets → Liste des projets
├── /projets/:id → Projet detaille
├── /dossiers → Explorateur de dossiers
├── /dossiers/:secteur/:cible → Dossier d'un operateur
└── /priorites → Gestion des axes prioritaires
Composants communs :
PipelineStepper.tsx — Barre de progression des 5 phasesTargetPipelineCard.tsx — Carte cible avec phase actuelleAIActionPanel.tsx — Panneau d'actions IA (boutons Gemini)FolderExplorer.tsx — Navigation dans les dossiersExportZipButton.tsx — Export ZIP du dossier completSuivre STRICTEMENT la charte DESIGN_CHARTER.md :
blue-500, green-100)lucide-react uniquement.neu-*camelCase (ex: diplomaticTargets)camelCase (ex: createTarget, advancePhase)camelCaseValidator (ex: strategicAnalysisValidator)PascalCase (ex: TargetPipelineCard)camelCase.ts (ex: diplomaticAffairs.ts)PascalCase.tsx (ex: AIActionPanel.tsx)createdAt, updatedAt (timestamps v.number())createdBy: v.id("users")orgId: v.id("orgs")statut comme v.union(v.literal(...), ...)historiqueEtapes pour les workflowsdeletedAt: v.optional(v.number()) pour le soft delete.filter(q => q.eq(q.field("deletedAt"), undefined))updatedAt: Date.now() dans les updateshistoriqueEtapes les changements de statutctx.scheduler.runAfter(0, ...) pour les effets de bord (hooks)convex/_generated/ai/guidelines.md AVANT tout code