106 lines
4.2 KiB
Markdown
106 lines
4.2 KiB
Markdown
|
|
# تغییرات API چت در `farm_ai_assistant/urls.py`
|
||
|
|
|
||
|
|
این فایل تغییرات مربوط به API چت را در `farm_ai_assistant/urls.py` نسبت به **۶ کامیت قبل** (`HEAD~6`) توضیح میدهد.
|
||
|
|
|
||
|
|
## بازه مقایسه
|
||
|
|
- مبدا مقایسه: `HEAD~6`
|
||
|
|
- مقصد مقایسه: `HEAD`
|
||
|
|
|
||
|
|
کامیت مبنا:
|
||
|
|
- `2a77f90` - `Update Docker Compose ports to 8081 and add new apps and URL routes for crop zoning, plant simulator, pest detection, irrigation recommendation, fertilization recommendation, and farm AI assistant.`
|
||
|
|
|
||
|
|
کامیتهای داخل این بازه:
|
||
|
|
- `2846db1` - `UPDATE`
|
||
|
|
- `bf24404` - `UPDATE`
|
||
|
|
- `cef1b53` - `UPDATE`
|
||
|
|
- `24cb87d` - `UPDATE`
|
||
|
|
- `2cd96ce` - `UPDATE`
|
||
|
|
|
||
|
|
## خلاصه تغییر اصلی
|
||
|
|
در این بازه، ساختار API چت از حالت **task-based / async polling** به حالت **direct chat endpoint** تغییر کرده است.
|
||
|
|
|
||
|
|
به زبان ساده:
|
||
|
|
- قبلاً endpoint اصلی `chat/` غیرفعال بود.
|
||
|
|
- قبلاً برای ارسال درخواست چت، یک task ساخته میشد.
|
||
|
|
- سپس وضعیت آن task با یک endpoint جداگانه بررسی میشد.
|
||
|
|
- الان این مدل حذف شده و بهجای آن endpoint مستقیم `chat/` فعال شده است.
|
||
|
|
|
||
|
|
## تغییرات دقیق در مسیرها
|
||
|
|
|
||
|
|
### 1) فعال شدن endpoint مستقیم چت
|
||
|
|
مسیر زیر فعال شده است:
|
||
|
|
|
||
|
|
- `POST/GET farm_ai_assistant/chat/`
|
||
|
|
- view متناظر: `ChatView`
|
||
|
|
- name: `farm-ai-assistant-chat`
|
||
|
|
|
||
|
|
وضعیت قبلی:
|
||
|
|
- این خط در فایل وجود داشت اما کامنت شده بود:
|
||
|
|
- `# path("chat/", ChatView.as_view(), name="farm-ai-assistant-chat"),`
|
||
|
|
|
||
|
|
وضعیت جدید:
|
||
|
|
- این endpoint از حالت comment خارج شده و فعال شده است:
|
||
|
|
- `path("chat/", ChatView.as_view(), name="farm-ai-assistant-chat"),`
|
||
|
|
|
||
|
|
### 2) حذف endpoint ساخت task برای چت
|
||
|
|
این مسیر حذف شده است:
|
||
|
|
|
||
|
|
- `chat/task/`
|
||
|
|
- view: `ChatTaskCreateView`
|
||
|
|
- name: `farm-ai-assistant-chat-task-create`
|
||
|
|
|
||
|
|
هدف قبلی این endpoint:
|
||
|
|
- ایجاد یک task برای پردازش درخواست چت
|
||
|
|
|
||
|
|
### 3) حذف endpoint بررسی وضعیت task
|
||
|
|
این مسیر هم حذف شده است:
|
||
|
|
|
||
|
|
- `chat/task/<str:task_id>/status/`
|
||
|
|
- view: `ChatTaskStatusView`
|
||
|
|
- name: `farm-ai-assistant-chat-task-status`
|
||
|
|
|
||
|
|
هدف قبلی این endpoint:
|
||
|
|
- بررسی وضعیت پردازش task چت با استفاده از `task_id`
|
||
|
|
|
||
|
|
### 4) حذف import های مربوط به task-based flow
|
||
|
|
این importها از فایل حذف شدهاند:
|
||
|
|
|
||
|
|
- `ChatTaskCreateView`
|
||
|
|
- `ChatTaskStatusView`
|
||
|
|
|
||
|
|
این یعنی دیگر routeای در `urls.py` برای این دو view تعریف نشده است.
|
||
|
|
|
||
|
|
## چیزهایی که تغییری نکردهاند
|
||
|
|
این endpointها در بازه مقایسه بدون تغییر باقی ماندهاند:
|
||
|
|
|
||
|
|
- `context/` -> `ContextView`
|
||
|
|
- `chats/` -> `ChatListCreateView`
|
||
|
|
- `chats/<uuid:conversation_id>/` -> `ChatDetailView`
|
||
|
|
- `chats/<uuid:conversation_id>/messages/` -> `ChatMessagesView`
|
||
|
|
|
||
|
|
## نتیجه فنی تغییر
|
||
|
|
این تغییر نشان میدهد طراحی API چت از این الگو:
|
||
|
|
|
||
|
|
1. ساخت task
|
||
|
|
2. دریافت `task_id`
|
||
|
|
3. polling برای status
|
||
|
|
|
||
|
|
به این الگو تغییر کرده است:
|
||
|
|
|
||
|
|
1. ارسال مستقیم درخواست به `chat/`
|
||
|
|
2. دریافت مستقیم پاسخ از `ChatView`
|
||
|
|
|
||
|
|
## اثر احتمالی روی فرانت یا کلاینتها
|
||
|
|
اگر فرانت یا کلاینت قبلاً با flow تسکمحور کار میکرده، باید این تغییرات را اعمال کند:
|
||
|
|
|
||
|
|
- دیگر نباید به `chat/task/` درخواست بزند.
|
||
|
|
- دیگر نباید `task_id` دریافت و status را polling کند.
|
||
|
|
- باید مستقیماً از `chat/` برای عملیات چت استفاده کند.
|
||
|
|
|
||
|
|
## جمعبندی
|
||
|
|
مهمترین تغییر در ۶ کامیت اخیر برای `farm_ai_assistant/urls.py` این است که:
|
||
|
|
|
||
|
|
- endpoint مستقیم `chat/` فعال شده
|
||
|
|
- endpointهای task-based حذف شدهاند
|
||
|
|
- معماری API چت از حالت asynchronous polling به حالت direct request/response تغییر کرده است
|