Add Schema.org JSON-LD, SEO meta overrides, and resilient bulk SMS.
Expose Organization/LocalBusiness and Product/BlogPosting jsonLd, optional seoMeta fields on content/categories, and continue mass SMS after per-recipient failures. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
db305c58a4
commit
aaf7a83742
@@ -111,6 +111,43 @@ export type WebsiteSettings = {
|
||||
specialProductsSource: SpecialProductsSource;
|
||||
/** Imported from GET https://{domain}/meshkee/sitemap-config.json */
|
||||
sitemapConfig?: WebsiteSitemapConfig | null;
|
||||
/** Site-wide Schema.org Organization / LocalBusiness settings (Phase A). */
|
||||
schema: WebsiteSchemaSettings;
|
||||
};
|
||||
|
||||
/** Schema.org @type for the site-wide entity JSON-LD. */
|
||||
export const WEBSITE_SCHEMA_TYPE_IDS = ['Organization', 'LocalBusiness'] as const;
|
||||
|
||||
export type WebsiteSchemaType = (typeof WEBSITE_SCHEMA_TYPE_IDS)[number];
|
||||
|
||||
/**
|
||||
* Business-admin overrides for site-wide structured data.
|
||||
* Empty name/description fall back to business profile fields on the public API.
|
||||
*/
|
||||
export type WebsiteSchemaSettings = {
|
||||
/** When false, websites should not emit Organization/LocalBusiness JSON-LD. */
|
||||
enabled: boolean;
|
||||
type: WebsiteSchemaType;
|
||||
/** Optional override; empty → business `name`. */
|
||||
name: string | null;
|
||||
/** Optional override; empty → business `nameFa`. */
|
||||
nameFa: string | null;
|
||||
/** Optional override; empty → business `about`. */
|
||||
description: string | null;
|
||||
/** Optional LocalBusiness priceRange (e.g. "$$" or "۱۰۰٬۰۰۰–۵٬۰۰۰٬۰۰۰ تومان"). */
|
||||
priceRange: string | null;
|
||||
/** Extra sameAs profile URLs (merged with social links from business profile). */
|
||||
sameAs: string[];
|
||||
};
|
||||
|
||||
export const DEFAULT_WEBSITE_SCHEMA_SETTINGS: WebsiteSchemaSettings = {
|
||||
enabled: true,
|
||||
type: 'Organization',
|
||||
name: null,
|
||||
nameFa: null,
|
||||
description: null,
|
||||
priceRange: null,
|
||||
sameAs: [],
|
||||
};
|
||||
|
||||
export type SitemapChangefreq =
|
||||
@@ -322,6 +359,7 @@ export const DEFAULT_BUSINESS_SETTINGS: BusinessSettings = {
|
||||
},
|
||||
website: {
|
||||
specialProductsSource: 'store_item',
|
||||
schema: { ...DEFAULT_WEBSITE_SCHEMA_SETTINGS },
|
||||
},
|
||||
sms: {
|
||||
senderNumber: null,
|
||||
|
||||
Reference in New Issue
Block a user