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

119 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# فاز ۱ — موجودیت‌های بکند 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 برای مدیریت پست‌ها، دسته‌بندی‌ها، تصاویر و صفحات سایت.