Files
hedena_gold/docs/FRESH-SERVER-DEPLOY-AUDIT.md
T
s.esmaeili ea86636027 Initial commit: Hedena Gold monorepo.
First commit of the Hedena Gold product (separate from gold-bank): branding, package names, and deploy defaults aligned to the new brand; legacy Henza trees stay local-only via .gitignore.
2026-10-15 17:19:10 +03:30

5.0 KiB

بررسی راه‌اندازی سرور با دیتابیس خالی

وضعیت: بررسی فقط خواندنی انجام شد. هیچ کدی تغییر نکرده و هیچ داده‌ای نوشته یا منتقل نشده است. تاریخ: ۲۰۲۶-۱۰-۱۲

هدف

روی سرور تولید فقط یک کاربر super admin باشد و هیچ داده‌ی دیگری (مشتری، محصول، سفارش، بدهی، نقش اضافه، حساب تست) وارد نشود. دیتابیس henza قدیمی در این مرحله منتقل نمی‌شود.

یافته‌ها

۱. حساب ثابت در کد (مهم‌ترین مورد)

  • در auth.service.ts:21 شماره 09128081392 ثابت شده و در خط ۴۹–۵۳ اگر شماره همین باشد و رمز هم برابر خود شماره باشد، ensureStaticAdmin اجرا می‌شود.
  • خط ۲۳۰–۲۴۵ یک SUPER_ADMIN با نام «مدیر موقت» می‌سازد یا فعال می‌کند.
  • این شرط محیطی ندارد، پس روی سرور تولید هم فعال است.
  • همین شماره در seed.ts به‌عنوان «کاربر تست توسعه» هم آمده است.

۲. داده‌ی demo در seed

  • seed.ts بخش demo را فقط وقتی اجرا می‌کند که NODE_ENV برابر production نباشد یا SEED_DEMO_DATA=true باشد.
  • بخش demo شامل شهرها، شعبه‌ها، کارگاه، ادمین‌های تست، مشتری، محصول، سفارش و بدهی است.
  • bootstrap.ts در اولین boot، اگر RUN_SEED=false نباشد، seed را اجرا می‌کند.

۳. نقش‌ها و permissionها

  • seed.ts همیشه کاربرتایپ‌های ۸۵ تا ۸۹ و permissionهایشان را می‌سازد.
  • گاردها فقط بر اساس rid کار می‌کنند و برای SUPER_ADMIN بای‌پس ندارند (guards.ts:17). پس نقش ۸۵ با تمام دسترسی‌ها لازم است و نقش‌های ۸۶ تا ۸۹ لازم نیستند.

۴. migrationهای تغییردهنده‌ی داده

روی دیتابیس خالی بدون اثر هستند (بر اساس خواندن SQL، هنوز روی دیتابیس اجرا نشده‌اند):

migration کار روی دیتابیس خالی
20260922120000_customer_name_parts ستون و trigger نام فقط ساختار
20260922180000_sales_expert_profile_and_admin_name_parts INSERT از AdminUser no-op
20261005120000_accounting_integration permission فقط اگر نقش ۸۵ باشد no-op
20261008090000_customer_identity_cleanup UPDATE روی Customer و AdminUser no-op
20261008120000_order_sales_agent UPDATE روی Order no-op
20261008150000_wage_formula_permission permission فقط اگر نقش ۸۵ باشد no-op
20261008160000_dashboard_permission_merge INSERT و DELETE روی permission no-op
20261008170000_city_tree ساخت استان از ردیف‌های موجود no-op

۵. شماره‌های ثابت در سرویس حسابداری

09121234567 و 09891212345 فقط مثال در docstring و تابع نرمال‌سازی هستند (accounting-provider.ts:272، tahesab.provider.ts:224). داده نیستند.

کارهای پیشنهادی (هنوز انجام نشده)

  1. seed فقط نقش ۸۵ با ALL_RIDS بسازد؛ نقش‌های ۸۶ تا ۸۹ حذف شوند.
  2. حساب ثابت 09128081392 و ensureStaticAdmin از auth.service.ts حذف شود.
  3. روی سرور: NODE_ENV=production و RUN_SEED=false، و SEED_DEMO_DATA ست نشود.
  4. یک اسکریپت یک‌بار اجرا برای ساخت super admin: شماره و نام و رمز را کاربر وارد می‌کند؛ داخل کد یا seed ذخیره نمی‌شود.
  5. روی یک دیتابیس خالی تست شود: migrationها از صفر اجرا شوند و فقط یک کاربر و نقش ۸۵ باقی بماند.

تصمیم‌های باز

  • شماره و نام super admin واقعی.
  • نقش‌های ۸۶ تا ۸۹ حذف شوند یا بمانند؟
  • حذف حساب ثابت از کد تأیید شود.

بررسی‌نشده

  • سطر به سطر بررسی نشده که migrationها روی دیتابیس واقعی خالی هیچ خطایی ندهند. این را باید با یک اجرای تست روی دیتابیس خالی تأیید کرد.
  • ساختار docs/SERVER-SETUP-CHECKLIST.md برای تنظیم سرور هنوز مرور نشده است.