Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
114 lines
6.7 KiB
TypeScript
114 lines
6.7 KiB
TypeScript
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)
|
||
}
|