Commit Graph
172 Commits
Author SHA1 Message Date
aramesh-site deploy aa13d41b6d fix(blog): کلید زبان در صفحهٔ مقاله ۴۰۴ می‌داد + اسلاگ‌های انگلیسی نامعتبر
باگ کاربر: در پیش‌نمایش فارسی مقاله، دکمهٔ EN به '/en' + اسلاگ فارسی می‌رفت
(«مقاله‌ای وجود ندارد») چون اسلاگ دو زبان فرق دارد.
- LangToggle: نگاشت آگاه از اسلاگ مقاله (fa↔en از روی slug_en) — هم статье
  و هم فهرست وبلاگ
- seo.ts: مسیر alternate صریح (altFa/altEn)؛ پیش از این localeHref پیشوند ساده
  می‌ساخت و hreflang درست سرور را بعد از هیدریشن خراب می‌کرد
- backend: /en/blog/{fa-slug} → 301 به اسلاگ انگلیسی و /blog/{en-slug} → 301
  به نسخهٔ انگلیسی (جلوگیری از ۴۰۴ برای نشانی‌های اشتباه)
- داده: ۱۰ مقدار slug_en که «عنوان با فاصله» بودند به اسلاگ واقعی تبدیل شدند
  (مثل 'Principles of Commercial Building Design' → principles-of-commercial-...)؛
  URL با فاصله هرگز کار نمی‌کرد
2026-10-25 19:51:50 +00:00
aramesh-site deploy a0a8985984 fix(i18n): کاربری پروژه (land use) در نسخهٔ انگلیسی بومی‌سازی نمی‌شد
localize.ts فیلد usage را نگاشت نمی‌کرد و نوع Project هم آن را نداشت؛ نتیجه:
صفحهٔ /en/projects/... همچنان «مسکونی» فارسی را نشان می‌داد. usage و project_type
به نوع + نگاشت بومی‌سازی اضافه شدند.
2026-10-13 12:59:07 +00:00
aramesh-site deploy daa98d0f16 fix(db): پهن‌کردن ستون‌های location/usage پروژه به ۲۵۶ نویسه
نشانی انگلیسی ترانویسی‌شده از ۱۲۸ نویسه بلندتر می‌شود (بلندترین: ۱۶۱) و درج
ترجمهٔ ۶۵ پروژه با خطای StringDataRightTruncation شکست خورد. مدل + مهاجرت
ALTER COLUMN TYPE (idempotent) اضافه شد.
2026-10-13 12:48:37 +00:00
aramesh-site deploy 66e68964f6 fix(home): پروژه‌های شاخص با slug تطبیق می‌شوند نه عنوان — در انگلیسی خالی می‌شد
با افزودن title_en به سه پروژه، فیلتر FEATURED_TITLES (عنوان فارسی) در نسخهٔ
انگلیسی دیگر مطابقت نمی‌کرد و بخش «پروژه‌های شاخص» بدون کارت رندر می‌شد.
- تطبیق با slug (زبان‌مستقل) + لینک کارت‌ها با href() بومی‌سازی شد
- لینک نشان پروژهٔ فعال هیرو هم بومی‌سازی شد (در /en به نسخهٔ فارسی نمی‌رود)
2026-10-13 12:35:47 +00:00
aramesh-site deploy 8de338bb1f fix(seo): noindex برای صفحات /en بدون ترجمهٔ واقعی — پاسخ به گزارش GSC
گزارش Coverage Drilldown گوگل (۱۰ اکتبر): ۳۶ صفحه «Crawled - currently not indexed»
که غالباً /en/projects/... بودند — صفحهٔ انگلیسی با محتوای فارسی (۰/۶۵ پروژه ترجمه دارد)
یعنی نسخهٔ تکراری صفحهٔ فارسی، و گوگل درست ردش کرده بود.
اکنون صفحات /en که ترجمه ندارند متای noindex,follow می‌گیرند (کاربر عادی سالم
می‌بیند؛ با افزودن ترجمه خودکار برمی‌گردد). صفحه‌های فارسی و /en صفحه‌های اصلی
ترجمه‌دار دست‌نخورده و ایندکس‌پذیرند.
2026-10-13 09:57:31 +00:00
aramesh-site deploy 9b0533b7b2 feat(schema): foundingDate 2002 (تأسیس ۱۳۸۱) + foundingLocation اصفهان در Organization
سیگنال تمایز هویت برند: شرکت جعلی‌ای که از نام «آرامش» استفاده می‌کند تأسیس ۱۳۹۱ را
ادعا می‌کند؛ سایت رسمی حالا سند ساخت‌یافتهٔ سابقهٔ واقعی (۲۴ سال) را در اختیار
گوگل و دستیارهای AI قرار می‌دهد.
2026-10-10 23:01:19 +00:00
aramesh-site deploy e84cd0fe13 fix(nav): هایلایت «خانه» فقط روی صفحهٔ اصلی
NavLink برای «خانه» (مسیر / و /en) چون پیشوند همهٔ مسیرهاست، در هر صفحه‌ای
active می‌ماند (در انگلیسی واضح بود: Home و Projects همزمان روشن).
با end={item.href === '/'} دقیق شد — بقیهٔ آیتم‌ها مثل Projects روی
صفحه‌های جزئیات همچنان فعال می‌مانند (رفتار درست).
2026-10-10 22:14:46 +00:00
aramesh-site deploy 7897efd975 fix(layout): رفع پوشیده‌شدن بردکرامب/محتوا زیر لوگوی هدر در موبایل + فاصلهٔ یکنواخت بالای صفحه‌ها
- هدر: لوگو در موبایل h-14 (دسکتاپ h-20 مثل قبل) — ارتفاع هدر از ۱۱۲ به ۸۸ پیکسل
- PageHero: h ثابت ۵۸vh → min-h + pt-32؛ اگر محتوا (مثل سرآغاز بلند انگلیسی درباره ما)
  بلندتر باشد، بخش بلندتر می‌شود و بردکرامب هرگز زیر لوگوی ثابت نمی‌رود
