ATP - شروع اجرای گردشکار (POST /api/v1/workflow-runs/)
Endpoint
POST /api/v1/workflow-runs/
هدف آزمون
ایجاد WorkflowRun و شروع اجرای stepها.
شرایط آزمون
- سرویس core-api در حال اجرا باشد
- هدر Authorization با access token معتبر
فرآیند آزمون
- انتخاب product از workflow-products
- ارسال product_key + invention_case_id یا workspace_id
- دریافت 202 با steps_url و events_url
- poll steps یا subscribe به events SSE
معرفی ویژگی
لایه orchestration سطح بالا برای محصولات discover. میتواند از conversation منشأ بگیرد و به invention case متصل شود.
- ورودی معتبر: اعتبارسنجی در مرز API
- پاسخ استاندارد: قالب JSON یکسان با سایر endpointها
- کنترل دسترسی: مطابق policy ماژول مربوطه
سناریوی آزمون
سناریو 1: مسیر موفق
- ارسال
POST /api/v1/workflow-runs/ - دریافت پاسخ موفق
- بررسی ساختار پاسخ
سناریو 2: خطا - درخواست نامعتبر
- ارسال درخواست با داده یا شناسه نامعتبر
- دریافت کد خطای 4xx
- بررسی پیام خطای استاندارد API
سناریو 3: شروع از conversation
- create conversation
- POST workflow-runs با conversation_id
- 202
- بررسی لینک در workflow_run
سناریو 4: خطا — بدون workspace و case
- POST فقط {"product_key":"..."}
- 400
- بررسی workspace_id required
قالب API
| مولفه | نوع | نوع داده | اجباری | توضیحات |
|---|---|---|---|---|
| product_key | Body | string | بله | کلید محصول (مثلاً prior_art_search) |
| invention_case_id | Body | uuid | خیر | پرونده هدف |
| workspace_id | Body | uuid | شرطی | الزامی اگر invention_case_id نباشد |
| case_title | Body | string | خیر | عنوان case جدید |
| conversation_id | Body | uuid | خیر | گفتگوی مبدأ discover |
| input_data | Body | object | خیر | ورودی اختصاصی محصول |
Swagger
post:
summary: شروع اجرای گردشکار
responses:
201:
description: منبع ایجاد شد
400:
description: داده ورودی نامعتبر
401:
description: احراز هویت نامعتبر
نمونه ورودی
curl -X POST "http://localhost:8000/api/v1/workflow-runs/" \
-H "Authorization: Bearer <access>" \
-H "Content-Type: application/json"
نمونه خروجی
{
"success": true,
"data": {
"workflow_run_id": "...",
"status": "running",
"steps_url": "/api/v1/workflow-runs/.../steps/",
"events_url": "/api/v1/workflow-runs/.../events/",
"workflow_run": { "product_key": "prior_art_search", "step_runs": [] }
}
}
Status Codes
- 202: run ایجاد شد
- 400: validation
- 429: rate limit (30/min)
نتیجه مورد انتظار
در صورت موفقیت، پاسخ JSON استاندارد با کد وضعیت مناسب برای POST برگردانده میشود.
روال صحتسنجی
- بررسی کد وضعیت HTTP
- بررسی فیلد success در بدنه
- بررسی عدم افشای داده حساس
توضیحات
- مسیر باید با پیادهسازی فعلی urls.py همخوان باشد
جریان یکپارچهسازی
discover UI:
conversation → product recommendation → POST workflow-runs
→ poll steps/events → case operations (مثلاً search/report)