# Reset des Positions de Signature (Test Pourcentages)

## Context
Passage du système de coordonnées en millimètres vers un système en **pourcentages**.
Cela permet d'avoir un rendu indépendant de la résolution/taille du PDF.

## Changements Effectués

### 1. Types Modifiés
- `EstimatedPosition` : x, y, width, height maintenant en POURCENTAGES (%)
- `ExtractedPosition` : x, y, width, height maintenant en POURCENTAGES (%)

### 2. Fonctions Modifiées

#### `extractPrecisePositionsFromPdf()`
```typescript
// AVANT : Stockage en mm
const xMm = textPosition.x * PT_TO_MM;
const yMm = pageHeightMm - (textPosition.y * PT_TO_MM);

// APRÈS : Conversion en pourcentages
const xMm = textPosition.x * PT_TO_MM;
const yMm = pageHeightMm - (textPosition.y * PT_TO_MM);
const xPercent = (xMm / pageWidthMm) * 100;
const yPercent = (yMm / pageHeightMm) * 100;
const widthPercent = (widthMm / pageWidthMm) * 100;
const heightPercent = (heightMm / pageHeightMm) * 100;
```

#### `estimatePositionsFromPlaceholders()`
```typescript
// AVANT : Positions en mm absolus
const x = isEmployee ? A4_WIDTH_MM - MARGIN_X_MM - width : MARGIN_X_MM;
const y = A4_HEIGHT_MM - MARGIN_BOTTOM_MM - height;

// APRÈS : Positions en pourcentages
const widthPercent = ((ph.width || 150) / 210) * 100;
const heightPercent = ((ph.height || 60) / 297) * 100;
const xPercent = isEmployee ? 100 - MARGIN_X_PERCENT - widthPercent : MARGIN_X_PERCENT;
const yPercent = 100 - MARGIN_BOTTOM_PERCENT - heightPercent;
```

### 3. Composant PDFImageViewer
```typescript
// AVANT : Conversion mm → %
const leftPercent = (pos.x / pageWidthMm) * 100;
const topPercent = (pos.y / pageHeightMm) * 100;

// APRÈS : Utilisation directe des pourcentages
style={{
  left: `${pos.x}%`,
  top: `${pos.y}%`,
  width: `${pos.width}%`,
  height: `${pos.height}%`,
}}
```

## Avantages

✅ **Indépendant de la résolution** : Peu importe la taille du rendu (petit écran, grand écran, zoom), les positions relatives restent correctes

✅ **Simplifie le code** : Plus besoin de connaître les dimensions réelles en mm du PDF

✅ **Cohérence** : Le placeholder est à X% du haut → le cadre s'affiche à X% du haut

✅ **Responsive** : Fonctionne sur mobile, tablette, desktop sans recalcul

## Pour Tester

1. Supprimer les anciennes positions en base (elles sont en mm) :
```sql
DELETE FROM sign_positions WHERE request_id = '2e187e3d-770b-46a1-b7c8-de7a01726059';
```

2. Recharger la page de signature : `/signer/2e187e3d-770b-46a1-b7c8-de7a01726059/xxx`

3. L'API va :
   - Détecter qu'il n'y a pas de positions en DB
   - Lancer l'extraction précise depuis le PDF
   - Calculer les positions en POURCENTAGES
   - Les stocker en DB
   - Les renvoyer au front

4. Le front va :
   - Recevoir les positions en pourcentages
   - Les appliquer directement sans conversion
   - Afficher les cadres proportionnellement à la taille du conteneur

## Vérification Console

Vous devriez voir :
```
[PLACEHOLDER] Trouvé sur page 3: Signature Employeur (Employeur)
  Position: x=9.5%, y=70.0%, w=35.7%, h=10.1%
[PLACEHOLDER] Trouvé sur page 3: Signature Salarié (Salarié)
  Position: x=54.8%, y=70.0%, w=35.7%, h=10.1%
```

Au lieu de :
```
originalMm: {x: 20, y: 260, w: 150, h: 60}
percentCalculated: {left: '9.52', top: '87.54', width: '71.43', height: '20.20'}
```