- Hero صفحهٔ اصلی: pt-28 تا بلوک وسط‌چین هم با هدر تداخل نکند؛ min-h به‌جای h-screen
با iOS Safari (آیفون) تست شد
2026-10-10 22:02:37 +00:00
aramesh-site deploy aa5e54b1cd fix(seed): حذف اعداد و ادعاهای دموی باقی‌مانده از داده‌های اولیه
کاربر نشان «47 / پروژه فعال آرامش الیسیان» را در هیرو دید — عدد دموی seed.
- badge_value/badge_value_en: «۴۷»/«47» → خالی (برچسب واقعی می‌ماند)
- تایم‌لاین: «پرتفوی ۴۷ پروژه، دفاتر در سه شهر» → «پرتفوی ۶۵ پروژه، دفتر مرکزی در اصفهان»
- تایم‌لاین lead: «تا ۴۷ پروژه» → «تا ۶۵ پروژه»
- متای دموی seed: «21 years / 47 delivered» → «24 years / 65 delivered»
- بخش تماس: «تیم ما در سه شهر» → «تیم ما» (فقط یک دفتر واقعی داریم: اصفهان)

بررسی کامل دیتابیس زنده: هیچ ادعای ناسازگاری باقی نمانده (نه ۴۷، نه سه شهر، نه
دفاتر/افراد دمو). seed اصلاح شد تا در استقرار بعدی برنگردند.
2026-10-10 11:27:33 +00:00
aramesh-site deploy 04dc5facde fix(robots): مسدود نکردن /api/site — Allow داخل گروه Disallow قابل‌اعتماد نبود
گزارش منابع صفحهٔ GSC: «Googlebot blocked by robots.txt → /api/site».
robots.txt قاعدهٔ «آخرین تطابق» ندارد؛ افزودن Allow: /api/site داخل همان گروه
Disallow: /api توسط برخی خزنده‌ها نادیده گرفته می‌شد. حالا فقط /admin و
/api/admin مسدود می‌شوند و /api/site آزاد است.
2026-10-10 10:28:51 +00:00
aramesh-site deploy 51e7e46584 fix(seo): پیوند صریح ZIP تصاویر روی صفحهٔ پروژه و فهرست پروژه‌ها
دستیار AI گفت «تصاویر سایت را نتوانستم دریافت کنم» — آرشیو ZIP وجود داشت و از
چهار کشور ۲۰۰ می‌داد، اما هیچ پیوندی به آن در صفحات نبود: llms.txt فقط الگو
داده بود و مدل‌ها الگو را جای‌گذاری نمی‌کنند. اکنون:
- صفحهٔ هر پروژه: <a href=.../images.zip>دانلود همهٔ تصاویر (ZIP)</a>
- فهرست /projects: هر ردیف پیوند «تصاویر (ZIP)» همان پروژه را دارد (۶۵ پیوند)
تا خزنده‌ها با دنبال‌کردن پیوند واقعی به آرشیو برسند.
2026-10-09 23:55:36 +00:00
aramesh-site deploy ef5da904e3 fix(seo): نمایش متراژ و مشخصات پروژه‌ها در فهرست /projects + پیوند به صفحهٔ جزئیات
دستیار AI گفت «/projects باز نمی‌شود» و «برای الیسیان و زنیت متراژ پیدا نکردم» — درست بود:
فهرست پروژه‌ها فقط نام/موقعیت/سال را می‌داد و زیربنا و طبقات فقط در صفحهٔ جزئیات بود.
اکنون هر ردیف فهرست شامل زمین/زیربنا/طبقات/واحد است و نام پروژه به صفحهٔ جزئیات
پیوند دارد، تا خزنده بتواند مشخصات کامل را دنبال کند.
2026-10-09 23:47:37 +00:00
aramesh-site deploy 47f1505a2e feat(llms): معرفی آرشیو تصاویر پروژه‌ها در llms.txt — تا دستیارهای AI آن را کشف کنند 2026-10-09 23:46:33 +00:00
aramesh-site deploy 365e4b9417 feat(seo): آرشیو ZIP تصاویر پروژه برای دستیارهای AI
دستیارها نمی‌توانند دکمه‌های UI را کلیک کنند؛ برای همین نمی‌توانستند تصاویر یک پروژه را
بررسی کنند. اکنون:
- /projects/{slug}/images.zip — آرشیو تصاویر هر پروژه + manifest.json
  (مشخصات کامل پروژه: زمین/زیربنا/طبقات/واحدها/کاربری/سال + برای هر تصویر: نام،
  caption با موقعیت پروژه، و لینک منبع)
