dde4c68b2f
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m33s
- Add GetLowStockItemsResponseDto and LowStockItemDto for low stock item queries. - Create CreateStockMovementCommand and its handler for managing stock movements. - Implement CreateStockMovementCommandValidator for validating stock movement commands. - Add GetStockMovementsQuery and its handler to retrieve stock movement records. - Create GetStockMovementsResponseDto and StockMovementListDto for stock movement responses. - Implement GetStockMovementsByInventoryItemQuery and its handler for fetching movements by inventory item. - Add CreateWarehouseCommand and its handler for creating new warehouses. - Implement CreateWarehouseCommandValidator for warehouse creation validation. - Add DeleteWarehouseCommand and its handler for removing warehouses. - Implement SetDefaultWarehouseCommand and its handler for setting a default warehouse. - Create UpdateWarehouseCommand and its handler for updating warehouse details. - Implement GetAllWarehousesQuery and its handler to retrieve all warehouses. - Add GetWarehouseQuery and its handler for fetching a specific warehouse by ID. - Implement SearchWarehousesQuery and its handler for searching warehouses based on criteria.
130 lines
4.5 KiB
Markdown
130 lines
4.5 KiB
Markdown
# وضعیت Refactoring سیستم انبارداری (Inventory)
|
|
|
|
**تاریخ:** ۳ ژانویه ۲۰۲۶
|
|
**وضعیت:** ✅ تکمیل شده - Build موفق
|
|
|
|
---
|
|
|
|
## 📊 وضعیت Build
|
|
|
|
| پروژه | وضعیت |
|
|
|-------|--------|
|
|
| CMSMicroservice.Domain | ✅ OK |
|
|
| CMSMicroservice.Application | ✅ OK |
|
|
| CMSMicroservice.Infrastructure | ✅ OK |
|
|
| CMSMicroservice.WebApi | ✅ OK |
|
|
|
|
---
|
|
|
|
## ✅ کارهای انجام شده
|
|
|
|
### 1. حذف Repository Pattern
|
|
فایلهای حذف شده:
|
|
- `Application/Common/Interfaces/Repositories/IInventoryItemRepository.cs`
|
|
- `Application/Common/Interfaces/Repositories/IStockMovementRepository.cs`
|
|
- `Application/Common/Interfaces/Repositories/IWarehouseRepository.cs`
|
|
- `Infrastructure/Persistence/Repositories/InventoryItemRepository.cs`
|
|
- `Infrastructure/Persistence/Repositories/StockMovementRepository.cs`
|
|
- `Infrastructure/Persistence/Repositories/WarehouseRepository.cs`
|
|
|
|
### 2. حذف Features قدیمی
|
|
فولدر حذف شده:
|
|
- `Application/Features/` (کل فولدر)
|
|
|
|
### 3. ایجاد ساختار CQ جدید
|
|
|
|
#### WarehouseCQ/
|
|
```
|
|
WarehouseCQ/
|
|
├── Commands/
|
|
│ ├── CreateWarehouse/
|
|
│ ├── UpdateWarehouse/
|
|
│ ├── DeleteWarehouse/
|
|
│ └── SetDefaultWarehouse/
|
|
└── Queries/
|
|
├── GetWarehouse/
|
|
├── GetAllWarehouses/
|
|
└── SearchWarehouses/
|
|
```
|
|
|
|
#### InventoryItemCQ/
|
|
```
|
|
InventoryItemCQ/
|
|
├── Commands/
|
|
│ ├── CreateInventoryItem/
|
|
│ ├── UpdateInventoryItem/
|
|
│ ├── DeleteInventoryItem/
|
|
│ ├── UpdateInventoryQuantity/
|
|
│ ├── ReserveInventory/
|
|
│ ├── ReleaseReservedInventory/
|
|
│ ├── ReduceInventory/
|
|
│ └── IncreaseInventory/
|
|
└── Queries/
|
|
├── GetInventoryItem/
|
|
├── GetInventoryByProduct/
|
|
├── GetAllInventoryItems/
|
|
└── GetLowStockItems/
|
|
```
|
|
|
|
#### StockMovementCQ/
|
|
```
|
|
StockMovementCQ/
|
|
├── Commands/
|
|
│ └── CreateStockMovement/
|
|
└── Queries/
|
|
├── GetStockMovements/
|
|
└── GetStockMovementsByInventoryItem/
|
|
```
|
|
|
|
### 4. Fix شدن InventoryProfile.cs
|
|
- اصلاح enum names: `ProtoProductType.Unspecified` بجای `ProductTypeUnspecified`
|
|
- حذف `new Int64Value` - Proto مستقیم `long?` میگیره
|
|
- اصلاح expression tree برای `?.` operator
|
|
|
|
### 5. سادهسازی InventoryService.cs
|
|
- متدهای اصلی (Warehouse, Query ها) کامل پیادهسازی شدن
|
|
- متدهای پیچیده که نیاز به lookup دارن فعلاً TODO هستن
|
|
|
|
---
|
|
|
|
## ⚠️ متدهای TODO در InventoryService
|
|
|
|
این متدها نیاز به پیادهسازی دارن (وقتی لازم شد):
|
|
|
|
| متد | دلیل TODO |
|
|
|-----|-----------|
|
|
| `AddStock` | نیاز به lookup با ProductId/ProductType |
|
|
| `AdjustStock` | نیاز به lookup با ProductId/ProductType |
|
|
| `ReserveStock` | نیاز به lookup با ProductId/ProductType |
|
|
| `ReleaseReservation` | نیاز به lookup با ProductId/ProductType |
|
|
| `ConfirmSale` | نیاز به lookup با ProductId/ProductType |
|
|
| `ProcessReturn` | نیاز به lookup با ProductId/ProductType |
|
|
| `RecordLoss` | نیاز به lookup با ProductId/ProductType |
|
|
| `BulkAddStock` | نیاز به loop و lookup |
|
|
| `BulkAdjustStock` | نیاز به loop و lookup |
|
|
| `GetInventorySummary` | نیاز به Query جدید |
|
|
| `GetStockValueReport` | نیاز به Query جدید |
|
|
|
|
---
|
|
|
|
## 🎯 درسهای آموخته شده
|
|
|
|
1. **همیشه اول Proto رو بررسی کن** - Proto مرجع اصلی API هست
|
|
2. **ساختار موجود رو تحلیل کن** - قبل از ساختن فایل جدید، نمونههای موجود رو ببین
|
|
3. **Mapping از Proto به Command** - نه برعکس!
|
|
4. **IApplicationDbContext** - الگوی استاندارد این پروژه برای دسترسی به DB
|
|
5. **بدون Repository** - این پروژه از Repository pattern استفاده نمیکنه
|
|
6. **Proto enum names** - نامها در C# متفاوت هستن (مثلاً `Unspecified` بجای `PRODUCT_TYPE_UNSPECIFIED`)
|
|
7. **Int64Value در Proto** - در C# به `long?` تبدیل میشه، نیازی به `new Int64Value` نیست
|
|
|
|
---
|
|
|
|
## 📝 نتیجهگیری
|
|
|
|
✅ **Refactoring با موفقیت تکمیل شد!**
|
|
|
|
- Application layer با ساختار `*CQ/Commands/[Action]/` سازگار شد
|
|
- Repository pattern کاملاً حذف شد
|
|
- WebApi layer با Proto سازگار شد
|
|
- Build همه پروژهها موفق هست
|