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