Utilisez cette checklist lors de chaque review de code. Le CI calcule automatiquement le Green Score /100 et le poste sur la PR.
Merci d'indiquer les mesures avant/après (payload/latence).
- DE11 – Pagination (15 pts)
sizeborné ≤ 100, paramètrespageetsizevalidés- Testé :
GET /books?page=0&size=20
- DE08 – Filtrage de champs (15 pts)
fields=whitelist, champs coûteux (summary) exclus par défaut- Testé :
GET /books/select?fields=id,title,author&page=0&size=20
- DE01 – Compression (15 pts)
- Gzip activé (
server.compression.enabled=true), min-response-size configuré - Testé avec
Accept-Encoding: gzip
- Gzip activé (
- DE02/DE03 – Cache HTTP (15 pts)
Cache-Control+ETag+Last-Modified→ 304 en testShallowEtagHeaderFilterconfiguré- Testé : 2 requêtes consécutives, 2ème → 304
- DE06/US04 – Delta (10 pts)
/changes?since=…endpoint fonctionnel- Testé : delta vide quand pas de changement récent
- 206 Partial Content (10 pts)
Range: bytes=supporté pour ressources volumineuses- Testé :
GET /books/1/summaryavecRange: bytes=0-199→ 206
- LO01 – Observabilité (5 pts)
PayloadLoggingFilteractif (logs: method, path, status, bytes, timeMs)- Rétention documentée
- US07 – Rate Limiting (5 pts)
RateLimitFilteractif (429 quand limite atteinte)
- AR02 – Format binaire (10 pts)
- CBOR supporté (
/books/cboravecAccept: application/cbor)
- CBOR supporté (
- US01 – Query params pour GET (page/size/fields)
- US07 – Monitoring erreurs (Actuator/metrics exposés)
- Validation inputs (bornes
size, whitelistfields) - Idempotency-Key sur POST critiques
# Commande de mesure :
curl -s -w 'size=%{size_download} time=%{time_total}\n' -o /dev/null <URL>| Métrique | Avant | Après | Gain % |
|---|---|---|---|
| Payload full | _____ bytes | _____ bytes | _____ % |
| Payload paginé+filtré | — | _____ bytes | — |
| Payload gzip | — | _____ bytes | _____ % |
| ETag 2nd call | 200 | 304 | 100% |
Le CI génère un rapport JSON dans
reports/et poste le score sur la PR. Dashboard :dashboard/index.html