7.1 KiB
7.1 KiB
📝 خلاصه تغییرات - سیستم ذخیره و ردیابی سوالات 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- InterfaceGreenHome.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 به صورت خودکار اعمال میشود:
cd GreenHome.Api
dotnet run
گزینه 2: دستی
cd GreenHome.Infrastructure
dotnet ef database update --startup-project ../GreenHome.Api
📖 مثال استفاده
قبل از تغییرات:
POST /api/ai/ask
{
"question": "دمای مناسب چند است?"
}
بعد از تغییرات:
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"
}
🎯 مزایای جدید
- ✅ ردیابی کامل - تمام سوالات و پاسخها ذخیره میشوند
- ✅ مدیریت هزینه - میزان دقیق مصرف توکن قابل محاسبه است
- ✅ تحلیل عملکرد - زمان پاسخدهی اندازهگیری میشود
- ✅ تاریخچه - سوالات قبلی هر دستگاه قابل مشاهده است
- ✅ آمار - آمار کلی و تفصیلی در دسترس است
- ✅ گزارشگیری - امکان تولید گزارشهای مختلف
🔍 دریافت اطلاعات
تاریخچه یک دستگاه:
GET /api/ai/history/device/123?take=50
آمار کلی:
GET /api/ai/stats
در کد C#:
// تاریخچه دستگاه
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 های قبلی همچنان کار میکنند
- فقط قابلیتهای جدید اضافه شدهاند
🧪 تست
تست ذخیره سوال:
curl -X POST http://localhost:5000/api/ai/ask \
-H "Content-Type: application/json" \
-d '{
"question": "تست ذخیره سوال",
"deviceId": 1
}'
تست دریافت تاریخچه:
curl http://localhost:5000/api/ai/history/device/1
تست آمار:
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 (جدید)
🎉 آماده استفاده!
تمام تغییرات اعمال شده و سیستم آماده است. فقط کافی است:
- برنامه را اجرا کنید
- از API استفاده کنید
- سوالات به صورت خودکار ذخیره میشوند!
برای اطلاعات بیشتر، فایل AI_QUERY_TRACKING.md را مطالعه کنید.