ATP - رویدادهای گردشکار پرونده (GET /api/v1/invention-cases/{invention_case_id}/workflow-events/)
Endpoint
GET /api/v1/invention-cases/{invention_case_id}/workflow-events/
هدف آزمون
دریافت timeline رویدادهای case workflow بهصورت SSE.
شرایط آزمون
- سرویس core-api در حال اجرا باشد
- هدر Authorization با access token معتبر
- کلاینت از EventSource یا fetch streaming پشتیبانی کند
فرآیند آزمون
- باز کردن اتصال GET به workflow-events
- خواندن رویدادهای SSE با فیلدهای id و data
- ذخیره آخرین event id برای resume
- بستن اتصال پس از inactivity یا navigation
معرفی ویژگی
استریم Server-Sent Events برای timeline تغییرات stage، آپلود سند، extraction، context و prior-art. مکمل polling workflow-state است.
- Content-Type: text/event-stream
- Cache-Control: no-cache
- X-Accel-Buffering: no (برای nginx)
- رویدادها: از CaseWorkflowEvent در DB
سناریوی آزمون
سناریو 1: مسیر موفق
- ارسال
GET /api/v1/invention-cases/{invention_case_id}/workflow-events/ - دریافت پاسخ موفق
- بررسی ساختار پاسخ
سناریو 2: خطا - درخواست نامعتبر
- ارسال درخواست با داده یا شناسه نامعتبر
- دریافت کد خطای 4xx
- بررسی پیام خطای استاندارد API
سناریو 3: resume با last_event_id
- دریافت رویداد با id=50
- قطع و اتصال مجدد با ?last_event_id=50
- بررسی شروع از id=51
سناریو 4: خطا — پرونده بدون دسترسی
- استفاده از invention_case_id متعلق به کاربر دیگر
- دریافت 404 قبل از شروع استریم
قالب API
| مولفه | نوع | نوع داده | اجباری | توضیحات |
|---|---|---|---|---|
| last_event_id | Query | uuid | خیر | resume از رویداد بعد از این شناسه |
| invention_case_id | Path | uuid | بله | شناسه پرونده اختراع |
Swagger
get:
summary: رویدادهای گردشکار پرونده
responses:
200:
description: عملیات موفق
401:
description: احراز هویت نامعتبر یا ناقص
نمونه ورودی
curl -N "http://localhost:8000/api/v1/invention-cases/{invention_case_id}/workflow-events/" \
-H "Authorization: Bearer <access>" \
-H "Accept: text/event-stream"
نمونه خروجی
id: 42
data: {"type":"document_uploaded","payload":{"source_document_id":"..."}}
id: 43
data: {"type":"extraction_completed","payload":{"request_id":"..."}}
Status Codes
- 200: استریم SSE
- 401: احراز هویت نامعتبر
- 404: پرونده یافت نشد
نتیجه مورد انتظار
استریم متوالی رویدادهای JSON در قالب SSE؛ هر رویداد دارای id یکتا.
روال صحتسنجی
- بررسی Content-Type=text/event-stream
- بررسی فرمت id: و data: در هر chunk
- بررسی resume با last_event_id
- بررسی ترتیب زمانی رویدادها
توضیحات
- برای timeline UI؛ state aggregate از workflow-state بیاید
- در تست خودکار از curl -N یا httpx stream استفاده کنید