version 2
This commit is contained in:
246
src/CHANGES_SUMMARY.md
Normal file
246
src/CHANGES_SUMMARY.md
Normal file
@@ -0,0 +1,246 @@
|
||||
# 📝 خلاصه تغییرات - سیستم ذخیره و ردیابی سوالات AI
|
||||
|
||||
## ✅ تغییرات اعمال شده
|
||||
|
||||
### 1. Entity جدید در Domain
|
||||
**فایل:** `GreenHome.Domain/AIQuery.cs`
|
||||
- ذخیره سوال و پاسخ
|
||||
- ذخیره اطلاعات توکن (PromptTokens, CompletionTokens, TotalTokens)
|
||||
- ارتباط با Device (DeviceId)
|
||||
- ارتباط با User (UserId)
|
||||
- ذخیره Model و Temperature
|
||||
- ذخیره زمان پاسخ (ResponseTimeMs)
|
||||
- تاریخ ایجاد (CreatedAt)
|
||||
|
||||
### 2. آپدیت DbContext
|
||||
**فایل:** `GreenHome.Infrastructure/GreenHomeDbContext.cs`
|
||||
- اضافه شدن `DbSet<AIQuery>`
|
||||
- تنظیمات Entity Framework
|
||||
- Foreign Keys به Device و User
|
||||
- Index ها برای کوئری سریع
|
||||
|
||||
### 3. Interface و Service جدید
|
||||
**فایلها:**
|
||||
- `GreenHome.Application/IAIQueryService.cs` - Interface
|
||||
- `GreenHome.Infrastructure/AIQueryService.cs` - پیادهسازی
|
||||
|
||||
**قابلیتها:**
|
||||
- `SaveQueryAsync()` - ذخیره سوال
|
||||
- `GetDeviceQueriesAsync()` - دریافت تاریخچه دستگاه
|
||||
- `GetUserQueriesAsync()` - دریافت تاریخچه کاربر
|
||||
- `GetDeviceTotalTokensAsync()` - مجموع توکنهای دستگاه
|
||||
- `GetUserTotalTokensAsync()` - مجموع توکنهای کاربر
|
||||
- `GetRecentQueriesAsync()` - آخرین سوالات
|
||||
- `GetStatsAsync()` - آمار کلی
|
||||
|
||||
### 4. آپدیت AIController
|
||||
**فایل:** `GreenHome.Api/Controllers/AIController.cs`
|
||||
|
||||
**تغییرات:**
|
||||
- Inject کردن `IAIQueryService`
|
||||
- اضافه شدن `DeviceId` و `UserId` به Request Models
|
||||
- ذخیره خودکار تمام سوالات و پاسخها
|
||||
- اندازهگیری زمان پاسخ
|
||||
- برگرداندن اطلاعات توکن در Response
|
||||
|
||||
**Endpoints جدید:**
|
||||
- `GET /api/ai/history/device/{deviceId}` - تاریخچه سوالات دستگاه
|
||||
- `GET /api/ai/stats` - آمار کلی
|
||||
|
||||
**Endpoints بهروز شده:**
|
||||
- `POST /api/ai/ask` - حالا DeviceId و UserId میگیرد
|
||||
- `POST /api/ai/chat` - حالا DeviceId و UserId میگیرد
|
||||
- `POST /api/ai/suggest` - حالا DeviceId و UserId میگیرد
|
||||
|
||||
### 5. ثبت Service در DI
|
||||
**فایل:** `GreenHome.Api/Program.cs`
|
||||
- اضافه شدن `IAIQueryService` به Dependency Injection
|
||||
|
||||
### 6. Migration دیتابیس
|
||||
**فایل:** `GreenHome.Infrastructure/Migrations/20251216113127_AddAIQueryTable.cs`
|
||||
- ایجاد جدول `AIQueries`
|
||||
- Foreign Keys
|
||||
- Indexes
|
||||
|
||||
### 7. مستندات
|
||||
**فایلها:**
|
||||
- `AI_QUERY_TRACKING.md` - راهنمای کامل استفاده
|
||||
- `CHANGES_SUMMARY.md` - این فایل
|
||||
|
||||
## 📊 ساختار جدول AIQueries
|
||||
|
||||
```
|
||||
AIQueries
|
||||
├── Id (PK)
|
||||
├── DeviceId (FK -> Devices) - اختیاری
|
||||
├── UserId (FK -> Users) - اختیاری
|
||||
├── Question (nvarchar(max))
|
||||
├── Answer (nvarchar(max))
|
||||
├── PromptTokens (int)
|
||||
├── CompletionTokens (int)
|
||||
├── TotalTokens (int)
|
||||
├── Model (nvarchar(100))
|
||||
├── Temperature (float) - اختیاری
|
||||
├── ResponseTimeMs (bigint) - اختیاری
|
||||
└── CreatedAt (datetime2)
|
||||
|
||||
Indexes:
|
||||
- IX_AIQueries_DeviceId
|
||||
- IX_AIQueries_UserId
|
||||
- IX_AIQueries_CreatedAt
|
||||
```
|
||||
|
||||
## 🔄 نحوه اعمال تغییرات
|
||||
|
||||
### گزینه 1: خودکار (پیشنهادی)
|
||||
فقط برنامه را اجرا کنید، Migration به صورت خودکار اعمال میشود:
|
||||
```bash
|
||||
cd GreenHome.Api
|
||||
dotnet run
|
||||
```
|
||||
|
||||
### گزینه 2: دستی
|
||||
```bash
|
||||
cd GreenHome.Infrastructure
|
||||
dotnet ef database update --startup-project ../GreenHome.Api
|
||||
```
|
||||
|
||||
## 📖 مثال استفاده
|
||||
|
||||
### قبل از تغییرات:
|
||||
```json
|
||||
POST /api/ai/ask
|
||||
{
|
||||
"question": "دمای مناسب چند است?"
|
||||
}
|
||||
```
|
||||
|
||||
### بعد از تغییرات:
|
||||
```json
|
||||
POST /api/ai/ask
|
||||
{
|
||||
"question": "دمای مناسب چند است؟",
|
||||
"deviceId": 123,
|
||||
"userId": 456
|
||||
}
|
||||
|
||||
// Response:
|
||||
{
|
||||
"question": "دمای مناسب چند است؟",
|
||||
"answer": "بین 20 تا 24 درجه...",
|
||||
"deviceId": 123,
|
||||
"tokens": {
|
||||
"prompt": 15,
|
||||
"completion": 85,
|
||||
"total": 100
|
||||
},
|
||||
"responseTimeMs": 1234,
|
||||
"timestamp": "2025-12-16T12:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 مزایای جدید
|
||||
|
||||
1. ✅ **ردیابی کامل** - تمام سوالات و پاسخها ذخیره میشوند
|
||||
2. ✅ **مدیریت هزینه** - میزان دقیق مصرف توکن قابل محاسبه است
|
||||
3. ✅ **تحلیل عملکرد** - زمان پاسخدهی اندازهگیری میشود
|
||||
4. ✅ **تاریخچه** - سوالات قبلی هر دستگاه قابل مشاهده است
|
||||
5. ✅ **آمار** - آمار کلی و تفصیلی در دسترس است
|
||||
6. ✅ **گزارشگیری** - امکان تولید گزارشهای مختلف
|
||||
|
||||
## 🔍 دریافت اطلاعات
|
||||
|
||||
### تاریخچه یک دستگاه:
|
||||
```bash
|
||||
GET /api/ai/history/device/123?take=50
|
||||
```
|
||||
|
||||
### آمار کلی:
|
||||
```bash
|
||||
GET /api/ai/stats
|
||||
```
|
||||
|
||||
### در کد C#:
|
||||
```csharp
|
||||
// تاریخچه دستگاه
|
||||
var queries = await aiQueryService.GetDeviceQueriesAsync(123);
|
||||
|
||||
// مجموع توکنها
|
||||
var totalTokens = await aiQueryService.GetDeviceTotalTokensAsync(123);
|
||||
|
||||
// آمار
|
||||
var stats = await aiQueryService.GetStatsAsync();
|
||||
```
|
||||
|
||||
## 📈 آمار قابل دسترسی
|
||||
|
||||
از endpoint `/api/ai/stats` میتوانید این اطلاعات را دریافت کنید:
|
||||
- تعداد کل سوالات
|
||||
- مجموع توکنهای استفاده شده
|
||||
- توکنهای Prompt
|
||||
- توکنهای Completion
|
||||
- میانگین زمان پاسخ
|
||||
- سوالات امروز
|
||||
- توکنهای امروز
|
||||
|
||||
## ⚡ تغییرات Breaking
|
||||
|
||||
هیچ! تمام تغییرات backward compatible هستند:
|
||||
- `deviceId` و `userId` اختیاری هستند
|
||||
- API های قبلی همچنان کار میکنند
|
||||
- فقط قابلیتهای جدید اضافه شدهاند
|
||||
|
||||
## 🧪 تست
|
||||
|
||||
### تست ذخیره سوال:
|
||||
```bash
|
||||
curl -X POST http://localhost:5000/api/ai/ask \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"question": "تست ذخیره سوال",
|
||||
"deviceId": 1
|
||||
}'
|
||||
```
|
||||
|
||||
### تست دریافت تاریخچه:
|
||||
```bash
|
||||
curl http://localhost:5000/api/ai/history/device/1
|
||||
```
|
||||
|
||||
### تست آمار:
|
||||
```bash
|
||||
curl http://localhost:5000/api/ai/stats
|
||||
```
|
||||
|
||||
## 📚 فایلهای تغییر یافته
|
||||
|
||||
```
|
||||
✅ Domain Layer:
|
||||
- GreenHome.Domain/AIQuery.cs (جدید)
|
||||
|
||||
✅ Application Layer:
|
||||
- GreenHome.Application/IAIQueryService.cs (جدید)
|
||||
|
||||
✅ Infrastructure Layer:
|
||||
- GreenHome.Infrastructure/GreenHomeDbContext.cs (آپدیت)
|
||||
- GreenHome.Infrastructure/AIQueryService.cs (جدید)
|
||||
- GreenHome.Infrastructure/Migrations/20251216113127_AddAIQueryTable.cs (جدید)
|
||||
|
||||
✅ API Layer:
|
||||
- GreenHome.Api/Controllers/AIController.cs (آپدیت)
|
||||
- GreenHome.Api/Program.cs (آپدیت)
|
||||
|
||||
✅ Documentation:
|
||||
- AI_QUERY_TRACKING.md (جدید)
|
||||
- CHANGES_SUMMARY.md (جدید)
|
||||
```
|
||||
|
||||
## 🎉 آماده استفاده!
|
||||
|
||||
تمام تغییرات اعمال شده و سیستم آماده است. فقط کافی است:
|
||||
1. برنامه را اجرا کنید
|
||||
2. از API استفاده کنید
|
||||
3. سوالات به صورت خودکار ذخیره میشوند!
|
||||
|
||||
برای اطلاعات بیشتر، فایل `AI_QUERY_TRACKING.md` را مطالعه کنید.
|
||||
|
||||
Reference in New Issue
Block a user