# 📄 DocuResume Pro API - Documentation ## 🌐 URL de l'API dĂ©ployĂ©e sur Hugging Face Spaces ``` https://k2mar-docuresume-backend.hf.space ``` **Statut:** ✅ En ligne avec FAISS activĂ© (16GB RAM) **Plateforme:** Hugging Face Spaces (Docker) **Base de donnĂ©es:** Supabase PostgreSQL + Storage **Recherche:** FAISS + Sentence-Transformers (all-MiniLM-L6-v2) --- ## đŸ§Ș Tests EffectuĂ©s (27 janvier 2026) ### ✅ Status Check ```bash curl https://k2mar-docuresume-backend.hf.space/ ``` **RĂ©sultat:** ```json { "service": "DocuResume Pro API", "version": "1.0.0", "status": "running", "supabase_connected": true } ``` ### ✅ Health Check ```bash curl https://k2mar-docuresume-backend.hf.space/health ``` **RĂ©sultat:** ```json { "status": "healthy", "database": "connected", "timestamp": "2026-01-27T02:24:23.680960" } ``` ### ✅ Inscription Utilisateur ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/users/register \ -H "Content-Type: application/json" \ -d '{ "email": "test@demo.com", "username": "testuser", "password": "test123" }' ``` **RĂ©sultat:** ```json { "message": "Utilisateur créé avec succĂšs", "user_id": "c703c345-e89d-4662-b87a-b01a4badc476", "email": "test@demo.com", "username": "testuser" } ``` ### ✅ Connexion Utilisateur ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/users/login \ -H "Content-Type: application/json" \ -d '{ "email": "test@demo.com", "password": "test123" }' ``` **RĂ©sultat:** ```json { "message": "Connexion rĂ©ussie", "user_id": "c703c345-e89d-4662-b87a-b01a4badc476", "email": "test@demo.com", "username": "testuser" } ``` ### ✅ Statistiques Globales ```bash curl https://k2mar-docuresume-backend.hf.space/stats/global ``` **RĂ©sultat:** ```json { "total_users": 5, "total_documents": 4, "total_queries": 0, "timestamp": "2026-01-27T02:24:52.783266" } ``` --- ## 📚 Endpoints Disponibles ### 🔐 Authentification #### POST `/users/register` CrĂ©er un nouvel utilisateur ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/users/register \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "username": "myusername", "password": "mypassword" }' ``` **RĂ©ponse:** ```json { "message": "Utilisateur créé avec succĂšs", "user_id": "uuid-here", "email": "user@example.com", "username": "myusername" } ``` #### POST `/users/login` Se connecter ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/users/login \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "mypassword" }' ``` **RĂ©ponse:** ```json { "message": "Connexion rĂ©ussie", "user_id": "uuid-here", "email": "user@example.com", "username": "myusername" } ``` --- ### 📄 Gestion des Documents #### POST `/documents/upload` Uploader un document PDF (avec OCR Tesseract) ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/documents/upload \ -F "file=@document.pdf" \ -F "user_id=YOUR_USER_ID" \ -F "tags=[]" \ -F "document_type=rapport" ``` **RĂ©ponse:** ```json { "message": "Document uploadĂ© avec succĂšs", "document_id": "doc-uuid", "filename": "uuid_document.pdf", "status": "completed", "pages": 5, "text_length": 2847, "faiss_indexed": true, "chunks": 12 } ``` #### GET `/documents/user/{user_id}` RĂ©cupĂ©rer tous les documents d'un utilisateur ```bash curl https://k2mar-docuresume-backend.hf.space/documents/user/YOUR_USER_ID?limit=100 ``` **RĂ©ponse:** ```json { "documents": [ { "id": "doc-uuid", "filename": "document.pdf", "original_filename": "Mon Document.pdf", "file_size": 245678, "page_count": 5, "processing_status": "completed", "uploaded_at": "2026-01-27T00:00:00" } ], "count": 1 } ``` #### GET `/documents/{document_id}` RĂ©cupĂ©rer les dĂ©tails d'un document ```bash curl https://k2mar-docuresume-backend.hf.space/documents/DOC_ID ``` #### GET `/documents/{document_id}/download` TĂ©lĂ©charger un document PDF ```bash curl -O -J https://k2mar-docuresume-backend.hf.space/documents/DOC_ID/download ``` #### PATCH `/documents/{document_id}` Mettre Ă  jour un document ```bash curl -X PATCH https://k2mar-docuresume-backend.hf.space/documents/DOC_ID \ -H "Content-Type: application/json" \ -d '{ "tags": ["important", "contrat"], "is_archived": false }' ``` #### DELETE `/documents/{document_id}` Supprimer un document ```bash curl -X DELETE https://k2mar-docuresume-backend.hf.space/documents/DOC_ID ``` --- ### 🔍 Recherche SĂ©mantique (FAISS) #### POST `/search/semantic` Recherche sĂ©mantique dans un document spĂ©cifique ```bash curl -X POST "https://k2mar-docuresume-backend.hf.space/search/semantic?document_id=DOC_ID&query=contrat%20de%20travail&k=5" ``` **RĂ©ponse:** ```json { "document_id": "doc-uuid", "query": "contrat de travail", "results": [ { "text": "Le contrat de travail Ă  durĂ©e indĂ©terminĂ©e...", "score": 0.87, "chunk_index": 3, "document_id": "doc-uuid" } ], "count": 5 } ``` #### POST `/search/semantic/multi` Recherche sĂ©mantique dans tous les documents d'un utilisateur ```bash curl -X POST "https://k2mar-docuresume-backend.hf.space/search/semantic/multi?user_id=USER_ID&query=clause%20de%20confidentialitĂ©&k=5" ``` **RĂ©ponse:** ```json { "user_id": "user-uuid", "query": "clause de confidentialitĂ©", "results": [ { "text": "Article 5 - ConfidentialitĂ©...", "score": 0.92, "chunk_index": 8, "document_id": "doc-uuid-1" }, { "text": "Les parties s'engagent Ă ...", "score": 0.85, "chunk_index": 2, "document_id": "doc-uuid-2" } ], "count": 5, "searched_documents": 3 } ``` #### POST `/query` RAG - Poser une question sur un document (avec contexte) ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/query \ -H "Content-Type: application/json" \ -d '{ "document_id": "DOC_ID", "query": "Quelle est la durĂ©e du contrat?" }' ``` **RĂ©ponse:** ```json { "query": "Quelle est la durĂ©e du contrat?", "response": "BasĂ© sur le document, voici les passages pertinents:\n\nLe contrat est conclu pour une durĂ©e de...", "sources": [ { "text": "Article 2 - DurĂ©e: Le prĂ©sent contrat...", "score": 0.91 } ], "query_id": "query-uuid" } ``` #### GET `/query/history/{user_id}` Historique des questions d'un utilisateur ```bash curl https://k2mar-docuresume-backend.hf.space/query/history/USER_ID?limit=50 ``` --- ### 📊 Statistiques et Analytics #### GET `/analytics/user/{user_id}` Analytics d'un utilisateur ```bash curl https://k2mar-docuresume-backend.hf.space/analytics/user/USER_ID ``` **RĂ©ponse:** ```json { "user_id": "user-uuid", "analytics": { "total_documents": 12, "total_queries": 45, "total_summaries": 8, "total_storage_mb": 15.6, "last_activity": "2026-01-27T02:00:00" } } ``` #### GET `/stats/global` Statistiques globales de la plateforme ```bash curl https://k2mar-docuresume-backend.hf.space/stats/global ``` **RĂ©ponse:** ```json { "total_users": 156, "total_documents": 892, "total_queries": 3421, "timestamp": "2026-01-27T02:24:52.783266" } ``` --- ### 📝 RĂ©sumĂ©s #### GET `/documents/{document_id}/summaries` RĂ©cupĂ©rer les rĂ©sumĂ©s d'un document ```bash curl https://k2mar-docuresume-backend.hf.space/documents/DOC_ID/summaries ``` #### POST `/documents/{document_id}/summaries` CrĂ©er un rĂ©sumĂ© pour un document ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/documents/DOC_ID/summaries \ -H "Content-Type: application/json" \ -d '{ "summary_type": "extractive", "summary_level": "medium", "content": "RĂ©sumĂ© du document...", "model_name": "t5-small" }' ``` --- ### 📩 Chunks #### GET `/documents/{document_id}/chunks` RĂ©cupĂ©rer les chunks d'un document ```bash curl https://k2mar-docuresume-backend.hf.space/documents/DOC_ID/chunks ``` #### POST `/documents/{document_id}/chunks` CrĂ©er les chunks d'un document ```bash curl -X POST https://k2mar-docuresume-backend.hf.space/documents/DOC_ID/chunks \ -H "Content-Type: application/json" \ -d '[ { "content": "Premier paragraphe du document...", "page_number": 1, "section_title": "Introduction" } ]' ``` --- ## 🔧 Configuration Technique ### Variables d'Environnement sur HF Spaces ```bash SUPABASE_URL=https://kbccbdqdrdfdvxhugjrn.supabase.co SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ENABLE_FAISS=true ``` ### Stack Technique - **Framework:** FastAPI 0.115.12 - **Base de donnĂ©es:** Supabase (PostgreSQL + Storage) - **Recherche vectorielle:** FAISS (faiss-cpu 1.8.0) - **Embeddings:** Sentence-Transformers 2.7.0 (all-MiniLM-L6-v2) - **OCR:** Tesseract + Poppler-utils - **HĂ©bergement:** Hugging Face Spaces (Docker, 16GB RAM) ### ModĂšles de Machine Learning - **Embeddings:** `all-MiniLM-L6-v2` (384 dimensions) - **OCR:** Tesseract (français + anglais) - **Chunking:** 500 caractĂšres avec overlap de 50 --- ## 🚀 Utilisation depuis une Application Mobile (Flutter) ### Configuration ```dart class ApiConfig { static const String baseUrl = 'https://k2mar-docuresume-backend.hf.space'; static Map headers = { 'Content-Type': 'application/json', }; } ``` ### Exemple d'utilisation ```dart // Connexion final response = await http.post( Uri.parse('${ApiConfig.baseUrl}/users/login'), headers: ApiConfig.headers, body: jsonEncode({ 'email': 'user@example.com', 'password': 'password123' }) ); // Upload document var request = http.MultipartRequest( 'POST', Uri.parse('${ApiConfig.baseUrl}/documents/upload') ); request.files.add(await http.MultipartFile.fromPath('file', pdfPath)); request.fields['user_id'] = userId; request.fields['tags'] = '[]'; var response = await request.send(); // Recherche sĂ©mantique final response = await http.post( Uri.parse('${ApiConfig.baseUrl}/search/semantic/multi?user_id=$userId&query=$query&k=5') ); ``` --- ## 🔒 SĂ©curitĂ© - ✅ CORS activĂ© pour tous les domaines (Ă  restreindre en production) - ✅ Mots de passe hashĂ©s avec bcrypt - ✅ Connexion sĂ©curisĂ©e Ă  Supabase - ✅ Variables d'environnement stockĂ©es dans HF Secrets - ⚠ Ajouter un systĂšme d'authentification JWT pour production --- ## 📈 Limites et Quotas | Ressource | Limite | |-----------|--------| | RAM | 16 GB | | CPU | PartagĂ© | | Stockage | IllimitĂ© (Supabase) | | Taille fichier | Configurable (actuellement ~10MB) | | RequĂȘtes/min | IllimitĂ© | --- ## 🐛 Debugging ### VĂ©rifier le statut de FAISS ```bash curl https://k2mar-docuresume-backend.hf.space/ | jq '.service, .status' ``` ### Consulter les logs sur Hugging Face 1. Aller sur https://huggingface.co/spaces/K2MAR/docuresume-backend 2. Onglet "Logs" 3. Chercher "✓ FAISS activĂ© et prĂȘt" ### Tester la connexion Supabase ```bash curl https://k2mar-docuresume-backend.hf.space/health | jq '.database' ``` --- ## 📞 Support - **GitHub:** [Votre repo] - **Hugging Face Space:** https://huggingface.co/spaces/K2MAR/docuresume-backend - **Email:** [Votre email] --- ## 📝 Notes de Version ### v1.0.0 (27 janvier 2026) - ✅ DĂ©ploiement initial sur Hugging Face Spaces - ✅ FAISS activĂ© avec 16GB RAM - ✅ OCR Tesseract pour extraction de texte - ✅ Recherche sĂ©mantique multi-documents - ✅ SystĂšme RAG basique - ✅ Connexion Supabase PostgreSQL + Storage - ✅ CORS activĂ© pour intĂ©gration mobile --- ## 🎯 Roadmap - [ ] Authentification JWT - [ ] GĂ©nĂ©ration de rĂ©sumĂ©s avec T5/BART - [ ] Support multi-langues - [ ] Webhooks pour notifications - [ ] Cache Redis pour performances - [ ] Rate limiting - [ ] Documentation Swagger interactive - [ ] Tests unitaires et d'intĂ©gration