# CallCenter Pro - TODO

## Phase 1: Database Schema & Backend
- [x] Define DB schema: clients, agents, leads, conversations, messages tables
- [x] Run migration and apply SQL
- [x] Add tRPC routers: admin stats, clients CRUD, leads CRUD, conversations, agents
- [x] Seed demo data

## Phase 2: Design System & Layout
- [x] Configure global CSS (Inter font, color tokens, dark/light)
- [x] Build AdminDashboardLayout with sidebar navigation (5 items)
- [x] Build ClientDashboardLayout with sidebar navigation (3 items)
- [x] RBAC routing: admin → AdminLayout, user → ClientLayout
- [x] PWA manifest + service worker

## Phase 3: Admin Dashboard Screens
- [x] Admin Overview: KPI cards (calls today, WhatsApp messages, leads generated, active clients), activity graph, recent leads list
- [x] Admin Clients Management: table (Name, Industry, Contact, Status, Subscription), Add/Edit/View actions
- [x] Admin Conversations: left sidebar list, center WhatsApp-style chat, right lead details panel, Reply/Qualify lead/Mark as completed buttons
- [x] Admin Leads Management: table (Name, Phone, Source, Status, Assigned Agent), status workflow (New, Qualified, Converted, Lost)
- [x] Admin Agents: agent list with performance metrics (calls handled, messages, conversion rate)

## Phase 4: Client Dashboard Screens
- [x] Client Overview: KPI cards (calls received, WhatsApp messages, leads generated, qualified leads), activity graph
- [x] Client Leads: table (Name, Phone, Interest, Status)
- [x] Client Messages: conversation preview list

## Phase 5: Polish & PWA
- [x] PWA manifest (manifest.json)
- [x] Service worker registration
- [x] Responsive design (desktop + mobile)
- [x] Final tests and checkpoint

## Phase 6: Conversations - Filtres & Classement
- [x] Ajouter champ `category` à la table conversations (DB schema + migration)
- [x] Mettre à jour le router tRPC pour exposer les filtres (client, category, status, channel, agent)
- [x] Refondre l'UI AdminConversations : barre de filtres (client, catégorie, statut, canal, agent), tri par date/statut, compteurs par groupe
- [x] Ajouter des badges de catégorie dans la sidebar des conversations
- [x] Tests et checkpoint
- [x] Ajouter bouton "Archive" dans les actions de conversation (sidebar + panneau droit)
- [x] Afficher les conversations archivées dans un onglet séparé "Archived"

## Phase 7: Extension SaaS Multicanal

### DB Schema
- [x] Ajouter tables: emails, web_chats, calls, subscriptions, invoices, company_settings
- [x] Générer et appliquer la migration SQL

### Backend tRPC
- [x] Router emails: list, send, reply, markRead
- [x] Router webChats: list, getMessages, sendMessage
- [x] Router calls: list, create, update
- [x] Router subscriptions: getMySubscription, getPlans, changePlan, simulatePay
- [x] Router invoices: list, getById
- [x] Router companySettings: get, update
- [x] Router admin: listSubscriptions, updateSubscriptionStatus
- [x] Seed demo data pour tous les nouveaux modules

### Dashboard Client - Extensions
- [x] ClientOverview: ajouter KPIs Email + Chat + Appels (multicanal)
- [x] Nouvelle page ClientInbox: inbox unifiée (WhatsApp + Email + Chat + Appels) avec onglets
- [x] Nouvelle page ClientEmail: liste emails + vue détail + réponse
- [x] Nouvelle page ClientChat: liste chats + interface chat
- [x] Nouvelle page ClientCalls: liste appels + statut + notes
- [x] Améliorer ClientLeads: fiche détaillée lead
- [x] Nouvelle page ClientSubscription: plan actuel, prix, renouvellement, boutons Changer/Payer
- [x] Nouvelle page ClientInvoices: historique paiements + téléchargement PDF simulé
- [x] Nouvelle page ClientSettings: infos entreprise, canaux actifs

### Dashboard Admin - Extensions
- [x] Nouvelle page AdminSubscriptions: liste abonnements clients, statuts, actions
- [x] Ajouter badge notifications (nouveaux messages) dans AdminLayout et ClientLayout

### Navigation
- [x] Étendre ClientLayout sidebar: Inbox, Email, Chat, Appels, Leads, Abonnement, Factures, Paramètres
- [x] Étendre AdminLayout sidebar: Subscriptions
- [x] Mettre à jour App.tsx avec toutes les nouvelles routes

### Tests & Livraison
- [x] Tests vitest pour nouveaux routers
- [x] Checkpoint final

## Phase 8: Email, Chat Widget, Inbox & Gestion Comptes

