# گزارش بررسی نهایی — Round39

تاریخ: ۲۰۲۶/۱۰/۳۱

## نتیجه
**۳۱ مجموعه، ۱۹۴۵ بررسی، همگی موفق.** این عدد مجموع بررسی‌های واحد، یکپارچگی، مرورگر، سازگاری صف و ممیزی محدودهٔ تغییرات است؛ تعداد فراخوانی واقعی سرویس یا تعداد سناریوی زندهٔ تلگرام نیست.

تمام مجموعه‌های زیر پس از آخرین تغییر کد، در یک اجرای نهایی تکرار شدند. PHP lint برای ۶ فایل اصلی و بررسی نحوی JavaScript ویرایشگر نیز موفق بود. اجرای نهایی بدون خروجی stderr تمام شد.

| گروه | تعداد مجموعه | بررسی موفق |
|---|---:|---:|
| رگرسیون‌های قبلی: منوی ربات، اپ، parser/sender، اعداد، قطعات، نگهبان‌ها، ارجاع، کلیدها، routing/retry، هدیهٔ ثبت‌نام، راه‌اندازی و محدودهٔ تغییرات | ۱۵ | ۱۰۹۵ |
| هوش مصنوعی و صف دستی، SQLite و MariaDB | ۲ | ۲۵۰ |
| VIP و اتومات کانال، SQLite و MariaDB | ۲ | ۱۸۸ |
| امکانات جدید compiler، schema و دکمه‌ها | ۱ | ۴۸ |
| مرورگر واقعی مینی‌اپ و ویرایشگر جدید | ۱ | ۸۵ |
| مرورگرهای رگرسیون قبلی: احراز هویت، پیش‌نمایش و نقل‌قول | ۲ | ۵۰ |
| زمینهٔ طراحی و بازطراحی نقل‌قول | ۲ | ۹۴ |
| ادامهٔ صف در پردازه‌های مستقل و سازگاری نسخهٔ v3 | ۳ | ۳۳ |
| ساخت صف با کد دقیق Round38 و ادامهٔ v4 در Round39 | ۱ | ۷ |
| اعتبارسنجی مستقل JSON Schema خروجی مدل | ۱ | ۲۰ |
| پیام تبلیغاتی قبلی مدیر | ۱ | ۷۵ |
| **مجموع** | **۳۱** | **۱۹۴۵** |

## موارد مهمِ بررسی‌شده

### طراحی و لینک‌ها
- قرارداد strict مدل، خروجی بسته و فیلدهای الزامی، و رد انتخاب/شناسهٔ نامعتبر؛
- ساخت دکمهٔ واقعی از URL و عنوان اصلی، نه متن یا مقصد پیشنهادی مدل؛
- حفظ لینک مرجع داخل متن، دکمهٔ ردیفی و دکمهٔ درون پاراگراف؛
- نگه‌داشتن لینک‌های دارای متادیتای ویژه، و بیرون‌نکشیدن لینک از اسپویلر؛
- جلوگیری از تخت‌کردن معنای خط‌خورده/بالانویس/پایین‌نویس در عنوان دکمه؛
- بیرون‌ماندن واحدهای دارای قابلیت CTA از بخش‌های اختیاریِ جمع‌شونده در برنامه‌های جدید؛
- حفظ URLها، اعداد، شناسه‌ها و رسانه‌ها و رد خروجی مخرب؛
- تشخیص تغییر ظاهری حتی زمانی که تنها تغییر، تبدیل لینک به دکمه است.

### مرورگر واقعی
مرورگر Chromium، PHP، HMAC تلگرام و SQLite واقعی بودند؛ سرویس‌های بیرونی با fixture پاسخ داده‌اند.

- بازکردن و تأیید فرم‌های ۲۳ نوع بخش؛
- ویرایش ۲۶ نوع قالب/گرهٔ متن همراه با نگه‌داشتن متادیتا؛
- تغییر جدول، فهرست و ساختارهای تو‌در‌تو؛
- عدم اعمال ادیت لغوشده و پاسخ دیررس اعتبارسنجی بعد از بستن پنجره؛
- انتخاب واقعی فایل JPEG از file chooser، درخواست multipart واقعی، ذخیرهٔ آپلود و افزودن عکس native؛
- جابه‌جایی عکس بین بخش‌ها، ماندن ترتیب بعد از بازخوانی و نمایش شمارندهٔ درست عکس؛
- اعمال‌نشدن نتیجهٔ AI قبل از زدن تأیید؛
- عدم انتشار و تغییر سکه با ویرایش دستی؛
- حفظ ترتیب متنِ اضافه‌نشده و عکسِ پیش‌نویس قدیمی، بدون تکرار؛
- پذیرش AI و سپس بازگردانی، با حفظ متنِ اضافه‌نشده و مرجع عکس قدیمی.

