From 7f9742bcaa3a4b6532737625c452480669221fbd Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 9 Oct 2026 12:59:39 +0200 Subject: [PATCH] fix(products): restore NA low-voltage cables broken by flattened frontmatter Commit 76cbdaa3 destroyed the YAML indentation of NAYY, NAYCWY, NAY2Y, NA2XY and NA2X2Y, silently dropping them from the catalog (404 detail pages, missing from category listing and sitemap). Restored the valid frontmatter from 76cbdaa3~1 (whitespace-only diff, content unchanged) and added a content contract spec guarding parseability and catalog visibility. --- content/products/na2x2y.mdx | 210 ++++++++++++++++---------------- content/products/na2xy.mdx | 208 ++++++++++++++++---------------- content/products/nay2y.mdx | 212 ++++++++++++++++----------------- content/products/naycwy.mdx | 210 ++++++++++++++++---------------- content/products/nayy.mdx | 210 ++++++++++++++++---------------- docs/incidents.md | 7 ++ tests/products-content.test.ts | 71 +++++++++++ 7 files changed, 603 insertions(+), 525 deletions(-) create mode 100644 docs/incidents.md create mode 100644 tests/products-content.test.ts diff --git a/content/products/na2x2y.mdx b/content/products/na2x2y.mdx index 25b41710..a051d897 100644 --- a/content/products/na2x2y.mdx +++ b/content/products/na2x2y.mdx @@ -3,115 +3,115 @@ title: NA2X2Y sku: NA2X2Y-low-voltage-cables slug: na2x2y description: > - Das NA2X2Y Kabel ist ein strapazierfähiges Niederspannungskabel mit - Aluminiumleiter, PE-Isolation und HDPE-Mantel. Es wurde für feste Verlegungen - unter erhöhter mechanischer Beanspruchung entwickelt und eignet sich besonders - für anspruchsvolle industrielle und energietechnische Infrastrukturen. + Das NA2X2Y Kabel ist ein strapazierfähiges Niederspannungskabel mit + Aluminiumleiter, PE-Isolation und HDPE-Mantel. Es wurde für feste Verlegungen + unter erhöhter mechanischer Beanspruchung entwickelt und eignet sich besonders + für anspruchsvolle industrielle und energietechnische Infrastrukturen. categories: - - id: 699de42ead0808777d11abcd - category: Niederspannungskabel + - id: 699de42ead0808777d11abcd + category: Niederspannungskabel featuredImage: - id: 34 - alt: NA2X2Y scaled - caption: null - updatedAt: '2026-02-24T17:47:26.448Z' - createdAt: '2026-02-24T17:47:26.448Z' - url: /media/NA2X2Y-scaled-5.webp - thumbnailURL: /media/NA2X2Y-scaled-5-600x125.webp - filename: NA2X2Y-scaled-5.webp - mimeType: image/webp - filesize: 28770 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NA2X2Y-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3776 - filename: NA2X2Y-scaled-5-600x125.webp - card: - url: /media/NA2X2Y-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5246 - filename: NA2X2Y-scaled-5-768x160.webp - tablet: - url: /media/NA2X2Y-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7364 - filename: NA2X2Y-scaled-5-1024x213.webp + id: 34 + alt: NA2X2Y scaled + caption: null + updatedAt: '2026-02-24T17:47:26.448Z' + createdAt: '2026-02-24T17:47:26.448Z' + url: /media/NA2X2Y-scaled-5.webp + thumbnailURL: /media/NA2X2Y-scaled-5-600x125.webp + filename: NA2X2Y-scaled-5.webp + mimeType: image/webp + filesize: 28770 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NA2X2Y-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3776 + filename: NA2X2Y-scaled-5-600x125.webp + card: + url: /media/NA2X2Y-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5246 + filename: NA2X2Y-scaled-5-768x160.webp + tablet: + url: /media/NA2X2Y-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7364 + filename: NA2X2Y-scaled-5-1024x213.webp images: - - id: 34 - alt: NA2X2Y scaled - caption: null - updatedAt: '2026-02-24T17:47:26.448Z' - createdAt: '2026-02-24T17:47:26.448Z' - url: /media/NA2X2Y-scaled-5.webp - thumbnailURL: /media/NA2X2Y-scaled-5-600x125.webp - filename: NA2X2Y-scaled-5.webp - mimeType: image/webp - filesize: 28770 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NA2X2Y-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3776 - filename: NA2X2Y-scaled-5-600x125.webp - card: - url: /media/NA2X2Y-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5246 - filename: NA2X2Y-scaled-5-768x160.webp - tablet: - url: /media/NA2X2Y-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7364 - filename: NA2X2Y-scaled-5-1024x213.webp + - id: 34 + alt: NA2X2Y scaled + caption: null + updatedAt: '2026-02-24T17:47:26.448Z' + createdAt: '2026-02-24T17:47:26.448Z' + url: /media/NA2X2Y-scaled-5.webp + thumbnailURL: /media/NA2X2Y-scaled-5-600x125.webp + filename: NA2X2Y-scaled-5.webp + mimeType: image/webp + filesize: 28770 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NA2X2Y-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3776 + filename: NA2X2Y-scaled-5-600x125.webp + card: + url: /media/NA2X2Y-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5246 + filename: NA2X2Y-scaled-5-768x160.webp + tablet: + url: /media/NA2X2Y-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7364 + filename: NA2X2Y-scaled-5-1024x213.webp application: - root: - type: root - format: '' - indent: 0 - version: 1 - children: - - type: paragraph - format: '' - indent: 0 - version: 1 - children: - - mode: normal - text: >- - Das NA2X2Y entspricht der Norm DIN VDE 0276-603 (HD 603) und ist - ausgelegt für die feste Verlegung in Innenräumen, Kabelkanälen, im - Erdreich, im Wasser oder im Freien. Es kommt bevorzugt in - Kraftwerken, Industrieanlagen, Schaltanlagen und Ortsnetzen zum - Einsatz – überall dort, wo robuste Kabel gefragt sind, die im - Betrieb und bei der Verlegung hohen mechanischen Belastungen - standhalten. - type: text - style: '' - detail: 0 - format: 0 - version: 1 - direction: ltr - direction: ltr + root: + type: root + format: '' + indent: 0 + version: 1 + children: + - type: paragraph + format: '' + indent: 0 + version: 1 + children: + - mode: normal + text: >- + Das NA2X2Y entspricht der Norm DIN VDE 0276-603 (HD 603) und ist + ausgelegt für die feste Verlegung in Innenräumen, Kabelkanälen, im + Erdreich, im Wasser oder im Freien. Es kommt bevorzugt in + Kraftwerken, Industrieanlagen, Schaltanlagen und Ortsnetzen zum + Einsatz – überall dort, wo robuste Kabel gefragt sind, die im + Betrieb und bei der Verlegung hohen mechanischen Belastungen + standhalten. + type: text + style: '' + detail: 0 + format: 0 + version: 1 + direction: ltr + direction: ltr _status: published --- diff --git a/content/products/na2xy.mdx b/content/products/na2xy.mdx index d064f48b..0c72d655 100644 --- a/content/products/na2xy.mdx +++ b/content/products/na2xy.mdx @@ -3,114 +3,114 @@ title: NA2XY sku: NA2XY-low-voltage-cables slug: na2xy description: > - Das NA2XY Kabel ist ein robustes Niederspannungskabel mit Aluminiumleiter, - PE-Isolation und PVC-Mantel. Es ist für feste Verlegung unter erhöhter - mechanischer Belastung konzipiert und eignet sich besonders für - Energieverteilungen in industriellen und öffentlichen Versorgungsnetzen. + Das NA2XY Kabel ist ein robustes Niederspannungskabel mit Aluminiumleiter, + PE-Isolation und PVC-Mantel. Es ist für feste Verlegung unter erhöhter + mechanischer Belastung konzipiert und eignet sich besonders für + Energieverteilungen in industriellen und öffentlichen Versorgungsnetzen. categories: - - id: 699de42ead0808777d11ada5 - category: Niederspannungskabel + - id: 699de42ead0808777d11ada5 + category: Niederspannungskabel featuredImage: - id: 35 - alt: NA2XY scaled - caption: null - updatedAt: '2026-02-24T17:47:26.753Z' - createdAt: '2026-02-24T17:47:26.753Z' - url: /media/NA2XY-scaled-5.webp - thumbnailURL: /media/NA2XY-scaled-5-600x125.webp - filename: NA2XY-scaled-5.webp - mimeType: image/webp - filesize: 30046 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NA2XY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3770 - filename: NA2XY-scaled-5-600x125.webp - card: - url: /media/NA2XY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5216 - filename: NA2XY-scaled-5-768x160.webp - tablet: - url: /media/NA2XY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7478 - filename: NA2XY-scaled-5-1024x213.webp + id: 35 + alt: NA2XY scaled + caption: null + updatedAt: '2026-02-24T17:47:26.753Z' + createdAt: '2026-02-24T17:47:26.753Z' + url: /media/NA2XY-scaled-5.webp + thumbnailURL: /media/NA2XY-scaled-5-600x125.webp + filename: NA2XY-scaled-5.webp + mimeType: image/webp + filesize: 30046 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NA2XY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3770 + filename: NA2XY-scaled-5-600x125.webp + card: + url: /media/NA2XY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5216 + filename: NA2XY-scaled-5-768x160.webp + tablet: + url: /media/NA2XY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7478 + filename: NA2XY-scaled-5-1024x213.webp images: - - id: 35 - alt: NA2XY scaled - caption: null - updatedAt: '2026-02-24T17:47:26.753Z' - createdAt: '2026-02-24T17:47:26.753Z' - url: /media/NA2XY-scaled-5.webp - thumbnailURL: /media/NA2XY-scaled-5-600x125.webp - filename: NA2XY-scaled-5.webp - mimeType: image/webp - filesize: 30046 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NA2XY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3770 - filename: NA2XY-scaled-5-600x125.webp - card: - url: /media/NA2XY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5216 - filename: NA2XY-scaled-5-768x160.webp - tablet: - url: /media/NA2XY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7478 - filename: NA2XY-scaled-5-1024x213.webp + - id: 35 + alt: NA2XY scaled + caption: null + updatedAt: '2026-02-24T17:47:26.753Z' + createdAt: '2026-02-24T17:47:26.753Z' + url: /media/NA2XY-scaled-5.webp + thumbnailURL: /media/NA2XY-scaled-5-600x125.webp + filename: NA2XY-scaled-5.webp + mimeType: image/webp + filesize: 30046 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NA2XY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3770 + filename: NA2XY-scaled-5-600x125.webp + card: + url: /media/NA2XY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5216 + filename: NA2XY-scaled-5-768x160.webp + tablet: + url: /media/NA2XY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7478 + filename: NA2XY-scaled-5-1024x213.webp application: - root: - type: root - format: '' - indent: 0 - version: 1 - children: - - type: paragraph - format: '' - indent: 0 - version: 1 - children: - - mode: normal - text: >- - Das NA2XY entspricht der Norm DIN VDE 0276-603 (HD 603) und ist - ideal für die feste Verlegung in Innenräumen, Kabelkanälen, im - Freien, im Wasser oder im Erdreich geeignet. Typische Einsatzorte - sind Kraftwerke, Industrieanlagen, Schaltanlagen sowie Ortsnetze, - bei denen mechanische Belastung im Betrieb berücksichtigt werden - muss. - type: text - style: '' - detail: 0 - format: 0 - version: 1 - direction: ltr - direction: ltr + root: + type: root + format: '' + indent: 0 + version: 1 + children: + - type: paragraph + format: '' + indent: 0 + version: 1 + children: + - mode: normal + text: >- + Das NA2XY entspricht der Norm DIN VDE 0276-603 (HD 603) und ist + ideal für die feste Verlegung in Innenräumen, Kabelkanälen, im + Freien, im Wasser oder im Erdreich geeignet. Typische Einsatzorte + sind Kraftwerke, Industrieanlagen, Schaltanlagen sowie Ortsnetze, + bei denen mechanische Belastung im Betrieb berücksichtigt werden + muss. + type: text + style: '' + detail: 0 + format: 0 + version: 1 + direction: ltr + direction: ltr _status: published --- diff --git a/content/products/nay2y.mdx b/content/products/nay2y.mdx index 2c7a1619..6487865f 100644 --- a/content/products/nay2y.mdx +++ b/content/products/nay2y.mdx @@ -3,116 +3,116 @@ title: NAY2Y sku: NAY2Y-low-voltage-cables slug: nay2y description: > - Das NAY2Y Kabel ist ein besonders robustes Niederspannungskabel mit - Aluminiumleiter und HDPE-Mantel, das speziell für Installationen mit hoher - mechanischer Beanspruchung entwickelt wurde. Es überzeugt durch seine - Widerstandsfähigkeit in anspruchsvollen Umgebungen – ob in Industrieanlagen, - Trafostationen oder Ortsnetzen. + Das NAY2Y Kabel ist ein besonders robustes Niederspannungskabel mit + Aluminiumleiter und HDPE-Mantel, das speziell für Installationen mit hoher + mechanischer Beanspruchung entwickelt wurde. Es überzeugt durch seine + Widerstandsfähigkeit in anspruchsvollen Umgebungen – ob in Industrieanlagen, + Trafostationen oder Ortsnetzen. categories: - - id: 699de42fad0808777d11afb3 - category: Niederspannungskabel + - id: 699de42fad0808777d11afb3 + category: Niederspannungskabel featuredImage: - id: 36 - alt: NAY2Y scaled - caption: null - updatedAt: '2026-02-24T17:47:27.071Z' - createdAt: '2026-02-24T17:47:27.071Z' - url: /media/NAY2Y-scaled-5.webp - thumbnailURL: /media/NAY2Y-scaled-5-600x125.webp - filename: NAY2Y-scaled-5.webp - mimeType: image/webp - filesize: 28684 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAY2Y-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3778 - filename: NAY2Y-scaled-5-600x125.webp - card: - url: /media/NAY2Y-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5234 - filename: NAY2Y-scaled-5-768x160.webp - tablet: - url: /media/NAY2Y-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7562 - filename: NAY2Y-scaled-5-1024x213.webp + id: 36 + alt: NAY2Y scaled + caption: null + updatedAt: '2026-02-24T17:47:27.071Z' + createdAt: '2026-02-24T17:47:27.071Z' + url: /media/NAY2Y-scaled-5.webp + thumbnailURL: /media/NAY2Y-scaled-5-600x125.webp + filename: NAY2Y-scaled-5.webp + mimeType: image/webp + filesize: 28684 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAY2Y-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3778 + filename: NAY2Y-scaled-5-600x125.webp + card: + url: /media/NAY2Y-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5234 + filename: NAY2Y-scaled-5-768x160.webp + tablet: + url: /media/NAY2Y-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7562 + filename: NAY2Y-scaled-5-1024x213.webp images: - - id: 36 - alt: NAY2Y scaled - caption: null - updatedAt: '2026-02-24T17:47:27.071Z' - createdAt: '2026-02-24T17:47:27.071Z' - url: /media/NAY2Y-scaled-5.webp - thumbnailURL: /media/NAY2Y-scaled-5-600x125.webp - filename: NAY2Y-scaled-5.webp - mimeType: image/webp - filesize: 28684 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAY2Y-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3778 - filename: NAY2Y-scaled-5-600x125.webp - card: - url: /media/NAY2Y-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 5234 - filename: NAY2Y-scaled-5-768x160.webp - tablet: - url: /media/NAY2Y-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 7562 - filename: NAY2Y-scaled-5-1024x213.webp + - id: 36 + alt: NAY2Y scaled + caption: null + updatedAt: '2026-02-24T17:47:27.071Z' + createdAt: '2026-02-24T17:47:27.071Z' + url: /media/NAY2Y-scaled-5.webp + thumbnailURL: /media/NAY2Y-scaled-5-600x125.webp + filename: NAY2Y-scaled-5.webp + mimeType: image/webp + filesize: 28684 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAY2Y-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3778 + filename: NAY2Y-scaled-5-600x125.webp + card: + url: /media/NAY2Y-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 5234 + filename: NAY2Y-scaled-5-768x160.webp + tablet: + url: /media/NAY2Y-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 7562 + filename: NAY2Y-scaled-5-1024x213.webp application: - root: - type: root - format: '' - indent: 0 - version: 1 - children: - - type: paragraph - format: '' - indent: 0 - version: 1 - children: - - mode: normal - text: >- - Das NAY2Y erfüllt die Anforderungen der Norm TP PRAKAB 12/03 in - Anlehnung an VDE 0276-603 und eignet sich für die feste Verlegung - in Innenräumen, Kabelkanälen, im Erdreich, im Wasser und im - Außenbereich. Es ist ideal für Anwendungen in Kraftwerken, - Industrie- und Schaltanlagen sowie in lokalen Versorgungsnetzen – - überall dort, wo mechanische Belastung im Betrieb oder bei der - Verlegung eine Rolle spielt. - type: text - style: '' - detail: 0 - format: 0 - version: 1 - direction: ltr - direction: ltr + root: + type: root + format: '' + indent: 0 + version: 1 + children: + - type: paragraph + format: '' + indent: 0 + version: 1 + children: + - mode: normal + text: >- + Das NAY2Y erfüllt die Anforderungen der Norm TP PRAKAB 12/03 in + Anlehnung an VDE 0276-603 und eignet sich für die feste Verlegung + in Innenräumen, Kabelkanälen, im Erdreich, im Wasser und im + Außenbereich. Es ist ideal für Anwendungen in Kraftwerken, + Industrie- und Schaltanlagen sowie in lokalen Versorgungsnetzen – + überall dort, wo mechanische Belastung im Betrieb oder bei der + Verlegung eine Rolle spielt. + type: text + style: '' + detail: 0 + format: 0 + version: 1 + direction: ltr + direction: ltr _status: published --- diff --git a/content/products/naycwy.mdx b/content/products/naycwy.mdx index 0a3b00f5..fb246df8 100644 --- a/content/products/naycwy.mdx +++ b/content/products/naycwy.mdx @@ -3,115 +3,115 @@ title: NAYCWY sku: NAYCWY-low-voltage-cables slug: naycwy description: > - Das NAYCWY Kabel ist ein geschirmtes Niederspannungskabel mit Aluminiumleiter - und konzentrischem Leiter aus Kupfer. Es wurde speziell für Anwendungen - entwickelt, bei denen zusätzlicher Schutz gegen Berührungsspannungen gefordert - ist – etwa in industriellen Netzen, Ortsnetzen oder Energieverteilanlagen. + Das NAYCWY Kabel ist ein geschirmtes Niederspannungskabel mit Aluminiumleiter + und konzentrischem Leiter aus Kupfer. Es wurde speziell für Anwendungen + entwickelt, bei denen zusätzlicher Schutz gegen Berührungsspannungen gefordert + ist – etwa in industriellen Netzen, Ortsnetzen oder Energieverteilanlagen. categories: - - id: 699de42fad0808777d11b1c1 - category: Niederspannungskabel + - id: 699de42fad0808777d11b1c1 + category: Niederspannungskabel featuredImage: - id: 37 - alt: NAYCWY scaled - caption: null - updatedAt: '2026-02-24T17:47:27.449Z' - createdAt: '2026-02-24T17:47:27.449Z' - url: /media/NAYCWY-scaled-5.webp - thumbnailURL: /media/NAYCWY-scaled-5-600x125.webp - filename: NAYCWY-scaled-5.webp - mimeType: image/webp - filesize: 37252 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAYCWY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 4644 - filename: NAYCWY-scaled-5-600x125.webp - card: - url: /media/NAYCWY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 6858 - filename: NAYCWY-scaled-5-768x160.webp - tablet: - url: /media/NAYCWY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 10136 - filename: NAYCWY-scaled-5-1024x213.webp + id: 37 + alt: NAYCWY scaled + caption: null + updatedAt: '2026-02-24T17:47:27.449Z' + createdAt: '2026-02-24T17:47:27.449Z' + url: /media/NAYCWY-scaled-5.webp + thumbnailURL: /media/NAYCWY-scaled-5-600x125.webp + filename: NAYCWY-scaled-5.webp + mimeType: image/webp + filesize: 37252 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAYCWY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 4644 + filename: NAYCWY-scaled-5-600x125.webp + card: + url: /media/NAYCWY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 6858 + filename: NAYCWY-scaled-5-768x160.webp + tablet: + url: /media/NAYCWY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 10136 + filename: NAYCWY-scaled-5-1024x213.webp images: - - id: 37 - alt: NAYCWY scaled - caption: null - updatedAt: '2026-02-24T17:47:27.449Z' - createdAt: '2026-02-24T17:47:27.449Z' - url: /media/NAYCWY-scaled-5.webp - thumbnailURL: /media/NAYCWY-scaled-5-600x125.webp - filename: NAYCWY-scaled-5.webp - mimeType: image/webp - filesize: 37252 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAYCWY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 4644 - filename: NAYCWY-scaled-5-600x125.webp - card: - url: /media/NAYCWY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 6858 - filename: NAYCWY-scaled-5-768x160.webp - tablet: - url: /media/NAYCWY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 10136 - filename: NAYCWY-scaled-5-1024x213.webp + - id: 37 + alt: NAYCWY scaled + caption: null + updatedAt: '2026-02-24T17:47:27.449Z' + createdAt: '2026-02-24T17:47:27.449Z' + url: /media/NAYCWY-scaled-5.webp + thumbnailURL: /media/NAYCWY-scaled-5-600x125.webp + filename: NAYCWY-scaled-5.webp + mimeType: image/webp + filesize: 37252 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAYCWY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 4644 + filename: NAYCWY-scaled-5-600x125.webp + card: + url: /media/NAYCWY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 6858 + filename: NAYCWY-scaled-5-768x160.webp + tablet: + url: /media/NAYCWY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 10136 + filename: NAYCWY-scaled-5-1024x213.webp application: - root: - type: root - format: '' - indent: 0 - version: 1 - children: - - type: paragraph - format: '' - indent: 0 - version: 1 - children: - - mode: normal - text: >- - Das NAYCWY entspricht der Norm DIN VDE 0276-603 (HD 603) und - eignet sich für den Einsatz in Kraftwerken, Industrieanlagen, - Schaltanlagen und Ortsnetzen. Es lässt sich fest verlegen – in - Innenräumen, Kabelkanälen, im Freien, im Erdreich oder in Wasser. - Dank des konzentrischen Leiters bietet es zusätzlichen Schutz bei - mechanischer Beschädigung und ermöglicht eine sichere - Potenzialführung. - type: text - style: '' - detail: 0 - format: 0 - version: 1 - direction: ltr - direction: ltr + root: + type: root + format: '' + indent: 0 + version: 1 + children: + - type: paragraph + format: '' + indent: 0 + version: 1 + children: + - mode: normal + text: >- + Das NAYCWY entspricht der Norm DIN VDE 0276-603 (HD 603) und + eignet sich für den Einsatz in Kraftwerken, Industrieanlagen, + Schaltanlagen und Ortsnetzen. Es lässt sich fest verlegen – in + Innenräumen, Kabelkanälen, im Freien, im Erdreich oder in Wasser. + Dank des konzentrischen Leiters bietet es zusätzlichen Schutz bei + mechanischer Beschädigung und ermöglicht eine sichere + Potenzialführung. + type: text + style: '' + detail: 0 + format: 0 + version: 1 + direction: ltr + direction: ltr _status: published --- diff --git a/content/products/nayy.mdx b/content/products/nayy.mdx index 299ba55d..0beb9f4c 100644 --- a/content/products/nayy.mdx +++ b/content/products/nayy.mdx @@ -3,115 +3,115 @@ title: NAYY sku: NAYY-low-voltage-cables slug: nayy description: > - Das NAYY Kabel ist ein vielseitiges Niederspannungskabel mit Aluminiumleiter, - das für die feste Verlegung in Gebäuden, im Erdreich, im Wasser oder im Freien - konzipiert ist. Es bietet eine wirtschaftliche Lösung für Energieverteilungen - unter normalen mechanischen Anforderungen – ideal für Ortsnetze, - Industrieanlagen und Energieversorgungen. + Das NAYY Kabel ist ein vielseitiges Niederspannungskabel mit Aluminiumleiter, + das für die feste Verlegung in Gebäuden, im Erdreich, im Wasser oder im Freien + konzipiert ist. Es bietet eine wirtschaftliche Lösung für Energieverteilungen + unter normalen mechanischen Anforderungen – ideal für Ortsnetze, + Industrieanlagen und Energieversorgungen. categories: - - id: 699de42fad0808777d11b399 - category: Niederspannungskabel + - id: 699de42fad0808777d11b399 + category: Niederspannungskabel featuredImage: - id: 38 - alt: NAYY scaled - caption: null - updatedAt: '2026-02-24T17:47:27.714Z' - createdAt: '2026-02-24T17:47:27.714Z' - url: /media/NAYY-scaled-5.webp - thumbnailURL: /media/NAYY-scaled-5-600x125.webp - filename: NAYY-scaled-5.webp - mimeType: image/webp - filesize: 26492 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAYY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3594 - filename: NAYY-scaled-5-600x125.webp - card: - url: /media/NAYY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 4990 - filename: NAYY-scaled-5-768x160.webp - tablet: - url: /media/NAYY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 6974 - filename: NAYY-scaled-5-1024x213.webp + id: 38 + alt: NAYY scaled + caption: null + updatedAt: '2026-02-24T17:47:27.714Z' + createdAt: '2026-02-24T17:47:27.714Z' + url: /media/NAYY-scaled-5.webp + thumbnailURL: /media/NAYY-scaled-5-600x125.webp + filename: NAYY-scaled-5.webp + mimeType: image/webp + filesize: 26492 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAYY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3594 + filename: NAYY-scaled-5-600x125.webp + card: + url: /media/NAYY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 4990 + filename: NAYY-scaled-5-768x160.webp + tablet: + url: /media/NAYY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 6974 + filename: NAYY-scaled-5-1024x213.webp images: - - id: 38 - alt: NAYY scaled - caption: null - updatedAt: '2026-02-24T17:47:27.714Z' - createdAt: '2026-02-24T17:47:27.714Z' - url: /media/NAYY-scaled-5.webp - thumbnailURL: /media/NAYY-scaled-5-600x125.webp - filename: NAYY-scaled-5.webp - mimeType: image/webp - filesize: 26492 - width: 2560 - height: 533 - focalX: 50 - focalY: 50 - sizes: - thumbnail: - url: /media/NAYY-scaled-5-600x125.webp - width: 600 - height: 125 - mimeType: image/webp - filesize: 3594 - filename: NAYY-scaled-5-600x125.webp - card: - url: /media/NAYY-scaled-5-768x160.webp - width: 768 - height: 160 - mimeType: image/webp - filesize: 4990 - filename: NAYY-scaled-5-768x160.webp - tablet: - url: /media/NAYY-scaled-5-1024x213.webp - width: 1024 - height: 213 - mimeType: image/webp - filesize: 6974 - filename: NAYY-scaled-5-1024x213.webp + - id: 38 + alt: NAYY scaled + caption: null + updatedAt: '2026-02-24T17:47:27.714Z' + createdAt: '2026-02-24T17:47:27.714Z' + url: /media/NAYY-scaled-5.webp + thumbnailURL: /media/NAYY-scaled-5-600x125.webp + filename: NAYY-scaled-5.webp + mimeType: image/webp + filesize: 26492 + width: 2560 + height: 533 + focalX: 50 + focalY: 50 + sizes: + thumbnail: + url: /media/NAYY-scaled-5-600x125.webp + width: 600 + height: 125 + mimeType: image/webp + filesize: 3594 + filename: NAYY-scaled-5-600x125.webp + card: + url: /media/NAYY-scaled-5-768x160.webp + width: 768 + height: 160 + mimeType: image/webp + filesize: 4990 + filename: NAYY-scaled-5-768x160.webp + tablet: + url: /media/NAYY-scaled-5-1024x213.webp + width: 1024 + height: 213 + mimeType: image/webp + filesize: 6974 + filename: NAYY-scaled-5-1024x213.webp application: - root: - type: root - format: '' - indent: 0 - version: 1 - children: - - type: paragraph - format: '' - indent: 0 - version: 1 - children: - - mode: normal - text: >- - Das NAYY ist ein Energieverteilungskabel nach VDE 0276-603, das - sich besonders für Anwendungen in Kraftwerken, Ortsnetzen, - Industrie- und Schaltanlagen eignet. Dank seiner robusten - Konstruktion lässt es sich fest verlegen – sei es im Innenraum, im - Kabelkanal, im Freien oder im Erdreich. Auch bei Installation in - Wasser bleibt das Kabel zuverlässig im Betrieb. - type: text - style: '' - detail: 0 - format: 0 - version: 1 - direction: ltr - direction: ltr + root: + type: root + format: '' + indent: 0 + version: 1 + children: + - type: paragraph + format: '' + indent: 0 + version: 1 + children: + - mode: normal + text: >- + Das NAYY ist ein Energieverteilungskabel nach VDE 0276-603, das + sich besonders für Anwendungen in Kraftwerken, Ortsnetzen, + Industrie- und Schaltanlagen eignet. Dank seiner robusten + Konstruktion lässt es sich fest verlegen – sei es im Innenraum, im + Kabelkanal, im Freien oder im Erdreich. Auch bei Installation in + Wasser bleibt das Kabel zuverlässig im Betrieb. + type: text + style: '' + detail: 0 + format: 0 + version: 1 + direction: ltr + direction: ltr _status: published --- diff --git a/docs/incidents.md b/docs/incidents.md new file mode 100644 index 00000000..afc4493f --- /dev/null +++ b/docs/incidents.md @@ -0,0 +1,7 @@ +# Incident Ledger + +One appended line per real incident. Never rewritten. + +| Date | Area | Mechanism | Root cause | Remedy | Tier | +| :--------- | :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | +| 2026-10-09 | Products / Niederspannungskabel | Five aluminium low-voltage products (NAYY, NAYCWY, NAY2Y, NA2XY, NA2X2Y) silently invisible on the site: dropped from category listing, 404 on detail pages, absent from sitemap | Commit 76cbdaa3 (2026-08-07, release 2.3.33 "NA Kabel Leiterklassen Fix") flattened frontmatter indentation of exactly these five files while removing RE/SE conductor shapes; broken YAML made the product loader return null and the site dropped them without any error | Restored valid frontmatter from 76cbdaa3~1 (content verified identical modulo indentation, whitespace-only diff), kept current markdown body incl. the RE/SE fix; regression spec tests/products-content.test.ts guards parseability and catalog visibility | M | diff --git a/tests/products-content.test.ts b/tests/products-content.test.ts new file mode 100644 index 00000000..5041af41 --- /dev/null +++ b/tests/products-content.test.ts @@ -0,0 +1,71 @@ +import { describe, it, expect } from 'vitest'; +import fs from 'fs'; +import path from 'path'; +import matter from 'gray-matter'; +import { getAllProducts } from '../lib/products'; + +const productsDir = path.join(process.cwd(), 'content', 'products'); +const productFiles = fs.readdirSync(productsDir).filter((f) => f.endsWith('.mdx')); + +interface CatalogEntry { + slug: string; + parseable: boolean; + error?: string; + declaresImages: boolean; +} + +// Single parse pass at module load, mirroring the production loader's first +// touch of each file (gray-matter caches per input string, so re-parsing the +// same file inside individual tests would not re-throw parse errors). +const catalog: CatalogEntry[] = productFiles.map((file) => { + const raw = fs.readFileSync(path.join(productsDir, file), 'utf-8'); + try { + const { data } = matter(raw); + return { + slug: file.replace('.mdx', ''), + parseable: true, + declaresImages: Array.isArray(data.images) && data.images.length > 0, + }; + } catch (error) { + return { + slug: file.replace('.mdx', ''), + parseable: false, + error: `${file}: ${(error as Error).message.split('\n')[0]}`, + // An unparseable file cannot declare anything and must never silently + // shrink the expected catalog — require it to be listed. + declaresImages: true, + }; + } +}); + +const ALUMINIUM_LOW_VOLTAGE_SLUGS = ['nayy', 'naycwy', 'nay2y', 'na2xy', 'na2x2y']; + +describe('Product catalog content contract', () => { + it('every product file has parseable frontmatter', () => { + expect(catalog.filter((entry) => !entry.parseable).map((e) => e.error)).toEqual([]); + }); + + it('exposes every product that declares images in the catalog listing', async () => { + const expected = catalog + .filter((entry) => entry.declaresImages) + .map((e) => e.slug) + .sort(); + const actual = (await getAllProducts('de')).map((p) => p.slug).sort(); + expect(actual).toEqual(expected); + }); + + it('lists all aluminium low-voltage cable types (NAYY, NAYCWY, NAY2Y, NA2XY, NA2X2Y)', async () => { + const slugs = (await getAllProducts('de')).map((p) => p.slug); + for (const slug of ALUMINIUM_LOW_VOLTAGE_SLUGS) { + expect(slugs).toContain(slug); + } + }); + + it('categorizes the aluminium low-voltage types as Niederspannungskabel', async () => { + const products = await getAllProducts('de'); + for (const slug of ALUMINIUM_LOW_VOLTAGE_SLUGS) { + const product = products.find((p) => p.slug === slug); + expect(product?.frontmatter.categories[0]).toBe('Niederspannungskabel'); + } + }); +});