- /projects-images.json — فهرست ماشین‌خوان هر ۶۵ پروژه با لینک ZIP (ItemList)
- هر دو مسیر در قاعدهٔ seo ترویک (prod + override) اضافه شدند

رفع باگ‌ها در مسیر ساخت آرشیو:
- _fetch_media: unquote روی کلیدِ از قبل دیکد‌شده، نام فایل‌های فارسی را خراب می‌کرد
  (حالا هر دو شکل امتحان می‌شود + سقوط به واکشی از سایت)
- UnboundLocalError: import محلی urllib.request نام urllib را محلی می‌کرد
- تصاویر تکراری (تصویر شاخص = اولین عکس گالری) با هش MD5 حذف می‌شوند —
  ۱۷ از ۱۹ پروژهٔ نمونه یک تصویر تکراری داشتند
2026-10-09 23:45:35 +00:00
aramesh-site deploy b26207769f fix(seo): انتشار مشخصات فنی پروژه‌ها — باگ جاافتاده که زیربنا/طبقات/واحدها را حذف می‌کرد
پاسخ به این‌که دستیارهای AI «متراژ پروژه را پیدا نمی‌کنند» در حالی که در پنل ثبت شده است:
- _project_content_html فقط ۴ فیلد (موقعیت/سال/زیربنا/کارفرما) را منتشر می‌کرد و
  زیربنا را روی نسخهٔ انگلیسی به‌خاطر نبود *_en حذف می‌کرد. حالا همهٔ فیلدهای فنی
  (زمین، زیربنا، طبقات، پیلوت، واحدهای مسکونی/تجاری/اداری، کاربری، نوع، کارفرما، وضعیت)
  منتشر می‌شوند؛ اعداد زبان‌مستقل‌اند و در نبود ترجمه هم مقدار فارسی می‌آید.
- _project_schema: همان مشخصات به‌صورت additionalProperty (PropertyValue) اضافه شد
  تا به‌عنوان دادهٔ ساخت‌یافته قابل استناد باشد.