### Email Support (amélioration)
- [x] Ajouter procédure tRPC `sendEmail` (créer un email sortant depuis la plateforme)
- [x] Ajouter bouton "Nouvel email" dans ClientEmails avec formulaire (À, Sujet, Corps)
- [x] Ajouter vue admin des emails dans AdminConversations ou page dédiée (via onglet Emails)

### Chat Web (widget embarquable)
- [x] Créer page `/widget/chat` publique (interface visiteur - sans auth)
- [x] Générer un snippet JS embarquable dans ClientSettings (code à coller sur le site client)
- [x] Ajouter endpoint public tRPC pour recevoir les messages visiteurs
- [x] Améliorer ClientChats avec indicateur de statut en temps réel (polling toutes les 5s)

### Inbox Multicanale (amélioration)
- [x] Améliorer ClientInbox : afficher aperçu du contenu par canal
- [x] Ajouter compteurs de non-lus par canal dans la sidebar ClientLayout
- [x] Ajouter action rapide "Répondre" directement depuis l'inbox (navigation vers le canal)

### Gestion des comptes clients
- [x] Créer page `/signup` : formulaire inscription (nom entreprise, email, téléphone, mot de passe)
- [x] Créer page `/login` : connexion via OAuth (Manus Auth - déjà implémenté)
- [x] Créer page `/forgot-password` : non applicable (OAuth gère la récupération)
- [x] Ajouter procédures tRPC : `clientSignup` implémenté (OAuth gère l'auth)
- [x] Étendre la table `clients` avec champ `userId` (déjà présent dans le schéma)
- [x] Dans AdminClients : bannière demandes en attente avec bouton Activer
- [x] Mettre à jour `getClientIdForUser` pour résoudre le vrai clientId via userId

### Tests & Livraison
- [x] Tests vitest : 14 tests passants
- [x] Checkpoint final

## Phase 9: AI Module + Omnichannel Support Center

### DB Schema
- [x] Ajouter table `tickets` (numéro, client, canal, sujet, priorité, statut, agent, dates)
- [x] Ajouter champ `language` aux tables conversations, emails, webChats, calls
- [x] Ajouter champ `tone` (satisfait/neutre/frustré/urgent) et `aiScore` aux leads
- [x] Générer et appliquer la migration SQL

### Backend tRPC
- [x] Router tickets : list, create, update, getById
- [x] Router ai : smartSuggest, callSummary, leadScore, detectLanguage, translateText, summarize
- [x] Router analytics : getAdminAnalytics (emails reçus, chats actifs, tickets ouverts, temps moyen réponse, langues, taux résolution)
- [x] Seed demo data multilingue (FR/EN/DE/Wolof/AR) pour tickets, conversations, emails

### Module AI Assistant
- [x] Page AdminAI : Smart Suggestions, AI Call Summary, AI Lead Scoring
- [x] Composant AIPanel : page dédiée AdminAI avec 3 outils IA
- [x] Intégrer AI Lead Scoring dans AdminLeads (via page AdminAI)
- [x] Intégrer AI Call Summary dans AdminConversations (via page AdminAI)

### Inbox Omnicanale Admin
- [x] Page AdminEmails : gestion emails entrants admin
- [x] Page AdminChats : gestion sessions chat admin
- [x] Filtres dans AdminEmails et AdminChats
- [x] Bouton "Suggérer réponse IA" dans AdminAI (Smart Suggestions)

### Module Tickets Support
- [x] Page AdminTickets : liste tickets avec colonnes (N°, Client, Canal, Sujet, Priorité, Statut, Agent, Créé, Résolu)
- [x] Statuts : Nouveau, En cours, En attente client, Résolu, Fermé
- [x] Priorités : Basse, Normale, Haute, Urgente
- [x] Formulaire création ticket + édition

### Sidebar Admin (mise à jour)
- [x] Mettre à jour AdminLayout avec groupes : Principal, Canaux (WhatsApp/Email/Chat), CRM & Support (Leads/Tickets), Intelligence (AI Assistant)

### Dashboard Admin (mise à jour)
- [x] Nouvelles pages admin : AdminEmails, AdminChats, AdminTickets, AdminAI
- [x] Données démo multilingues réalistes

### Tests & Livraison
- [x] Tests vitest : 14 tests passants
- [x] Checkpoint final

## Phase 10: Corrections & Améliorations

- [x] AdminSubscriptions : ajouter bouton "Créer un abonnement" avec formulaire (client, plan, dates, prix)
- [x] AdminLeads : ajouter filtre par client (select dropdown) dans la barre de filtres
- [x] AdminClients : réparer le bouton "View client dashboard" (navigation vers /admin/clients/:id)
- [x] AdminOverview : ajouter section "Répartition par client" (tableau ou graphique avec leads/messages/appels par client)
- [x] Tests et checkpoint final
