fix(armaflex): rename misspelled 'armflex' slug to 'armaflex' everywhere

- Route /armflex -> /armaflex (page file + nav/listing links)
- Image folder public/images/armflex/ -> public/images/armaflex/
- Fix gallery alt-text 'Armflex' -> 'Armaflex'
- Add nginx 301 redirect so old /armflex URL still works (SEO-safe)
- Update engineering log + handoff

Verified: npm run build (44 pages), tsc --noEmit, nginx -t,
live probe /armaflex/ 200, zero stale 'armflex' refs.
This commit is contained in:
Kunthawat Greethong
2026-09-08 17:52:12 +07:00
parent b86542114f
commit 52030b7d46
21 changed files with 82 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
---
title: Deal Plus Tech Engineering Handoff
updated: 2026-08-30
updated: 2026-09-08
---
# Engineering Handoff
@@ -8,13 +8,14 @@ updated: 2026-08-30
- Repository: `/Users/kunthawat/Gitea/dealplustech-astroreal`
- Branch: `main`
- Code commit: `c0d8cacfbeb328424138b26e22cb31e82db453b6` (pushed and verified at `origin/main` before this handoff update)
- Code commit: `c0d8cacfbeb328424138b26e22cb31e82db453b6` (last pushed to `origin/main` on 2026-08-30); Armaflex rename changes staged and pending this handoff commit
- HEAD: current branch tip of `main`; verify with `git rev-parse HEAD` after the handoff update
- Remote target: `origin/main`
- Working tree: clean after the verified code commit; this handoff metadata update is the only pending change
- Working tree: Armaflex slug/image rename + nginx 301 staged; handoff/log metadata is the only other pending change
## Completed
- **Armaflex slug rename** — `armflex``armaflex` (route, image folder, nav/listing links, gallery alt-text) + nginx 301 for the old URL
- CcooL product page: `/ฉนวนหุ้มท่อ-ccool/`
- CcooL images and pricing PDF added under `public/`
- Navigation, product listing, breadcrumb, metadata, FAQ, Product JSON-LD, and CTA tracking updated
@@ -25,12 +26,13 @@ updated: 2026-08-30
## Verification
- `npm run build`**pass**, 44 pages
- `npx tsc --noEmit`**pass**
- `git diff --cached --check`**pass**
- Independent reviewer → **pass**, no security concerns or logic errors
- Static output → 44 HTML pages, JSON-LD parses, Umami attributes are well-formed, images have `alt`; baseline-only duplicate SVG ID and blank-target links remain
- Assets → five 1024×768 images; five-page A4 PDF; no PDF JavaScript/encryption
- `npm run build`**pass**, 44 pages (Armaflex rename)
- `npx tsc --noEmit`**pass** (no errors)
- `git diff --check`**pass**
- `nginx -t` on the edited config → **syntax ok** (301 `armflex → armaflex`)
- Live static probe on `dist/``GET /armaflex/` 200, `GET /images/armaflex/gallery-1.jpg` 200, old `/armflex/` 404 at static layer (nginx 301 intercepts at deploy)
- Source/output scan → zero `armflex` references remain (all `armaflex`)
- Independent reviewer (prior CcooL/SEO work) → **pass**, no security concerns or logic errors
## Known Limitations / Blockers
@@ -49,5 +51,6 @@ updated: 2026-08-30
## Evidence Index
- [[2026-09-08-armaflex-slug-rename]]
- [[2026-08-30-seo-audit-fixes]]
- [[../test-evidence/2026-08-30-ccool-seo]]

View File

