مستندات API
تمام endpointها JSON میپذیرند و JSON برمیگردانند. پاسخهای خطا به سبک FastAPI هستند: { "detail": "..." }
شروع سریع
- Base URL در حالت توسعه:
http://localhost:3000/api - مسیرهای legacy هم فعالاند:
POST /transcribeوPOST /generate-report(دقیقاً مثل نسخه FastAPI). - CORS برای توسعه localhost فعال است.
- کاربران ناشناس: هدر
x-anon-tokenرا با یک UUID ذخیرهشده درlocalStorageبفرستید تا سهمیهتان شمرده شود. - سقف رایگان: ۳ درخواست (مجموع transcribe + generate-report). پس از آن:
403 {detail: "free_limit_reached"}
احراز هویت (JWT)
پس از register/login، توکن JWT هم در بدنه پاسخ برمیگردد و هم در کوکیhttpOnly ست میشود. برای کلاینتهای API، هدر Bearer بفرستید:
گذرواژهها با bcrypt هش میشوند؛ توکنها HS256 با انقضای ۳۰ روزه.
ساخت حساب کاربری جدید.
ورود و دریافت توکن JWT.
وضعیت سهمیه مصرفی کاربر فعلی یا کاربر ناشناس.
نرمالسازی/رونویسی متن دیکته. در حالت استاندارد، مرورگر با Web Speech API متن را تولید میکند و این endpoint متن را نرمال میکند. اگرOPENAI_API_KEY تنظیم شده باشد، آپلود صوت (audio_base64) نیز پشتیبانی میشود.
تولید گزارش ساختاریافته رادیولوژی از روی متن دیکته.
فهرست گزارشهای ذخیرهشده کاربر (جدیدترین ابتدا).
ذخیره گزارش جدید در داشبورد کاربر.
دریافت متن و JSON کامل یک گزارش (فقط مالک). DELETE همین مسیر گزارش را حذف میکند.
ثبت پیام در فرم تماس.
کدهای خطا
| کد | detail | معنی |
|---|---|---|
| 200/201 | — | موفقیت |
| 401 | not_authenticated / invalid_credentials | توکن نامعتبر یا ورود ناموفق |
| 403 | free_limit_reached | سهمیه رایگان تمام شده — نمایش مودال ثبتنام |
| 404 | report_not_found | گزارش پیدا نشد یا مال شما نیست |
| 409 | email_already_registered | ایمیل تکراری |
| 422 | validation_error / ... | ورودی نامعتبر |
نکته پیادهسازی (فرانتاند): در پاسخ 403 باdetail=free_limit_reached، مودال «Sign up to continue» را نمایش دهید — دقیقاً همان رفتار صفحه «اتاق گزارش».