feat(ui): redesign V4 — Liquid Glass + Ticker#1
Merged
Conversation
Migration de toutes les pages vers le design system V4 : - Typographie Space Grotesk + DM Sans + JetBrains Mono - Palette noir #1E293B / rouge #DC2626 / indigo-pink-cyan accents - Mesh gradient animé + noise overlay + orbes flottants - Bordures iridescentes via @Property --angle - Ticker défilant en haut (inspiré variante 1) - Glass / glass-strong / cta-red / pill / spark-bar primitives Pages refaites : index, dashboard, offer, search, compare, about, unsubscribe Partials refaits : layout, offer_card, tech_badge, pagination Mockups HTML de référence sauvegardés dans docs/design/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1. SQL HY093 sur /search.php?keyword=...
- PDO en mode native prepares (ATTR_EMULATE_PREPARES=false) refuse
le ré-usage du même placeholder :kw dans (title LIKE :kw OR description LIKE :kw)
- Fix : deux placeholders distincts :kw_title et :kw_desc
2. Comparateur inopérant après le redesign V4
- Le JS qui gérait les .compare-checkbox + la barre flottante
avait été perdu pendant la migration
- Réintégration dans layout.twig avec style V4 (glass-strong,
iridescent, cta-red, compteur gradient)
- Sélection toujours persistée en localStorage
- Limite 4 offres conservée
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fondations (app.css + layout.twig) - Cursor-glow radial sur toutes les surfaces .glass / .glass-strong - Magnetic CTAs (translate suivant curseur, 0.2x–0.25x) - Haptic feedback mobile (checkbox compare, submit) - Mesh gradient parallax (CSS var --scroll piloté via rAF) - Noise overlay animé (3 steps, 2s) - Scroll-reveal IntersectionObserver (.reveal-io + stagger) - Spark-bars animées à l'intersection (.spark-bar-io) - Count-up tabulaire sur les stats (cubic ease-out 1.4s) - View Transitions API (Chromium 126+) - Live-dot emerald avec pulse ring Command palette ⌘K (layout.twig + /api/palette.php) - Alpine component avec clavier (↑↓⏎ ESC, ⌘/Ctrl-K) - Navigation statique (Accueil, Offres, Dashboard, Compare, API, GitHub) - Recherche dynamique techs + offres via nouveau endpoint - Style glass-strong + iridescent, groupes + badges PAGE/TECH/OFFRE Tech stats modal (partials/tech_badge + /api/tech_stats.php) - Tech badges cliquables partout (data-canonical) - Modal Alpine avec stats live : total offres, salaire médian, P25/P75, top 6 entreprises, top 6 villes, color-coding par catégorie - CTA "Voir toutes les offres" → /search.php?tech= Per-page enhancements - index.twig : 5 countups (stats total/companies/cities/with_salary/tech#1), live-dot, spark-bar-io sur top12 technos - about.twig : 4 KPI countups + reveal-io staggered - dashboard.twig : 6 KPI countups, heatmap calendaire 90j (GitHub-style), récap avec pic + moyenne - offer.twig : progress ring salaire vs marché (SVG 140px + gradient), calcul percentile linéaire P25/P50/P75, label dynamique Top X% - offer.php + dashboard.php : market_salary + calendar 90j Respect systématique de prefers-reduced-motion Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…polish DATA & PIPELINE - +4 codes ROME : M1803 DSI, M1806 conseil SI, M1801 admin SI, H1206 R&D → passage 678 → 6098 offres actives (1012 entreprises, 1554 villes) - APScheduler activé (cron daily 03:00 UTC) via env_file .env.local + nouvelle cible `make scheduler-enable` - ML réentraîné : salary RF sur 1214 offres (838 features, R² 0.541), similarity TF-IDF sur 6098 offres (5000 features) - Nouvelle cible `make retrain` SIMULATEUR SALAIRE (feature WOW) - POST /simulator/salary — prédit une fourchette depuis profil libre (technos + ville + expérience + contrat) sans offer_id existante - Alpine form /simulator.php : pills technos cliquables, résultat animé avec ring de confiance + note méthode RandomForest SCRAPER STATUS PAGE (transparence pipeline) - /scraper.php : historique 20 derniers runs, KPI 30j (succès/échec), graph offres nouvelles par jour, indicateur live scheduler PROD POLISH - Tailwind local minifié (30 KB) remplaçant CDN dev-only (~3 MB) → make frontend-build / watch, npm scripts - Flask-Limiter : 120 req/min + 2000/h par IP - HTTP cache : ETag W/"…" + If-None-Match → 304 Not Modified, Cache-Control public 60s sur /stats/* et /offers - Rate limit headers X-RateLimit-Limit/Remaining exposés TESTS (fermeture du gap frontend) - 7 tests PHPUnit intégration (OfferRepository : filtres, pagination, timeline, cities, contracts) — 433 assertions, tous verts - 5 tests Playwright E2E chromium headless (home, search, simulator, dashboard heatmap, ⌘K palette) — tous verts - Configs phpunit.xml + playwright.config.js FIX - Command palette : bouton ⌘K appelait window.__cmdk.open() (data field, boolean) au lieu de .toggle() → modal s'ouvre enfin au clic DOCS - README : section sécurité+prod, chiffres clés actualisés (9x), commandes Makefile mises à jour, tests frontend documentés Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- scraper/cli.py : tri d'imports (I001) - api/alerts_job.py : split if/then inline (E701) - api/ml/salary.py : noqa N806 sur X (convention scikit-learn) - api/ml/similarity.py : retire variable scores non utilisée (F841) - api/app.py + routes : imports re-triés par ruff --fix All checks passed (0 erreurs), prépare le merge de la PR #1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
index,search,dashboard,offer,compare,about,unsubscribe.layout,offer_card,tech_badge,pagination.docs/design/(3 variantes + V4 finale + 4 pages internes).Design system
#0F0F12base,#DC2626rouge, indigo/pink/cyan en accentsglass-strong,mesh,ticker-wrap,gradient-accent,iridescent,cta-red,pill,spark-bar,orb,reveal@property --angleprefers-reduced-motionTest plan
curlsur/,/search.php,/dashboard.php,/offer.php?id=110,/compare.php,/about.php)glass-strong,mesh,ticker-wrap,gradient-accent,iridescent,cta-red)/dashboard.php/search.php🤖 Generated with Claude Code