2 Commits
Author SHA1 Message Date
orascheandClaude Fable 5 77661bf0b6 Datapath stories, grid repairs, menu v2 pure, hero placeholders, fec test
Batch of 2026-10-28/29 plus 2026-11-03:

- NEW vitec:import-datapath-stories: 22 story packages from the agency
  dump (docx + Links/ assets) as usecase records with content, quotes,
  images, customer logos, download cards; --repair-quotes normalizes
  attribution lines; asset backfill for existing stories
- /products grid incident repaired (fix_products_grid, fix_graphics_grid,
  check_grid_page): containers unhidden, 46 duplicate cards soft-deleted,
  section order restored; BuildProductPortfolio and
  ImportProductCategoryPages now GUARD against re-runs on pages that
  already carry vitec_cols_% containers
- ' double-encoding fixed: render-pipeline importers write literal
  apostrophes (ENT_NOQUOTES), fix_double_entities literalizes existing rows
- ticket quick wins (ticket_quickwins_20261028), broadcast market page
  cleanup, AttachCardImages market-card handling, SubmarketWorkbook
  META REPAIR, story content/video fixes (fix_story_*)
- ProvideProductCatalog: transitional v1 fields removed (categories
  uid/link, legacyGroupFields, item products teaser) - pure v2 shape
  (ticket 0024-FE); search renderer keeps its teaser
- BuildProductOverviews: heroes get the numbered placeholder background
  (placeholders/pages/<uid>-01.png, wide grey fallback) - backfill on
  existing pages with empty hero_bgimage, attached at creation for new
  pages; existing references always win (ticket 0026-FE); 40 placeholder
  PNGs shipped to fileadmin (not tracked)
- AttachPageMedia: --depth=3 with sysfolders as pass-through parents for
  the overview pages' -08 menu tiles
- NEW migrations/fec_isolation_test.sh: two-user live test proving
  fe_comment ticket isolation (backend verified tight, cross-user
  sighting traced to the FE page-JSON cache, ticket 0027-BE)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-11-03 18:29:56 +01:00
orascheandClaude Fable 5 c4ec979f78 Fill the /markets main page from "Markets Hero Page.xlsx"
- new vitec:import-markets-main (dry-run by default): one page with
  fixed approved copy, so the workbook content is embedded in the
  command instead of parsed at runtime; every target is resolved at
  runtime (pages by slug, elements by CType/colPos/container, market
  records by normalised title) and the command aborts on an unexpected
  structure
- the page already had the workbook structure (template vitec__2), so
  this updates the hero, the 50/50 markets intro (CTA -> /solutions)
  and the overview header in place
- the marketlist flexform selection moves from the old 9-record set
  (which still included the dropped "Security & Surveillance") to the
  11 main-market records in workbook order
- the 11 market card bodies land in the market records' teaser field
  (all were empty; the marketlist cards render from the records -
  frontend briefing asks for teaser on the cards)
- the old single-button prefooter container is hidden, replaced by a
  vitec_ctabanner (centered/orange, as on the 11 market hero pages)
  with both workbook CTAs: "Talk to our team" -> /contact and
  "Explore solutions" -> /solutions; explicit sorting after DataHandler
- page properties per the established set: seo/og/twitter title and
  description, canonical, abstract, curated keywords
- applied and verified live in the JSON (cards, order, teasers, CTA
  targets, meta tags); no spec bump - no new JSON keys involved

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-27 10:15:02 +01:00