# Architecture Technique Kobo — IFPB

## Vue d'ensemble

```
┌─────────────────────────────────────────────────────┐
│                  TERRAIN (Offline)                   │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐          │
│  │ Agent 1  │  │ Agent 2  │  │ Agent N  │          │
│  │ KoboCollect│ │KoboCollect│ │KoboCollect│         │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘          │
└───────┼──────────────┼──────────────┼────────────────┘
        │ Sync         │ Sync         │ Sync
        ▼              ▼              ▼
┌─────────────────────────────────────────────────────┐
│              KOBO SERVER (Cloud/Self-hosted)         │
│  ┌──────────────────────────────────────────┐       │
│  │  KoboToolbox API v2                      │       │
│  │  - /assets (formulaires)                 │       │
│  │  - /data (soumissions)                   │       │
│  │  - /users (agents)                       │       │
│  └──────────────────┬───────────────────────┘       │
└─────────────────────┼────────────────────────────────┘
                      │ Polling (5 min)
                      ▼
┌─────────────────────────────────────────────────────┐
│               ETL PIPELINE (Python)                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐          │
│  │ Extract  │→│ Transform│→│  Load    │          │
│  │(API v2   │  │(Validate │  │(PostgreSQL│         │
│  │ paginated│  │ Clean    │  │ Upsert)  │          │
│  └──────────┘  └──────────┘  └──────────┘          │
└─────────────────────┬────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────┐
│              FISCAL ENGINE (Backend)                 │
│  - Catégorisation A/B/C/D                           │
│  - Calcul IFTB + CAC                                │
│  - Génération rôles fiscaux                         │
│  - Notification SMS                                 │
└─────────────────────┬────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────┐
│           IFPB PLATFORM (SvelteKit + Cloudflare)     │
│  /fiscal | /collection | /kobo | /elop | /ppp       │
└─────────────────────────────────────────────────────┘
```

## Stack Technique

| Composant | Technologie | Version | Notes |
|-----------|-------------|---------|-------|
| Collect App | KoboCollect Android | 5.0+ | Tecno/Itel/Samsung (~80-150€) |
| Serveur Kobo | KoboToolbox | 2.x (cloud) → Docker self-hosted | Phase 1: Cloud gratuit |
| ETL | Python + requests + pandas | 3.11+ | Polling API v2 |
| Base données | PostgreSQL | 15+ | Contribuables, paiements |
| Backend API | HonoJS / FastAPI | - | REST |
| Frontend | SvelteKit 5 | 5.x | PWA offline-first |
| Hosting | Cloudflare Pages | - | CDN global + D1 |
| SMS Gateway | SMPP / HTTP API | - | Opérateurs MG |

## Sécurité

- **Données au repos** : Chiffrement AES-256 (PostgreSQL)
- **Données en transit** : TLS 1.3 obligatoire
- **Authentification** : JWT tokens + rotation
- **Audit trail** : Chaque action loggée (timestamp + user ID)
- **Photos** : Hash déduplication (détection fraude)
- **GPS** : Validation cohérence topographique

## Scalabilité

| Phase | Volume | Infrastructure |
|-------|--------|----------------|
| Pilot | ≤10k submissions/mois | KoboCloud gratuit |
| Production | 50-100k/mois | Self-hosted Docker (8GB RAM, 100GB SSD) |
| National | Multi-commune | Kubernetes cluster |

---
*Document généré par IFPB Platform — v2026.06.02*
