140 lines
2.6 KiB
Markdown
140 lines
2.6 KiB
Markdown
# Documentation API - 4NK IA Lecoffre.io
|
||
|
||
## Vue d'ensemble
|
||
|
||
L'application 4NK IA Lecoffre.io communique uniquement avec le backend interne pour toutes les
|
||
fonctionnalités (upload, extraction, analyse, contexte, conseil).
|
||
|
||
## API Backend Principal
|
||
|
||
### Base URL
|
||
|
||
```text
|
||
http://localhost:8000 (développement)
|
||
```
|
||
|
||
### Endpoints
|
||
|
||
#### Upload de document
|
||
|
||
```http
|
||
POST /api/notary/upload
|
||
Content-Type: multipart/form-data
|
||
|
||
Body: FormData avec le fichier
|
||
```
|
||
|
||
Réponse attendue (champs utilisés par le front) :
|
||
|
||
```json
|
||
{
|
||
"document_id": "doc_123456",
|
||
"mime_type": "application/pdf",
|
||
"functional_type": "CNI"
|
||
}
|
||
```
|
||
|
||
Mappage front en `Document` :
|
||
|
||
```json
|
||
{
|
||
"id": "doc_123456",
|
||
"name": "acte_vente.pdf",
|
||
"mimeType": "application/pdf",
|
||
"functionalType": "CNI",
|
||
"size": 1024000,
|
||
"uploadDate": "<date locale>",
|
||
"status": "completed",
|
||
"previewUrl": "blob:..."
|
||
}
|
||
```
|
||
|
||
#### Extraction de données
|
||
|
||
```http
|
||
GET /api/notary/documents/{documentId}
|
||
```
|
||
|
||
#### Analyse du document
|
||
|
||
```http
|
||
GET /api/documents/{documentId}/analyze
|
||
```
|
||
|
||
#### Données contextuelles
|
||
|
||
```http
|
||
GET /api/documents/{documentId}/context
|
||
```
|
||
|
||
#### Conseil IA
|
||
|
||
```http
|
||
GET /api/documents/{documentId}/conseil
|
||
```
|
||
|
||
## APIs Externes
|
||
|
||
Les APIs externes (Cadastre, Géorisques, Géofoncier, BODACC, Infogreffe) sont appelées côté backend
|
||
uniquement. Aucun appel direct côté front.
|
||
|
||
## 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
|
||
|
||
## Configuration
|
||
|
||
### Variables d'environnement
|
||
|
||
```env
|
||
VITE_API_URL=http://localhost:8000
|
||
VITE_USE_OPENAI=false
|
||
VITE_OPENAI_API_KEY=
|
||
VITE_OPENAI_BASE_URL=https://api.openai.com/v1
|
||
VITE_OPENAI_MODEL=gpt-4o-mini
|
||
```
|
||
|
||
## Mode OpenAI (fallback)
|
||
|
||
Quand `VITE_USE_OPENAI=true`, le frontend bascule sur un mode de secours basé sur OpenAI:
|
||
|
||
- Upload: simulé côté client (le fichier n’est pas envoyé à OpenAI)
|
||
- Extraction/Analyse/Conseil/Contexte: appels `chat.completions` sur `VITE_OPENAI_MODEL`
|
||
- Détection de type: heuristique simple côté client
|
||
|
||
Ce mode est utile pour démo/diagnostic quand le backend n’est pas disponible.
|
||
|
||
### Configuration Axios
|
||
|
||
```typescript
|
||
const apiClient = axios.create({
|
||
baseURL: BASE_URL,
|
||
timeout: 60000
|
||
})
|
||
```
|
||
|
||
## Authentification
|
||
|
||
### Headers requis
|
||
|
||
```http
|
||
Authorization: Bearer {token}
|
||
Content-Type: application/json
|
||
```
|
||
|
||
## Rate Limiting
|
||
|
||
- Limites gérées par le backend
|