### صف، کلیدها و اتومات
- پردازش واقعی worker و ذخیره/بازخوانی صف، با transport شبیه‌سازی‌شده؛
- حفظ بخش‌های قبلاً پذیرفته‌شده، fingerprint و انتخاب‌های طراحی در ادامهٔ صف؛
- ساخت درخواست معطل با کد دقیق نسخهٔ قبل و ادامه در پردازهٔ جداگانه با کد جدید؛
- رفتار کلید مستقل، خطای نرخ/ظرفیت، retry محدود و حفاظت از اسرار؛
- رد خروجی نامعتبر بدون تغییر سیاست انتخاب کلید برای دورزدن خطای محتوا؛
- اتومات فقط متن، VIP، کانال انتخاب‌شده، کنترل مجوز و کسر هزینه فقط پس از موفقیت تأییدشده؛
- ویرایش همان پیامِ کانال برای CTA، بدون حذف/ارسال مجدد و بدون محاسبهٔ دوبارهٔ هزینه؛
- حفظ پیش‌نمایش و تأیید نهایی مسیر دستی.

## محدودهٔ تغییر کد
فقط **`richgroq.php` و `richapp.php`** نسبت به بستهٔ تحویل‌شدهٔ Round38 تغییر کرده‌اند.

در ماژول AI، ۹ تابع موجودِ مربوط به طراحی و ۴ helper تغییر/اضافه شده‌اند. در سمت PHP اپ، یک تابع API موجود تغییر و یک helper اعتبارسنج اضافه شده است. ویرایشگر سمت مرورگر داخل همان فایل اپ قرار دارد. مسیر جدید اعتبارسنجی، احراز هویت مینی‌اپ را لازم دارد و پیش‌نویس، کیف پول یا انتشار را تغییر نمی‌دهد.

ممیزی ۷۲ موردی، کد اصلی ربات، تبلیغ مدیر، بنر، کنترل‌های کلید/صف/هزینه/انتشار و بخش‌های منجمد را با مبنای دقیق نسخهٔ قبل مقایسه کرده است. تست‌های قدیمیِ پاسخ مصنوعی JSON-native برای مسیر تازهٔ strict-plan به fixture متناظر به‌روز شدند؛ رفتارهای امنیت، retry، بودجه و routing همچنان بررسی شدند.

## محدودیت شواهد
- **هیچ فراخوانی زندهٔ Groq یا Telegram، پرداخت، وبهوک تولید یا نصب روی هاست شما انجام نشده است.** هیچ کلید واقعی برای آزمون درخواست نشده است.
- کیفیت انتخاب‌های مدل، سرعت واقعی، هزینهٔ واقعی حساب و نمایش در تمام نسخه‌های تلگرام از این آزمون‌های محلی قابل نتیجه‌گیری نیست.
- شناسه‌های emoji/media در بعضی fixtureها مصنوعی‌اند؛ فقط صحت ساختار و حفظ متادیتا را ثابت می‌کنند. آزمون آپلود JPEG محلی، واقعی است اما ارسال زندهٔ همان عکس به تلگرام نیست.
- برخی پیش‌نمایش‌های محلی مثل فرمول و نقشه، تقریب نمایشی‌اند؛ payload native جداگانه بررسی شده است.
- ۲۳/۲۶ به انواع پشتیبانی‌شده در موتور فعلی اشاره دارد، نه پشتیبانی خودکار از هر نوع آیندهٔ Bot API.

## محل شواهد در فضای کار
- `revisions/round39/final-results.json`: شمارش نهایی هر مجموعه؛
- `revisions/round39/final-run.txt`: خلاصهٔ اجرای نهایی؛
- `revisions/round39/regression-runs.json`: وضعیت ۱۵ مجموعهٔ رگرسیون؛
- `revisions/round39/browser-tests.txt` و `showcase-tests.txt`: نتایج امکانات تازه؛
- `revisions/round39/v4-upgrade.txt`: ادامهٔ درخواست واقعیِ تولیدشده با کد Round38؛
- `revisions/round39/scope.json`: ممیزی توابع و محدوده؛
- `revisions/round39/run_final.py`: هماهنگ‌کنندهٔ اجرای نهایی در محیط آزمون محلی.

بستهٔ نصب، fixtureها، سرویس تست، دیتابیس آزمایشی، تنظیمات محیط، کلید یا فایل JavaScript خارجی لازم ندارد.
