---
date: 2026-07-29
source: exploration menée pour le design de la page country-target US
repo_concerne: /Users/humperdoo/Github/advmfr-next (branche dev)
statut: à traiter, hors périmètre de la page US
---

# Anomalies relevées sur la refonte Next

Constats faits en cartographiant `~/Github/advmfr-next` et le serveur de dev
(`advmfr-next-i18n.localhost:1355`) le 2026-07-29. Aucun n'appartient au chantier de la page US.
Consignés ici pour ne pas être perdus.

## Bloquants avant mise en production

### 1. `og:image` pointe vers localhost

Observé sur la home en dev : `og:image` = `http://localhost:4426/en/opengraph-image?...`
Host absolu erroné, et port 4426 sans rapport avec le port de dev (1355).

**Impact** : tout partage social — LinkedIn, Slack, WhatsApp, X — affiche une image cassée.
**À vérifier** : est-ce un artefact du mode dev lié à `NEXT_PUBLIC_SITE_URL`, ou le bug existe-t-il
aussi en build de production ? Tester avec `bun run build && bun run start`.

### 2. Home FR positionnée B2C alors que la home EN est B2B

| Locale | `<title>` | Positionnement |
|---|---|---|
| EN | `Fine Jewellery Manufacturer in Thailand` | fabricant B2B |
| FR | `Grossiste Bijoux & Bijouterie : Fournisseur Accessoires Mode` | grossiste B2C |

Meta description FR : « Découvrez nos bijoux raffinés, bagues, boucles d'oreilles, pendentifs et
accessoires pour boutiques, commerçants et magasins. Achat en gros garanti ! »

Ton commercial, cible différente, promesse différente. Ressemble à un reliquat d'un autre brief.
Les deux versions sont liées par hreflang, donc Google voit deux positionnements contradictoires
pour la même entité.

**Impact** : incohérence de marque et signal SEO brouillé sur toute la locale FR.

### 3. Pages légales absentes de la refonte

`/privacy-policy` et `/term-of-use` existent sur le site live, pas dans la refonte.
Confirmé côté code (`grep` sans résultat sur `src/` et `messages/`) et côté serveur (soft-404).
Listées dans `docs/todo.md` du projet comme « contenu à fournir par le client ».

**Impact** : conformité RGPD, et deux redirections 301 à prévoir à la migration sous peine de 404
sur des URLs indexées.

## À vérifier

### 4. Soft-404 — chemins inconnus en HTTP 200

Les chemins sans extension qui n'existent pas renvoient **HTTP 200** sur la page not-found, au lieu
d'un 404. Vérifié sur `/usa`, `/oem`, `/wholesale`, `/categories`, `/products`, `/faq`, `/de`, `/th`.
Les chemins avec extension se comportent correctement (`/llms.txt` → 404).

La page renvoyée porte bien `<meta name="robots" content="noindex">`, ce qui limite les dégâts, mais
un 200 sur une URL inexistante reste un mauvais signal et fausse tout audit de crawl.

**Possiblement un artefact du mode dev** — à revérifier en build de production avant de conclure.

### 5. Trailing slash — divergence live / refonte

Le site live utilise un slash final (`/about-us/`), la refonte non (`/about-us`).

**Impact** : sans redirections 301 à la migration, perte du signal des URLs déjà indexées sur les
8 pages institutionnelles.

## Mineur

### 6. Attribut hreflang en camelCase

Les balises sont émises en `hrefLang="..."` et non `hreflang="..."`. Le parseur HTML5 étant
insensible à la casse pour les noms d'attributs, c'est **valide et fonctionnel**. Inhabituel
toutefois : `metadata.alternates` de Next produit normalement l'attribut en minuscules. Signalé pour
mémoire, aucune action requise.

### 7. Deux répertoires homonymes — piège de navigation

| Chemin | `package.json` name | État |
|---|---|---|
| `~/Github/advmfr-next` | `advmfr-next-i18n` | **projet actif**, servi par portless |
| `~/Github/advmfr-next-i18n` | `advmfr-next-i18n` | scaffold mort — template next-intl, 2 commits, aucun contenu ADVMFR |

Le nom du dossier ne correspond pas au projet servi. Toute intervention doit viser
`~/Github/advmfr-next`.

**Suggestion** : supprimer ou archiver le scaffold mort pour éliminer l'ambiguïté.

### 8. Gestionnaire de paquets ambigu

`bun.lock` (commité) et `package-lock.json` (non suivi, généré le 24 juillet) coexistent, avec un
`package.json` modifié non commité. Impossible de déterminer lequel fait autorité.

**À trancher** avant tout `install`, sous peine de résolutions de dépendances divergentes entre
machines.

## Divergence structurelle — master plan vs refonte

Ce n'est pas un bug, mais c'est le constat le plus lourd de conséquences.

`_project/master-seo-plan.md` (2026-05-26) décrit une architecture que la refonte **n'a pas
implémentée** :

| Prévu au master plan | État dans la refonte |
|---|---|
| `/wholesale-suppliers/` | absent |
| `/oem-jewellery-manufacturer/` | absent |
| `/categories/` + 4 sous-pages | absent |
| 3 sous-pages `/production-process/` | absent |
| `/blog/` + ~34 articles | **présent**, 6 articles |
| Orthographe UK stricte | head UK / corps US |
| UK-only, pas de hreflang | i18n EN/FR complet |

**Conséquence pratique** : les verrous de vocabulaire du master plan (§ « Vocabulaire par page »)
attribuent des mots-clés à des pages qui n'existent pas. Ils sont inapplicables tels quels.

**Décision à prendre** : mettre le master plan à jour pour refléter la refonte réelle, ou acter que
la refonte suit une architecture plus resserrée et réécrire le plan en conséquence. En l'état, le
repo porte deux architectures contradictoires et rien n'indique laquelle fait foi.
