119 lines
5.8 KiB
Markdown
119 lines
5.8 KiB
Markdown
# فاز ۱ — موجودیتهای بکند 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 برای مدیریت پستها، دستهبندیها، تصاویر و صفحات سایت.
|