From cf6e71839b84af91f490003a1f69a40a904156e6 Mon Sep 17 00:00:00 2001 From: aramesh-site deploy Date: Wed, 7 Oct 2026 08:41:30 +0000 Subject: [PATCH] =?UTF-8?q?fix(seo):=20=D8=AA=D8=B7=D8=A8=DB=8C=D9=82=20?= =?UTF-8?q?=DA=A9=D9=84=D9=85=D9=87=20=DA=A9=D9=84=DB=8C=D8=AF=DB=8C=20?= =?UTF-8?q?=D8=A8=DB=8C=E2=80=8C=D8=AA=D9=88=D8=AC=D9=87=20=D8=A8=D9=87=20?= =?UTF-8?q?=D8=A8=D8=B2=D8=B1=DA=AF/=DA=A9=D9=88=DA=86=DA=A9=DB=8C=20?= =?UTF-8?q?=D8=AD=D8=B1=D9=88=D9=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/admin/SeoChecklist.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/admin/SeoChecklist.tsx b/frontend/src/components/admin/SeoChecklist.tsx index cd12435..c77b047 100644 --- a/frontend/src/components/admin/SeoChecklist.tsx +++ b/frontend/src/components/admin/SeoChecklist.tsx @@ -23,7 +23,9 @@ export function useSeoChecks(input: SeoInput): Check[] { const text = docToText(input.body) const words = text.split(/\s+/).filter(Boolean) const kp = input.keyphrase.trim() - const has = (s: string, needle: string) => s.includes(needle) + // تطبیق کلمه کلیدی بی‌توجه به بزرگ/کوچکی حروف — و نرمال‌سازی عربی/فارسی + const norm = (s: string) => s.toLowerCase().replace(/ي/g, 'ی').replace(/ك/g, 'ک') + const has = (s: string, needle: string) => norm(s).includes(norm(needle)) const checks: Check[] = [] // عنوان