Section 13.7.4 : Tests, pitch et démo finale
🎯 Objectif pédagogique
Finaliser le projet avec des tests complets, préparer un pitch professionnel de 10 minutes, et réaliser une démo live convaincante pour les recruteurs ou clients.
Stratégie de tests
# spec/system/conversations_spec.rb (test E2E)
RSpec.describe 'Conversations', type: :system do
let(:user) { create(:user) }
before { sign_in user }
it 'allows user to start a new conversation' do
visit conversations_path
click_on 'Nouvelle conversation'
fill_in 'Votre question', with: 'Quelles sont les règles du RGPD ?'
click_on 'Envoyer'
expect(page).to have_content('Quelles sont les règles du RGPD ?')
expect(page).to have_css('.ai-response', wait: 15)
end
it 'saves conversation history' do
conversation = create(:conversation, user: user, title: 'RGPD')
create(:message, conversation: conversation, role: 'user', content: 'Question test')
create(:message, conversation: conversation, role: 'assistant', content: 'Réponse test')
visit conversation_path(conversation)
expect(page).to have_content('Question test')
expect(page).to have_content('Réponse test')
end
end
# spec/services/rag_service_spec.rb
RSpec.describe RagService do
describe '.answer' do
let!(:document) do
create(:document, content: 'Le RGPD impose une base légale pour tout traitement de données personnelles.')
end
before { SemanticSearch.index_document(document) }
it 'answers based on indexed documents' do
VCR.use_cassette('rag_answer') do
answer = RagService.answer('Que dit le RGPD sur les données personnelles ?')
expect(answer).to include('base légale').or include('données personnelles')
end
end
it 'indicates when no relevant context is found' do
VCR.use_cassette('rag_no_context') do
answer = RagService.answer('Comment faire une omelette ?')
expect(answer).to include('pas').or include('contexte')
end
end
end
end
Métriques de qualité
## Checklist de qualité projet final
### Code
- [ ] Test coverage > 80%
- [ ] Aucune erreur RuboCop
- [ ] Pas de N+1 queries (Bullet gem)
- [ ] Seeds fonctionnels pour démo
### Performance
- [ ] Page load < 2 secondes
- [ ] Réponse IA streaming < 500ms (premier token)
- [ ] Base de données avec index appropriés
### Sécurité
- [ ] Authentification (Devise)
- [ ] Autorisations (Pundit)
- [ ] Strong Parameters partout
- [ ] HTTPS forcé
- [ ] Variables d environnement pour les secrets
### Déploiement
- [ ] CI/CD fonctionnel
- [ ] Heroku (ou alternative) configuré
- [ ] Domain custom (optionnel)
- [ ] Monitoring (Sentry)
Préparer votre pitch
Le pitch est une présentation de 10 minutes qui raconte l'histoire de votre projet :
## Structure du pitch (10 minutes)
### 1. Le problème (2 min)
- Quel problème résolvez-vous ?
- Pour qui ? (persona)
- Pourquoi c est important ? (chiffres)
### 2. La solution (2 min)
- Votre application en une phrase
- Les 3 features clés
- Pourquoi l IA est nécessaire (pas juste cool)
### 3. Démo live (4 min)
- Scénario concret (pas un tour de features)
- Montrer le happy path complet
- Montrer une feature IA impressionnante
### 4. Architecture technique (1 min)
- Diagramme simple
- Technologies clés et pourquoi
- Un défi technique et comment vous l avez résolu
### 5. Conclusion (1 min)
- Ce que vous avez appris
- Prochaines étapes
- Call to action
Préparer la démo
## Checklist démo
### Avant la démo
- [ ] Données de seed chargées et visuellement attrayantes
- [ ] Connexion internet stable (ou démo offline si possible)
- [ ] Un compte de démo pré-créé
- [ ] Screenshots en backup si la démo plante
- [ ] Navigateur en mode présentation (clean, pas d onglets)
### Pendant la démo
- [ ] Raconter une HISTOIRE, pas lister des features
"Marie est avocate. Elle reçoit 50 questions par jour..."
- [ ] Montrer le problème AVANT la solution
- [ ] Interagir avec l app en temps réel
- [ ] Montrer une réponse IA en streaming (effet wow)
- [ ] Garder le rythme (pas de temps mort)
### Si quelque chose plante
- Restez calme
- "Comme dans tout logiciel en production, des bugs arrivent !"
- Montrez le screenshot de backup
- Passez à la suite
Portfolio et GitHub
## README professionnel pour votre repo
# 🤖 LegalAI — Assistant Juridique Intelligent
> Application web Rails permettant aux professionnels du droit
> de consulter une base juridique via un chat IA (RAG + GPT-4).
## Features
- Chat IA avec réponses sourcées (articles de loi)
- Base documentaire avec recherche sémantique
- Historique de conversations
- Dashboard d analytics
## Tech Stack
- Ruby on Rails 7.1
- PostgreSQL + pgvector
- OpenAI API (GPT-4 + embeddings)
- Hotwire (Turbo + Stimulus)
- Bootstrap 5
## Screenshots
[Screenshots de l app ici]
## Demo
🔗 [Live Demo](https://legalai.herokuapp.com)
## Installation
[Instructions de setup local]
Quelle est la partie la plus importante d'une démo de projet ?
Apprendre l’IA, du premier prompt aux agents