بازگشت به فهرست ATP →
پرونده‌های اختراع

رویدادهای گردش‌کار پرونده

GET /api/v1/invention-cases/{invention_case_id}/workflow-events/ مشاهده در Swagger

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 پشتیبانی کند

فرآیند آزمون

  1. باز کردن اتصال GET به workflow-events
  2. خواندن رویدادهای SSE با فیلدهای id و data
  3. ذخیره آخرین event id برای resume
  4. بستن اتصال پس از 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: مسیر موفق

  1. ارسال GET /api/v1/invention-cases/{invention_case_id}/workflow-events/
  2. دریافت پاسخ موفق
  3. بررسی ساختار پاسخ

سناریو 2: خطا - درخواست نامعتبر

  1. ارسال درخواست با داده یا شناسه نامعتبر
  2. دریافت کد خطای 4xx
  3. بررسی پیام خطای استاندارد API

سناریو 3: resume با last_event_id

  1. دریافت رویداد با id=50
  2. قطع و اتصال مجدد با ?last_event_id=50
  3. بررسی شروع از id=51

سناریو 4: خطا — پرونده بدون دسترسی

  1. استفاده از invention_case_id متعلق به کاربر دیگر
  2. دریافت 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 یکتا.

روال صحت‌سنجی

  1. بررسی Content-Type=text/event-stream
  2. بررسی فرمت id: و data: در هر chunk
  3. بررسی resume با last_event_id
  4. بررسی ترتیب زمانی رویدادها

توضیحات

  • برای timeline UI؛ state aggregate از workflow-state بیاید
  • در تست خودکار از curl -N یا httpx stream استفاده کنید