version 2
This commit is contained in:
142
src/CHANGES_SUMMARY_ALERT_SYSTEM.md
Normal file
142
src/CHANGES_SUMMARY_ALERT_SYSTEM.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# خلاصه تغییرات سیستم هشدار شرطی
|
||||
|
||||
## 📋 خلاصه کلی
|
||||
|
||||
سیستم هشدار قدیمی که بر اساس حداقل و حداکثر ثابت برای هر سنسور کار میکرد، به یک سیستم **شرطی پیشرفته** تبدیل شد که امکان تعریف شرایط پیچیده و انعطافپذیر را فراهم میکند.
|
||||
|
||||
## 🎯 ویژگیهای جدید
|
||||
|
||||
### 1. سیستم شرطگذاری پیشرفته
|
||||
- تعریف نامحدود شرط برای هر دستگاه
|
||||
- ترکیب چندین قانون با منطق AND
|
||||
- انتخاب نوع اعلان (تماس یا پیامک) برای هر شرط
|
||||
- تنظیم زمان اعمال شرط (روز، شب، همیشه)
|
||||
|
||||
### 2. مدیریت زمان هوشمند
|
||||
- محاسبه خودکار طلوع و غروب خورشید بر اساس موقعیت جغرافیایی
|
||||
- فیلتر کردن هشدارها بر اساس روز/شب بودن
|
||||
- اضافه شدن فیلدهای استان، شهر، Latitude، Longitude به تنظیمات دستگاه
|
||||
|
||||
### 3. کنترل Cooldown جداگانه
|
||||
- تنظیم فاصله زمانی مجزا برای تماس (پیشفرض 60 دقیقه)
|
||||
- تنظیم فاصله زمانی مجزا برای پیامک (پیشفرض 15 دقیقه)
|
||||
- قابل تنظیم برای هر شرط به صورت جداگانه
|
||||
|
||||
### 4. انواع مقایسه
|
||||
- بیشتر از (GreaterThan)
|
||||
- کمتر از (LessThan)
|
||||
- بین دو عدد (Between)
|
||||
- خارج از محدوده (OutOfRange)
|
||||
|
||||
## 🗂️ فایلهای ایجاد شده
|
||||
|
||||
### Domain Layer
|
||||
- `GreenHome.Domain/AlertCondition.cs` - مدل شرط هشدار
|
||||
- `GreenHome.Domain/AlertCondition.cs` (enums) - SensorType, ComparisonType, AlertNotificationType, AlertTimeType
|
||||
|
||||
### Application Layer
|
||||
- `GreenHome.Application/IAlertConditionService.cs` - Interface سرویس مدیریت شرایط
|
||||
- `GreenHome.Application/ISunCalculatorService.cs` - Interface محاسبه طلوع/غروب
|
||||
- تغییرات در `GreenHome.Application/Dtos.cs` - DTOs جدید
|
||||
|
||||
### Infrastructure Layer
|
||||
- `GreenHome.Infrastructure/AlertConditionService.cs` - سرویس مدیریت شرایط
|
||||
- `GreenHome.Infrastructure/SunCalculatorService.cs` - سرویس محاسبه خورشید
|
||||
- تغییرات در `GreenHome.Infrastructure/AlertService.cs` - بازنویسی کامل
|
||||
- Migration جدید: `UpdateAlertSystemWithConditions`
|
||||
|
||||
### API Layer
|
||||
- `GreenHome.Api/Controllers/AlertConditionsController.cs` - Controller جدید
|
||||
|
||||
## 🔄 فایلهای تغییر یافته
|
||||
|
||||
1. **GreenHome.Domain/DeviceSettings.cs**
|
||||
- حذف فیلدهای Min/Max سنسورها
|
||||
- اضافه فیلدهای Province, City, Latitude, Longitude
|
||||
|
||||
2. **GreenHome.Domain/AlertNotification.cs**
|
||||
- تغییر از AlertType به AlertConditionId
|
||||
- اضافه NotificationType
|
||||
|
||||
3. **GreenHome.Infrastructure/GreenHomeDbContext.cs**
|
||||
- پیکربندی جداول جدید
|
||||
- تغییر پیکربندی DeviceSettings و AlertNotifications
|
||||
|
||||
4. **GreenHome.Application/MappingProfile.cs**
|
||||
- اضافه Mapping های جدید برای AlertCondition و AlertRule
|
||||
|
||||
5. **GreenHome.Api/Program.cs**
|
||||
- ثبت IAlertConditionService
|
||||
- ثبت ISunCalculatorService
|
||||
|
||||
6. **GreenHome.Infrastructure/GreenHome.Infrastructure.csproj**
|
||||
- اضافه reference به GreenHome.VoiceCall.Avanak
|
||||
|
||||
## 📊 تغییرات Database
|
||||
|
||||
### جداول جدید:
|
||||
- **AlertConditions**: شرایط هشدار
|
||||
- **AlertRules**: قوانین مربوط به هر شرط
|
||||
|
||||
### جداول تغییر یافته:
|
||||
- **DeviceSettings**:
|
||||
- حذف: DangerMaxTemperature, DangerMinTemperature, MaxTemperature, MinTemperature, MaxGasPPM, MinGasPPM, MaxLux, MinLux, MaxHumidityPercent, MinHumidityPercent
|
||||
- اضافه: Province, City, Latitude, Longitude
|
||||
|
||||
- **AlertNotifications**:
|
||||
- حذف: AlertType
|
||||
- اضافه: AlertConditionId, NotificationType
|
||||
|
||||
## 🔌 API Endpoints جدید
|
||||
|
||||
```
|
||||
GET /api/AlertConditions/device/{deviceId} - لیست شرایط یک دستگاه
|
||||
GET /api/AlertConditions/{id} - دریافت یک شرط
|
||||
POST /api/AlertConditions - ایجاد شرط جدید
|
||||
PUT /api/AlertConditions - بهروزرسانی شرط
|
||||
DELETE /api/AlertConditions/{id} - حذف شرط
|
||||
PATCH /api/AlertConditions/{id}/toggle - فعال/غیرفعال کردن شرط
|
||||
```
|
||||
|
||||
## ⚙️ نحوه استفاده
|
||||
|
||||
### مثال ایجاد شرط:
|
||||
```json
|
||||
POST /api/AlertConditions
|
||||
{
|
||||
"deviceId": 1,
|
||||
"notificationType": 1, // SMS
|
||||
"timeType": 0, // Day only
|
||||
"smsCooldownMinutes": 15,
|
||||
"rules": [
|
||||
{
|
||||
"sensorType": 0, // Temperature
|
||||
"comparisonType": 0, // GreaterThan
|
||||
"value1": 35.0,
|
||||
"order": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
این شرط میگوید: **اگر در روز، دما بیشتر از 35 درجه شد، هر 15 دقیقه یکبار پیامک بفرست.**
|
||||
|
||||
## ⚠️ نکات مهم
|
||||
|
||||
1. **Migration**: حتماً قبل از اجرای migration از database بکآپ بگیرید
|
||||
2. **Data Loss**: فیلدهای قدیمی Min/Max حذف میشوند و قابل بازگشت نیستند
|
||||
3. **Location**: برای استفاده از قابلیت Day/Night، باید Latitude و Longitude را در تنظیمات دستگاه وارد کنید
|
||||
4. **Backward Compatibility**: سیستم قدیمی دیگر کار نمیکند و باید شرایط جدید تعریف شوند
|
||||
|
||||
## 📝 TODO برای آینده
|
||||
|
||||
- [ ] پیادهسازی کامل تماس صوتی (در حال حاضر placeholder است)
|
||||
- [ ] اضافه کردن تستهای واحد
|
||||
- [ ] اضافه کردن Validation برای DTOs
|
||||
- [ ] پیادهسازی Logging بهتر برای Debug
|
||||
- [ ] اضافه کردن Dashboard برای مشاهده تاریخچه هشدارها
|
||||
|
||||
## 📚 مستندات
|
||||
|
||||
برای اطلاعات بیشتر، فایل `ALERT_SYSTEM_UPDATE.md` را مطالعه کنید.
|
||||
|
||||
Reference in New Issue
Block a user