Feature #66
closedFeature #21: Enhance Matching Results and AI Assistant with Company Enrichment and Market Insights
[GetYourJob UI] Market Insights section in analysis tools
0%
Description
**Surface:** GetYourJob Next.js UI (`GetYourJob/src/components/`, analysis-tools section) consuming `/api/market-insights` (#3).
## Description
Add a dedicated "Market Insights" section to the analysis tools (alongside the existing pros/cons), driven by the market-insights route (#3).
Section shows:
- Top missing/in-demand skills with demand counts (e.g. "Java (8,974 offers), Kubernetes (7,086)").
- Location trends (e.g. "Paris has the most Frontend roles").
- Work-mode trends (e.g. "80% of Frontend roles are hybrid").
Requirements:
- Loading/empty/error states for the insights fetch.
- Insights scoped to the candidate's role/context passed to the route.
Depends on #3.
## Acceptance criteria
- [ ] Analysis tools include a "Market Insights" section showing top skills with demand counts, location trends, and work-mode trends.
- [ ] Section is scoped to the relevant role/context and reflects #3 data.
- [ ] Loading, empty, and error states are handled.
**Estimate:** M
RA Updated by Redmine Admin about 2 months ago
- Status changed from Submitted to In development
RA Updated by Redmine Admin about 2 months ago
- branch set to feat/redmine-21-insights-ui
- pr_url set to https://github.com/omdev-tech/GetYourJob/pull/239
đ done dev â ready for QA
Section « Tendances du marché » livrée dans les outils d'analyse (OfferMatchDetail), montée juste aprÚs « points forts / points d'attention ». Consomme `GET /api/market-insights?role=&location=` (agrégat #61/#63 déjà sur la branche), scopée au rÎle (titre de l'offre) + localisation.
Livrables :
- molecule `DemandSkillBar` (barre CSS `secondary` + compteur réel, jamais de chiffre par défaut ; pas de recharts)
- molecule `MarketInsightsSection` : 3 sous-blocs (compĂ©tences demandĂ©es avec barres + compteurs rĂ©els, localisation dominante, rĂ©partition des modes de travail). Ătats chargement (skeleton anti-CLS) / renseignĂ© (sous-blocs prĂ©sents seulement) / vide (« Aucune tendance disponible pour ce rĂŽle pour le moment ») / erreur (encart lĂ©ger + RĂ©essayer).
- i18n `marketInsights.*` ajoutées dans en.ts ET fr.ts (deux objets réels).
- RÚgle « aucune donnée fictive » respectée partout.
Tests (vitest) : rendu compétences/localisation/mode de travail depuis une réponse mockée, forwarding role+location dans la query string, état vide gracieux, erreur + Réessayer, état de chargement.
Branche : `feat/redmine-21-insights-ui` · PR #239 (base `dev`) : https://github.com/omdev-tech/GetYourJob/pull/239
CI Jenkins (branch + pr-head) : verte. `npx tsc --noEmit` sur fichiers touchés : propre. `npm run build` : OK.
Reste « In development » (livrĂ©, prĂȘt QA).
RA Updated by Redmine Admin about 2 months ago
đ done dev (i18n fix) â ready for re-QA (suivi #21)
Régression i18n introduite par ce ticket (commit d33026c) corrigée.
**Cause** : le bloc i18n de la Market Insights SECTION ajoutĂ© ici crĂ©ait une 2e clĂ© top-level `marketInsights:` dans `en.ts` et `fr.ts`. Par last-key-wins JS, il Ă©crasait le namespace `marketInsights:` prĂ©-existant de la page « Market Statistics » (`/profile/developer/market-insights`) â ~40 clĂ©s `t('marketInsights.*')` rendues brutes/undefined en EN et FR, + TS1117 (clĂ© dupliquĂ©e) sur les deux fichiers.
**Fix** : bloc de la section renommĂ© en `marketInsightsSection:` (en.ts + fr.ts), rĂ©fĂ©rences mises Ă jour dans `MarketInsightsSection.tsx` et son test ; la page Statistiques reste intacte. Ajout d'un test garde-fou pour empĂȘcher toute rĂ©cidive.
PR #239 : https://github.com/omdev-tech/GetYourJob/pull/239 â `gh pr checks 239` verts (branch + pr-head). Commit 549534e.
RA Updated by Redmine Admin about 2 months ago
RA Updated by Redmine Admin about 2 months ago
- Status changed from Preprod to Shipped
LivrĂ© en production avec l'Ă©popĂ©e #21. Preprod â Shipped.