نمونهٔ زنده (آرامش الیسیان): زمین ۱۵۵۰، زیربنا ۸۷۰۰، طبقات ۷، ۳۱ واحد مسکونی، ۶ تجاری.
۶۵/۶۵ پروژه زیربنا و طبقات دارند — پیش از این هیچ‌کدام منتشر نمی‌شد.
2026-10-09 23:36:55 +00:00
aramesh-site deploy 1d0c1ae53d feat(seo): ایندکس‌پذیری کامل، محتوای سمت سرور برای خزنده‌های AI و رفع باگ ایندکس
سئوی سمت سرور (backend/app/seo_pages.py)
- متا/canonical/hreflang/JSON-LD برای همهٔ صفحات عمومی (شش صفحهٔ استاتیک فارسی که قبلاً پوستهٔ خالی بودند)
- canonical سمت سرور (قبلاً فقط با JS ست می‌شد)، ۴۰۴ واقعی برای مسیرهای ناموجود
- اسکیما: Organization با لوگوی ImageObject، FAQPage، LocalBusiness، BreadcrumbList،
  CreativeWork پروژه با همهٔ تصاویر به‌صورت ImageObject (نام/توضیح + موقعیت پروژه)
- hreflang فقط وقتی ترجمهٔ انگلیسی واقعاً وجود دارد؛ sitemap با URLهای درصد‌گذاری‌شده
- llms.txt و robots.txt تازه‌ساز از دیتابیس؛ سیاست صریح خزنده‌های AI + Allow: /api/site
- _site_content_html: محتوای واقعی سایت به‌صورت HTML خوانا در <noscript> —
  خزنده‌های بدون جاوااسکریپت (GPTBot/OAI-SearchBot/ClaudeBot/PerplexityBot) از ۲۴۰ نویسه
  به ۸٬۵۰۰+ نویسه محتوای معنایی می‌رسند
- Cache-Control: no-store روی HTML و llms.txt (جلوگیری از کش کهنهٔ CDN)، max-age روی sitemap

فرانت‌اند
- api.tsx: خواندن دادهٔ تزریق‌شدهٔ سرور (window.__SITE__) به‌عنوان حالت اولیه — رندر بدون XHR
- App.tsx: اسکلت بارگذاری به‌جای DOM خالی (رفع Soft 404 گوگل)
- index.html: فاوآیکون واقعی برند (قبلاً به vite.svg ناموجود اشاره می‌کرد) + preload فونت

زیرساخت
- Dockerfile: آینهٔ PyPI (Tsinghua/Aliyun) — PyPI برای IP ایران بلاک است
- Caddyfile: هر مسیر پسوند‌دار بدون فایل واقعی ۴۰۴ می‌گیرد (قبلاً HTML اسپا برمی‌گرداند)
- docker-compose.prod.yml: مسیرهای seo برای صفحات استاتیک + llms.txt + کلیدهای IndexNow

داده
- seed_data*.py: حذف دفاتر و معرفی‌های دمو (که در هر استقرار برمی‌گشتند)؛
  تنها دفتر واقعی: اصفهان، ملاصدرا شمالی

