Files
docs/ui-modernization/PHASE-1-COMPLETE.md
T

5.8 KiB
Raw Blame History

فاز ۱ — موجودیت‌های بکند CMS تکمیل شد

تاریخ تکمیل: ۱۴۰۴/۰۴/۲۱ (2026-02-11)
وضعیت: تکمیل — بیلد موفق + Migration ساخته شد


خلاصه کارهای انجام شده

1.1 موجودیت‌های دامین (8 فایل)

فایل مسیر توضیح
BlogPostStatus.cs Domain/Enums/ enum: Draft=0, Published=1, Scheduled=2, Archived=3
BlogPost.cs Domain/Entities/Blog/ پست بلاگ — عنوان، اسلاگ، خلاصه، محتوای HTML، تصویر، وضعیت، شمارنده بازدید
BlogCategory.cs Domain/Entities/Blog/ دسته‌بندی بلاگ — عنوان، اسلاگ، آیکون، ترتیب
BlogPostCategory.cs Domain/Entities/Blog/ جدول واسط پست-دسته‌بندی (Many-to-Many)
BlogPostTag.cs Domain/Entities/Blog/ جدول واسط پست-تگ (از Tag موجود استفاده شد)
BlogPostImage.cs Domain/Entities/Blog/ گالری تصاویر پست — مسیر، عنوان جایگزین، ترتیب
SitePage.cs Domain/Entities/Content/ صفحات سایت (درباره ما، تماس با ما) — با کلید یکتا
SitePageSection.cs Domain/Entities/Content/ بخش‌های هر صفحه — محتوای HTML، آیکون، تصویر، داده اضافی JSON

1.2 تنظیمات Entity Framework (7 فایل)

فایل مسیر ایندکس‌ها
BlogPostConfiguration.cs Configurations/Blog/ Slug (unique), Status, PublishedAt, IsFeatured, AuthorUserId, Status+PublishedAt
BlogCategoryConfiguration.cs Configurations/Blog/ Slug (unique), IsActive
BlogPostCategoryConfiguration.cs Configurations/Blog/ FK: BlogPostId + BlogCategoryId
BlogPostTagConfiguration.cs Configurations/Blog/ FK: BlogPostId + TagId
BlogPostImageConfiguration.cs Configurations/Blog/ FK: BlogPostId
SitePageConfiguration.cs Configurations/Content/ PageKey (unique)
SitePageSectionConfiguration.cs Configurations/Content/ SitePageId + SectionKey (compound)

1.3 DbContext (2 فایل ویرایش شده)

  • IApplicationDbContext.cs — افزودن 7 DbSet
  • ApplicationDbContext.cs — افزودن 7 DbSet property

1.4 تعاریف Proto (4 فایل + csproj)

فایل RPCها csharp_namespace
blogpost.proto 11 RPC (CRUD + Publish/Archive/ViewCount + BySlug + Published/Featured) BlogPost
blogcategory.proto 6 RPC (CRUD + GetAll + GetActive) BlogCategory
blogpostimage.proto 4 RPC (Add/Delete/Get/Reorder) BlogPostImage
sitepage.proto 8 RPC (Get/GetByKey/Update/GetAll + Section CRUD + Reorder) SitePage

1.5 لایه CQRS Application (≈50 فایل)

BlogPost Commands (6 گروه، 14 فایل)

  • CreateBlogPost — Command + Handler + Validator (با اعتبارسنجی اسلاگ regex)
  • UpdateBlogPost — Command + Handler + Validator (الگوی delete-recreate برای دسته‌بندی/تگ)
  • DeleteBlogPost — Command + Handler (soft-delete)
  • PublishBlogPost — Command + Result + Handler (تنظیم Status و PublishedAt)
  • ArchiveBlogPost — Command + Result + Handler
  • IncrementViewCount — Command + Handler

BlogPost Queries (5 گروه، 10 فایل)

  • GetBlogPost — Query + DTO + Handler (با Include chain)
  • GetBlogPostBySlug — Query + Handler (بازاستفاده از BlogPostDto)
  • GetAllBlogPosts — Query + ResponseDto + Handler (فیلتر + مرتب‌سازی + صفحه‌بندی)
  • GetPublishedBlogPosts — Query + Handler (مشتری‌محور، فقط Published)
  • GetFeaturedBlogPosts — Query + Handler (برای لندینگ پیج)

BlogCategory CQRS (11 فایل)

  • Commands: Create + Update + Delete (با Validator)
  • Queries: GetBlogCategory + GetAllBlogCategories + GetActiveBlogCategories

BlogPostImage CQRS (8 فایل)

  • Commands: Add + Delete + Reorder (با ImageSortItem)
  • Queries: GetBlogPostImages

SitePage CQRS (14 فایل)

  • Commands: UpdateSitePage + CreateSection + UpdateSection + DeleteSection + ReorderSections
  • Queries: GetSitePage + GetSitePageByKey + GetAllSitePages

1.6 سرویس‌های gRPC WebApi (4 فایل)

سرویس الگو توضیح
BlogPostService.cs ترکیبی (دستی + dispatcher) مپینگ دستی برای لیست‌ها و RepeatedField
BlogCategoryService.cs ترکیبی dispatcher برای CRUD ساده، دستی برای لیست‌ها
BlogPostImageService.cs ترکیبی dispatcher + مپینگ دستی Reorder
SitePageService.cs ترکیبی dispatcher + مپینگ دستی Sections

1.7 Mapping Profiles (2 فایل)

  • BlogPostProfile.cs — مپینگ PublishBlogPostResult و ArchiveBlogPostResult
  • BlogCategoryProfile.cs — مپینگ long → CreateBlogCategoryResponse

1.8 EF Migration

  • 20260210232742_AddBlogAndContentEntities.cs — ایجاد 7 جدول جدید
  • Build: موفق (0 Error, warnings مربوط به کد قدیمی)

آمار فاز ۱

متریک تعداد
فایل‌های جدید ~65
فایل‌های ویرایش شده ~4
موجودیت‌های دامین 7 (+1 enum)
تنظیمات EF 7
تعاریف Proto 4
RPCهای gRPC 29
Commands CQRS 16
Queries CQRS 12
سرویس‌های WebApi 4
جداول دیتابیس جدید 7

فاز بعدی

فاز ۲ — پنل مدیریت بلاگ (BackOffice) — صفحات Blazor WASM برای مدیریت پست‌ها، دسته‌بندی‌ها، تصاویر و صفحات سایت.