Refactor code structure for improved readability and maintainability

This commit is contained in:
masoodafar-web
2026-02-16 00:59:16 +03:30
parent 956a9ff6d6
commit ad31c8be97
10 changed files with 3388 additions and 3 deletions
+118
View File
@@ -0,0 +1,118 @@
# فاز ۱ — موجودیت‌های بکند 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 برای مدیریت پست‌ها، دسته‌بندی‌ها، تصاویر و صفحات سایت.