Aller au contenu

Historique des sprints et des sessions

Déplacé depuis CLAUDE.md (2026-09-27) pour alléger le contexte chargé à chaque session. L'état courant du projet vit dans CLAUDE.md § « État courant du projet » ; ce fichier est l'archive.

Sprints livrés

  • Sprint 1 (J1-J3, 2026-04-18 → 2026-04-20) — Fondations + deploy + CI. Monorepo pnpm, Docker compose dev, Prisma schema + migration init, seed idempotent (7 stations, 2 glaciers, 2 captages), CI GitHub Actions (lint + typecheck + tests + build), Dockerfiles multi-stage, déploiement Coolify sur VPS Hetzner derrière Traefik + Let's Encrypt.
  • Sprint 2 (J4-J7, 2026-04-20 → 2026-04-21) — Backend ingestion + API + incident prod. Pivot LINDAS SPARQL (ADR-007, flux XML OFEV mort découvert à la discovery). Plugin cron 10 min, parser SPARQL, upsert Prisma idempotent. Endpoints /stations, /stations/:id/measurements, /status, /health. Incident 2026-04-21 (DB prod vidée, cause undetermined) → résolution défensive via entrypoint.sh + seed-on-boot, post-mortem docs/runbooks/incident-2026-04-21.md.
  • Sprint 3 — Temps 1 (J8-J10) — Scaffold landing page. 6 sections (Hero / Map / KeyMetrics / WhyLindas / ResearchZones / Footer) en stub, design tokens, atomes ABEM, responsive 375 px validé, i18n vue-i18n (FR only).
  • Sprint 3 — Temps 2 (J11-J12, 2026-04-21) — Câblage données live clôturé. T2-C1 CORS + useApi composable. T2-C2 status badge wired sur /status. T2-C3 carte Leaflet avec 7 markers LIVE/RESEARCH. T2-C4 drawer + chart D3 24 h. T2-C5 KeyMetrics live.
  • Sprint 3 — Temps 3 (J13, 2026-04-22) — Polish technique + 2 incidents prod résolus. Bloc 1 : LinkedIn footer (2e2fda4) + README v2 (f61df7f). Incident Traefik multi-homing 504 matinal → suppression du réseau custom (be850ae + runbook 8790a53). Side finding archive EACCES silencieux depuis 2026-04-20 → Dockerfile mkdir+chown /app/var avant USER app, volume renommé -v2 (fb1aa0d + runbook 9f735ea). Bloc 2 Lighthouse : robots.txt + sitemap.xml (43c631c), contraste WCAG AA sur tokens SPARQL URI + badge research theme-dark (8bc909f), 6 headers sécurité via snippet nginx-security-headers.conf inclus dans server + locations (4bb616f). Scores finaux prod : Desktop 96/100/100/100 · Mobile 90/100/96/100.
  • Sprint 3 — Temps 4 (J14, 2026-04-22 matin, Bloc 4) — Polish final clôturé. OG + Twitter Card (e1ef778), screenshots README via Puppeteer versionné (1a85844), STATUS J13 (60ed8c2), PRD reconcilé Bloc 1+2+3 (0cfc949), CLAUDE pickup (45f10bb). Tag v1.0.0-crealp posé + poussé. Prod stable 90s post-swap.
  • Session Option A (J14, 2026-04-22 après-midi) — Pivot stratégique transparence sourcing. Audit factuel des 3 stations RESEARCH → Bramois CONFIRMED (documentée crealp.ch), Les Haudères + Evolène ILLUSTRATIVE. Champ Station.sourcingStatus traversé du Prisma (3a1caa6) au DTO (25a6a30) à un atom dédié ASourcingBadge avec tooltip a11y sur cartes research (4d7a169). Docs : ADR-008 + context/crealp-stations-sourcing.md + reconcile STATUS/PRD/CLAUDE. 139 tests verts (71 API + 68 web).

Historique des sessions

  • 2026-04-18 : Context pack (business, domain, data-sources, brief, PRD, architecture overview, data model, API contracts, 6 ADR, design system, conventions). Ajout internal-projects.md (synthèse rapports CREALP 2022-2024).
  • 2026-04-20 : US-1.3 Prisma + /health. US-1.6 Dockerfiles + déploiement Coolify live. US-1.4 seed idempotent. US-1.5 CI workflow + badge.
  • 2026-04-20 (v2) : Discovery LINDAS → ADR-007. Ingestion SPARQL + cron + Station.dataSource + IngestionRun. Endpoints /stations, /stations/:id/measurements, /status.
  • 2026-04-21 : Incident DB vidée + post-mortem + défense entrypoint.sh. Sprint 3 démarré : scaffold landing, design tokens, atomes ABEM, refactor MStationCard, purge CSS brute, responsive 375 px, design-system.md réconcilié.
  • 2026-04-21 (Temps 2) : T2-C1 CORS + useApi (9c06df1). T2-C2 status badge live (8ef2fb1). T2-C3 Leaflet map (e099def). T2-C4 drawer + chart D3 24 h (e7abf18).
  • 2026-04-22 (J13 — Temps 3) : 8 commits sur main. Bloc 1 (LinkedIn footer 2e2fda4 + README v2 f61df7f). Fix Traefik multi-homing 504 (be850ae + runbook 8790a53) — leçon : pas de réseau Docker custom sous Coolify. Fix archive EACCES latent (fb1aa0d + runbook 9f735ea) — leçon : USER non-root + named volume exigent mkdir+chown dans l'image. Bloc 2 Lighthouse : robots/sitemap (43c631c), contraste WCAG AA (8bc909f), 6 headers sécurité nginx (4bb616f). Lighthouse prod Desktop 96/100/100/100 · Mobile 90/100/96/100. Outils audit créés hors repo : /tmp/axe-runner/ (axe-core + CSP smoke Puppeteer).
  • 2026-04-22 (J14 — Bloc 4 polish final) : 5 commits + tag. OG + Twitter Card (e1ef778), screenshots README Puppeteer versionné (1a85844), STATUS J13 (60ed8c2), PRD Bloc 1+2+3 shipped (0cfc949), CLAUDE pickup (45f10bb). Tag annotated v1.0.0-crealp posé + poussé. 130 tests verts. Prod stable 90s post-swap, validation OG + 6 headers sécurité.
  • 2026-04-22 (J14 — Session Option A : transparence sourcing) : 4 commits (non pushés au moment de la rédaction). Audit factuel stations RESEARCH contre crealp.ch/monitoring-des-eaux-de-surface → Bramois CONFIRMED, Les Haudères + Evolène ILLUSTRATIVE. Champ Station.sourcingStatus (Prisma + migration additive 3a1caa6), DTO verbatim SCREAMING_SNAKE (25a6a30), atom ASourcingBadge + tooltip CSS a11y role=tooltip + aria-describedby sur cartes research (4d7a169). Docs : ADR-008 + context/crealp-stations-sourcing.md + reconcile STATUS/PRD/CLAUDE (<hash> en cours). 139 tests verts (71 API + 68 web). Leçons : pattern de provenance typée extensible (MétéoSuisse, GLAMOS) ; palette Tailwind defaults pour variante unique (respect ADR-002) ; tooltip CSS sans lib tant que scope layout reste simple.