The product audit of public/product-check/ becomes data for the React frontend: new content element vitec_productcheck (plugin registration, wizard entry, TypoScript USER func) delivers under content.productcheck either the overview (every product with one {ok,count} check per field - hero, photos, og, video, teaser, subtitle, description, description2, highlights, capabilities, applications, features incl. icon count, resources, datasheets, solutions - plus per-field summary) or, with ?check=<uid>, the detail of one product (texts as stored HTML, images with original URL and 480px thumbnail, videos, feature cards with icons, resources, datasheets, solutions). ProductCheckService ports the PDO queries of the standalone page to Doctrine; the renderer is always USER_INT so the audit is never served from the page cache; check is excluded from the cHash. Migration adds the element to page 607 (/products/product-check). The standalone page stays untouched. Verified on DEV: overview 85 products in 0.13 s warm, detail 0.2-0.9 s, thumbnails resolve.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
70 lines
2.5 KiB
YAML
70 lines
2.5 KiB
YAML
services:
|
|
_defaults:
|
|
autowire: true
|
|
autoconfigure: true
|
|
public: false
|
|
|
|
Evomedien\Vitec\:
|
|
resource: '../Classes/*'
|
|
exclude: '../Classes/Domain/Model/*'
|
|
|
|
# Make our VitecBackendLayoutView the canonical BackendLayoutView.
|
|
# Any service / controller requesting BackendLayoutView gets our override.
|
|
Evomedien\Vitec\View\VitecBackendLayoutView:
|
|
public: true
|
|
|
|
TYPO3\CMS\Backend\View\BackendLayoutView:
|
|
alias: Evomedien\Vitec\View\VitecBackendLayoutView
|
|
public: true
|
|
|
|
# Headless resolves the meta handler via this interface (cacheable listener
|
|
# AND the USER_INT middleware). Pointing the alias at our subclass mirrors
|
|
# the final page title (seo.title) into meta.title as well.
|
|
FriendsOfTYPO3\Headless\Seo\MetaHandlerInterface:
|
|
alias: Evomedien\Vitec\Seo\VitecMetaHandler
|
|
|
|
# The DataHandler hook fetches this via GeneralUtility::makeInstance,
|
|
# which resolves constructor arguments only for container-public services.
|
|
Evomedien\Vitec\Service\SsrPurgeService:
|
|
public: true
|
|
|
|
# Fetched via GeneralUtility::makeInstance from the USER func
|
|
# ProductCheckJsonRenderer (TypoScript userFunc, no DI there).
|
|
Evomedien\Vitec\Service\ProductCheckService:
|
|
public: true
|
|
|
|
# SSR dashboard tiles (the WidgetConfigurationInterface argument is
|
|
# injected by the dashboard compiler pass via the tag).
|
|
Evomedien\Vitec\Widgets\SsrStatusWidget:
|
|
tags:
|
|
- name: dashboard.widget
|
|
identifier: vitecSsrStatus
|
|
groupNames: systemInfo
|
|
title: 'VITEC: SSR / VPS status'
|
|
description: 'Live state of the SSR server (release, cache, reachability) and the delivery switch'
|
|
iconIdentifier: 'content-widget-text'
|
|
height: 'medium'
|
|
width: 'medium'
|
|
|
|
Evomedien\Vitec\Widgets\SsrStatsWidget:
|
|
tags:
|
|
- name: dashboard.widget
|
|
identifier: vitecSsrStats
|
|
groupNames: systemInfo
|
|
title: 'VITEC: SSR statistics'
|
|
description: 'Purge protocol and availability of the SSR server (14 days of history)'
|
|
iconIdentifier: 'content-widget-number'
|
|
height: 'medium'
|
|
width: 'medium'
|
|
|
|
Evomedien\Vitec\Widgets\SsrErrorsWidget:
|
|
tags:
|
|
- name: dashboard.widget
|
|
identifier: vitecSsrErrors
|
|
groupNames: systemInfo
|
|
title: 'VITEC: SSR errors & hit rate'
|
|
description: 'Render/backend error counters and cache hit rate of the SSR node (/__stats, sampled every 5 minutes)'
|
|
iconIdentifier: 'content-widget-list'
|
|
height: 'medium'
|
|
width: 'medium'
|