# گزارش آزمون ClaimManager 2.0

تاریخ بررسی: ۲۰۲۶-۱۰-۱۳. محیط: Linux، Node.js 24.14.1، Chromium محلی. این سند نتیجهٔ آزمون‌های انجام‌شده است، نه گواهی Enterprise یا امنیت.

| بررسی | نتیجه |
|---|---|
| Build با Vite 8.3.4، هدف Node-server | موفق؛ `.output/server/index.mjs` ساخته شد |
| TypeScript `tsc --noEmit` | موفق؛ بدون خطا |
| تست‌های دامنه و رگرسیون نسخهٔ قبلی، مهاجرت‌شده به Vitest | **۴۲۸ موفق؛ ۴ ردشده از اجرا (skip)** |
| تست‌های جدید سازمانی / امنیت / fallback | **۲۰ موفق؛ صفر شکست** |
| مجموع تست‌های اجراشده | **۴۴۸ موفق** |
| ESLint | **صفر خطا؛ ۹ warning** مربوط به React Hooks / Fast Refresh |
| npm audit هنگام تحویل | **صفر آسیب‌پذیری شناخته‌شدهٔ گزارش‌شده** |
| اجرای خروجی ساخته‌شده در پوشهٔ مستقل بدون node_modules پروژه | موفق: ورود و ثبت گزارش آفلاین |
| health / احراز هویت | `/healthz` برابر ۲۰۰؛ API بدون ورود و بعد از خروج برابر ۴۰۱ |
| گردش مرورگر | ورود → ایجاد پروژه → ورود TXT/DOCX/PDF → پرسش → گزارش → بازبینی → خروج، موفق |
| خروجی‌ها | دانلود JSON و Markdown و تولید PDF با چاپ مرورگر، موفق |
| استخراج فایل | متن PDF و DOCX آزمایشی در پیش‌نمایش بررسی شد |
| ظاهر | دسکتاپ ۱۴۴۰ و موبایل ۳۹۰ پیکسل، حالت روشن/تیره و ابزار اصلی بررسی شدند؛ ایراد جدول موبایل اصلاح شد |
| خطاهای مرورگر در اجرای نهایی | صفر خطای JavaScript / Console؛ صفر پاسخ HTTP خطادار در گردش تست |
| سرریز افقی کل صفحه | در نماهای ثبت‌شده یافت نشد؛ جدول‌ها و منوی موبایل اسکرول داخلی دارند |
| ماندگاری و بکاپ | خواندن گزارش ذخیره‌شده در فرایند تازه و `VACUUM INTO` همراه integrity_check موفق |

## تست‌های امنیت و سرویس جایگزین

- گذرواژهٔ غلط، نشست جعلی، هدر هویت جعلی و JWT بدون امضا پذیرفته نشدند.
- درخواست تغییر با Origin نامعتبر رد شد.
- نقش خواننده نمی‌تواند سند ایجاد/حذف کند یا گزارش را بازبینی کند؛ تحلیلگر نمی‌تواند گزارش را تأیید کند.
- بازبین مجاز، نظر را ثبت می‌کند و رویداد آن باقی می‌ماند.
- حالت بدون شبکه با fetch ممنوع تست شد؛ پاسخ از نقل‌قول سند ساخته شد.
- خطای **۴۰۲ سرویس ابری با mock** تست شد؛ پاسخ به بازیابی قطعی برگشت.
- مسیر **مدل محلی با پاسخ mock** تست شد؛ خروجی به‌عنوان local-llm و نیازمند بازبینی برچسب خورد.
- ورودی نامعتبر و تلاش استفاده از مسیر فایل به‌جای UUID رد شدند.
- لاگ رویدادها فاقد گذرواژه و متن اسناد است؛ این لاگ ضد دستکاری نیست.

## رگرسیون‌های کشف و اصلاح‌شده

۱. نام طرفین فقط از فیلدهای مشخص استخراج می‌شود؛ جملات مربوط به «تایید کارفرما» دیگر نام شرکت محسوب نمی‌شوند.

۲. مبلغ و مدت قرارداد دیگر به‌عنوان شمارهٔ قرارداد استخراج نمی‌شوند.

۳. نقل‌قول‌های مستقیم، نویسه‌ها و رقم‌های متن اصلی را حفظ می‌کنند؛ تطبیق و مقادیر عددی به‌صورت جداگانه نرمال می‌شوند.

۴. مرجع‌های حقوقی داخلیِ تشخیص موضوع، «پیشنهادی و نیازمند کنترل قابلیت اعمال در قرارداد» برچسب خوردند؛ قانون حاکم اثبات‌شده محسوب نمی‌شوند.

۵. تغییر API در PDF.js اصلاح شد؛ پاک‌سازی پردازش با loadingTask.destroy انجام می‌شود.

۶. وابستگی‌های آسیب‌پذیر به نسخه‌های اصلاح‌شده ارتقا یافتند و package-lock.json مرجع نصب است.

## چهار تست skip چه بودند؟

چهار مورد مربوط به workbook واقعی موجود در مسیر خارج از ZIP اولیه هستند؛ فایل fixture اصلی در ورودی موجود نبود. این موارد عمداً موفق اعلام نشده‌اند. سایر تست‌ها اجرا شدند. تغییر runner از Bun به Vitest و تغییر نام API معتبر TanStack انجام شد؛ assertهای محتوایی حذف نشدند. دو assert قدیمی مخصوص launcher و نام runner، مطابق مسیر جدید Node/npm به‌روزرسانی شدند.

## چه چیزهایی تست نشده‌اند؟

- کلید واقعی AvalAI / OpenAI یا هر سرویس ابری دیگر؛ موجود بودن مدل در حساب شما.
- اجرای یک مدل محلی واقعی و کیفیت فارسی/حقوقی آن؛ وزن مدل یا GPU در بسته نیست.
- Docker build، Nginx روی دامنهٔ واقعی و گواهی HTTPS؛ ابزار Docker در محیط تست در دسترس نبود.
- بار همزمان سازمانی، HA، چند سرور، تست نفوذ مستقل، انطباق حقوقی و داده‌های واقعی پروژهٔ شما.
- تمام گردش‌های تعاملی ابزارهای تخصصی قدیمی؛ اجرای رابط و تست‌های دامنهٔ موجود بررسی شده‌اند، نه هر ترکیب تنظیمات و هر قالب سند واقعی.
- OCR اسناد تصویری با دادهٔ زبان فارسی؛ این داده در بسته نیست.
- بازیابی عملیاتی کامل از بکاپ روی هاست شما؛ snapshot و integrity آن آزموده شدند، اما تمرین restore روی محیط جداگانه همچنان ضروری است.

## شواهد آزمون

فایل‌های خلاصه و خروجی در `docs/qa/` هستند. اسناد مرورگر، قراردادها و حساب‌های تست ساختگی و غیرواقعی بودند؛ دیتابیس تست و گذرواژهٔ مدیر واقعی در بسته قرار ندارند. بررسی npm audit فقط هشدارهای شناخته‌شدهٔ رجیستری در زمان تست را پوشش می‌دهد و تضمین امنیت نیست. هشدارهای beta / Experimental SQLite و warningهای build در ارزیابی نگهداری آینده باید لحاظ شوند.