دارایی‌ها
- فاوآیکون/آیکون‌های برند از لوگوی رسمی + کلیدهای IndexNow
2026-10-09 23:29:26 +00:00
aramesh-site deploy 353d4639b4 feat(brand): لوگوی اختصاصی نسخهٔ انگلیسی — ستون logo_en، میگریشن ۰۰۰۳، لوکالایز و فیلد پنل (کد از قبل در تولید اجرا می‌شد)
CI / tests (push) Canceled after 0s
CI / images (push) Canceled after 0s
2026-10-09 19:36:09 +00:00
aramesh-site deploy dfbb61f75f fix(projects): فلش پیمایش به بیرون کادر روی لبهٔ بیرونی منتقل شد (آینهٔ هم، متن داخل کادر راست‌چین) 2026-10-09 19:31:56 +00:00
aramesh-site deploy c1d7f61a45 fix(projects): فلش پیمایش روی لبهٔ بیرونی هر کارت و آینهٔ هم — قبلی رو به راست، بعدی رو به چپ 2026-10-09 19:25:52 +00:00
aramesh-site deploy c200159afd fix(projects): «قبلی» = قدیمی‌تر و «بعدی» = تازه‌تر (فهرست نزولی سال)؛ فلش‌ها فقط آینهٔ سادهٔ هم 2026-10-09 19:20:22 +00:00
aramesh-site deploy ebc97e03a4 fix(projects): فلش‌های پیمایش آینهٔ هم شدند — قبلی رو به شروع، بعدی رو به ادامه 2026-10-09 19:14:54 +00:00
aramesh-site deploy b088f68fd7 feat(projects): پیمایش پروژهٔ قبلی/بعدی در صفحهٔ هر پروژه (حلقه‌ای، دوزبانه) — کاوش بدون بازگشت به فهرست 2026-10-09 19:08:41 +00:00
aramesh-site deploy 1ceb7cb156 feat(hero): نشان «پروژه فعال الیسیان» به صفحهٔ همان پروژه وصل شد (تطبیق دو‌زبانهٔ نام با نگاشت Elysian→الیسیان) 2026-10-09 18:57:46 +00:00
aramesh-site deploy e571b19f4a fix(footer): آیکون بله = تیک (CheckIcon) — به‌جای نشان اپ 2026-10-09 18:51:32 +00:00
aramesh-site deploy bcd2b756ed feat(footer): آیکون رسمی «بله» — نشان اپ از bale.ai، چون هیچ مجموعه‌آیکونی آن را ندارد 2026-10-09 18:46:07 +00:00
aramesh-site deploy e8010b1e79 fix(contact): حذف «نیاز به گفتگوی فوری دارید؟» از فرم موبایل — متن هاردکد فارسی بود و در /en هم فارسی دیده می‌شد 2026-10-09 18:32:54 +00:00
aramesh-site deploy 7c2eeda232 fix(mobile): توضیح کارت‌های تخصص تیم ما روی موبایل کامل نمایش داده می‌شود — حذف line-clamp که با «...» می‌برید 2026-10-09 18:23:14 +00:00
aramesh-site deploy 7e4605d2b7 chore: خاموش‌کردن موقت چت‌بات — با یک کامنت برای روشن‌کردن دوباره 2026-10-09 18:19:17 +00:00
aramesh-site deploy 7d78a1fc58 fix(map): هم‌گام‌سازی بوم با ResizeObserver و کف ارتفاع ظرف — در حالت موبایل/DevTools پس از تغییر viewport نقشه ناقص و خالی می‌ماند 2026-10-09 18:10:27 +00:00
aramesh-site deploy 324298c9d7 fix(map): مقاوم‌سازی راه‌اندازی نقشه برای موبایل — پیش‌سنجی WebGL، antialias فقط در صورت پشتیبانی، و خطای روشن به‌جای قاب خالی 2026-10-09 18:01:47 +00:00
aramesh-site deploy 2d1c670715 fix(map): CSS پایهٔ مپ‌لیبر به شیت اصلی منتقل شد — روی موبایل چانک تنبل دیر می‌رسید و ظرف نقشه با ارتفاع صفر نامرئی می‌ماند 2026-10-09 17:58:22 +00:00
aramesh-site deploy 450d5dd239 fix(map): زوم‌اوت آزاد در نقشهٔ صفحهٔ پروژه — حذف maxBounds که جابه‌جایی را به محدودهٔ پروژه می‌بست 2026-10-09 17:46:11 +00:00
aramesh-site deploy f0f483a9d1 feat(map): پیوند آدرس پروژه از نشان به گوگل‌مپ — قالب رسمی Maps URLs با مختصات (?api=1&query=lat,lng)، بی‌نیاز از کلید API 2026-10-09 17:41:07 +00:00
aramesh-site deploy 00abef23df fix(map): پاپ‌آپ نقشهٔ اصلی هم فقط گالری را نشان می‌دهد — بدون تکرار تصویر شاخص و بدون قاب خالی 2026-10-09 17:33:49 +00:00
aramesh-site deploy 29dc8459f7 fix(map): پاپ‌آپ نقشهٔ صفحهٔ پروژه تصویر شاخص را تکرار نمی‌کند — فقط گالری؛ در نبود گالری قاب تصویر پنهان می‌شود 2026-10-09 17:27:27 +00:00
aramesh-site deploy afcace4fa3 feat(projects): نقشهٔ مختصات پروژه زیر هیرو در صفحهٔ هر پروژه — سنجاق دقیق با پاپ‌آپ تصاویر و پیوند نشان 2026-10-09 17:21:38 +00:00
aramesh-site deploy 2ca30178ed feat(map): افزودن لکسون، ارغوانیه و ابوریحان؛ هم‌نام‌سازی سنجاق‌های تغییرنام‌یافته (زنیث/الیسیان/آوالون) و حذف میرزاطاهر ۶ 2026-10-09 17:11:49 +00:00
aramesh-site deploy 40ec3d406b fix(admin): صفحهٔ ویرایش پروژه با body/body_en غیرآرایه سفید می‌شد — asLines همهٔ مقادیر را امن می‌کند (رفع پروژه‌های تازه‌ساخته) 2026-10-09 17:00:20 +00:00
aramesh-site deploy b801867611 feat(projects): صفحه‌بندی شماره‌دار به‌جای «مشاهده بیشتر» — ۱۲ پروژه در هر صفحه، با برگشت نگاه به ابتدای فهرست 2026-10-09 16:52:50 +00:00
aramesh-site deploy 3a72752598 fix(home): نام‌های تازهٔ پروژه‌های شاخص پس از تغییر نام (زنیث، الیسیان، آوالون) 2026-10-09 16:42:01 +00:00
aramesh-site deploy b2af06397a fix(team): کارت‌های تیم در دسکتاپ هم‌اندازه — مدیرعامل تنها بالا، دو نفر ردیف بعد (مثل موبایل) 2026-10-09 16:12:09 +00:00
aramesh-site deploy 838cc01190 feat(team): مدیرعامل تنها در ردیف اول و دو نفر دیگر در ردیف بعد — چیدمان سه‌نفره متعادل در همهٔ اندازه‌ها 2026-10-09 16:05:24 +00:00
aramesh-site deploy adedb9ea41 merge(mobile): ادغام شاخهٔ new-one2 — طراحی ریسپانسیو صفحهٔ اصلی (کلاس‌های breakpoint در همهٔ بخش‌ها) با حفظ تغییرات طراحی ما: تیم وسط‌چین بدون دایره، پروژه‌های شاخص بدون تب، تناوب پس‌زمینه (tone)، پس‌زمینهٔ پیوستهٔ تماس و منطق دوزبانهٔ مقالات 2026-10-09 15:58:57 +00:00
aramesh-site deploy e5fc0e1705 feat(hero): نشان پروژهٔ فعال وسط‌چین، بزرگ‌تر و متناسب با کادر (کامپوننت اختصاصی با فاصلهٔ یکنواخت آیکون/متن) 2026-10-09 15:46:01 +00:00
aramesh-site deploy e2f6853c2c feat(design): بازگرداندن ریتم تناوب پس‌زمینهٔ بخش‌ها — هر صفحه با بخش سیاه شروع و سیاه/خاکستری یکی‌درمیان ادامه می‌یابد (پراپ tone برای بخش‌های مشترک چندصفحه‌ای) 2026-10-09 15:26:56 +00:00
aramesh-site deploy 9bf2a30f8d feat(investment): بخش مدل‌های همکاری وسط‌چین با طراحی مراحل فرآیند — بدون شماره و بدون فهرست گلوله‌ای 2026-10-09 15:17:18 +00:00
aramesh-site deploy ad151bbae7 fix(blog): حذف دایرهٔ حرف اول از سربرگ نویسندهٔ مقاله 2026-10-09 15:08:29 +00:00
aramesh-site deploy 8865149aab feat(services): جابه‌جایی ترتیب — «فرآیند کار ما» پیش از «تبحر تیم ما» در صفحهٔ خدمات 2026-10-09 15:04:26 +00:00
aramesh-site deploy 879481df9f fix(home): حذف دایره‌های حرف اول از کارت‌های تیم 2026-10-09 14:58:37 +00:00
aramesh-site deploy 2c58978c78 feat(home): کارت‌های تیم وسط‌چین — سه کارت هم‌عرض در مرکز ردیف (بدون تصویر پرتره) 2026-10-09 14:57:44 +00:00