@@ -1,6 +1,6 @@
---
title: Deal Plus Tech Engineering Log
updated: 2026-08-30
updated: 2026-09-08
---
# Engineering Log
@@ -10,6 +10,7 @@ Latest verified code commit: `c0d8cacfbeb328424138b26e22cb31e82db453b6` pushed t
| Milestone | Status | Last verified | Evidence | Next action |
|---|---|---|---|---|
| Armaflex slug rename (armflex → armaflex) | complete | 2026-09-08 | `npm run build` 44 pages, `tsc --noEmit` clean, live probe `/armaflex/` 200, old slug 301 in nginx.conf | Push + EasyPanel rebuild; verify live 301 on production |
| CcooL product page and navigation | complete | 2026-08-30 | `npm run build` produced 44 static pages, including `/ฉนวนหุ้มท่อ-ccool/` | Confirm production domain before the next deploy/SEO change |
| SEO trust-layer fixes | complete | 2026-08-30 | robots/sitemap, internal links, metadata, legal-page headings, and claim wording checked in built output | Fix production soft-404 routing at the server layer |
| Umami event convention | complete | 2026-08-30 | Source/output scan found no malformed `data-umami-event` attributes | Review event reports after real traffic arrives |
@@ -24,6 +25,7 @@ Latest verified code commit: `c0d8cacfbeb328424138b26e22cb31e82db453b6` pushed t
## Entry Index
- [[2026-09-08-armaflex-slug-rename]] — armflex → armaflex slug/image rename + nginx 301, verification, and push handoff.
- [[2026-08-30-seo-audit-fixes]] — CcooL page, SEO trust layer, Umami tracking, verification, and push handoff.
## Plan Synchronization

View File

@@ -0,0 +1,46 @@
---
title: Armaflex product slug rename (armflex → armaflex)
status: complete
verified: 2026-09-08
---
# Armaflex Product Slug Rename (armflex → armaflex)
## Plan Status
**complete** — the misspelled `armflex` product slug was renamed to `armaflex` (the correct Armaflex/Armacell brand spelling) across route, image folder, navigation, and alt-text, with an nginx 301 redirect added so the old URL does not break.
**Code commit:** (to be filled after commit) on `main`.
## Changed Scope
- Renamed page `src/pages/armflex.astro``src/pages/armaflex.astro` (route `/armflex``/armaflex`) via `git mv` (history preserved).
- Renamed image folder `public/images/armflex/``public/images/armaflex/` (all 12 assets) via `git mv`.
- Updated all route/image references: `src/components/common/Header.astro`, `src/layouts/BaseLayout.astro` (category slug + Armaflex subcategory slug), `src/pages/all-products.astro`, `src/pages/404.astro`, and the page's own image paths.
- Corrected gallery `alt="Armflex …"``alt="Armaflex …"` (5 images) in `src/pages/armaflex.astro`.
- Added a 301 redirect in `nginx.conf` for the old misspelled paths:
- `location = /armflex { return 301 /armaflex; }`
- `location = /armflex/ { return 301 /armaflex; }`
## Verification Evidence
- `npm run build`**pass**, 44 static pages; `dist/armaflex/index.html` generated (70.8 KB); `dist/armflex/index.html` gone; `dist/images/armaflex/` populated; `dist/images/armflex/` gone.
- `npx tsc --noEmit`**pass** (no errors).
- `git diff --check`**pass**.
- Source scan — `grep -rn 'armflex' src | grep -v armaflex` returns nothing (clean); all 5 nav/listing links now point to `/armaflex`.
- Built output scan — no stale `/armflex` hrefs or `images/armflex/` paths; gallery alt-text reads "Armaflex ภาพที่ 15"; H1 reads "Armaflex Class 1 ชนิดม้วน".
- Live static probe (`python3 -m http.server` on `dist/`): `GET /armaflex/` → 200, `GET /images/armaflex/gallery-1.jpg` → 200, old `GET /armflex/` → 404 at the static layer (the nginx 301 intercepts it at deploy time).
- `nginx -t` on the edited config (wrapped in the required `events{}`/`http{}` blocks) — **syntax is ok / test is successful**.
## Tooling Limitations
- `npm test` unavailable (no `test` script in `package.json`).
- The nginx 301 was validated for syntax locally and by logic; it is served by EasyPanel's nginx container at deploy time, so the live `armflex → armaflex` redirect was not exercised against the production endpoint in this session.
## Risks and Remaining Work
1. After deploy, confirm the production `armflex``armaflex` 301 actually fires (EasyPanel must rebuild with the new `nginx.conf`).
2. Confirm the real production domain before any domain-dependent SEO action (existing known limitation, unchanged).
## Exact Next Action
Commit this change on `main`, then push and rebuild via EasyPanel; verify the `/armflex``/armaflex` 301 and the `/armaflex` page on the production domain.