Implements the 18.09. strategy's phase 1 on top of the existing single importer (which stays the one write path): - new vitec:import-product-workbooks: runs vitec:import-product-workbook per manifest entry (in-process sub-command), aggregates a per-file report (writes/unchanged/na, URL-mismatch and error flags, details on -v or failure) plus a summary; without --apply every run is a dry run; --only filters - migrations/products_xlsx/ now holds working copies of all 100 agency workbooks in their category folders (git-ignored) plus the TRACKED manifest.json: workbook path -> product slug, family entries mark the K-level landing pages (never imported), product null = unresolved. Generated from the 18.09. analysis + sitemap column K: 68 product / 17 family / 15 open - --init-manifest resolves open entries against the full product table (hidden records included): URL segment/filename vs slug, normalized title, unique slug prefix; only unambiguous hits are written back - single command compare is now tolerant of the RTE storage transform (whitespace collapse + <p>-wrap simulation), fixing the known every-run-WRITE false positive on re-imports Post-dry-run hardening, applied the same day (69 products, 785 field writes across two runs, zero errors, verified against the live JSON): - PROTECTED_FIELDS title/urltitle in the single command: the stored module mapping would have overwritten six canonical sitemap-V2 product titles - the stored mapping predated the 18.09. defaults and silently dropped `highlights` on every product; the single command now merges DEFAULT_MAPPING under the stored mapping (defaults as base, stored as per-field override) - known limitation for phase 2: the g: composed fields report WRITE on every run (RTE transform alters ul/strong markup beyond the p-wrap normalisation) - the change watch must compare against stored imported values, not the database Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
339 lines
13 KiB
JSON
339 lines
13 KiB
JSON
{
|
|
"_doku": "Workbook -> Produkt-Zuordnung fuer vitec:import-product-workbooks. product = Slug des Zieldatensatzes; family = K-Ebene (Familienseite, wird NIE importiert); product null = ungeklaert (Kommando meldet und ueberspringt). Erzeugt 2026-09-24 aus der Analyse vom 18.09. + Sitemap-V2 Spalte K; von Hand pflegbar.",
|
|
"workbooks": {
|
|
"AV over IP and KVM Product Pages/Aligo_Product Page Content.xlsx": {
|
|
"product": "aligo"
|
|
},
|
|
"AV over IP and KVM Product Pages/Arqa_Product Page Content.xlsx": {
|
|
"product": "arqa"
|
|
},
|
|
"AV over IP and KVM Product Pages/QTX100_Product Page Content.xlsx": {
|
|
"product": "qtx100"
|
|
},
|
|
"AV over IP and KVM Product Pages/RX1-C_Product Page Content.xlsx": {
|
|
"product": "rx1c"
|
|
},
|
|
"AV over IP and KVM Product Pages/RX1-F_Product Page Content.xlsx": {
|
|
"product": "rx1f"
|
|
},
|
|
"AV over IP and KVM Product Pages/RX100_Product Page Content.xlsx": {
|
|
"product": "rx100"
|
|
},
|
|
"AV over IP and KVM Product Pages/TX1-C_Product Page Content.xlsx": {
|
|
"product": "tx1c"
|
|
},
|
|
"AV over IP and KVM Product Pages/TX1-F_Product Page Content.xlsx": {
|
|
"product": "tx1f"
|
|
},
|
|
"AV over IP and KVM Product Pages/TX100 SQX_Product Page Content.xlsx": {
|
|
"product": "tx100-sqx"
|
|
},
|
|
"AV over IP and KVM Product Pages/TX100_Product Page Content.xlsx": {
|
|
"product": "tx100"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria Command Center_Product Page Content.xlsx": {
|
|
"product": "aetria-command-center"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria Network Manager_Product Page Content.xlsx": {
|
|
"product": "aetria-network-manager"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria Touch_Product Page Content.xlsx": {
|
|
"product": "aetria-touch"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria WallControl_Product Page Content.xlsx": {
|
|
"product": "aetria-wallcontrol"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria Workstation_Product Page Content.xlsx": {
|
|
"product": "aetria-workstation"
|
|
},
|
|
"Control Room Platforms Product Pages/Aetria_Product Page Content.xlsx": {
|
|
"product": "aetria"
|
|
},
|
|
"Gateways and Transcoding Product Pages/IP Gateways_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: ChannelLink (IP to IP gateways) - Familien-Seite /gateways-and-transcoding/ip-gateways/"
|
|
},
|
|
"Gateways and Transcoding Product Pages/PRISM Transcoder_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: PRISM Transcoder"
|
|
},
|
|
"Gateways and Transcoding Product Pages/PRISM_1RU_Rack_Mount_Transcoder.xlsx": {
|
|
"product": "prism-1ru-rack-mount-transcoder"
|
|
},
|
|
"Gateways and Transcoding Product Pages/RF Gateways_Product Page Content.xlsx": {
|
|
"product": "45-series-rf-gateways",
|
|
"note": "manuell 2026-09-24, PRUEFEN: einziger RF-Gateway-Record; Workbook-URL ist aber der Familien-Pfad"
|
|
},
|
|
"Gateways and Transcoding Product Pages/SFF_PRISM.xlsx": {
|
|
"product": "sff-prism-small-format-appliance-transcoder"
|
|
},
|
|
"Graphics and Multi-Display Product Pages/IQS4 (4K splitter)_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: IQS4 (4K splitter)"
|
|
},
|
|
"Graphics and Multi-Display Product Pages/Image Graphics Cards (multi-output GPU cards)_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Image Graphics Cards (multi-output GPU cards)"
|
|
},
|
|
"Graphics and Multi-Display Product Pages/Image_2K.xlsx": {
|
|
"product": "image-2k"
|
|
},
|
|
"Graphics and Multi-Display Product Pages/Image_4K.xlsx": {
|
|
"product": "image-4k"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Aligo Workstation.xlsx": {
|
|
"product": "aligo-workstation"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/ArtioSign_Product Page Content.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/ArtioView_Product Page Content.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Avedia End-Points_Product Page Content.xlsx": {
|
|
"product": "avedia-end-points"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Avedia Platform_Product Page Content.xlsx": {
|
|
"product": "avedia-platform-iptv-signage-cmsserver"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Avedia_Modular_System.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Avedia Modular System"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Avedia_Product_Page_Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Avedia Platform (URL /iptv-and-digital-signage/avedia/); Produkt-Workbook ist Avedia Platform_Product Page Content"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/ChannelLink_Product Page Content.xlsx": {
|
|
"product": "channellink"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/EZ TV End-Points.xlsx": {
|
|
"product": "ez-tv-end-points-ep6"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/EZ TV Platform CMS-Server.xlsx": {
|
|
"product": "ez-tv-platform-iptv-signage-cmsserver",
|
|
"note": "manuell 2026-09-24: das eigentliche Produkt-Workbook (URL .../ez-tv-platform-cms-server/)"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/EZ TV Platform.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: EZ TV Platform (URL /platforms-and-end-points/ez-tv-platform/); Auto-Titel-Match auf den Produkt-Record war FALSCH, korrigiert 2026-09-24"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Media Players_Product Page Content.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/Operator Workstations.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Operator Workstations"
|
|
},
|
|
"IPTV and Digital Signage Product Pages/X-Player End-Points.xlsx": {
|
|
"product": "x-player-end-points-xp23-xp25-xp26"
|
|
},
|
|
"Infrastructure and Accessories Product Pages/Accessories & Cables.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Accessories & Cables"
|
|
},
|
|
"Infrastructure and Accessories Product Pages/Chassis Systems.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"Infrastructure and Accessories Product Pages/Express Backplanes.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Express Backplanes"
|
|
},
|
|
"Video Capture Product Pages/ActiveSQX.xlsx": {
|
|
"product": "activesqx"
|
|
},
|
|
"Video Capture Product Pages/ActiveSQX2.xlsx": {
|
|
"product": "activesqx2"
|
|
},
|
|
"Video Capture Product Pages/Vision.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Vision (DVI & SDI capture cards)"
|
|
},
|
|
"Video Capture Product Pages/VisionAV-HD.xlsx": {
|
|
"product": "visionav-hd"
|
|
},
|
|
"Video Capture Product Pages/VisionAV-SDI.xlsx": {
|
|
"product": "visionav-sdi"
|
|
},
|
|
"Video Capture Product Pages/VisionAV.xlsx": {
|
|
"product": "visionav"
|
|
},
|
|
"Video Capture Product Pages/VisionHD4.xlsx": {
|
|
"product": "visionhd4"
|
|
},
|
|
"Video Capture Product Pages/VisionIO-SDI4.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"Video Capture Product Pages/VisionIO-XD2.xlsx": {
|
|
"product": "visionio-xd2"
|
|
},
|
|
"Video Capture Product Pages/VisionIO.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VisionIO (real-time capture + overlay)"
|
|
},
|
|
"Video Capture Product Pages/VisionLC-HD.xlsx": {
|
|
"product": "visionlc-hd"
|
|
},
|
|
"Video Capture Product Pages/VisionLC-HD2.xlsx": {
|
|
"product": "visionlc-hd2"
|
|
},
|
|
"Video Capture Product Pages/VisionLC-SDI.xlsx": {
|
|
"product": "visionlc-sdi"
|
|
},
|
|
"Video Capture Product Pages/VisionLC.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VisionLC (low-profile capture cards)"
|
|
},
|
|
"Video Capture Product Pages/VisionRGB-E1S.xlsx": {
|
|
"product": "visionrgb-e1s"
|
|
},
|
|
"Video Capture Product Pages/VisionRGB-E2S.xlsx": {
|
|
"product": "visionrgb-e2s"
|
|
},
|
|
"Video Capture Product Pages/VisionSC (scalable capture & processing)_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VisionSC (scalable capture & processing)"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-A2.xlsx": {
|
|
"product": "visionsc-a2"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-DP2.xlsx": {
|
|
"product": "visionsc-dp2"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-HD4Plus.xlsx": {
|
|
"product": "visionsc-hd4"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-S2.xlsx": {
|
|
"product": "visionsc-s2"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-SDI4.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"Video Capture Product Pages/VisionSC-UHD2.xlsx": {
|
|
"product": "visionsc-uhd2"
|
|
},
|
|
"Video Capture Product Pages/VisionSD12.xlsx": {
|
|
"product": "visionsd12"
|
|
},
|
|
"Video Capture Product Pages/VisionSD4Plus1S.xlsx": {
|
|
"product": "visionsd4-1s"
|
|
},
|
|
"Video Capture Product Pages/VisionSD8.xlsx": {
|
|
"product": "visionsd8"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/38-Series Encoders_Product Page Content.xlsx": {
|
|
"product": "38-series-encoders-modular-blade-systems"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/Diamond_IP_OG.xlsx": {
|
|
"product": "diamond-ip-og-ip-to-ip-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGES6000.xlsx": {
|
|
"product": "mges6000-broadcast-quality-hdsd-h264-quad-input-iptv-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGES7000.xlsx": {
|
|
"product": "mges7000-high-density-4kuhdhd-hevc-h264-iptv-encoding-blade"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Ace Decoder.xlsx": {
|
|
"product": "mgw-ace-decoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Ace_Product Page Content.xlsx": {
|
|
"product": "mgw-ace-encoder",
|
|
"note": "manuell 2026-09-24: Encoder (Hero: ultra-low latency HEVC encoding); Praefix-Match war doppeldeutig (encoder/decoder)"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Diamond OG.xlsx": {
|
|
"product": null,
|
|
"note": "KLAEREN mit Olli 2026-09-24: Record uid 20 heisst 'MGW Diamond+ OG' bei Slug mgw-diamond-og-sdi-blade-encoder (Titel/Slug widerspruechlich); gehoert dieses Workbook oder MGW_Diamond_Plus_OG.xlsx zu uid 20?"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Diamond-H_Product Page Content.xlsx": {
|
|
"product": "mgw-diamond-h-hdmi-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Diamond-Hx OG.xlsx": {
|
|
"product": "mgw-diamond-hx-og"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Diamond_Product Page Content.xlsx": {
|
|
"product": "mgw-diamond-sdi-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW Pico_Product Page Content.xlsx": {
|
|
"product": "mgw-pico-portable-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW_Ace_Decoder_OG.xlsx": {
|
|
"product": "mgw-ace-decoder-og-ultra-low-latency-blade-encoder"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW_Blade_System.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: MGW Blade System"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW_Diamond_Hx_OG.xlsx": {
|
|
"product": "mgw-diamond-hx-og"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/MGW_Diamond_Plus_OG.xlsx": {
|
|
"product": null,
|
|
"note": "KLAEREN mit Olli 2026-09-24: siehe MGW Diamond OG.xlsx - uid 20 traegt den Plus-Titel bei Plain-Slug"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/PCIe Encoders_Product Page Content.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/VITEC OG_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VITEC OG Modular System (zweites Workbook derselben Familie neben VITEC_OG_Modular_System.xlsx)"
|
|
},
|
|
"Video Encoding and Streaming Product Pages/VITEC_OG_Modular_System.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VITEC OG Modular System"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Fx4.xlsx": {
|
|
"product": "fx4"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Fx4_HDR.xlsx": {
|
|
"product": "fx4-hdr"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Fx4_SDI.xlsx": {
|
|
"product": "fx4-sdi"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Genetec.xlsx": {
|
|
"product": "genetec"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Hx4.xlsx": {
|
|
"product": "hx4"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Milestone.xlsx": {
|
|
"product": "milestone"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/VMS Plugins & Integrations_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VMS Plugins & Integrations"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/VSN V3_Product Page Content.xlsx": {
|
|
"product": "vsn-v3"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/VSNMicro 600_Product Page Content.xlsx": {
|
|
"product": "vsnmicro-600"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/VSNMini 300_Product Page Content.xlsx": {
|
|
"product": "vsnmini-300"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/VSN_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: VSN"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/Video Wall Management Software_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: Video Wall Management Software"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/WallControl_10.xlsx": {
|
|
"product": null,
|
|
"note": "manuell zuordnen: verstecktes/abweichend benanntes Produkt ODER Familienseite"
|
|
},
|
|
"Video Wall and Display Processing Product Pages/X-Series (Multi-display Processors)_Product Page Content.xlsx": {
|
|
"family": true,
|
|
"note": "K-Ebene: X-Series (Multi-display Processors)"
|
|
}
|
|
}
|
|
} |