بازگشت به فهرست ATP →
پیشینه فنی

شروع تولید گزارش prior-art

POST /api/v1/invention-cases/{invention_case_id}/prior-art/report/ مشاهده در Swagger

ATP - شروع تولید گزارش prior-art (POST /api/v1/invention-cases/{invention_case_id}/prior-art/report/)

Endpoint

POST /api/v1/invention-cases/{invention_case_id}/prior-art/report/

هدف آزمون

enqueue تولید گزارش markdown پس از search completed.

شرایط آزمون

  • سرویس core-api در حال اجرا باشد
  • هدر Authorization با access token معتبر

فرآیند آزمون

  1. ارسال درخواست POST به /api/v1/invention-cases/{invention_case_id}/prior-art/report/
  2. دریافت پاسخ HTTP
  3. بررسی کد وضعیت و بدنه JSON

معرفی ویژگی

مرحله ۲ prior-art — مستقل از search اما به نتیجه search وابسته. worker گزارش markdown را در S3 می‌نویسد.

  • lifecycle: pending → queued (broker confirm) → completed | failed
  • RabbitMQ: prior_art.report.requested
  • ورودی: search result artifact + top_k
  • خروجی: report_markdown_artifact_key
  • exhaustion: command_publish_exhausted → report retry

سناریوی آزمون

سناریو 1: مسیر موفق

  1. ارسال POST /api/v1/invention-cases/{invention_case_id}/prior-art/report/
  2. دریافت پاسخ موفق
  3. بررسی ساختار پاسخ

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

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

سناریو 3: گزارش با top_k=5

  1. search completed
  2. POST {"top_k":5}
  3. 202
  4. بررسی top_k در report_execution

سناریو 4: خطا — بدون search

  1. بدون search completed
  2. POST report
  3. 400

قالب API

مولفه نوع نوع داده اجباری توضیحات
search_execution_id Body uuid خیر اجرای جستجوی مبدأ؛ پیش‌فرض آخرین completed
top_k Body integer خیر تعداد مرجع برای گزارش (۱–۱۰۰، پیش‌فرض ۱۰)
invention_case_id Path uuid بله شناسه پرونده اختراع

Swagger

post:
  summary: شروع تولید گزارش prior-art
  responses:
    201:
      description: منبع ایجاد شد
    400:
      description: داده ورودی نامعتبر
    401:
      description: احراز هویت نامعتبر

نمونه ورودی

curl -X POST "http://localhost:8000/api/v1/invention-cases/{invention_case_id}/prior-art/report/" \
  -H "Authorization: Bearer <access>" \
  -H "Content-Type: application/json" \
  -d '{"top_k": 8}'

نمونه خروجی

{
  "success": true,
  "data": {}
}

Status Codes

  • 202: گزارش enqueue شد
  • 400: search completed موجود نیست

نتیجه مورد انتظار

در صورت موفقیت، پاسخ JSON استاندارد با کد وضعیت مناسب برای POST برگردانده می‌شود.

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

  1. بررسی کد وضعیت HTTP
  2. بررسی فیلد success در بدنه
  3. بررسی عدم افشای داده حساس

توضیحات

  • مسیر باید با پیاده‌سازی فعلی urls.py هم‌خوان باشد

جریان یکپارچه‌سازی

1. POST prior-art/report { top_k? }
2. core-api: PriorArtReportExecution (pending) + command_event_id
3. outbox publisher (confirm) → RabbitMQ: prior_art.report.requested
4. domain → queued
5. ai-workflow: synthesize markdown report → S3
6. RabbitMQ: prior_art.report.completed | failed
7. core-api inbox: terminal update (monotonic)
8. GET report یا /report/download