ATP - استخراج متن از فایل آپلودی (dev) (POST /api/v1/dev/ingest/extract)
Endpoint
POST /api/v1/dev/ingest/extract
هدف آزمون
اجرای کامل pipeline استخراج متن روی فایل آپلودشده و بازگرداندن متن نرمالشده.
شرایط آزمون
- APP_ENV برابر local یا docker-dev باشد
- سرویس API در حال اجرا باشد
- فایل نمونه با پسوند .pdf، .docx یا .txt آماده باشد
فرآیند آزمون
- آمادهسازی فایل نمونه
- ارسال POST multipart با فیلد file
- دریافت DevIngestResponse
- بررسی normalized_text و متادیتا
معرفی ویژگی
endpoint توسعهای برای تست دستی pipeline استخراج بدون RabbitMQ. فایل را مستقیم آپلود میکند و نتیجه LangGraph intake را برمیگرداند.
- فرمتهای پشتیبانیشده: pdf، docx، txt
- حداکثر حجم: ۵۰ مگابایت
- خروجی کامل: normalized_text بدون truncate
- فقط dev: در APP_ENV=docker ثبت نمیشود (404)
سناریوی آزمون
سناریو 1: استخراج موفق فایل txt
- آپلود فایل sample.txt با محتوای متنی
- ارسال POST به
/api/v1/dev/ingest/extract - دریافت کد 200
- بررسی file_type، pages_count، text_length و normalized_text
سناریو 2: خطا — پسوند نامعتبر
- آپلود فایل با پسوند .exe
- ارسال POST
- دریافت کد 400 با پیام Unsupported file type
قالب API
| مولفه | نوع | نوع داده | اجباری | توضیحات |
|---|---|---|---|---|
| file | Body | file | بله | فایل آپلودی؛ multipart/form-data |
Swagger
post:
summary: Run full intake pipeline on uploaded file (dev only)
responses:
200:
description: Extraction completed
400:
description: Unsupported file type
413:
description: File too large
422:
description: Validation error
500:
description: Extraction failed
404:
description: Route not registered in production
نمونه ورودی
curl -X POST "http://127.0.0.1:8000/api/v1/dev/ingest/extract" \
-F "file=@sample.txt;type=text/plain"
نمونه خروجی
{
"file_type": "txt",
"pages_count": 1,
"text_length": 11,
"normalized_text": "sample text",
"text_sha256": "...",
"warnings": [],
"parser_version": "0.1.0"
}
Status Codes
- 200: استخراج با موفقیت انجام شد
- 400: نوع فایل پشتیبانی نمیشود
- 413: حجم فایل بیش از ۵۰MB
- 422: فایل خالی یا نام فایل نامعتبر
- 500: خطای داخلی pipeline
- 404: در محیط production مسیر وجود ندارد
نتیجه مورد انتظار
در محیط dev، پاسخ JSON با normalized_text کامل و متادیتای استخراج با کد 200.
روال صحتسنجی
- بررسی کد 200 برای فایل معتبر
- بررسی تطابق normalized_text با محتوای فایل
- بررسی text_sha256 و parser_version
- بررسی 400 برای پسوند نامعتبر
توضیحات
- مسیر production استخراج از طریق RabbitMQ است نه HTTP
- Swagger در APP_ENV=docker غیرفعال است