Nicolas Cantu afb58ef4b1 docs: update complete documentation
- Update README.md with comprehensive project documentation
- Update CHANGELOG.md with detailed version 0.1.0 features
- Add ARCHITECTURE.md with technical architecture details
- Add API.md with complete API documentation
- Add DEPLOYMENT.md with deployment guides and configurations
- Add TESTING.md with testing strategies and examples
- Fix markdownlint issues across all documentation files
- Ensure all documentation follows markdown best practices
2025-09-10 18:47:09 +02:00

356 lines
7.4 KiB
Markdown

# Documentation API - 4NK IA Front Notarial
## Vue d'ensemble
L'application 4NK IA Front Notarial communique avec plusieurs APIs pour fournir une expérience complète
d'analyse de documents notariaux.
## API Backend Principal
### Base URL
```text
http://localhost:8000 (développement)
```
### Endpoints
#### Upload de document
```http
POST /api/documents/upload
Content-Type: multipart/form-data
Body: FormData avec le fichier
```
**Réponse :**
```json
{
"id": "doc_123456",
"name": "acte_vente.pdf",
"type": "application/pdf",
"size": 1024000,
"uploadDate": "2024-01-15T10:30:00Z",
"status": "completed"
}
```
#### Extraction de données
```http
GET /api/documents/{documentId}/extract
```
**Réponse :**
```json
{
"documentId": "doc_123456",
"text": "Texte extrait du document...",
"language": "fr",
"documentType": "Acte de vente",
"identities": [
{
"id": "1",
"type": "person",
"firstName": "Jean",
"lastName": "Dupont",
"birthDate": "1980-05-15",
"nationality": "Française",
"confidence": 0.95
}
],
"addresses": [
{
"street": "123 Rue de la Paix",
"city": "Paris",
"postalCode": "75001",
"country": "France"
}
],
"properties": [
{
"id": "1",
"type": "apartment",
"address": {
"street": "123 Rue de la Paix",
"city": "Paris",
"postalCode": "75001",
"country": "France"
},
"surface": 75,
"cadastralReference": "1234567890AB",
"value": 250000
}
],
"contracts": [
{
"id": "1",
"type": "sale",
"parties": [],
"amount": 250000,
"date": "2024-01-15",
"clauses": ["Clause de garantie", "Clause de condition suspensive"]
}
],
"signatures": ["Jean Dupont", "Marie Martin"],
"confidence": 0.92
}
```
#### Analyse du document
```http
GET /api/documents/{documentId}/analyze
```
**Réponse :**
```json
{
"documentId": "doc_123456",
"documentType": "Acte de vente",
"isCNI": false,
"credibilityScore": 0.88,
"summary": "Document analysé avec succès. Toutes les informations semblent cohérentes.",
"recommendations": [
"Vérifier l'identité des parties auprès des autorités compétentes",
"Contrôler la validité des documents cadastraux"
]
}
```
#### Données contextuelles
```http
GET /api/documents/{documentId}/context
```
**Réponse :**
```json
{
"documentId": "doc_123456",
"cadastreData": {
"status": "disponible",
"reference": "1234567890AB"
},
"georisquesData": {
"status": "aucun risque identifié"
},
"geofoncierData": {
"status": "données disponibles"
},
"bodaccData": {
"status": "aucune procédure en cours"
},
"infogreffeData": {
"status": "entreprise en règle"
},
"lastUpdated": "2024-01-15T10:30:00Z"
}
```
#### Conseil IA
```http
GET /api/documents/{documentId}/conseil
```
**Réponse :**
```json
{
"documentId": "doc_123456",
"analysis": "Ce document présente toutes les caractéristiques d'un acte notarial standard.",
"recommendations": [
"Procéder à la vérification d'identité des parties",
"Contrôler la validité des documents fournis"
],
"risks": [
"Risque faible : Vérification d'identité recommandée",
"Risque moyen : Contrôle cadastral nécessaire"
],
"nextSteps": [
"Collecter les pièces d'identité des parties",
"Vérifier les documents cadastraux",
"Préparer l'acte final"
],
"generatedAt": "2024-01-15T10:30:00Z"
}
```
## APIs Externes
### Cadastre
**URL :** `https://api.cadastre.gouv.fr`
**Usage :** Vérification des références cadastrales et des propriétés
### Géorisques
**URL :** `https://www.georisques.gouv.fr/api`
**Usage :** Analyse des risques géologiques et environnementaux
### Géofoncier
**URL :** `https://api.geofoncier.fr`
**Usage :** Données foncières et géographiques
### BODACC
**URL :** `https://api.bodacc.fr`
**Usage :** Vérification des procédures collectives et des entreprises
### Infogreffe
**URL :** `https://api.infogreffe.fr`
**Usage :** Informations sur les entreprises et leurs dirigeants
## Gestion d'erreur
### Codes d'erreur HTTP
- **200** : Succès
- **400** : Requête malformée
- **404** : Ressource non trouvée
- **405** : Méthode non autorisée
- **500** : Erreur serveur interne
### Erreurs de connexion
- **ERR_NETWORK** : Erreur de réseau
- **ERR_CONNECTION_REFUSED** : Connexion refusée
- **ERR_TIMEOUT** : Timeout de la requête
### Fallback automatique
En cas d'erreur, l'application bascule automatiquement vers des données de démonstration pour maintenir l'expérience utilisateur.
## Configuration
### Variables d'environnement
```env
VITE_API_URL=http://localhost:8000
VITE_CADASTRE_API_URL=https://api.cadastre.gouv.fr
VITE_GEORISQUES_API_URL=https://www.georisques.gouv.fr/api
VITE_GEOFONCIER_API_URL=https://api.geofoncier.fr
VITE_BODACC_API_URL=https://api.bodacc.fr
VITE_INFOGREFFE_API_URL=https://api.infogreffe.fr
```
### Configuration Axios
```typescript
const apiClient = axios.create({
baseURL: BASE_URL,
timeout: 60000, // 60 secondes
headers: {
'Content-Type': 'application/json'
}
})
```
## Authentification
### Headers requis
```http
Authorization: Bearer {token}
Content-Type: application/json
```
### Gestion des tokens
- **Refresh automatique** : Renouvellement des tokens expirés
- **Intercepteurs** : Ajout automatique des headers d'authentification
- **Logout automatique** : Déconnexion en cas d'erreur 401
## Rate Limiting
### Limites par défaut
- **100 requêtes/minute** par utilisateur
- **1000 requêtes/heure** par utilisateur
- **Backoff exponentiel** en cas de dépassement
### Headers de réponse
```http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642248000
```
## Monitoring et logs
### Métriques collectées
- **Temps de réponse** : Latence des requêtes
- **Taux d'erreur** : Pourcentage d'échecs
- **Utilisation** : Nombre de requêtes par endpoint
### Logs
- **Requêtes** : Log de toutes les requêtes API
- **Erreurs** : Log détaillé des erreurs
- **Performance** : Métriques de performance
## Tests
### Tests d'intégration
```typescript
// Test d'upload de document
test('should upload document successfully', async () => {
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
const result = await documentApi.upload(file)
expect(result.id).toBeDefined()
expect(result.status).toBe('completed')
})
```
### Tests de fallback
```typescript
// Test du mode démonstration
test('should return demo data on API error', async () => {
// Mock de l'erreur API
mockAxios.onPost('/api/documents/upload').reply(500)
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
const result = await documentApi.upload(file)
expect(result.id).toMatch(/^demo-/)
expect(result.name).toBe('test.pdf')
})
```
## Sécurité
### Validation des données
- **Sanitization** : Nettoyage des entrées utilisateur
- **Validation** : Vérification des types et formats
- **Escape** : Protection contre les injections
### CORS
```typescript
// Configuration CORS
const corsOptions = {
origin: ['http://localhost:3000', 'https://app.4nkweb.com'],
credentials: true,
optionsSuccessStatus: 200
}
```
### HTTPS
- **Redirection automatique** : HTTP vers HTTPS en production
- **HSTS** : HTTP Strict Transport Security
- **Certificats SSL** : Certificats valides et à jour