import Header from '../../components/Header.jsx'; import Footer from '../../components/Footer.jsx'; import Promotions from '../../components/sections/Promotions.jsx'; import { ORGANIZATION_ID, getOrganizationSchema } from '../../lib/schema.js'; import { serverApi } from '../../lib/serverApi.js'; export const metadata = { title: 'Акции на IT-аутсорсинг, техподдержку и почтовые серверы', description: 'Актуальные акции и специальные предложения TopSysOps: скидки на IT-аутсорсинг при годовом договоре, почтовый сервер под ключ, бот с ИИ-ассистентом.', alternates: { canonical: '/aktsii' }, }; function parsePrice(priceText) { const digits = (priceText.match(/\d[\d\s ]*/) || [])[0]; if (!digits) return null; const value = Number(digits.replace(/[\s ]/g, '')); return Number.isFinite(value) && value > 0 ? value : null; } export default async function PromotionsPage() { const [promotions, orgSchema] = await Promise.all([serverApi.getPromotions(), getOrganizationSchema()]); const offersSchema = { '@context': 'https://schema.org', '@type': 'OfferCatalog', name: 'Акции TopSysOps', itemListElement: promotions.map((p) => { const price = parsePrice(p.price_text); return { '@type': 'Offer', name: p.title, description: p.description, seller: { '@id': ORGANIZATION_ID }, ...(price ? { price, priceCurrency: 'RUB' } : {}), }; }), }; return (
{/* eslint-disable-next-line react/no-danger */}