admin/lib/seo/faqPage.ts
alisaza e1eaf5eff5 feat: initial ghabilee-admin backoffice app
Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js
app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
2026-09-05 13:12:59 +03:30

114 lines
6.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { Metadata } from 'next'
import { ORGANIZATION_ID, WEBSITE_ID, faqPage } from '@/lib/seo/JsonLd'
import { buildCanonicalUrl, SITE_URL } from '@/lib/seo/metadata'
import { buildPublicPageMetadata } from '@/lib/seo/publicPageMetadata'
export const FAQ_UPDATED_AT_ISO = '2026-08-30'
export const FAQ_UPDATED_AT_FA = '۸ شهریور ۱۴۰۵'
export const FAQ_PAGE_SEO = {
path: '/faq' as const,
h1: 'سؤالات متداول قبیله',
breadcrumbName: 'سؤالات متداول',
metaTitle: 'سؤالات متداول قبیله | رزرو، لغو و میزبانی',
metaDescription:
'پاسخ کوتاه به سؤال‌های پرتکرار قبیله: ثبت‌نام و رزرو رویداد، پرداخت، لغو و بازگشت وجه، احراز هویت میزبان و ساخت رویداد.',
pageId: `${SITE_URL}/faq#webpage`,
}
/** Plain-text Q&A for FAQPage schema — must stay aligned with on-page answers. */
export const FAQ_SCHEMA_ITEMS = [
{
question: 'چطور در یک رویداد ثبت‌نام کنم؟',
answer:
'از صفحه اصلی یا دسته‌بندی/شهر رویداد را پیدا کن، صفحه همان رویداد را باز کن، جزئیات و شرایط لغو را بخوان و رزرو را شروع کن. برای تکمیل رزرو باید وارد حسابت شوی. رویدادهای پولی بعد از پرداخت موفق قطعی می‌شوند. راهنمای کوتاه: https://ghabilee.ir/faq',
},
{
question: 'از کجا بفهمم رزرو قطعی شده؟',
answer:
'بعد از پرداخت موفق (یا تأیید رزرو رایگان)، رزرو در بخش رویدادهای من دیده می‌شود و معمولاً اعلان تأیید هم می‌گیری. تا وقتی پرداخت کامل نشده، حضور قطعی نیست. جزئیات بیشتر: https://ghabilee.ir/faq',
},
{
question: 'برای پرداخت رزرو چقدر وقت دارم؟',
answer:
'در حالت عادی حدود ۱۰ دقیقه فرصت داری پرداخت را کامل کنی. اگر در این زمان پرداخت نشود، ممکن است رزرو منقضی شود و ظرفیت برای نفرهای دیگر آزاد شود. جزئیات در شرایط استفاده: https://ghabilee.ir/terms',
},
{
question: 'آیا می‌تونم رزرو را لغو کنم؟ چقدر برمی‌گرده؟',
answer:
'بستگی به قوانین همان رویداد دارد. برگزارکننده هنگام ساخت رویداد قواعد و هزینه لغو را مشخص می‌کند؛ قبل از رزرو جزئیات را در صفحه همان رویداد بخوان. چارچوب کلی: https://ghabilee.ir/refund-policy',
},
{
question: 'مبلغ بازگشت‌شده کجا می‌نشیند؟',
answer:
'وقتی طبق قوانین همان رویداد مبلغی قابل‌بازگشت باشد، معمولاً اول به کیف پول قبیله اضافه می‌شود. بعد می‌توانی از اعتبار کیف پول برای پرداخت‌های بعدی استفاده کنی یا درخواست برداشت ثبت کنی. جزئیات: https://ghabilee.ir/refund-policy',
},
{
question: 'اگر میزبان کل رویداد را لغو کند چه می‌شود؟',
answer:
'رزروها لغو می‌شوند، مطلع می‌شوی و مبلغ پرداختی‌ات به‌طور کامل به کیف پول قبیله برمی‌گردد. در این حالت جریمه‌ای از مهمان گرفته نمی‌شود. چارچوب کلی: https://ghabilee.ir/refund-policy',
},
{
question: 'اگر ظرفیت پر باشد چه کار می‌توانم بکنم؟',
answer:
'اگر فهرست انتظار فعال باشد می‌توانی درخواست بدهی. وقتی جا خالی شود، نوبت به ترتیب به نفرهای فهرست انتظار می‌رسد. در رویداد پولی معمولاً حدود ۳۰ دقیقه برای تکمیل پرداخت فرصت داری. جزئیات: https://ghabilee.ir/terms و https://ghabilee.ir/faq',
},
{
question: 'چطور میزبان شوم و رویداد بسازم؟',
answer:
'اول احراز هویت برگزارکننده را کامل کن، بعد موضوع، زمان، مکان، ظرفیت، قیمت و قوانین لغو همان رویداد را ثبت و منتشر کن. ساخت رویداد رایگان است و کارمزد از فروش موفق حساب می‌شود. معرفی امکانات: https://ghabilee.ir/become-a-host — چک‌لیست قدم‌به‌قدم: https://ghabilee.ir/host-guide',
},
{
question: 'چرا برای میزبانی احراز هویت لازم است؟',
answer:
'برای حفظ اعتماد مهمان‌ها، کاهش سوءاستفاده و انجام امن تسویه مالی. اطلاعات احراز هویت در پروفایل عمومی نمایش داده نمی‌شود. مسیر میزبانی: https://ghabilee.ir/become-a-host — حریم خصوصی: https://ghabilee.ir/privacy',
},
{
question: 'اگر پرداخت از حسابم کم شد ولی رزرو ثبت نشد چه کنم؟',
answer:
'این موضوع لزوماً لغو رزرو نیست. اول وضعیت تراکنش بررسی می‌شود. برای پیگیری سریع‌تر، زمان پرداخت، مبلغ، شماره پیگیری بانکی و شماره موبایل حسابت را آماده کن و با پشتیبانی تماس بگیر: https://ghabilee.ir/contact',
},
] as const
export function buildFaqPageMetadata(): Metadata {
const page = FAQ_PAGE_SEO
const pageMetadata = buildPublicPageMetadata({
path: page.path,
metaTitle: page.metaTitle,
metaDescription: page.metaDescription,
})
return {
...pageMetadata,
title: { absolute: page.metaTitle },
openGraph: { ...pageMetadata.openGraph, title: page.metaTitle },
twitter: { ...pageMetadata.twitter, title: page.metaTitle },
robots: { index: true, follow: true },
}
}
export function faqWebPageSchema() {
const page = FAQ_PAGE_SEO
const url = buildCanonicalUrl(page.path)
return {
'@context': 'https://schema.org',
'@type': 'WebPage',
'@id': page.pageId,
name: page.metaTitle,
headline: page.h1,
description: page.metaDescription,
url,
inLanguage: 'fa-IR',
isPartOf: { '@id': WEBSITE_ID },
publisher: { '@id': ORGANIZATION_ID },
datePublished: FAQ_UPDATED_AT_ISO,
dateModified: FAQ_UPDATED_AT_ISO,
}
}
export function faqRichResultsSchema() {
return faqPage(FAQ_SCHEMA_ITEMS)
}