{"title":"آتی‌وام — تاریخچه تغییرات","home":"https://vam.ati.ir/changelog","timezone":"Asia/Tehran","calendar":"persian","updatedAt":"2026-08-21T16:57:16+03:30","latestLiveReleaseId":"2026-08-21-v2-47-0-zarinpal-sandbox","releases":[{"id":"2026-08-24-v2-47-1-sana-apiir-candidate","version":"2.47.1","cycle":"CANDIDATE Next 2.47.1 · اتصال ثنا api.ir","publication":"candidate","title":"آداپتر ثنای مالک‌محور با مرز fail-closed","summary":"CANDIDATE: مسیر استعلام ثنا با قرارداد provider، کلید محیطی production و پاسخ Boolean سخت‌گیرانه آمادهٔ CI و استقرار است؛ هیچ استعلام هویتی واقعی در این چرخه اجرا نشده است.","at":"2026-08-24T16:15:00+03:30","atTehran":"دوشنبه ۲ شهریور ۱۴۰۵ — ۱۶:۱۵","tags":["feature","integration","docs"],"items":["adapter زنده فقط POST HTTPS با Authorization Bearer و payload ملیِ owner را به endpoint قابل‌پیکربندی provider می‌فرستد","timeout، خطای شبکه و هر پاسخ مبهم بدون fallback دمو یا افشای PII به خطای پایدار و fail-closed تبدیل می‌شوند","کلید SANA_API_KEY صرفاً در GitHub Environment production و env runtime نگه‌داری می‌شود و در کد، artifact و پاسخ health نمایش داده نمی‌شود","readiness صحت پیکربندی runtime را می‌سنجد؛ اعتبار عملی credential و استعلام واقعی تنها با مجوز و هویت قانونیِ کاربر آزموده می‌شود"],"url":"https://vam.ati.ir/changelog#2026-08-24-v2-47-1-sana-apiir-candidate"},{"id":"2026-08-21-v2-47-0-zarinpal-sandbox","version":"2.47.0","cycle":"LIVE Next 2.47.0 · زرین‌پال سندباکس","publication":"live","title":"تکمیل واقعی مسیر پرداخت بدون جابه‌جایی پول واقعی","summary":"LIVE: هزینه واحد اعتبارسنجی و تشکیل پرونده در صفحه رسمی زرین‌پال سندباکس طی، سروربه‌سرور Verify و پس از آن روی CoreState ثبت می‌شود؛ هیچ پول واقعی جابه‌جا نمی‌شود.","at":"2026-08-21T16:57:16+03:30","atTehran":"جمعه ۳۰ مرداد ۱۴۰۵ — ۱۶:۵۷","tags":["feature","integration","docs"],"items":["POST /api/payments/zarinpal برای کاربر حقیقی production یک IntegrationSession مالک‌محور و درخواست sandbox v4 می‌سازد","callback فقط Authority ذخیره‌شده، مبلغ ۱٬۹۰۰٬۰۰۰ ریال، ارز IRR، owner و انتخاب طرح همان درخواست را می‌پذیرد","موفقیت فقط پس از Verify سروربه‌سرور، CAS روی CoreState و settled شدن session اعلام می‌شود؛ replay callback idempotent است","demo و principalهای test/UAT مسیر no-money کنترل‌شدهٔ قبلی را حفظ می‌کنند و generic live payments همچنان disabled است","hostهای درخواست و redirect فقط sandbox.zarinpal.com هستند؛ health صریحاً moneyMoved=false گزارش می‌کند","تست ۸ از ۸ و سفر محلی واقعی پاس است؛ CIهای 32485229262/32485915118، merge a6fdf9b و deploy 32486656626 موفق‌اند؛ artifact 9448101358، ۲۷ migration، rollback verify، صفر mutation و سه دور container/origin/public ثبت شد","health زنده 2.47.0 سندباکس را enabled و moneyMoved=false نشان می‌دهد و StartPay رسمی HTTP 200 است؛ OTP production احراز‌شده اجرا نشد"],"url":"https://vam.ati.ir/changelog#2026-08-21-v2-47-0-zarinpal-sandbox"},{"id":"2026-08-20-v2-46-2-auth-live-delegation","version":"2.46.2","cycle":"LIVE Next 2.46.2 · تفویض امن bootstrap احراز هویت","publication":"live","title":"حذف قفل ورود در اتصال کند بدون تضعیف مرز OTP","summary":"LIVE: config کند با بودجهٔ واقعی خوانده می‌شود و شکست کامل transport فقط به route live و fail-closed سرور تفویض می‌شود؛ هیچ fallback دمو وجود ندارد.","at":"2026-08-21T04:27:22+03:30","atTehran":"جمعه ۳۰ مرداد ۱۴۰۵ — ۰۴:۲۷","tags":["fix","deploy","docs"],"items":["Chromium زنده روی 2.46.1 سه درخواست config را به‌علت timeout مستقل 2.5 ثانیه با ERR_ABORTED بازتولید کرد","دو تلاش با timeout مستقل 12 ثانیه و فاصلهٔ 500 میلی‌ثانیه اتصال کند را پوشش می‌دهد؛ retry نامحدود یا حلقهٔ پس‌زمینه وجود ندارد","پس از شکست کامل transport، production فقط mode=live را فعال می‌کند و submit را به POST /api/auth/otp واگذار می‌کند؛ route سرور مرجع fail-closed readiness و policy است","پاسخ معتبر ok=false سرور بدون retry پذیرفته می‌شود و production در هیچ خطایی demoCode یا OTP دمو تولید نمی‌کند","بنر ثابت لندینگ دیگر OTP آزمایشی ۱۲۳۴ را در production تبلیغ نمی‌کند و متن ورود امن با کد پیامکی را نشان می‌دهد؛ نمایش کد فقط به mode واقعی دمو محدود است","runner محدود artifact checksummed را از SSH لوپ‌بک با fingerprint ثابت به حساب مدیر واگذار کرد؛ secret در argv/log قرار نگرفت و هیچ credential یا دسترسی سمت VM تغییر نکرد","PRهای #71/#72، CIهای PR و main سبز و deploy 32434324363 موفق‌اند؛ artifact 9430197344 با digest 651a9b77…23d4c از merge 51f7458 مستقر شد","۲۷ migration بدون pending، rehearsal/rollback verify، trusted=39، quarantine=0، CoreSnapshot mutation صفر و fingerprint ۴۳ ردیف 9783dbe6…303e9 با quick_check/FK=ok پاس شدند","سه دور public/origin و Chromium واقعی نسخه 2.46.2، config live بدون demoCode و modal آماده بدون خطای ارتباط را تأیید کردند؛ UAT/payment bypass خاموش ماند","mobile وارد نشد و درخواست نامعتبر 400 بود؛ SMS، OTP دریافتی و نشست authenticated اجرا نشدند و connectorهای ناموجود fail-closed مانده‌اند"],"url":"https://vam.ati.ir/changelog#2026-08-20-v2-46-2-auth-live-delegation"},{"id":"2026-08-20-v2-46-0-single-production-instance","version":"2.46.0","cycle":"LIVE Next 2.46.0 · تک-instance production","publication":"live","title":"یک runtime، یک دیتابیس و نمایش یک‌جای تمام داده‌های VM","summary":"LIVE: cutover و ممیزی پس از آن کامل‌اند؛ Next 2.46.0 تنها runtime پروژه و SQLite canonical تنها دیتابیس پروژه روی VM است.","at":"2026-08-20T08:20:00+03:30","atTehran":"پنجشنبه ۲۹ مرداد ۱۴۰۵ — ۰۸:۲۰","tags":["feature","improvement","deploy","docs"],"items":["پس از finalize فقط container ativam و /opt/ativam-app/data/ativam.db مانده‌اند؛ .NET و dev runtime/service/volume/listenerها بازنشسته شدند","همهٔ منابع SQLite و snapshot canonical پیش از cutover در RetiredDatabaseManifest/RetiredSourceRecord همان DB قابل مشاهده‌اند؛ بایت فایل‌های داده AES-256-GCM و state تکراری content-addressed می‌شود","demo/UAT/test دیگر storage یا UI مستقل ندارند؛ آزمون OTP با activityClass=test روی همان principal production و بدون bypass یا پول واقعی ثبت می‌شود","/dev/tables تمام جدول‌های جاری و archive را page-bounded نمایش می‌دهد؛ فقط OTP production با sysadmin/all و deny خالی مجاز است","رابط فقط GET/no-store و credential-redacted است؛ SQL، export، DML/DDL و سرویس ثالث وجود ندارد","شواهد: npm run ci فعلی با build 177/177، single-dataset 26/26، viewer 14/14، Explorer 9/9، settings 25 گروه، normalizer 41/41 و deploy 124/124 پاس؛ baseline E2E 92/92، Playwright 39 پاس + 4 skip و .NET 337/337","PR #66 با head 6812f60، approval مالک harrison2pro و CI 32331028983 بدون bypass به merge f06cabc رسید و CI اصلی 32331681258 سبز شد","audit 32322620412/artifact 9390285975 منشأ 9.83GB را در 52 snapshot legacy یافت؛ data/.env آن‌ها پس از tar-validation byte-exact نگه‌داری، runtime با wrapper hash/aggregate بازسازی‌پذیر و archive ناشناخته یا unsafe خام حفظ می‌شود","run نهایی 32332096894 dependency preflight، rehearsal، archive، upload-before-cleanup، finalize و health را پاس کرد؛ artifact 9393683094 با digest sha256:73e0cb0de94f47ddbd06e38670ef4063a02a9a55d1ffa840a6c9bc3ba6c25fa8 تا 2026-11-18 معتبر است","audit فقط‌خواندنی 32333236764/artifact 9393741736 یک container و یک SQLite پروژه، نبود DB دات‌نت و صفر mutation را تأیید کرد؛ public/origin روی singleProductionDataset=true و dotnetRuntime=retired هستند","API بدون نشست 401/no-store و صفحه ناشناس 404 پنهان‌ساز است؛ ورود تعاملی OTP دو sysadmin هنوز smoke انسانی است و هیچ پرداخت واقعی اجرا نشد"],"url":"https://vam.ati.ir/changelog#2026-08-20-v2-46-0-single-production-instance"},{"id":"2026-08-19-v2-45-1-uat-closeout-invariant","version":"2.45.1","cycle":"LIVE Next 2.45.1 · invariant UAT و payment bypass","publication":"live","title":"closeout هم‌زمان env و overrideهای ماندگار DB","summary":"LIVE: PR #46 در merge 97c7b85b ادغام شد؛ CIهای 32198994714 و 32199969717 و deploy 32200480132 موفق‌اند و production اکنون Next 2.45.1 / .NET 4.4.4 containment است.","at":"2026-08-19T02:44:00+03:30","atTehran":"چهارشنبه ۲۸ مرداد ۱۴۰۵ — ۰۲:۴۴","tags":["fix","improvement","docs"],"items":["legacy payment bypass فقط همراه پنجرهٔ فعال UAT، allow-list معتبر، expiry معتبر، lease مستقل و پرداخت live خاموش معتبر است","demo از context server-owned و TestUser از stage دقیق فعال خود استفاده می‌کنند؛ global compatibility switch هیچ مجوز تازه‌ای به production عادی نمی‌دهد","خاموشی UAT در پنل، payment bypass را در همان transaction می‌بندد و audit می‌کند؛ enable ناقص با 422 رد می‌شود","closeout deploy پس از backup و زیر single-writer lock پنج override DB را idempotent می‌بندد و فقط audit aggregate بدون PII می‌سازد","هیچ User/principal/session/CoreSnapshot/EventLog حذف یا بازنویسی نمی‌شود؛ معیار release برابری fingerprint قبل/بعد، quick/FK سالم و quarantine صفر است","گیت محلی کامل: CI و build 172 مسیر، applicant UAT 45/45، backend 194/194، settings 23/23، closeout 10/10، deploy 91/91، fixtures 26/26، E2E 92/92، Playwright 39 پاس + 4 skip و .NET 337/337","artifact 9347302953 با digest 20296816…ee6f و backup/rollback 20260819T001516Z مستقر شد؛ fingerprint 36 ردیف ثابت، trusted=32، quarantine=0، quick/FK سالم و mutation تاریخچه صفر است","سه دور public/origin نسخه 2.45.1 و هر دو gate خاموش را تأیید کردند؛ OTP/SystemUser احراز‌شده و هیچ POST/provider/payment یا پول واقعی اجرا نشد"],"url":"https://vam.ati.ir/changelog#2026-08-19-v2-45-1-uat-closeout-invariant"},{"id":"2026-08-18-v2-45-0-production-account-context","version":"2.45.0","cycle":"LIVE Next 2.45.0 · هویت production و context چندنقشی","publication":"live","title":"دو data-plane، حساب واحد و نمایش امن فعالیت تست","summary":"LIVE در زمان انتشار: PR #43 در merge 30a60f09 ادغام شد؛ CIهای 32185142100 و 32185821450، deploy 32186852642 و closeout UAT برابر 32191081441 موفق‌اند و Next 2.45.0 / .NET 4.4.4 containment را مستقر کردند؛ وضعیت جاری در ورودی 2.45.1 بالاتر ثبت شده است.","at":"2026-08-19T00:46:00+03:30","atTehran":"چهارشنبه ۲۸ مرداد ۱۴۰۵ — ۰۰:۴۶","tags":["feature","fix","improvement","docs"],"items":["AccountIdentity و AccountPrincipal، data-planeهای demo/production و activityهای real/test/synthetic را بدون بانک سوم تفکیک می‌کنند؛ شمارهٔ عمومی هم‌نام در دو data-plane مستقل می‌ماند","migration افزایشی principalهای legacy uat-v1 را بدون حذف یا بازنویسی CoreSnapshot/EventLog link می‌کند و collision مبهم را fail-closed نگه می‌دارد","GET/PATCH canonical پشتیبانی، overview و ADT را به یک query با scope، redaction، optimistic version، assignment، SLA و audit متصل می‌کند","فهرست canonical حساب‌های production هر موبایل را یک‌بار با facetهای real/test/staff نشان می‌دهد و Customer 360 را در tab مستقل حفظ می‌کند","/api/auth/me union پنل‌ها و contextهای همان AccountIdentity را می‌دهد؛ POST /api/auth/context فقط workspace را عوض می‌کند و مجوز تازه نمی‌سازد","فعالیت test در عملیات دیده می‌شود، اما KPI مالی، provider، payment، ledger، settlement و انتقال وجه فقط production/real را می‌پذیرند","cleanup مخرب legacy UAT بازنشسته و audit aggregate/hash و backup آنلاین با quick_check/FK/SHA-256 به گیت migration افزوده شده است","گیت source محلی پاس است: npm run ci با TypeScript و build 172 مسیر، E2E 92/92، Playwright برابر 39 passed + 4 skipped و .NET برابر 337/337 = 264+73؛ CI رسمی PR و post-merge نیز PASS است","artifact 9342759408 با digest e9aa4858922bd834c86e91c4844f6c33e1ecf4a80dc9de2932d23518d8d66d94 مستقر شد؛ backup و rollback target با زمان 20260818T211703Z حفظ شدند","migration 26 پس از rehearsal اعمال شد؛ CoreSnapshot rows=34 با SHA-256 برابر 572d2dc5c8869ef42711a74a7c1c6e08de77b3272645bef6ba85179aa5ae221f ثابت، quick/FK سالم، trusted=30، quarantine=0 و mutation تاریخچه صفر بود","closeout 32191081441 با artifact 9344205190 و backup/rollback 20260818T220619Z پنجرهٔ legacy UAT و no-money payment bypass را بدون cleanup بست؛ health هر دو را enabled=false گزارش می‌کند","سه دور public/origin روی ۹ مسیر و anonymous boundaryهای 401/no-store PASS شدند؛ OTP/SystemUser و هیچ POST/provider/payment یا پول واقعی اجرا نشد"],"url":"https://vam.ati.ir/changelog#2026-08-18-v2-45-0-production-account-context"},{"id":"2026-08-17-v2-44-0-managed-uat-user-control","version":"2.44.0","cycle":"LIVE Next 2.44.0 · کنترل واحد کاربران و managed UAT","publication":"live","title":"دایرکتوری همهٔ کاربران و عبور مرحله‌ایِ ایزوله برای آزمون سفر اعتبار","summary":"LIVE در زمان انتشار: feature/deploy source baseline a0a8da19070773c318b0316e1fece81a220a8dc0، post-merge CI 32030359086 و deploy 32031030789 موفق‌اند؛ public/origin Next 2.44.0 و .NET 4.4.4 containment را گزارش کردند و migration 25 applied شد. وضعیت جاری در ورودی 2.45.1 ثبت شده است.","at":"2026-08-17T01:05:00+03:30","atTehran":"دوشنبه ۲۶ مرداد ۱۴۰۵ — ۰۱:۰۵","tags":["feature","improvement","deploy","docs"],"items":["همهٔ کاربران حقیقی، متقاضی، عضو حقوقی، ستادی و تست در /dashboard/system/roles با facetهای هویتی، نام کاربری/نام نمایشی، lifecycle، metadata اعتبارسنجی‌شدهٔ اشتراک، حضور و activity sanitize‌شده یکپارچه می‌شوند؛ metadata اشتراک entitlement یا مجوز اجرایی نیست","lifecycle محدود active/inactive/archived با CAS و audit اتمیک است؛ غیرفعال/آرشیو نشست‌ها را revoke و حساب‌های ستادی/تست متناظر را غیرفعال می‌کند","مالک 09113343385 همیشه قابل مشاهده و برای خود یا هر مدیر در نام کاربری، نقش، اشتراک، lifecycle، فعال‌سازی، آرشیو، بازیابی و حذف تغییرناپذیر است","رجیستری finite شامل دقیقاً ۱۴ stage شاهکار، KYC، ثنا، CR24، حافظ، شبانیک، صیاد، فینوتک، دو هزینهٔ درخواست/پرونده، امضانو، شاپرک، کیف ریالی و تصویب وام است؛ unknown/unassigned deny-by-default می‌ماند","فقط نشست ایزوله managed_test_uat و TestUser فعال دارای همان stage مجوز عبور دارد؛ branch مجاز هیچ API بیرونی را صدا نمی‌زند و هیچ پول، settlement یا ledger واقعی نمی‌سازد","ماتریس per-user/per-stage در /dashboard/admin/settings با CAS و audit مدیریت می‌شود و مجوز به OTP production، quick-demo، کاربر یا stage دیگر سرایت نمی‌کند","Session.lastSeenAt و heartbeat محدودشده presence را به online/recent/offline/never تبدیل و activity فقط جزئیات allow-listed را نمایش می‌دهد","گیت قابلیت engine 295/295، backend 194/194، Merchant 5/5، applicant UAT 45/45، CR24 32/32، settings 23/23، TestUser 31/31، managed control-plane 18/18، SystemUser 19/19 + RBAC 6/6، demo-window 17/17، TypeScript و build 171 route/page را پاس کرده است","npm run test:dotnet برای 4.4.4 با Domain 264 + Infrastructure 73 = 337 PASS است؛ این release مسیرهای عمومی user-session دات‌نت را تا shared lifecycle به‌صورت fail-closed contain می‌کند و parity کنترل‌پلین ادعا نمی‌شود","Playwright CLI احراز‌شده روی DB یک‌بارمصرف با 25 migration PASS است: مالک 09113343385 visible/immutable و تمام کنترل‌هایش disabled، presence و activity/login log قابل مشاهده، ایجاد مستقیم TestUser برای مالک برابر 403، هر 14 کنترل مرحله دارای متن no-API/no-money و roles/settings در viewport 390px بدون document overflow هستند","PR #35 بدون bypass و با merge عادی در commit 78fa34dcf70d7e529bd9e1c14f9493f804e6e6c3 ادغام شد؛ post-merge CI run 32008288467 با node 7m07 و dotnet 54s PASS است","feature/deploy source baseline برابر a0a8da19070773c318b0316e1fece81a220a8dc0 بود؛ post-merge CI 32030359086 و deploy 32031030789 هر دو SUCCESS هستند",".NET 4.4.4 با deploy run 32008872453، artifact 9281015273، digest sha256:84b9d6e83336b9518f6c186783fcedaa6db2ff802bef660565717876be13c1c7، backup /var/backups/ativam/dotnet-20260817T081035Z و rollback /opt/ativam-dotnet.rollback-20260817T081035Z زنده است؛ public/origin smoke و native 104/104 PASS، اما public user auth/shared lifecycle=false و managed control/UAT=false و این فقط containment است","deploy artifact 9288878262 با size 1747437 و digest sha256:dcbb84c0e47f7c0bd8b7c3775d835079ebac49bd36e2aee5cc2d2fd4ff7bce72 از base image sha256:d649c27dae7ba0137b3cef5dd75baa422c08dc3d9e3fc0c23dfb172dc3cc6436 مستقر شد؛ backup /var/backups/ativam/nextjs-20260817T124104Z و rollback target /opt/ativam-app.rollback-20260817T124104Z ثبت و rollback واقعی رخ نداد","migration 25 در rehearsal/live applied و 25 found/all applied شد؛ discovered=19/scanned=15/excluded=4/trusted=15/invalid=0/quarantine=0/unsigned=0/usersSynced=15، mutation CoreSnapshot/authoritative=0، fingerprint rows=19 و sha256=b796da4ef7070747e9079415dbab0be9de21b4151248a92f06b3c3da5bb6efcf، quick/FK=ok و rollback rehearsal=verified بود","audit مستقل 32031504043 روی a0a8da1 با SUCCESS، quick_check=ok و FK=0 روی readonly disposable backup پاس شد و deploy را skip کرد؛ repair/audit پیشین 32028447760/32028578102 تاریخچهٔ تثبیت FK0 هستند","public/origin هر دو Next 2.44.0 و .NET 4.4.4/DB/native 104/104 را گزارش کردند؛ users endpointهای جدید 401 JSON/no-store و نه 404، boundaryهای قدیمی 401، شش صفحه 200 با security headers و dotnet auth/me+core/state برابر 503 fail-closed بودند","UAT/payment تا 2026-08-21T05:56:45.65Z و demo public تا 2026-08-23T09:42:08Z با TTL=45 و persona=12 حفظ شدند","هیچ OTP/login، POST یا provider mutation اجرا نشد؛ owner 09113343385 و managed-UAT زندهٔ no-API/no-money هنوز authenticated-smoked نشده‌اند","middleware deprecated، Turbopack NFT trace next.config و CS8601 قدیمی هشدارهای غیرمسدودند"],"url":"https://vam.ati.ir/changelog#2026-08-17-v2-44-0-managed-uat-user-control"},{"id":"2026-08-16-v2-43-0-system-accounting-iam","version":"2.43.0","cycle":"LIVE Next 2.43.0 · اتاق کنترل مالی و IAM چهارده‌نقشی","publication":"live","title":"حسابداری سیستم، IAM چهارده‌نقشی و جداسازی fail-closed دمو از production","summary":"LIVE در زمان انتشار: PR #32 در 2026-08-16T20:31:43Z با merge c28de5f ادغام شد؛ post-merge CI 31970800259 و deploy محافظت‌شده 31973281122 پاس هستند. public/origin Next 2.43.0 را گزارش کردند و .NET بدون تعویض روی 4.4.3/native 104/104 ماند. وضعیت جاری در ورودی 2.45.1 ثبت شده است.","at":"2026-08-17T00:54:25+03:30","atTehran":"دوشنبه ۲۶ مرداد ۱۴۰۵ — ۰۰:۵۴","tags":["feature","improvement","fix","deploy","docs"],"items":["IAM ستادی از چهار template به دقیقاً ۱۴ نقش و ماتریس ۲۴ ماژول × ۱۱ عملیات ارتقا یافت؛ precedence در همهٔ لایه‌ها deny > direct grant > role template است","SystemUser شامل extraPermissions، deniedPermissions، dataScope=all|assigned|own|read_only و version برای CAS است؛ audit snapshot قبل/بعد بازسازی‌پذیر و آخرین DB recovery sysadmin محافظت می‌شود","SystemRolesPanel فارسی/RTL دارای tri-state grant/deny، قلمرو داده، lifecycle، optimistic concurrency و حذف کنترل‌شده است؛ هویت env تغییرناپذیر می‌ماند","پنل و API همیار یک policy مشترک دارند: system-assistant به هر دو system.access و assistant.view نیاز دارد و direct deny هرکدام پنل و GET/POST را می‌بندد؛ command-assistant/API دقیقاً any-of loan.review، ledger.view یا ai.configure است. aggregateهای cross-user فقط برای dataScope=all|read_only و با permission ماژول پیش از query بار می‌شوند؛ own|assigned همهٔ loaderها را صفر می‌کند، فیلد denied حذف و integration failure فقط با system.audit+audit.view و mode=live شمرده می‌شود","داشبورد admin به loan.review+dashboard.view و داشبورد system به system.access+dashboard.view مقید است؛ count ماژول denied query نمی‌شود و system overview capabilityهای users/requests/profiles/merchants/providers/installments/support/audit را برای حذف KPI و task غیرمجاز به UI می‌دهد","چهار projection رابطه‌ای WalletIndex، TransactionIndex، SettlementIndex و CommissionIndex همراه dual-write/backfill و provenance امضاشده اضافه شدند","APIهای read-only /api/system/wallets، /api/system/transactions، /api/system/settlements و /api/system/fees فیلتر، pagination، totals جداگانهٔ IRT/IRR و reconciliation دارند؛ from/to فقط YYYY-MM-DD تهران است و to کل روز انتخاب‌شده را شامل می‌کند","propagation کارمزد cross-owner برای رویدادهای جدید runtime و subject طبیعی authoritative شد: کد عمومی دقیقاً یک MarketerIndex فعال/trusted/signed را resolve می‌کند؛ CoreState مشتری فقط referrerMarketerId/referrerMarketerAttributionId/referrerMarketerAttachedAt opaque و بدون PII/application بازاریاب نگه می‌دارد و attribution پس از خروج event اولیه از پنجرهٔ ۲۰۰تایی پایدار است؛ factهای امضاشده تا چهار owner فعال را در تراکنش CAS پیمایش و commissionهای pending_approval را با signed_cross_owner و source/idempotency دقیقاً یک‌بار در snapshot ذی‌نفع و CommissionIndex درج می‌کنند؛ زنجیره مبهم، مفقود، unsigned، demo/UAT، غیرفعال یا cyclic بدون write جزئی fail-closed است","مرز تاریخی forward-only است: هر دو backfill رابطه‌ای propagateMarketerCommissions=false و commissionReconciliation.mode=forward_only/propagationAttempted=false/historicalReconciliationPerformed=false دارند و reconciliation حساب legacy نیز commission گذشته را نمی‌سازد؛ بازسازی تاریخ پیش از قرارداد attribution/action پایدار فقط با workflow جداگانه operator-scoped، evidence امضاشده، revision دقیق و CAS اتمیک ممکن است و در release زندهٔ 2.43.0 وجود ندارد","محدودیت صریح release زندهٔ 2.43.0: LegalCoreSnapshot تا افزودن durable subject key به indexها materialize/backfill نمی‌شود و propagation امضاشدهٔ commission فقط subject طبیعی را پوشش می‌دهد؛ حسابداری کامل حقوقی ادعا نمی‌شود","اتاق کنترل مالی فارسی/RTL کیف اعتباری/نقدی، خرید/دفترکل، تسویه و کارمزد را با detail و CSV مجوزدار نشان می‌دهد؛ دادهٔ محرمانه فقط با permission صریح قابل مشاهده است","generic reverseEntry از API/UI حذف شد؛ refund به provenance و split دقیق credit/cash مقید است و purchase تسویه‌شده یا reward/commission بدون clawback را fail-closed رد می‌کند","merchant/marketer settlement به IBAN authoritative، digest منابع و idempotency مقید است؛ overlap، double-pay و مبلغ جزئی نامنطبق رد می‌شوند","تسویه و پرداخت در release زندهٔ 2.43.0 فقط ثبت دفتری است؛ adapter انتقال وجه، provider reference و ادعای واریز بانکی وجود ندارد","OTP عادی هر ۱۲ موبایل منتشرشدهٔ دمو را رد می‌کند؛ SystemUser/TestUser نمی‌توانند به موبایل دمو وصل شوند و index/audit/queue/KPI production فقط principal معتبر با snapshot امضاشده را می‌پذیرند","صف عملیات، directory و Customer 360 direct deny هر بخش را پیش از query رابطه‌ای اعمال می‌کنند؛ loaderهای loan/credit بخش denied اجرا نمی‌شوند و همهٔ queue/credit/board readهای production فقط relational-index authoritative هستند، پس index مفقود به‌جای snapshot fallback fail-closed است؛ ownerهای trusted یک‌بار در هر request verify/reuse می‌شوند، اما scan هنوز unbounded و O(total CoreSnapshot bytes) و فقط مناسب cardinality کوچک فعلی است","بدون permission محرمانگی متناظر PII/referenceهای directory و queue redacted و search روی دادهٔ پنهان بسته است؛ review حقوقی بدون organizations.confidential یک schema بستهٔ فقط‌خواندنی با opaque id/status/readiness/count می‌گیرد و هیچ هویت، بانک، document reference/hash یا قاعدهٔ اختیار امضا در API/UI نمایش نمی‌دهد؛ POST تصمیم حقوقی organizations.confidential را پیش از body/transaction می‌خواهد و assessment پرونده فقط با هر دو requests.confidential+users.confidential برمی‌گردد","deny مالی legacy پس از احراز actor دقیقاً یک audit پایدار denied و صفر mutation دارد؛ اعلان اصلاح مدرک/چک outcomeهای started/failed/sent را audit و coreStateUpdated/notificationSent را برمی‌گرداند؛ UI در partial failure هشدار می‌دهد و dossier/compliance/loan drawer را با state پایدارشده refresh می‌کند","TestUser.bypassPayment فقط هزینهٔ درخواست و هزینهٔ تشکیل پرونده را با simulated_no_money عبور می‌دهد؛ خرید، کیف، بازپرداخت و تکمیل provider همچنان قفل‌اند و هیچ انتقال وجهی رخ نمی‌دهد","bypassCr24، bypassKyc، bypassEmzano و bypassSana فقط ستون‌های سازگاری‌اند: runtime و پاسخ API آن‌ها را false می‌کنند، create/update با مقدار true پاسخ 422 می‌دهد و UI آن‌ها را toggle نمی‌کند؛ آستانه‌های اختصاصی CR24 و رکوردهای موجود حفظ می‌شوند و OTP production نمی‌تواند شاهد mock ثنا بسازد","کنترل‌پلین staff demo همواره synthetic/read-only است؛ real queue escape hatch حذف شده و پنل فاقد API authoritative موفقیت محلی نمایش نمی‌دهد","پنج migration release شامل test_user_bypass_sana، system_user، system_accounting_indexes، system_user_scope_secure_default و cross_owner_marketer_commission_provenance شمار production را از 19 به 24 رساندند؛ signed-only rehearsal/dry/apply/post برابر trusted=11، quarantine=0 و CoreSnapshot mutations=0 بود","شواهد source engine 295/295، backend 194/194، RBAC 6/6، SystemUser 18/18، accounting 24/24، TestUser 28/28، applicant-UAT 45/45، integration 27/27، AI 26/26، E2E HTTP 92/92، tsc و build 171/171 PASS است؛ artifact 9270370442 با ZIP SHA-256 06be9ff4f5e8433269421d83b9096456ae839672e3bb609b76ae215c4a948a5c و runtime base-image sha256:d649c27dae7ba0137b3cef5dd75baa422c08dc3d9e3fc0c23dfb172dc3cc6436 deploy شد؛ backup/rollback 20260816T212235Z، سه دور public/origin health، یک pass endpointهای حساس بی‌نشست public/origin با 401 و Chromium زنده 1/1 در پنج مسیر PASS هستند","باقیمانده: journey تعاملی OTP واقعی SystemUser و write مالی زنده اجرا نشده؛ demo عمومی 12 persona تا 2026-08-23T09:42:08Z و UAT/payment bypass ایزوله تا 2026-08-21T05:56:45.650Z فعال است؛ Emzano/adapters/payment unavailable و productionAdaptersReady/cutoverReady=false باقی مانده‌اند"],"url":"https://vam.ati.ir/changelog#2026-08-16-v2-43-0-system-accounting-iam"},{"id":"2026-08-15-v2-42-1-admin-queue-mock-data-fix","version":"2.42.1","cycle":"LIVE Next 2.42.1 · رفع نشت دادهٔ مصنوعی در صف عملیات اتاق فرمان","publication":"live","title":"رفع نشت دادهٔ مصنوعی در داشبورد مدیر عملیات و تازه‌سازی workspaceهای ستادی دمو","summary":"LIVE: پرسوناهای ستادی دمو (command-*) دیگر با seedDemoData پر نمی‌شوند و از workspace تازه شروع می‌کنند؛ صف عملیات اتاق فرمان همچنان درخواست‌های کاربران دمو را نشان می‌دهد اما projection خود workspace را به‌عنوان دادهٔ واقعی نمایش نمی‌دهد. AdminOperationsPanel اکنون banner sandbox/realAdminQueue دارد.","at":"2026-08-15T04:20:12+03:30","atTehran":"شنبه ۲۴ مرداد ۱۴۰۵ — ۰۴:۲۰","tags":["fix","improvement"],"items":["accounts.ts: FRESH_START_DEMO_PERSONA_IDS اکنون شامل command-operator، command-ops-manager، command-finance-manager، command-sysadmin و system-demo-sysadmin است","demo-workspace.ts: staff demo snapshots قدیمی/seeded دیگر preserve نمی‌شوند؛ با هر ورود از workspace تازه شروع می‌کنند","admin-queue.ts / credit-queue.ts: VALID_MOBILE_USER_WHERE فقط principalهای مصنوعی __... را فیلتر می‌کند؛ کاربران دمو با موبایل واقعی همچنان در صف عملیات می‌مانند","demo-production-read-isolation-tests.ts: assertionهای جدید ثابت می‌کنند صف عملیات دمو را include می‌کند درحالی‌که health/migration demo users را exclude می‌کند","src/app/api/admin/operations/route.ts: فیلدهای sandbox و realAdminQueue حالا داخل queue payload قرار گرفته‌اند","AdminOperationsPanel.tsx: banner سبز/نارنجی صف واقعی در مقابل سندباکس دمو؛ source ایندکس/.snapshot همچنان نمایش داده می‌شود","npm test کامل (engine + backend + legal/UAT/demo suites) پاس؛ build 167 صفحه بدون خطا"],"url":"https://vam.ati.ir/changelog#2026-08-15-v2-42-1-admin-queue-mock-data-fix"},{"id":"2026-08-15-v2-42-0-data-unification","version":"2.42.0","cycle":"LIVE Next 2.42.0 · یکپارچه‌سازی منبع داده — حذف localStorage به‌عنوان منبع داده","publication":"live","title":"یکپارچه‌سازی منبع داده: حذف localStorage، موبایل واقعی دمو، صفر کردن DB","summary":"LIVE: همهٔ کاربران (دمو، OTP، واقعی) اکنون از یک بانک اطلاعاتی واحد سمت سرور می‌خوانند و می‌نویسند. localStorage دیگر منبع داده نیست — فقط پاک‌سازی defensive. کاربران دمو موبایل واقعی (09120000000-09120000011) دارند به‌جای principal مصنوعی __demo-v1__:. اسکریپت zero-reset-db برای صفر کردن DB با حفظ audit logs اضافه شد.","at":"2026-08-15T01:47:37+03:30","atTehran":"شنبه ۲۴ مرداد ۱۴۰۵ — ۰۱:۴۷","tags":["feature","improvement","integration"],"items":["core.ts: hydrate() و commit() دیگر از localStorage استفاده نمی‌کنند — سرور تنها مرجع state","useAtiCore.ts: IS_PRODUCTION checks و local dispatch حذف شد — همهٔ actionها از سرور عبور می‌کنند","demo-auth.ts: readDemoSession/writeDemoSession/clearDemoSession neutralize شد — نشست فقط از سرور","DemoAuthProvider.tsx: localStorage fallback حذف شد — fail-closed در همهٔ محیط‌ها","accounts.ts: demoPrincipalKey اکنون موبایل واقعی برمی‌گرداند (09120000000-09120000011)","accounts.ts: demoPrincipalMatches() برای backward-compat با principalهای قدیمی __demo-v1__:","resolvePublicSessionMobile: OTP با موبایل واقعی مستقیم برمی‌گرداند، UAT namespaced باقی می‌ماند","session-core.ts، demo-workspace.ts، integration-session-owner.ts، handoff-admin.ts، demo-legal-policy.ts، applicant-contract-signing.ts: همگی از demoPrincipalMatches استفاده می‌کنند","admin-queue.ts، credit-queue.ts، health/route.ts: فیلتر NON_DEMO اکنون شامل notIn DEMO_MOBILE_NUMBERS است","migration-export.mjs: export مهاجرت اکنون demo users با موبایل واقعی را مستثنی می‌کند","demo-workspace-reset.ts: reset اکنون هم موبایل واقعی و هم principal قدیمی را target می‌کند","اسکریپت جدید scripts/zero-reset-db.mjs: صفر کردن DB با حفظ audit logs","privacy/page.tsx: متن حریم خصوصی به‌روز شد تا منبع داده سرور را بازتاب دهد","همهٔ تست‌ها (engine 268 + backend 190 + legal/UAT/demo suites) پاس شدند"],"url":"https://vam.ati.ir/changelog#2026-08-15-v2-42-0-data-unification"},{"id":"2026-08-14-v2-41-20-test-user-bypass-ui-and-settings-contrast","version":"2.41.20","cycle":"LIVE Next 2.41.20 · اعمال bypass کاربر تست در UI + اصلاح کنتراست پنل تنظیمات","publication":"live","title":"اعمال پرچم‌های عبور کاربر تست در جریان پرداخت + اصلاح رنگ‌بندی پنل تنظیمات","summary":"LIVE: پرچم‌های bypass کاربر تست (پرداخت/حافظ/احراز/امضا) اکنون از سرور به کلاینت propagat می‌شوند و دکمه‌های پرداخت/اعتبارسنجی در ویزارد برای کاربر تست فعال باز می‌شوند — مستقل از simulationMode سراسری. همچنین کنتراست پنل تنظیمات سیستم اصلاح شد.","at":"2026-08-14T23:33:09+03:30","atTehran":"جمعه ۲۳ مرداد ۱۴۰۵ — ۲۳:۳۳","tags":["fix","feature","improvement"],"items":["/api/auth/me اکنون testUserCapabilities را برمی‌گرداند (resolveTestUserCapabilities روی موبایل نشست)","DemoAuthProvider قابلیت‌های کاربر تست را در context expos می‌کند (EMPTY_CAPABILITIES inline — الگوی core-action-policy)","رفتار تاریخی همان artifact: CreditRequestWizard دکمه پرداخت، runDemoAdvance، مسیر سریع CR24 و پنل شبیه‌سازی رتبه را با bypassPayment/bypassCr24 کاربر تست un-gate می‌کرد","پیام وضعیت مخصوص کاربر تست در بخش پرداخت (accent-colored، متمایز از UAT amber)","اصلاح کنتراست: بدنه پنل تنظیمات به bg-slate-950 تبدیل شد تا تم تاریک AdminSettingsPanel/TestUsersPanel درست رندر شود","تست contract applicant-uat به‌روز شد تا الگوی testUserPaymentBypass را بپذیرد","مرز LIVE 2.43.0 دامنهٔ این قابلیت تاریخی را محدود می‌کند: فقط bypassPayment و فقط برای دو هزینهٔ درخواست/تشکیل پرونده با simulated_no_money مؤثر است؛ bypassCr24/bypassKyc/bypassEmzano/bypassSana در runtime و UI غیرفعال و فعال‌سازی API آن‌ها با 422 رد می‌شود"],"url":"https://vam.ati.ir/changelog#2026-08-14-v2-41-20-test-user-bypass-ui-and-settings-contrast"},{"id":"2026-08-14-v2-41-18-admin-settings-panel","version":"2.41.18","cycle":"LIVE Next 2.41.18 · پنل تنظیمات سیستم در داشبورد مدیریت","publication":"live","title":"پنل تنظیمات سیستم — ویرایش زنده UAT، پرداخت، حافظ و reset","summary":"LIVE: مدیر ارشد سامانه اکنون می‌تواند UAT window، allow-list موبایل، عبور پرداخت، آستانه‌های CR24 و reset دمو را از پنل مدیریت ویرایش کند — بدون نیاز به workflow GitHub.","at":"2026-08-14T11:00:00+03:30","atTehran":"جمعه ۲۳ مرداد ۱۴۰۵ — ۱۱:۰۰","tags":["feature","improvement","integration"],"items":["پنل جدید /dashboard/admin/settings با مجوز system.settings (sysadmin فقط)","۷ تنظیم قابل‌ویرایش: uat.enabled، uat.expires_at، uat.mobile_allowlist، payment_bypass.enabled، payment_bypass.expires_at، cr24.threshold_a، cr24.threshold_b","runtime از DB ادغام‌شده env می‌خواند (getSystemSettingsEnv) به‌جای process.env خالص؛ تغییرها hot-reload می‌شوند","عملیات مخرب (reset دمو + cleanup UAT) به‌صورت live button با maintenance lock و 503 موقت /api/core/action","همهٔ تغییرات در AdminOperationLog ثبت می‌شوند و موبایل‌های allow-list در UI mask می‌شوند","migration جدید 20260814120000_system_setting + ۱۳ گروه تست جدید system-settings-tests"],"url":"https://vam.ati.ir/changelog#2026-08-14-v2-41-18-admin-settings-panel"},{"id":"2026-08-14-v2-41-17-allowlisted-applicant-uat-live","version":"2.41.17","cycle":"LIVE Next 2.41.17 · UAT محدود متقاضی کارفرما + reset دمو + CR24 live","publication":"live","title":"UAT allow-listed، reset فرآیند دمو و CR24 زنده","summary":"LIVE: سه هدف کارفرما به‌صورت ورودی‌های مستقل deploy فعال شدند — reset دمو، پنجرهٔ UAT ۷روزه با allow-list موبایل، و حافظ/CR24 در mode=live با directSoap.","at":"2026-08-14T10:00:00+03:30","atTehran":"جمعه ۲۳ مرداد ۱۴۰۵ — ۱۰:۰۰","tags":["feature","integration","docs"],"items":["فقط موبایل عضو allow-list محرمانهٔ سرور با OTP عادی live و challenge معتبر وارد می‌شود؛ allow-list خالی/نامعتبر، انقضا و OTP ثابت fail-closed هستند","uat-v1 از EventLog، index، صف‌های admin، KPI و backfill جداست و full browser-state sync ندارد","حافظ/CR24 در UAT الزاماً live/ready است و نبود تنظیم/readiness یا خطای upstream fail-closed؛ fallback فقط برای checkpointهای غیرحافظ صریحاً آزمایشی","عبور هر دو هزینه با opt-in و انقضای مستقل حداکثر ۱۲۰روزه و Jibit خاموش، نتیجهٔ simulated_no_money دارد؛ انقضا بدون restart مسیر را می‌بندد و هیچ invoice/session/debit بانکی ساخته نمی‌شود","حافظ/CR24 برای UAT و مسیر اصلی حقیقی از SOAP اصلی استفاده می‌کند و نبود readiness نیز به mock تنزل نمی‌کند؛ quick-login مصنوعی mock و نبود شبانیک hybrid خنثی است","RegInfo فقط پس از تطابق مثبت اجرا می‌شود؛ Generated کد ۴–۸رقمی می‌خواهد و Repeated فقط با وضعیت persisted سرور، BankCs را با SOAP nil ادامه می‌دهد","reset مستقل deploy، beneficiary-natural، organization-admin و subject مشترک legal-beneficiary را پس از backup معتبر از ابتدا می‌سازد؛ Userها و personaهای role-dashboard حفظ می‌شوند و حقوقی در draft بدون KYB/loan ازپیش‌تکمیل‌شده آغاز می‌شود","رتبه C در candidate با دعوت opaque هویت‌مقید، پذیرش حساب دوم، CAS مالک و امضای ضامنِ مقید به هش سند قابل تکمیل است؛ cross-scope و generic action قفل و snapshot ضامن دست‌نخورده است؛ نشست‌های integration مالک/scope سروری دارند و cleanup دقیق UAT پس از backup و کنترل عدم نشت فراهم است","گیت نهایی Node 22 سبز است: npm run ci، build production با 166 صفحه، UAT 44/44، provider/transport حافظ 32/32، backend 190/190، engine 268/268، deploy 54/54، demo-window 17/17، integration 11/11 و cleanup اختصاصی PASS؛ journey A/B/C برابر 39/39، E2E HTTP برابر 79/79 و Playwright دوازده persona برابر 7/7 نیز پاس‌اند. deploy تراکنشی run 31775504452 از commit 63baa76c LIVE شد و health عمومی/origin نسخهٔ 2.41.17، CR24 live/ready، applicantUatWindow.enabled و applicantPaymentBypass.enabled را تأیید کرد. APPLICANT_UAT_MOBILES فعلاً placeholder است و کارفرما باید موبایل‌های واقعی را جایگزین کند؛ آستانه‌های CR24 برابر A=700, B=520 تنظیم شدند"],"url":"https://vam.ati.ir/changelog#2026-08-14-v2-41-17-allowlisted-applicant-uat-live"},{"id":"2026-08-12-v2-41-16-demo-payment-live","version":"2.41.16","cycle":"LIVE Next 2.41.16 / .NET 4.4.3 · درگاه پرداخت نمایشی","publication":"live","title":"درگاه پرداخت نمایشی سفر اعتبار","summary":"عبور کنترل‌شده از مرحله پرداخت برای نشست دمو، بدون فراخوانی درگاه واقعی یا جابه‌جایی وجه.","at":"2026-08-12T14:45:00+03:30","atTehran":"چهارشنبه ۲۱ مرداد ۱۴۰۵ — ۱۴:۴۵","tags":["feature","improvement","docs"],"items":["درگاه نمایشی کاربر حقیقی با گیت نشست demo-v1 و بدون جابه‌جایی وجه","alias مسیر فقط به مقصد canonical پنل beneficiary نگاشت می‌شود و redirect ناخواستهٔ route رفع شده است","mutation از /api/core/action و workspace ایزولهٔ دمو عبور می‌کند","APIهای پرداخت واقعی و ATIVAM_PAYMENTS_LIVE_ENABLED همچنان خاموش‌اند","CI main run 31599452977 و deploy تراکنشی run 31600003820 پاس؛ public/origin و desktop/mobile smoke تأیید شدند","artifact e487c386…e8884، backup nextjs-20260812T131011Z و rollback ativam-app.rollback-20260812T131011Z ثبت شدند"],"url":"https://vam.ati.ir/changelog#2026-08-12-v2-41-16-demo-payment-live"},{"id":"2026-08-11-v2-41-15-secure-ops-release-live","version":"2.41.15","cycle":"LIVE Next 2.41.15 / .NET 4.4.3 · عملیات امن و هم‌ترازی","publication":"live","title":"مرز امن demo/production و هم‌ترازی اکشن چک","summary":"در release تاریخی 2.41.15 نشست ops_manager دمو در production sandbox بود و opt-in صف واقعی فقط در non-production اعتبار داشت؛ LIVE 2.43.0 آن escape hatch را کامل حذف می‌کند.","at":"2026-08-11T21:10:00+03:30","atTehran":"سه‌شنبه ۲۰ مرداد ۱۴۰۵ — ۲۱:۱۰","tags":["feature","improvement","docs"],"items":["opt-in تاریخی ATIVAM_DEMO_OPS_MANAGER_REAL_QUEUE در LIVE 2.43.0 همواره بی‌اثر است و staff demo فقط synthetic/read-only می‌ماند","اپراتور واقعی با OTP عادی و HANDOFF_OPERATOR_MOBILES به RBAC عملیات دسترسی می‌گیرد","requestFilledChequeDocument در Node/C# allowlist/native bridge هم‌تراز و runtime parity برابر 104/104 است","CI مرج 31549419135 و deploy تراکنشی 31551663879 پاس؛ public/origin و rollback تأیید شده‌اند"],"url":"https://vam.ati.ir/changelog#2026-08-11-v2-41-15-secure-ops-release-live"},{"id":"2026-08-11-v2-41-15-ops-board-insurance-15m-live","version":"2.41.15","cycle":"دامنه LIVE · عملیات شخص حقیقی + بیمه اعتباری ۱۵م","publication":"live","title":"بورد عملیات، پیش‌نمایش مدارک و سقف بیمه اعتباری ۱۵ میلیون","summary":"بورد/Drawer عملیات برای پرونده و سفر اعتبار، پیش‌نمایش مدرک داخل صفحه، اصلاح مدارک، و سقف insurance_purchase پنج‌تاپانزده میلیون با هم‌ترازی Value/Risk؛ هنوز LIVE نیست.","at":"2026-08-11T20:45:00+03:30","atTehran":"سه‌شنبه ۲۰ مرداد ۱۴۰۵ — ۲۰:۴۵","tags":["feature","improvement","docs"],"items":["بورد شخص حقیقی و صف عملیات قابل‌کلیک؛ Drawer پرونده با پروفایل حافظ، مدارک، رد/تأیید و تصویب کمیته","پیش‌نمایش فایل مدرک داخل Drawer (تصویر/PDF) به‌جای فقط تب جدید","بیمه اعتباری: سقف کاتالوگ ۵–۱۵م · ۳/۶/۱۰؛ مهاجرت طرح ذخیره‌شدهٔ ۱۰م در platformValueRisk","یادآور اقساط، SMS اصلاح مدرک، CR24 direct SOAP زنده، migration activatedAt؛ تست واحد mock همچنان ایزوله","credential health با شناسه مصنوعی پذیرفته شد؛ هیچ داده واقعی مشتری یا نتیجه اعتباری ادعا نمی‌شود"],"url":"https://vam.ati.ir/changelog#2026-08-11-v2-41-15-ops-board-insurance-15m-live"},{"id":"2026-08-09-v2-41-15-natural-user-panel-corrections-live","version":"2.41.15","cycle":"دامنه LIVE · اصلاح ایمنی پنل کاربر حقیقی","publication":"live","title":"اصلاحات پنل کاربر حقیقی و هم‌ترازی release","summary":"این release تاریخی ماتریس طرح/مدارک، منو، پروفایل نرم، گیت CR24≥۵۲۰ و UX ویزارد را هم‌تراز کرد؛ life_insurance تا ورود valuation تأییدشدهٔ provider فقط درخواست‌پذیر است و baseline فعلی Next 2.45.1/.NET 4.4.4 containment است.","at":"2026-08-09T01:50:00+03:30","atTehran":"یکشنبه ۱۸ مرداد ۱۴۰۵ — ۰۱:۵۰","tags":["feature","improvement","docs"],"items":["منو: حذف پذیرندگی/تأمین‌کننده؛ افزودن اقساط من و پروفایل؛ بنر قرمز KYC مخفی؛ تأیید خروج؛ کیف‌ها کارت‌محور؛ تراکنش‌ها expandable","محصول: insurance_purchase ۵–۱۵م و فقط اقساط ۳/۶/۱۰ در Next/.NET؛ life_insurance تا ۲۰۰م، اما تصویب/فعال‌سازی بدون valuation provider fail-closed و reviseLifeInsuranceLoanAmount حذف است","مدارک عمومی فقط کارت ملی؛ چک‌لیست گواهی اشتغال + راهنمای شغلی؛ CR24 thresholdB=۵۲۰ و hard-reject معوق/برگشتی","P-PROF2: سینک هویت→updateOptionalProfile؛ J9: وضعیت انتظار بررسی در ویزارد و خانه؛ کاروسل طرح‌ها index-based برای RTL","شواهد release: engine 268/268، backend 190/190، .NET 320/320، UI 13/13، CI و deploy production پاس؛ درصد دامنه ≈۸۰٪ (valuation provider، I-PAY live، OR-docs و parity اسکرین تراکنش باز)","artifact SHA-256 و backup/rollback ثبت شده و health عمومی و origin نسخه‌های زنده را تأیید می‌کنند"],"url":"https://vam.ati.ir/changelog#2026-08-09-v2-41-15-natural-user-panel-corrections-live"},{"id":"2026-08-03-v2-41-13-rehearsal-report-and-demo-window-live","version":"2.41.13","cycle":"عملیات deploy-control · Next 2.41.13","publication":"live","title":"رفع مرز مجوز گزارش rehearsal و فعال‌سازی زمان‌دار ورود سریع","summary":"استقرار کنترل‌شدهٔ Next.js گزارش rehearsal را در هر دو مدل sudo ایمن نگه می‌دارد؛ public/origin پنجرهٔ دمو را برای ۱۲ persona با TTL ۴۵ دقیقه و انقضای سروری تأیید کردند.","at":"2026-08-03T18:20:30+03:30","atTehran":"دوشنبه ۱۲ مرداد ۱۴۰۵ — ۱۸:۲۰","tags":["fix","deploy","docs"],"items":["commit main a25efe9 مسیرهای نوشتن گزارش rehearsal را داخل مرز sudo و stream migration را با Bash pipefail اجرا می‌کند؛ گزارش 0600 و staging محدود باقی می‌مانند","Deploy production #30824387825 artifact production-release-30824387825-1 را با checksum تأیید کرد؛ backup و rollback تراکنشی ثبت شدند","GET /api/demo/session در public و origin، enabled=true، accessMode=public، personaCount=12، sessionTtlMinutes=45 و until=2026-08-03T16:47:21.000Z را گزارش کرد","Next 2.41.13 و .NET 4.4.1/CoreState v11 سالم‌اند؛ .NET در این run تعویض نشد و OTP/UAT، دادهٔ واقعی، Handoff/admin/cross-user و connectorهای بیرونی مجوز تازه‌ای نگرفتند"],"url":"https://vam.ati.ir/changelog#2026-08-03-v2-41-13-rehearsal-report-and-demo-window-live"},{"id":"2026-08-03-v4-4-1-micro-credit-contract-live","version":"4.4.1","cycle":"LIVE .NET 4.4.1 · checksum + transactional deploy","publication":"live","title":"همگام‌سازی قرارداد مبلغ اعتبار خرد در runtime مرجع .NET","summary":"source و runtime زنده پنج مبلغ ۱ تا ۵ میلیون تومان را برای اعتبار خرد با گام یک‌میلیونی می‌پذیرند؛ استقرار .NET 4.4.1 با checksum و smoke مستقیم/public/origin تأیید شده است.","at":"2026-08-03T16:53:01+03:30","atTehran":"دوشنبه ۱۲ مرداد ۱۴۰۵ — ۱۶:۵۳","tags":["fix","integration","docs"],"items":["تغییر هدف سه‌فایلی feature 702f897 در CoreEngine.KycAdvanced.cs، Products.cs و KycAdvancedEngineTests.cs قرار دارد","مبالغ ۵۰۰هزار، ۱٫۵میلیون و ۶میلیون fail-closed رد می‌شوند و گام سایر طرح‌های حقیقی پنج‌میلیونی باقی می‌ماند","کل solution در Release برابر 307/307 = 250 domain + 57 infrastructure پاس است؛ CoreState v11 و migrationها ثابت‌اند","version source، default smoke و runtime production روی 4.4.1/native 102/102 هم‌راستا هستند","workflow محافظت‌شدهٔ Deploy production #30817492127 artifact compiled-only را checksum، transactional deploy و health مستقیم/public-or-origin را PASS کرد","CoreState v11 ثابت و adapter/state-transfer/cutover همچنان بسته‌اند؛ LIVE بودن runtime مجوز provider یا mutation بیرونی ایجاد نمی‌کند"],"url":"https://vam.ati.ir/changelog#2026-08-03-v4-4-1-micro-credit-contract-live"},{"id":"2026-08-03-v2-41-13-demo-status-truth-live","version":"2.41.13","cycle":"LIVE Next 2.41.13 / .NET 4.4.1 · demo status truth","publication":"live","title":"نمایش وضعیت ورود سریع از گیت زندهٔ سرور","summary":"متن‌های تاریخ‌دار و متناقض صفحهٔ دمو حذف شدند؛ بنر public/keyed/disabled فقط پاسخ sanitize‌شدهٔ GET /api/demo/session را مرجع می‌گیرد و release روی production تأیید شده است.","at":"2026-08-03T05:00:00+03:30","atTehran":"دوشنبه ۱۲ مرداد ۱۴۰۵ — ۰۵:۰۰","tags":["fix","deploy","docs"],"items":["حالت disabled دیگر ادعای بازبودن پنجرهٔ منقضی را نشان نمی‌دهد و دکمه‌ها را صریحاً fail-closed اعلام می‌کند","تاریخ‌های releaseهای تاریخی به‌عنوان شاهد تاریخی باقی می‌مانند، اما هیچ‌کدام وضعیت جاری را تعیین نمی‌کنند","در snapshot زندهٔ 2026-08-03، public و origin پنجرهٔ public را برای ۱۲ persona تا 2026-08-03T13:43:23Z و TTL برابر ۴۵ دقیقه گزارش کردند؛ availability جاری فقط از API خوانده می‌شود و OTP/UAT عادی، دادهٔ واقعی و connectorها مجوز تازه‌ای نمی‌گیرند","دامنهٔ آن release فقط UI/docs/test بود؛ API و CoreState v11 تغییر نکردند و runtime فعلی .NET 4.4.1 همچنان adapter/cutover را بسته نگه می‌دارد","CI 626.6s، production-like 7/7، production 2/2 با ورود هر ۱۲ persona، security/strict integration و public/origin PASS؛ artifact 6c35b7b…1cb0f9 و backup/rollback ثبت شده‌اند","crawl زنده 101/101 route و 113/113 asset را تأیید کرد؛ findingهای کنتراست ADT و heading فوتر رفع شدند و unused JavaScript/long task به‌عنوان debt کارایی صادقانه باقی ماند","تاریخ timeline ارائه با faDateTehran و timezone صریح render می‌شود تا متن SSR لینوکس UTC و مرورگر یکسان و hydration پایدار باشد"],"url":"https://vam.ati.ir/changelog#2026-08-03-v2-41-13-demo-status-truth-live"},{"id":"2026-07-31-v2-41-12-adt-5585-support-routing-live","version":"2.41.12","cycle":"LIVE Next 2.41.12 / .NET 4.4.0 · پذیرش مالک PASS · resolved","publication":"live","title":"ارسال مستقیم تیکت به واحد انتخابی کاربر","summary":"ADT-20260726-5585 صفحهٔ پشتیبانی کاربر را به فرم واقعی انتخاب واحد و متن تیکت متصل می‌کند؛ قابلیت روی production 2.41.12 زنده است، کارفرما در 2026-08-01 آن را صریحاً تأیید کرد و تیکت پس از کنترل زندهٔ نهایی resolved شد.","at":"2026-08-01T01:17:42+03:30","atTehran":"شنبه ۱۰ مرداد ۱۴۰۵ — ۰۱:۱۷","tags":["fix","feature","docs"],"items":["در /dashboard/user/support کاربر یکی از شش واحد allow-listed را انتخاب می‌کند، متن ۱۰ تا ۴۰۰۰ کاراکتری می‌نویسد و شماره پیگیری دریافت می‌کند","API برای کانال user-support مقصد خالی یا ناشناخته را با کد پایدار و پیش از write رد می‌کند؛ ابزار عمومی /adt برای گزارش‌های قدیمی سازگار می‌ماند","destinationUnit به‌صورت nullable و index‌شده در AdtTicket ذخیره و در webhook، پنل ادمین، CSV و XLSX نمایش داده می‌شود","مرز امنیتی موجود حفظ است: ثبت واقعی فقط برای نشست OTP مجاز است و نشست demo به Handoff واقعی دسترسی ندارد","شواهد source: CI کامل با engine 222/222، backend 174/174، integration 10/10، deploy 29/29، AI 16/16، TypeScript و build 158 route؛ Playwright ایزوله 1/1 شامل OTP محلی، دو پاسخ fail-closed، ارسال UI، persistence مقصد finance و حذف رکورد مصنوعی PASS","feature 5974d3d / release 7706d41 / artifact 61f1af40…e6167؛ backup/rollback/upload و migration زنده ثبت‌شده، CoreSnapshot/index zero-mutation و 68 snapshot invalid حفظ‌شده","strict integration و سه دور public/origin 2026-07-31T12:09:43Z..12:10:26Z روی Next 2.41.12/.NET 4.4.0، هفت مسیر و HSTS/CSP PASS؛ UAT نوشتنی production برای پرهیز از OTP واقعی/رکورد کارفرما اجرا نشد، پذیرش صریح مالک در 2026-08-01 ثبت و status با backup سازگار به resolved منتقل شد"],"url":"https://vam.ati.ir/changelog#2026-07-31-v2-41-12-adt-5585-support-routing-live"},{"id":"2026-07-31-v2-41-11-adt-6086-duplicate-live","version":"2.41.11","cycle":"LIVE Next 2.41.11 / .NET 4.4.0 · تکمیل ردیابی","publication":"live","title":"تعیین تکلیف تیکت تکراری اعتبار خرد","summary":"ADT-20260726-6086 duplicate دقیق ADT-20260725-7454 است؛ همان قابلیت زندهٔ 2.41.11 تمام معیارها را پوشش می‌دهد و تغییر عملکردی یا افزایش نسخه لازم نیست.","at":"2026-07-31T11:04:00+03:30","atTehran":"جمعه ۹ مرداد ۱۴۰۵ — ۱۱:۰۴","tags":["fix","docs"],"items":["هر دو تیکت مسیر /dashboard/user/home و انتخاب اعتبار خرد از ۱ تا ۵ میلیون تومان با گام یک‌میلیونی را مطالبه می‌کنند","رفع مشترک از قبل در production Next 2.41.11 زنده است و با CI، قرارداد Next/.NET و Playwright محلی و production تأیید شده است","هر پنج مبلغ ۱ تا ۵ میلیون قابل انتخاب‌اند؛ تغییر مبلغ پذیرش شرایط را reset می‌کند و ۲ میلیون بدون months به ویزارد می‌رسد","این ثبت فقط رابطه duplicate را شفاف می‌کند؛ کد عملکردی، نسخه، سقف محصولات، دادهٔ کارفرما و runtime .NET تغییر نمی‌کنند","tracking overlay 25c3a9b / artifact 7213da19…4f9aa؛ backup/rollback/upload ثبت‌شده، CoreSnapshot/index zero-mutation و سه دور public/origin 07:53:34Z..07:54:35Z PASS"],"url":"https://vam.ati.ir/changelog#2026-07-31-v2-41-11-adt-6086-duplicate-live"},{"id":"2026-07-31-v2-41-11-adt-7454-micro-credit-range-live","version":"2.41.11","cycle":"LIVE Next 2.41.11 / .NET 4.4.0 · canonical","publication":"live","title":"انتخاب اعتبار خرد از ۱ تا ۵ میلیون تومان","summary":"کارت اعتبار خرد پنج مبلغ ۱ تا ۵ میلیون را با گام یک‌میلیونی می‌پذیرد و مبلغ منتخب را بدون گردکردن پنج‌میلیونی به ویزارد منتقل می‌کند.","at":"2026-07-31T02:55:14+03:30","atTehran":"جمعه ۹ مرداد ۱۴۰۵ — ۰۲:۵۵","tags":["fix","improvement","docs"],"items":["رفع زندهٔ ADT-20260725-7454؛ بازه کارت اعتبار خرد از ۱ تا ۵ میلیون تومان و گام انتخاب دقیقاً یک میلیون تومان است","هر پنج مبلغ ۱، ۲، ۳، ۴ و ۵ میلیون پذیرفته می‌شوند؛ ۵۰۰هزار، ۱٫۵میلیون و ۶میلیون fail-closed رد می‌شوند","مبلغ منتخب بدون months به ویزارد می‌رسد و همان مبلغ در انتخاب/پرداخت/درخواست ثبت می‌شود","قرارداد Next و source مرجع .NET هم‌تراز است؛ شبکه سایر طرح‌های حقیقی همچنان پنج‌میلیونی باقی می‌ماند","تغییر مبلغ، پذیرش شرایط را reset می‌کند و ورودی آزاد یا تغییر سقف سایر محصولات ایجاد نشده است","feature 702f897 / release 56fbaa8 / artifact 655ef997…b8db0c3 و truth overlay bd47412 / 75c3e9a0…14e4c8e4؛ CoreSnapshot صفر mutation، sync فقط ۳۷ index trusted مصنوعی و idempotency نهایی صفر؛ strict integration، سه دور public/origin و Playwright production 1/1 PASS"],"url":"https://vam.ati.ir/changelog#2026-07-31-v2-41-11-adt-7454-micro-credit-range-live"},{"id":"2026-07-30-v2-41-10-adt-6044-signup-terms-copy-live","version":"2.41.10","cycle":"LIVE Next 2.41.10 / .NET 4.4.0 · canonical","publication":"live","title":"متن پذیرش قوانین زیر کد دعوت ثبت‌نام","summary":"در حالت signup، متن دقیق پذیرش زیر کد دعوت دیده می‌شود و فقط عبارت قوانین و مقررات به صفحه رسمی لینک است؛ login و auth تغییر نمی‌کنند.","at":"2026-07-30T23:42:19+03:30","atTehran":"پنجشنبه ۸ مرداد ۱۴۰۵ — ۲۳:۴۲","tags":["fix","docs"],"items":["رفع ADT-20260725-6044؛ متن «با ادامه، قوانین و مقررات آتی‌وام را می‌پذیرم.» فقط در signup و زیر کد دعوت نمایش داده می‌شود","فقط عبارت «قوانین و مقررات» به https://ativam.com/terms-and-conditions/ با target=_blank و rel=noopener noreferrer لینک می‌شود","حالت login، درخواست/تأیید OTP، نشست و رفتارهای auth بدون تغییر باقی می‌مانند","این متن پذیرش ضمنی UI است و checkbox، رضایت نسخه‌دار، consent ledger یا audit server-side ایجاد نمی‌کند","source gates: npm run ci در 267s با engine 219/219، backend 171/171، deploy 29/29، AI 16/16، TypeScript و build 156 route PASS؛ Playwright محلی 1/1 PASS","LIVE: feature dd2c639، release d1f3426، artifact 58608080…eb93d، backup/rollback 20260730T200850Z، CoreSnapshot/index zero-mutation، strict integration و سه دور public/origin 2.41.10 PASS","Playwright production بدون OTP یا mutation برابر 1/1 PASS؛ .NET 4.4.0/native 101/101 بدون تعویض سالم ماند"],"url":"https://vam.ati.ir/changelog#2026-07-30-v2-41-10-adt-6044-signup-terms-copy-live"},{"id":"2026-07-30-v2-41-9-adt-5330-disable-legal-self-service-live","version":"2.41.9","cycle":"LIVE Next 2.41.9 / .NET 4.4.0 · canonical","publication":"live","title":"بستن ایجاد سلف‌سرویس شخصیت حقوقی در مرز API","summary":"اکشن create_entity پیش از هر مسیر نوشتن با 403 و کد پایدار legal_self_service_disabled بسته شد؛ production در زمان انتشار Next 2.41.9 بود.","at":"2026-07-30T21:43:31+03:30","atTehran":"پنجشنبه ۸ مرداد ۱۴۰۵ — ۲۱:۴۳","tags":["fix","deploy","docs"],"items":["رفع زندهٔ ADT-20260720-5330؛ POST /api/legal/beneficiary برای action=create_entity پاسخ 403 و Cache-Control: no-store می‌دهد","معیار پذیرش fail-closed: صفر mutation روی LegalEntity، LegalEntityMember، EventLog و Session حتی با payload کامل و معتبر","فرم سلف‌سرویس از 2.38 در UI حذف بود؛ این تغییر فقط مرز API را هم‌راستا می‌کند و UI تازه‌ای نمی‌سازد","چرخه داخلی draft → pending_review → approved، دعوت نماینده و کنترل‌های compliance حفظ می‌شوند","این release endpoint اپراتوری تازه‌ای نمی‌سازد؛ onboarding حقوقی production با RBAC و audit همچنان خروجی جداگانه و آماده‌نشده است","source gates: feature ce134e3 · release 762375d · CI 251s · Node 390/390 · TypeScript · build 156 route · Playwright اختصاصی 1/1 PASS","deploy LIVE: artifact a650080b…ae30a · backup/rollback nextjs-20260730T181044Z · CoreSnapshot صفر mutation، ۳۷ index معتبر ایجاد، invalid/untrusted حفظ و idempotency نهایی صفر mutation · strict integration و سه دور public/origin 2.41.9 PASS؛ anonymous 401/no-store و صفحات عمومی 200","شاخه authenticated 403 برای جلوگیری از OTP/دادهٔ واقعی فقط در E2E ایزوله آزمون شد؛ مرورگر متصل هنگام smoke نهایی در دسترس نبود",".NET 4.4.0 تعویض نشد و health public/origin با native 101/101 سالم ماند"],"url":"https://vam.ati.ir/changelog#2026-07-30-v2-41-9-adt-5330-disable-legal-self-service-live"},{"id":"2026-07-30-v2-41-8-adt-5787-guided-credit-advisor-live","version":"2.41.8","cycle":"LIVE Next 2.41.8 / .NET 4.4.0 · canonical","publication":"live","title":"مصاحبهٔ هدایت‌شدهٔ همیار مسیر اعتبار","summary":"کاربر با سه پرسش درآمد، وضعیت شغلی و نوع نیاز به یک پیشنهاد اولیه از کاتالوگ طرح‌ها می‌رسد؛ این جریان client-local، قاعده‌محور و بدون mutation است.","at":"2026-07-30T01:50:00+03:30","atTehran":"پنجشنبه ۸ مرداد ۱۴۰۵ — ۰۱:۵۰","tags":["fix","feature","deploy","docs"],"items":["رفع ADT-20260726-5787؛ مصاحبهٔ سه‌مرحله‌ای پیش از میز گفت‌وگوی AI در پنل کاربر منتشر شد","پیشنهاد اولیه فقط از طرح‌های موجود ساخته می‌شود و صریحاً جایگزین اعتبارسنجی، تأیید یا تضمین سقف نیست","وضعیت شغلی نامشخص نمی‌تواند صرفاً با اعلام درآمد پیشنهاد سقف بالاتر بگیرد و به بررسی رسمی هدایت می‌شود","پاسخ‌ها در state مرورگر می‌مانند و هیچ پرونده، امتیاز، persistence یا mutation ایجاد نمی‌کنند","مصاحبه قاعده‌محور است؛ workspace واقعی AI و گیت provider/moderation بدون fallback ساختگی حفظ شده‌اند","source gates: feature d938df7 · release cac513b · CI 332s · Node 390/390 · AI 16/16 · deploy 29/29 · TypeScript · build 156 route · Playwright جریان اصلی و شغل نامشخص PASS","deploy LIVE: artifact e1f18923…a6e79 · backup/rollback nextjs-20260729T222910Z · backfill صفر mutation، strict integration و سه دور public/origin 2.41.8 پاس؛ مرورگر زنده هر دو شاخه را با صفر mutation/خطای صفحه تأیید کرد"],"url":"https://vam.ati.ir/changelog#2026-07-30-v2-41-8-adt-5787-guided-credit-advisor-live"},{"id":"2026-07-29-v2-41-7-adt-9409-merchant-directory-channels-live","version":"2.41.7","cycle":"LIVE Next 2.41.7 / .NET 4.4.0 · canonical","publication":"live","title":"تفکیک مراکز حضوری/آنلاین و ورود امن به سایت پذیرنده","summary":"کاربر حقیقی می‌تواند کانال پذیرنده را فیلتر و پذیرنده را انتخاب کند؛ لینک خارجی تنها برای نشانی عمومی HTTPS معتبر ساخته می‌شود.","at":"2026-07-29T20:35:00+03:30","atTehran":"چهارشنبه ۷ مرداد ۱۴۰۵ — ۲۰:۳۵","tags":["fix","feature","docs"],"items":["رفع ADT-20260726-9409؛ فیلتر همه/حضوری/آنلاین و انتخاب پذیرنده در پنل کاربر منتشر شد","کانال و وب‌سایت عمومی از درخواست پذیرندگی تا index رابطه‌ای، backfill و API حداقلی ماندگار و نرمال می‌شوند","URLهای HTTP، credentialدار، localhost، local/IP و fragment در مرزهای موتور، persistence، API و UI رد می‌شوند","source gates: engine 219/219، backend 171/171، TypeScript، build 156 route، deploy 29/29، demo-window 16/16 و Playwright محلی 3/3 پاس","deploy LIVE: commit 16e4f65 · artifact a65550af…7d27e5 · backup/rollback nextjs-20260729T163303Z · backfill non-destructive، strict integration و سه دور public/origin 2.41.7 پاس؛ Playwright production پیش از login timeout شد و پذیرش UI زنده ادعا نمی‌شود"],"url":"https://vam.ati.ir/changelog#2026-07-29-v2-41-7-adt-9409-merchant-directory-channels-live"},{"id":"2026-07-29-v2-41-6-adt-4051-merchant-directory","version":"2.41.6","cycle":"LIVE Next 2.41.6 / .NET 4.4.0 · canonical","publication":"live","title":"دایرکتوری خودکار مراکز پذیرنده در پنل کاربر","summary":"صفحه مراکز پذیرنده به‌جای شبکه دعوت، فروشگاه‌های نمونه و نام پذیرنده‌هایی را نشان می‌دهد که تأیید سامانه گرفته‌اند؛ داده‌های حساس پذیرنده در پاسخ منتشر نمی‌شوند.","at":"2026-07-29T17:39:41+03:30","atTehran":"چهارشنبه ۷ مرداد ۱۴۰۵ — ۱۷:۳۹","tags":["fix","feature"],"items":["رفع ADT-20260726-4051؛ دایرکتوری مراکز پذیرنده در production canonical منتشر و تأیید شد","چهار فروشگاه نمونه همیشه قابل مشاهده‌اند و پذیرنده pending_contract/active از MerchantApplicationIndex خودکار افزوده می‌شود","API نشست‌محور /api/merchants/directory فقط id درخواست، نام کسب‌وکار و وضعیت انتشار sanitize‌شده را برمی‌گرداند","درخواست pending_review منتشر نمی‌شود و موبایل، userId، شبا، API key و secret key از view حذف‌اند","CI کامل در ۱۰۵۵ ثانیه پاس: engine 219/219، backend 170/170، Merchant SDK 5/5، Document Studio 16/16، spreadsheet 4/4، integration 10/10، deploy 29/29، AI 16/16، TypeScript و build 156 route؛ Playwright هدفمند 2/2 نیز پاس است","deploy LIVE: commit c73a230 · artifact 72e2564e…6b859a · backup/rollback nextjs-20260729T140630Z · سه دور public/origin، API زندهٔ sanitize‌شده، Playwright 2/2 و strict integration پاس"],"url":"https://vam.ati.ir/changelog#2026-07-29-v2-41-6-adt-4051-merchant-directory"},{"id":"2026-07-29-v2-41-5-adt-4736-partial-payment-settlement","version":"2.41.5","cycle":"LIVE Next 2.41.5 / .NET 4.4.0 · canonical","publication":"live","title":"پرداخت جزئی با مبلغ دلخواه و ریزمحاسبهٔ تسویه","summary":"کاربر مبلغ پرداخت جزئی را خودش وارد می‌کند، مانده قسط را می‌بیند و پیشنهاد تسویه زودهنگام را با تفکیک اصل، سود، بخشش و جریمه بررسی می‌کند.","at":"2026-07-29T15:00:54+03:30","atTehran":"چهارشنبه ۷ مرداد ۱۴۰۵ — ۱۵:۰۰","tags":["fix","improvement"],"items":["رفع ADT-20260726-4736 در تب «تسهیلات من» کاربر حقیقی","اعتبارسنجی مشترک UI/engine: حداقل ۱۰۰هزار تومان و حداکثر مانده همان قسط","نشست واقعی از /api/core/action و نشست صریح authMethod=demo از sandbox ایزوله mutation می‌شود","نمایش تعداد اقساط پرداخت‌نشده، اصل، سود پیش از بخشش، تنزیل ۵۰٪ و جریمه","CI کامل 378.7s: engine 219/219، backend 166/166، TypeScript و build 155/155 route؛ Playwright هدفمند مبلغ ۳۷۵هزار و تغییر مانده پاس","deploy LIVE: commit d8dfb51 · artifact 74a2d487…acd7c · backup nextjs-20260729T112733Z · سه دور public/origin، strict integration و asset زنده پاس","truth overlay: commit 7e56b22 · artifact 43f01f5f…65032 · backup nextjs-20260729T113914Z · سه دور نهایی تا 11:42:02 UTC پاس","public quick-login برای ۱۲ persona مصنوعی تا 2026-08-01T12:00:00Z با TTL ۴۵ دقیقه فعال؛ بدون مجوز داده یا connector واقعی"],"url":"https://vam.ati.ir/changelog#2026-07-29-v2-41-5-adt-4736-partial-payment-settlement"},{"id":"2026-07-28-v2-41-4-adt-3113-remove-approval-wait-copy","version":"2.41.4","cycle":"LIVE Next 2.41.4 / .NET 4.4.0 · canonical","publication":"live","title":"حذف پیام گمراه‌کنندهٔ انتظار تأیید کارشناس از طرح‌ها","summary":"برچسب «بدون انتظار برای تأیید کارشناس» از بالای کارت‌های طرح کاربر حقیقی حذف شد تا رابط کاربری وعده‌ای فراتر از جریان واقعی بررسی پرونده ندهد.","at":"2026-07-28T16:49:00+03:30","atTehran":"سه‌شنبه ۶ مرداد ۱۴۰۵ — ۱۶:۴۹","tags":["fix","deploy"],"items":["رفع ADT-20260726-3113 در بخش طرح‌های داشبورد کاربر حقیقی","افزودن آزمون Playwright برای نبود دقیق این عبارت در #credit-plans","بدون تغییر در محاسبات، انتخاب طرح، شرایط احراز یا گردش تأیید پرونده","deploy: commit 9ac8c67 · artifact be705c0e…7d7db6 · public/origin و strict integration smoke پاس"],"url":"https://vam.ati.ir/changelog#2026-07-28-v2-41-4-adt-3113-remove-approval-wait-copy"},{"id":"2026-07-25-v2-41-3-carousel-arrow-physical-sides","version":"2.41.3","cycle":"LIVE Next 2.41.3 / .NET 4.4.0 · canonical","publication":"live","title":"جابه‌جایی فلش‌های کاروسل به سمت فیزیکی درست","summary":"فلش چپ‌نما روی لبهٔ چپ و فلش راست‌نما روی لبهٔ راست قرار گرفت (RTL: end/start).","at":"2026-07-25T17:12:00+03:30","atTehran":"شنبه ۳ مرداد ۱۴۰۵ — ۱۷:۱۲","tags":["fix","deploy"],"items":["ChevronLeft + بعدی روی end (چپ فیزیکی)؛ ChevronRight + قبلی روی start (راست فیزیکی)","deploy LIVE: artifact SHA-256 7a99ed46…07eca2 · backup nextjs-20260725T134819Z · public/origin health 2.41.3 و strict integration smoke پاس"],"url":"https://vam.ati.ir/changelog#2026-07-25-v2-41-3-carousel-arrow-physical-sides"},{"id":"2026-07-25-v2-41-2-carousel-edge-card-hover-unblur","version":"2.41.2","cycle":"LIVE Next 2.41.2 / .NET 4.4.0 · canonical","publication":"live","title":"رفع blur کارت اول/آخر کاروسل هنگام hover","summary":"کارت‌های لبهٔ کاروسل با موس یا فوکوس از blur خارج می‌شوند؛ فلش‌های مخفی دیگر pointer-events کارت را نمی‌گیرند.","at":"2026-07-25T17:08:00+03:30","atTehran":"شنبه ۳ مرداد ۱۴۰۵ — ۱۷:۰۸","tags":["fix","improvement","deploy"],"items":["state تعاملی JS روی PlanCardWrapper برای clear شدن blur روی hover/focus (از جمله کارت اول و آخر)","pointer-events-none روی فلش‌های غیرفعال تا روی کارت‌های لبه ننشینند","deploy LIVE: artifact SHA-256 114e923e…0d88da · backup nextjs-20260725T133659Z · public/origin health 2.41.2 و strict integration smoke پاس"],"url":"https://vam.ati.ir/changelog#2026-07-25-v2-41-2-carousel-edge-card-hover-unblur"},{"id":"2026-07-25-v2-41-1-carousel-edge-fade-rtl-fix","version":"2.41.1","cycle":"LIVE Next 2.41.1 / .NET 4.4.0 · canonical","publication":"live","title":"رفع جهت سایهٔ لبهٔ کاروسل طرح‌ها + فلش کناری و فوکوس کارت مرکزی","summary":"گرادیان fade لبهٔ کاروسل در RTL اصلاح شد تا از لبهٔ بیرونی به سمت محتوا محو شود؛ فلش‌های ناوبری روی لبه‌ها و افکت فوکوس کارت مرکزی نیز در همین hotfix آمده‌اند.","at":"2026-07-25T16:55:00+03:30","atTehran":"شنبه ۳ مرداد ۱۴۰۵ — ۱۶:۵۵","tags":["fix","improvement","deploy"],"items":["رفع جهت bg-gradient لبه‌ها در PlansPreview: end (چپ فیزیکی) to-r و start (راست فیزیکی) to-l","فلش‌های بزرگ کناری روی لبه‌های کاروسل برای کشف کارت‌های بیشتر","افکت focus کارت مرکزی (مقیاس/شفافیت) برای آشکار کردن امکان اسکرول افقی","deploy LIVE: artifact SHA-256 977bc86c…3d81cb · backup nextjs-20260725T132333Z · public/origin health 2.41.1 و strict integration smoke پاس"],"url":"https://vam.ati.ir/changelog#2026-07-25-v2-41-1-carousel-edge-fade-rtl-fix"},{"id":"2026-07-25-v2-41-jibit-emzano-test-panels-and-credit-journey-fix","version":"2.41.0","cycle":"LIVE Next 2.41.0 / .NET 4.4.0 · canonical","publication":"live","title":"پنل‌های تست درگاه جیبیت و امضانو + رفع گیرکردن مرحله قرارداد + کاروسل پریمیوم طرح‌های اعتباری","summary":"دو پنل تست دستی در اتاق فرمان اضافه شد (جیبیت و امضانو)، یک باگ که در production UAT جلوی پیشروی جریان درخواست اعتبار تا مرحله قرارداد را می‌گرفت رفع شد، و چیدمان طرح‌های اعتباری به کاروسل افقی پریمیوم با اعداد انیمیشن‌شده و سلسله‌مراتب بصری ارتقا یافت.","at":"2026-07-25T15:22:00+03:30","atTehran":"شنبه ۳ مرداد ۱۴۰۵ — ۱۵:۲۲","tags":["fix","feature","improvement","integration","docs"],"items":["رفع باگ: شرط !IS_PRODUCTION_CLIENT در CreditRequestWizard و داشبورد کاربر حذفی شد؛ simulationEnabled به‌تنهایی gate کافی است (fail-closed برای real users محفوظ می‌ماند)","پنل تست درگاه جیبیت (JibitCatalog) در /dashboard/admin/connectors — ایجاد خرید تستی، تأیید، استعلام، health، با پشتیبانی mock و live","پنل تست امضانو (EmzanoCatalog) در /dashboard/admin/connectors — ایجاد جلسه امضا، بررسی وضعیت با OTP 1234 در mock، probe_auth، health","مسیر /api/integrations/jibit برای تست دستی (health + create/verify/inquiry) با integration-key auth و rate limit","به‌روزرسانی docs/INTEGRATIONS-JIBIT.md و docs/INTEGRATIONS-EMZANO.md با بخش پنل تست","بازطراحی PlansPreview به کاروسل افقی snap-scroll با کارت‌های عرض ثابت ۳۲۰px — جلوگیری از فشرده‌سازی تایپوگرافی و بریدن اعداد فارسی","اعداد انیمیشن‌شده (AnimatedToman) با RAF و easeOutCubic برای مبلغ/قسط/کل بازپرداخت — هم‌ترازی tabular-nums و whitespace-nowrap","نشانه‌های کشف کارت‌های بیشتر: فلش‌های ناوبری، نقاط صفحه‌بندی، fade gradient روی لبه‌ها، hint متحرک «طرح‌های بیشتر»","سلسله‌مراتب بصری: مبلغ اعتبار (۲۶px) → قسط ماهانه (۱۵px) → مدت بازپرداخت → کل بازپرداخت → CTA؛ رنگ accent مختص هر دسته طرح","اسلایدر مدرن با thumb ۲۲px، hit area بزرگ، gradient track و glow ring — استایل‌های .ati-carousel-scroll و .ati-range در globals.css","افکت‌های hover/focus با lift ۶px، soft shadow، border glow و sheen روی CTA — پشتیبانی کامل keyboard و prefers-reduced-motion"],"url":"https://vam.ati.ir/changelog#2026-07-25-v2-41-jibit-emzano-test-panels-and-credit-journey-fix"},{"id":"2026-07-23-v2-40-natural-user-credit-journey-live","version":"2.40.0","cycle":"LIVE Next 2.40.0 / .NET 4.4.0 · canonical","publication":"live","title":"اصلاح سفر اعتبار کاربر حقیقی و فعال‌سازی امن قرارداد","summary":"انتشار زندهٔ ۲.۴۰ ورود را روی داشبورد می‌نشاند، پنج طرح حقیقی را با گام پنج‌میلیونی ارائه می‌کند، هزینهٔ ۱۹۰هزار تومانی را یکپارچه می‌پردازد و امضا/فعال‌سازی را از مسیر مالک‌محور سرور انجام می‌دهد.","at":"2026-07-23T04:58:05+03:30","atTehran":"پنجشنبه ۱ مرداد ۱۴۰۵ — ۰۴:۵۸","tags":["fix","improvement","feature","docs"],"items":["ورود عمومی کاربر حقیقی به /dashboard/user/home و حذف قلمرو حقوقی و نوار اتصال‌های فنی از سطح کاربر حقیقی","پنج کارت محاسبه‌گر واکنش‌گرا بدون طرح حقوقی؛ مبلغ فقط با گام ۵٬۰۰۰٬۰۰۰ تومان و نمایش مدت، قسط و کل بازپرداخت","انتقال مستقیم انتخاب داشبورد به خلاصه و پرداخت؛ حذف کاتالوگ تکراری و حذف وابستگی پذیرش طرح به تأیید قبلی کارشناس","پرداخت اتمیک اعتبارسنجی+تشکیل پرونده با مبلغ واحد ۱۹۰٬۰۰۰ تومان و applicationIntentId پایدار؛ retry همان intent idempotent و انتخاب تازه پس از تشکیل وام مستقل است","هویت کامل با تاریخ شمسی، همراه دوم و استان/شهر وابسته؛ وضعیت شغلی، درآمد گام یک‌میلیونی و گواهی ثنای server-held متصل به مالک/کدملی/موبایل","API امن /api/user/contracts/sign با مالکیت نشست، binding هش سند، شواهد پایدار provider، CoreState CAS و activation idempotent wallet/funding/ledger","سخت‌سازی mutation: /api/core/action فقط same-origin و JSON object؛ upload مدرک مالک‌محور با تشخیص نوع از بایت، رد cross-owner و cleanup امن فایل تازه/قبلی پیرامون CAS","عضویت تعلیق‌شدهٔ سازمان در TypeScript/C# برای انتخاب طرح، پرداخت و requestLoan fail-closed است؛ پاک‌سازی white-label سطح عمومی محصول نیز انجام شد","production simulation فقط در sandbox دمو یا پنجرهٔ UAT صریح و allow-listed؛ ثنا mock، دقیقاً شش connector فاقد credential fail-closed و سرویس پیامک production آماده است","CoreState v11 ثابت و runtime production .NET 4.4.0/native 101 بدون تغییر است؛ source این release در C# برابر native 102/102 و 299/299 = 242+57 است","گیت release: CI نهایی پس از هم‌ترازی LIVE در 288.5s؛ Node 379/379 = 213+166 و C# برابر 299/299، مجموع 678؛ golden 44/44، Merchant 5/5، spec 102، integration 10/10، journey 39/39، E2E 78/78، Playwright کامل 25 پاس + 4 skip کنترل‌شده و build 152 پاس","feature source eaf335ec6796ae501dd3ed5f87bd8535e5d88963 با artifact SHA-256 8455e8f81227ac1405ead56ba3a06938021a144563d18bf29ecb76b906c7d571 منتشر شد؛ backup /var/backups/ativam/nextjs-20260723T012608Z و rollback /opt/ativam-app.rollback-20260723T012608Z ثبت شدند","public/origin در 2026-07-23 01:28 UTC نسخه‌های 2.40.0/4.4.0، شش صفحه 200، anonymous same-origin action برابر 401، security و strict integration smoke را تأیید کردند؛ شش connector fail-closed، کاوه‌نگار live+ready، ثنا mock و UAT عمومی خاموش است"],"url":"https://vam.ati.ir/changelog#2026-07-23-v2-40-natural-user-credit-journey-live"},{"id":"2026-07-22-v2-39-system-document-studio-live","version":"2.39.0","cycle":"LIVE Next 2.39.0 / .NET 4.4.0 · canonical","publication":"live","title":"کارگاه اسناد سازمانی — سربرگ، نمای بصری امضا، قالب و فایل قابل‌ویرایش","summary":"انتشار زندهٔ ۲.۳۹ پنل سیستم برای مدیریت ساختاریافتهٔ اسناد، سربرگ/پابرگ، نمای بصری امضا و خروجی قابل‌ویرایش/چاپ؛ فقط برای مدیر سیستم واقعی و در لایهٔ Next.","at":"2026-07-22T11:18:00+03:30","atTehran":"چهارشنبه ۳۱ تیر ۱۴۰۵ — ۱۱:۱۸","tags":["feature","improvement","deploy","docs"],"items":["منابع letterhead/signature/template/document با CAS، SHA-256، بازنگری append-only و بدون ذخیرهٔ HTML خام به‌عنوان منبع حقیقت","بلوک‌های محدود و merge fieldهای مجاز برای تولید کنترل‌شدهٔ متن سند، گیرنده، شماره/تاریخ و مشخصات امضاکننده","نمای بصری امضا فقط visual-only است و ContractSignature، جریان رسمی امضای الکترونیک، فعال‌سازی تسهیلات، کیف یا دفترکل را تغییر نمی‌دهد","review با عملیات صریح و بررسی asset به final immutable تبدیل می‌شود؛ اصلاح final فقط با ساخت سند و شناسهٔ تازه است","پیش‌نویس واترمارک دارد؛ audit خروجی رسمی final به artifact SHA-256، نسخه renderer و SHA assetها مقید است","بارگذاری جدید PNG-only با CRC/chunk/decode/SHA؛ JPEG به‌صورت fail-closed رد می‌شود، repair اتمیک backup-first همان شناسه، dedupe سالم و صفحه‌بندی cursor-based است","سهمیهٔ منابع/نسخه‌ها/فایل‌ها و بایت‌ها، آرشیو امن فایل بدون حذف بایت، scrub تطبیق SQLite با filesystem و restore-drill واقعی DB+assets افزوده شد","تجربهٔ کاربری دسترسی نامجاز را بدون نمایش ویرایشگر می‌بندد و وضعیت ذخیره، آمادگی نهایی‌سازی، تاریخچهٔ بازنگری و ظرفیت فایل‌ها را شفاف می‌کند","دسترسی مدیریت منابع و خروجی فقط برای sysadmin واقعی، same-origin و rate-limited است؛ personaهای دمو و نشست‌های بی‌مجوز به API واقعی دسترسی ندارند","Next-only؛ CoreState v11 و .NET 4.4.0 بدون تغییر و productionAdaptersReady=false / cutoverReady=false","snapshot وابستگی: Next 16.2.11 و Prisma 7.9.0؛ advisoryهای Next/Prisma/PostCSS/Sharp رفع شده‌اند و تنها xlsx@0.18.5 high بدون fix upstream باقی است","import صفحه‌گسترده فقط .xlsx مدرن تا ۵۱۲KiB و ۵۰۰ ردیف را می‌پذیرد؛ .xls legacy fail-closed است و جایگزینی library نیازمند تأیید dependency جدید است","CI نهایی در ۷۳۳٫۷s پاس: Node ۳۲۸/۳۲۸ (۱۷۵+۱۵۳)، Merchant ۵/۵، Document Studio ۱۶/۱۶ + asset/HTTP/migration/store، spreadsheet security ۴/۴، integration ۱۰/۱۰، deploy ۲۹/۲۹، demo-window ۱۶/۱۶، AI ۱۶/۱۶، tsc و build ۱۵۰ route","backend E2E ۷۶/۷۶، Playwright ۲/۲ پس از upgrade (401/403، sysadmin draft→review→final/CAS/SHA/export/history و Back guard)، .NET ۲۸۶/۲۸۶، UAT sysadmin/browser و security headers/release pages محلی پاس؛ backup/restore و asset مفقود/خراب نیز fail-closed تأیید شده‌اند","شاهد آغاز انتشار: source a5ca501cfdedd106dbd1e503c15e2243594fcc74 با artifact SHA-256 974f0874d834846cd05ee530e42b0e6a2288f82c2919a152cd8229d26fc3d143 حدود ۲۰۲۶-۰۷-۲۲ ۰۷:۴۸ UTC روی VM canonical منتشر شد؛ شواهد artifact جاری در منبع حقیقت deploy نگهداری می‌شود","public/origin نسخه‌های ۲٫۳۹٫۰/۴٫۴٫۰، شش صفحه ۲۰۰، anonymous API برابر ۴۰۱، security smoke و strict integration smoke را تأیید کردند؛ شش connector fail-closed، کاوه‌نگار live+ready و ثنا mock است","backup /var/backups/ativam/nextjs-20260722T074606Z و rollback /opt/ativam-app.rollback-20260722T074606Z برای استقرار آغاز release ثبت شدند؛ CoreState v11 ready و native .NET برابر ۱۰۱/۱۰۱ است، adapter/cutover بسته می‌ماند"],"url":"https://vam.ati.ir/changelog#2026-07-22-v2-39-system-document-studio-live"},{"id":"2026-07-21-adt-fixes-fees-flow-sana-integrations-panel","version":"2.38.0","cycle":"LIVE Next 2.38.0 / .NET 4.4.0 · canonical","publication":"live","title":"رفع ۹ تیکت ADT کارفرما — هزینه، مدارک، جریان هویتی، یکپارچه‌سازی ثنا و چیدمان طرح‌ها","summary":"۹ گزارش اشکال کارفرما در پنل کاربر حقیقی برطرف و deploy شد: هزینه اعتبارسنجی ۱۹۰هزار تومان، مدارک شغلی مطابق درخواست، حذف پیش‌نویس حقوقی و مرحله هویتی مستقل، گسترش ویزارد (هویت+مالی+ثنا)، ماژول یکپارچه‌سازی ثنا + نوار وضعیت اتصال‌ها، و قابلیت ماشین‌حسابی طرح‌ها با چیدمان جدید در /home.","at":"2026-07-21T23:57:35+03:30","atTehran":"سه‌شنبه ۳۰ تیر ۱۴۰۵ — ۲۳:۵۷","tags":["fix","feature","improvement","integration","deploy"],"items":["هزینه اعتبارسنجی SCORING_FEE_TOMAN از ۱۰۰٬۰۰۰ به ۱۹۰٬۰۰۰ تومان تغییر کرد (ADT-20260721-2510)؛ هزینه تشکیل پرونده ۱۷۰٬۰۰۰ دست‌نخورده","EMPLOYMENT_DOCS_BY_TYPE.employee به [payslip, insurance_history_2y] و self_employed به [bank_statement] تغییر کرد (ADT-20260721-7758)","ماژول یکپارچه‌سازی ثنا (src/lib/integrations/sana) + مسیر /api/integrations/sana + فیلدهای kavenegar/sana در /api/integrations/health (ADT-20260721-8797)","نوار وضعیت اتصال‌ها (IntegrationsStatusPanel) در /dashboard/user/home و تب تسهیلات من — نمایش کاوه‌نگار/امضانو/ثنا/CR24","گام مالی ویزارد: dropdown وضعیت شغلی (شاغل/بازنشسته/دانشجو/خانه‌دار/سایر) + دکمه استعلام ثنا در لحظه + ثبت submitUserProfile با هویت+مالی+ثنا (ADT-20260721-3930)","گام هویتی ویزارد: افزودن فیلدهای شماره موبایل، استان، شهر، کد پستی، نشانی محل سکونت با اعتبارسنجی (ADT-20260721-6839)","PlanCard: هرو برجسته قسط ماهانه + چیدمان ماشین‌حسابی (مبلغ + مدت + قسط + کل بازپرداخت) (ADT-20260721-9103)","PlansPreview جدید در /dashboard/user/home — چیدمان کارت طرح‌ها با برند/نرخ/بازه/CTA (ADT-20260721-3691)","حذف فرم پیش‌نویس شخصیت حقوقی از پنل کاربر — ثبت توسط اپراتور اتاق فرمان (ADT-20260721-2598)","حذف UserProfileForm مستقل از پنل حقیقی — ویزارد پس از ورود در دسترس، جمع‌آوری هویتی در گام ۲ ویزارد (ADT-20260721-3087)","submitUserProfile در engine: فیلدهای employmentStatus/jobTitle/iban/referrers/howDidYouHear/education/monthlyIncome/residenceAddress اختیاری شد (backward-compatible)","تأیید کیفیت: tsc PASS، build PASS، npm test PASS (153+28+5+demo)، spec-drift PASS، golden PASS، integration-contract 10/10، merchant-sdk 5/5","artifact commit 15c1b84 با SHA-256 b78be0b452d9b367d0e2a8b665ebe9bac3512a8b253ec5e516c14ce1f4685b21 روی VM canonical مستقر شد","production /api/health 200 (Next 2.38.0، kavenegar live+ready)، /dotnet/api/health 200، /api/integrations/health ok=true (6 connector fail-closed + kavenegar live + sana mock)","backup /var/backups/ativam/nextjs-20260721T235735Z · rollback /opt/ativam-app.rollback-20260721T235735Z · upload /tmp/ativam-nextjs-upload-20260721T235728Z","وضعیت ۹ تیکت در DB production از triaged به fixed تغییر یافت با جزئیات اقدام در aiSummary"],"url":"https://vam.ati.ir/changelog#2026-07-21-adt-fixes-fees-flow-sana-integrations-panel"},{"id":"2026-07-20-v2-37-public-quick-login-persistent-role-sandboxes-live","version":"2.37.0","cycle":"LIVE Next 2.37.0 / .NET 4.4.0 · canonical","publication":"live","title":"ورود سریع فعال و workspace ماندگار برای تمام نقش‌های دمو","summary":"دکمه‌های /demo در پنجرهٔ عمومیِ زمان‌دار بدون کلید فعال می‌شوند؛ ۱۰ persona طبیعی workspace مستقل دارند و دو actor حقوقی به subject مصنوعی مشترک خود وارد می‌شوند. مسیرهای ستادی فقط projection مصنوعی همان قلمرو دمو را می‌بینند.","at":"2026-07-20T07:12:34+03:30","atTehran":"دوشنبه ۲۹ تیر ۱۴۰۵ — ۰۷:۱۲","tags":["feature","improvement","fix","docs"],"items":["GET /api/demo/session وضعیت sanitize‌شدهٔ disabled/keyed/public، انقضا و عمر نشست را بدون افشای hash یا secret برمی‌گرداند","حالت public فقط با master flag و زمان ISO آینده باز است؛ انقضا، flag خاموش، Origin نامعتبر و persona ناشناخته fail-closed می‌مانند","اولین ورود هر persona طبیعی CoreState v11 جامع، امضاشده و جدا می‌سازد؛ تغییرات مستقیم UI با debounce به /api/demo/workspace ماندگار می‌شوند","workspace دمو با namespace داخلی، سقف payload/collection، rate limit، same-origin، نشست httpOnly و CAS از حساب‌های واقعی جداست","writer دمو هیچ EventLog، LoanIndex، DirectoryIndex یا صف واقعی production را dual-write نمی‌کند؛ indexهای legacy همان persona پاک می‌شوند","دو persona حقوقی همان subject مشترک را حفظ می‌کنند و persistence حقوقی دمو نیز از index و audit واقعی جدا شد","overview، operations، directory/360 و audit پنل سیستم در نشست demo از projection synthetic همان persona پاسخ می‌دهند؛ query واقعی cross-user اجرا نمی‌شود","اکشن ستادی demo فقط روی userId همان workspace و طبق RBAC مجاز است؛ هدف cross-user با demo_cross_user_denied رد می‌شود","بنر دائمی نقش، وضعیت ذخیره و لینک تغییر نقش پس از ورود در همه داشبوردها افزوده شد","seed رتبه A با بازه مصوب جاری هم‌تراز شد: وام انفرادی ۷۰ میلیون تومان + وام خرد ۴ میلیون تومان","seed CR24 فقط با context صریح demo-sandbox اجرا می‌شود؛ runtime عادی production بدون opt-in همچنان production_mock_disabled است","صف عملیات/اعتبار و health، principalهای demo-v1 را در index و fallback snapshot از KPI/queue واقعی حذف می‌کنند","گیت کامل: Node 328/328، Merchant 5/5، legal 28/28، signing 5/5، golden 44/44، integration 10/10، deploy contract 40/40، AI 16/16، E2E 58/58، production-like 6/6 و build 146/146؛ baseline تاریخی .NET برابر 286/286","artifact commit 62d9bc562bad299f3ed97433ff6e7244a39d9c93 با SHA-256 783a35bae35a2ccf93a60d127a18b4d2524a339017cc41ab309b170306462841 روی VM canonical مستقر شد","backup/rollback/env backup: /var/backups/ativam/nextjs-20260720T033433Z · /opt/ativam-app.rollback-20260720T033433Z · /var/backups/ativam/demo-window-20260720T033549Z.fL2nyy/env.local.before","public/origin smoke در 2026-07-20T03:36:44Z..03:40:08Z نسخه‌های 2.37.0/4.4.0، چهار صفحه و هدرهای امنیتی را تأیید کرد؛ Playwright production برابر 2/2 و ورود هر ۱۲ نقش پاس شد","پنجرهٔ public quick-login تا 2026-07-22T09:41:06Z با TTL 45 دقیقه فعال است؛ strict integrations fail-closed پاس، اتصال‌دهنده‌های تنظیم‌نشده بسته و SMS ready/send PASS است","تثبیت public/origin در 03:41:54Z، 03:42:13Z و 03:42:34Z بدون افت PASS شد"],"url":"https://vam.ati.ir/changelog#2026-07-20-v2-37-public-quick-login-persistent-role-sandboxes-live"},{"id":"2026-07-19-v2-36-v4-4-legal-beneficiary-demo-quick-login-live","version":"2.36.0","cycle":"LIVE Next 2.36.0 / .NET 4.4.0 · canonical","publication":"live","title":"پروندهٔ کامل شخصیت حقوقی و ورود سریع ایزوله برای همهٔ personaهای دمو","summary":"نمایندهٔ حقیقی به‌عنوان actor، شخصیت حقوقی را به‌عنوان subject انتخاب می‌کند؛ KYB، UBO، مدارک، بانک، امضای حدنصابی و CoreState مشترک با مرزهای fail-closed پیاده شده‌اند. ورود سریع نیز از endpoint مستقل و نشست کوتاه‌عمر demo-v1 استفاده می‌کند.","at":"2026-07-19T14:15:00+03:30","atTehran":"یکشنبه ۲۸ تیر ۱۴۰۵ — ۱۴:۱۵","tags":["feature","improvement","deploy","docs"],"items":["مدل رابطه‌ای LegalEntity/Member/BeneficialOwner/Document/BankAccount/SignatoryRule و LegalCoreSnapshot امضاشده","شش خانوادهٔ شواهد KYB: ثبت، نماینده، UBO، مدارک نسخه‌دار، مالکیت شبا و قاعده/حدنصاب صاحبان امضا","submit مرحلهٔ اول فقط completeness شواهد را می‌سنجد و draft/needs_changes کامل را بدون flag راستی‌آزمایی به pending_review می‌برد","approve مرحلهٔ دوم فقط با kyc.review و پس از verification مستقل باز است؛ approve زودهنگام با legal_kyb_incomplete fail-closed می‌ماند","محصول حقوقی فقط برای subject KYB-approved؛ امضای حقیقی روی قرارداد حقوقی رد و activation منوط به quorum است","ورود سریع همهٔ personaها با personaId allow-listed، same-origin، rate limit، audit و نشست httpOnly چهل‌وپنج‌دقیقه‌ای","production quick-login فقط با flag، زمان انقضا و hash کلید ارائه؛ نشست demo از APIهای واقعی ادمین/Handoff/cross-user محروم است","سه persona مصنوعی پنل سیستم، نمایندهٔ حقوقی و صاحب امضای دوم جای حساب واقعی Handoff را گرفته‌اند؛ هر 12 persona ورود سریع دارد","دعوت 72 ساعته، OTP واقعی، چرخه امن عضو/اختیار و منع حذف یا تنزل آخرین legal_admin؛ تغییر شواهد verification وابسته را باطل می‌کند","امضا به مبلغ، مدت، محصول، قرارداد، hash سند، قاعده و signer snapshot bind و activation با تاریخ، سقف اختیار و quorum دوباره ارزیابی می‌شود","principal دمو از موبایل واقعی جداست؛ integration زنده، ADT، Handoff، admin/cross-user و review حقوقی بسته و AI persona-aware است","npm run ci کامل در 689.7s سبز: Node 327/327، Merchant 5/5، golden 44/44، حقوقی 28/28، امضا 5/5، integration 10/10، AI 16/16، deploy 14/14، TypeScript و build 145/145؛ پس از اصلاح مجوز گزارش rehearsal، deploy مستقیم 15/15",".NET 4.4.0 برابر 286/286 = 229 domain + 57 infrastructure؛ legalBeneficiaryDomainReady=true ولی sharedSubjectPersistence/publicApi/cutover حقوقی false است","backend E2E برابر 51/51 با هر 11 migration و Playwright نهایی 16/16 پاس شدند","rehearsal کپی production در 8s: 71 snapshot شامل 3 signed/trusted و 68 unsigned حفظ‌شده، mutation snapshot/index صفر و rollback بایت‌یکسان","commit پایه قابلیت‌ها e542c013؛ artifact پایه deploy Next با SHA-256 edaea87a…680a9f3 و artifact compiled-only .NET با 73bdd5cd…504631f؛ artifact evidence-sync پس از commit/build جدا ثبت می‌شود","backup/rollback: nextjs-20260719T104206Z و dotnet-20260719T104457Z؛ تلاش نخست پیش از stop fail-closed و با compensation سالم بازیابی شد","smoke زنده: quick-login برابر 12/12، workspace حقوقی 2/2 و negative demo gate برابر 6/6؛ پنجره ارائه تا 2026-07-22T09:41:06Z","public/origin هر دو 2.36.0/4.4.0؛ چهار صفحه public+origin برابر 200، security headers و health no-store پاس","strict integration عمومی PASS؛ هر 6 connector در live-mode بدون تنظیم برابر connector_not_configured و fail-closed",".NET health/native 101/101/OTP/SMS/migrations/gates پاس و 5 endpoint منفی بدون نشست 401؛ OTP واقعی ماسک‌شده status=200 و mock=false","AI برابر aiConfigured=false؛ نشست demo سیستم 503 provider_not_configured و بدون پاسخ ساختگی؛ تثبیت سه‌دوره‌ای public/origin بدون افت PASS"],"url":"https://vam.ati.ir/changelog#2026-07-19-v2-36-v4-4-legal-beneficiary-demo-quick-login-live"},{"id":"2026-07-18-v2-35-1-legacy-login-reconciliation","version":"2.35.1","cycle":"ورود legacy و reconciliation امن · زنده","publication":"live","title":"رفع توقف ورود حساب‌های قدیمی پس از OTP","summary":"حساب دارای snapshot معتبر اما unsigned پس از احراز نشست، به‌صورت هدفمند و اتمیک identity-bind و امضا می‌شود؛ state ناقص یا دست‌کاری‌شده همچنان بدون تغییر fail-closed می‌ماند.","at":"2026-07-18T14:02:00+03:30","atTehran":"شنبه ۲۷ تیر ۱۴۰۵ — ۱۴:۰۲","tags":["fix","improvement","deploy"],"items":["POST /api/core/reconcile فقط برای حساب نشست جاری و بدون پذیرش payload مرورگر","تطبیق موبایل مالک، مهاجرت CoreState v4–v11، کنترل تعارض مالکیت ایندکس‌ها و exact-payload CAS","commit اتمیک snapshot امضاشده، projectionهای رابطه‌ای و EventLog با hash منبع","retry خودکار و یک‌بارهٔ GET /api/core/state در کلاینت پس از core_state_quarantined","E2E مثبت/منفی: نشست الزامی، snapshot معتبر قابل ورود و state ناقص با 409 و حفظ byte-for-byte","production: Next 2.35.1، OTP/SMS ready، endpoint بی‌نشست 401 و public/origin/security smoke سبز"],"url":"https://vam.ati.ir/changelog#2026-07-18-v2-35-1-legacy-login-reconciliation"},{"id":"2026-07-18-v2-35-0-dotnet-v11-release-surfaces","version":"2.35.0","cycle":"هم‌ترازی CoreState v11 · زنده","publication":"live","title":"صفحات release و تابلوی فنی برای قرارداد کامل .NET v11 — زنده","summary":"چهار خروجی اجباری release و داده‌های UI با .NET 4.3.0 هم‌تراز و پس از public/origin health و smoke عمومی روی production منتشر شدند.","at":"2026-07-18T04:42:00+03:30","atTehran":"شنبه ۲۷ تیر ۱۴۰۵ — ۰۴:۴۲","tags":["improvement","docs"],"items":["نمایش صریح دو گیت مستقل: contractReady=true در برابر productionAdaptersReady=false و cutoverReady=false","به‌روزرسانی requirements، presentation، demo و changelog برای ۱۰۱/۱۰۱ اکشن native و CoreState v11","سناریوی UAT جدید برای پذیرنده، تأمین‌کننده، فاکتور، بازپرداخت پیشرفته و چرخهٔ بازاریاب","شمار release برابر Node ۳۲۷ و .NET ۲۵۵ تست؛ fixture استقرار ۱۶/۱۶","production: Next 2.35.0/.NET 4.3.0، OTP live، SMS ready و چهار صفحهٔ عمومی سبز"],"url":"https://vam.ati.ir/changelog#2026-07-18-v2-35-0-dotnet-v11-release-surfaces"},{"id":"2026-07-18-v4-3-0-native-v11-contract","version":"4.3.0","cycle":"Native CoreState v11 · زنده","publication":"live","title":"پوشش ۱۰۱/۱۰۱ اکشن native با view چندمستأجری ایزوله — زنده","summary":"۲۵ اکشن باقی‌ماندهٔ پذیرنده، تأمین‌کننده، فاکتور، بازپرداخت و بازاریاب در C# پورت شده‌اند؛ قرارداد v11 کامل است اما adapterهای production و cutover همچنان fail-closed هستند.","at":"2026-07-18T04:41:00+03:30","atTehran":"شنبه ۲۷ تیر ۱۴۰۵ — ۰۴:۴۱","tags":["feature","improvement","fix"],"items":["state سراسری نسخه ۲ برای Merchant/Supplier/Invoice/Marketer و merged CoreState v11","چرخهٔ قرارداد امضانو دمو فقط در Development/Test؛ عملیات simulation در Production مجاز نیست","پرداخت جزئی، تسویه زودهنگام، فاکتور idempotent و دفترکل متوازن","شبکهٔ چهارسطحی بازاریاب، rule set، درخواست/تأیید/پرداخت تسویه و قطع همکاری","فیلتر view چندمستأجری و تراکنش واحد tenant/global برای جلوگیری از نشت یا ثبت نیمه‌کارهٔ داده","health: native 101/101، backendPct=100، contractReady=true؛ productionAdaptersReady/cutoverReady=false","۲۵۵ تست C#، artifact compiled-only و safe ops/parity عمومی نسخهٔ 4.3.0 سبز است","artifactها از commit 46beed1 با backup/rollback تراکنشی مستقر و ۷۱ snapshot با صفر mutation حفظ شدند"],"url":"https://vam.ati.ir/changelog#2026-07-18-v4-3-0-native-v11-contract"},{"id":"2026-07-17-v2-34-0-ai-operations-workspace","version":"2.34.0","cycle":"همیار عملیاتی و آمادگی UAT · live","publication":"live","title":"همیار هفت‌پورتالی، ورود پیامکی پایدار و صفحات ارائهٔ قابل اتکا — زنده","summary":"اتاق راهنمای عملیاتی برای مشتری، ذی‌نفع، مدیر و کارشناس با قلمرو نقش‌محور، منابع خواندنی، مکالمه پایدار و مرز تصمیم انسانی آماده شده است؛ فعال‌شدن پاسخ زنده منوط به billing/quota سالم provider است.","at":"2026-07-18T03:11:00+03:30","atTehran":"شنبه ۲۷ تیر ۱۴۰۵ — ۰۳:۱۱","tags":["feature","improvement","fix","docs","deploy"],"items":["هفت تجربهٔ UI مستقل: مشتری، سازمان، بازاریاب، پذیرنده، تأمین‌کننده، اتاق فرمان و پنل سیستم با نوار دائمی نقش/منبع/مرز تصمیم","OpenAI Responses API با store:false، structured output، Moderation اجباری و safety_identifier غیرقابل برگشت","ابزارهای فقط‌خواندنی policy_lookup، account_summary و operations_snapshot؛ بدون تأیید/رد، انتقال وجه، تسویه، RBAC یا mutation","RBAC سروری، rate limit دوگانه، ضد prompt-injection، رد درخواست secret/mutation و redaction موبایل/شناسه/کارت/شبا","persistence افزایشی AiConversation/AiMessage با cascade و audit کمینه؛ بدون credential، system prompt یا payload منبع","قرارداد OpenAPI و ۱۲ تست مستقل نقش/ایمنی/منبع/persistence؛ provider فعلی در smoke واقعی billing_not_active برگرداند و صحیح fail-closed ماند","رفع قطعی ورود /adt/admin با قرارداد مشترک otp و alias سازگاری برای assetهای cache‌شده؛ انتظار config زنده، بازیابی خطای شبکه و ارقام فارسی/عربی نیز پوشش داده شد","challenge زندهٔ OTP برای هر موبایل single-flight و generation-scoped است و مصرف challenge با ساخت نشست در یک transaction انجام می‌شود","Service Worker فقط app-shell و asset ایستا را cache می‌کند؛ /demo، /requirements، /presentation و /changelog مستقیماً از شبکه می‌آیند و smoke محتوایی/امنیتی مستقل دارند","گیت release: CI کامل سبز (Node 327/327، integration 10/10، AI 12/12، TypeScript/build)، backend E2E 41/41، .NET 252/252 و Playwright نقش/سفر 16/16","production: Next 2.34.0، OTP live و SMS ready؛ چهار صفحه و strict smoke عمومی سبز، ۷۱ snapshot legacy با صفر mutation حفظ و backup/rollback ثبت شد"],"url":"https://vam.ati.ir/changelog#2026-07-17-v2-34-0-ai-operations-workspace"},{"id":"2026-07-16-v2-33-0-integration-hardening","version":"2.33.0","cycle":"Integration hardening · live","publication":"live","title":"sandbox پایدار، contract test و fail-closed واقعی — زنده","summary":"CR24، امضانو، فینوتک، شبانیک، شاپرک و برداشت به policy مشترک متصل شدند؛ persistence و smoke تراکنشی deploy فعال است و public health نسخهٔ 2.33.0 را تأیید کرده است.","at":"2026-07-17T03:30:00+03:30","atTehran":"جمعه ۲۶ تیر ۱۴۰۵ — ۰۳:۳۰","tags":["integration","improvement","fix","deploy"],"items":["mode مشترک mock/sandbox/live با opt-in اختصاصی connector؛ applicant simulation مجوز mock نیست","حذف fallback mock در sandbox/live و قرارداد پایدار 503 connector_not_configured / 502 connector_upstream_failed","IntegrationSession/WebhookInbox/Attempt پایدار با namespace mode، replay-safe، crash recovery و terminal transition","Emzano webhook: HMAC raw-body، secret اجباری، unknown session=404 و payload mismatch=409","Shaparak sandbox: مبلغ canonical، confirm idempotent و simulated_no_ledger؛ live بدون provider=503","گیت release: Node 327، contract 10/10، .NET 252، backend E2E 41/41 و Playwright 11/11؛ strict integration runtime smoke داخل deploy و روی دامنهٔ عمومی پاس شد","production: policy=fail-closed، fallbackAllowed=false، persistence=ready و شش connector بدون credential با connector_not_configured بسته می‌مانند"],"url":"https://vam.ati.ir/changelog#2026-07-16-v2-33-0-integration-hardening"},{"id":"2026-07-16-v4-2-0-integration-fail-closed","version":"4.2.0","cycle":"Integration hardening · live","publication":"live","title":"قفل fail-closed و auth مرزی در sidecar .NET — زنده","summary":null,"at":"2026-07-17T03:29:00+03:30","atTehran":"جمعه ۲۶ تیر ۱۴۰۵ — ۰۳:۲۹","tags":["integration","fix","deploy"],"items":["session یا X-AtiVam-Integration-Key قوی برای تمام endpointهای integration","Emzano/Finnotech non-mock تا wiring driver واقعی با 503 قفل‌اند؛ credential هرگز پاسخ mock را live نشان نمی‌دهد","Shabanic query/header contract هم‌تراز شد و خطای upstream بدون fallback با 502 برمی‌گردد","پوشش Infrastructure به 50 تست و کل .NET به 252 تست رسید","health مستقیم و HTTPS نسخهٔ 4.2.0، safe ops و POST بی‌هویت 401 بدون mock:true پس از deploy تأیید شد"],"url":"https://vam.ati.ir/changelog#2026-07-16-v4-2-0-integration-fail-closed"},{"id":"2026-07-15-v2-32-0-s3-live-presentation","version":"2.32.0","cycle":"پنل سیستم S3-lite · ارائهٔ زنده","publication":"live","title":"اقساط cross-user زنده + ارائهٔ سه‌بعدی متصل به production","summary":"ماژول ۱۳ (مدیریت اقساط) با ایندکس رابطه‌ای جدید زنده شد و صفحات ارائه/دمو به تجربهٔ سه‌بعدی و زندهٔ متصل به health واقعی ارتقا یافتند — بدون هیچ وابستگی جدید.","at":"2026-07-16T00:30:00+03:30","atTehran":"پنجشنبه ۲۵ تیر ۱۴۰۵ — ۰۰:۳۰","tags":["feature","improvement","deploy"],"items":["InstallmentIndex جدید: اقساط وام‌های فاز بازپرداخت (active/defaulted/closed) با sync اتمیک و backfill غیرمخرب","ماژول ۱۳ پنل سیستم live شد: فهرست cross-user اقساط با فیلتر وضعیت (معوق/سررسید/پرداخت‌شده) و لینک به Customer 360 مالک","داشبورد مدیریتی: KPIهای وصول — معوق، سررسید امروز و سررسید ۷ روز آینده از ایندکس زنده","اتاق وضعیت زنده (LiveOpsBoard) در /presentation و /demo: نسخه‌ها، OTP/SMS، parity native، قفل cutover و حفاظت legacy با poll سی‌ثانیه‌ای از health واقعی","دیورامای سه‌بعدی معماری (CSS 3D + framer-motion): پنج لایهٔ قابل‌لمس از nginx تا یکپارچه‌سازی‌ها با چرخش اشاره‌گر","کارت‌های چرخان سه‌بعدی هفت پورتال + TiltCard پرسپکتیوی روی کارت hero لندینگ — همه transform/opacity و تابع prefers-reduced-motion","پوشش تست: backend به ۱۳۶ (+۲ سناریوی S3) و backend E2E به ۳۶/۳۶ (+۱ فهرست اقساط) رسید"],"url":"https://vam.ati.ir/changelog#2026-07-15-v2-32-0-s3-live-presentation"},{"id":"2026-07-15-v2-31-0-system-panel-s2","version":"2.31.0","cycle":"پنل سیستم Wave S2","publication":"live","title":"دایرکتوری cross-user و پروندهٔ ۳۶۰ برای پنج موجودیت پنل سیستم","summary":"ماژول‌های ۳–۷ پنل سیستم از scaffold به دادهٔ زندهٔ cross-user رسیدند — لیست، فیلتر وضعیت، جستجو و پروندهٔ ۳۶۰ read-only؛ اقدام‌ها همچنان فقط از مرکز درخواست‌ها انجام می‌شوند. نسخهٔ health نیز از package.json تک‌منبع شد.","at":"2026-07-15T20:30:00+03:30","atTehran":"چهارشنبه ۲۴ تیر ۱۴۰۵ — ۲۰:۳۰","tags":["feature","improvement","deploy"],"items":["سه ایندکس رابطه‌ای جدید: UserDirectoryIndex، OrganizationIndex و MarketerIndex با migration افزایشی و sync اتمیک در تراکنش CoreState","سازمان‌ها فقط پس از materialized شدن (پروفایل حقوقی/پرسنل/امضاداران/درخواست اعتبار) index می‌شوند؛ seed دمو index نمی‌شود","رکورد seed بازاریاب فقط برای snapshot خود حساب بازاریاب index می‌شود؛ درخواست‌های واقعی /bayabuy/collaborate با مالک درست ثبت می‌شوند","API جدید: GET /api/system/directory و GET /api/system/directory/{type}/{id} با گیت system.access، پاسخ no-store و 409 قرنطینه برای حساب unsigned","دادهٔ بانکی (شبا/حساب) در پرونده‌های ۳۶۰ فقط برای نقش دارای ledger.view نمایان است؛ سایر نقش‌ها نسخهٔ mask‌شده می‌بینند","UI ماژول‌های کاربران/سازمان‌ها/پذیرندگان/تأمین‌کنندگان/بازاریاب‌ها: KPI وضعیت، فیلتر chip، جستجو و مسیر 360 با بازگشت به فهرست","backfill غیرمخرب سه جدول جدید را پوشش می‌دهد؛ حساب‌های قرنطینه همچنان دست‌نخورده و fail-closed می‌مانند","پوشش تست: backend به ۱۳۴ (+۸ سناریوی S2) و backend E2E به ۳۵/۳۵ (+۶ مورد شامل 401/400/فهرست/۳۶۰/قرنطینه) رسید"],"url":"https://vam.ati.ir/changelog#2026-07-15-v2-31-0-system-panel-s2"},{"id":"2026-07-15-v2-30-8-v4-1-0-live","version":"2.30.8","cycle":"همسان‌سازی production · GitHub · local","publication":"live","title":"انتشار زندهٔ Next 2.30.8 و .NET 4.1.0 با حفظ دادهٔ legacy","summary":"نسخه‌های ادغام‌شده پس از عبور Node، .NET و Playwright در GitHub روی origin رسمی منتشر شدند؛ nginx/TLS و UAT production تغییر نکردند.","at":"2026-07-15T13:47:00+03:30","atTehran":"چهارشنبه ۲۴ تیر ۱۴۰۵ — ۱۳:۴۷","tags":["deploy","fix","docs"],"items":["public health: Next 2.30.8 و .NET 4.1.0 با OTP/Kavenegar زنده؛ صفحات چهارگانهٔ release برابر ۲۰۰",".NET safe ops: native ۷۶/۱۰۱، migration pending صفر، cutoverReady=false و mutation/transfer قفل","Next backfill: ۷۱ snapshot unsigned و ۱۰ index متناظر حفظ شدند؛ CoreSnapshot/index mutation و purge برابر صفر","backupهای تراکنشی: nextjs-20260715T100758Z و dotnet-20260715T095535Z؛ rollback runtime نگه‌داری شد","اسکریپت staging اصلاح شد تا در NODE_ENV=production وابستگی‌های build-time Tailwind/PostCSS را صریح نصب کند","UAT تولید پیش‌فرض خاموش ماند؛ CR24 و Emzano همچنان mock تا دریافت credential کارفرما"],"url":"https://vam.ati.ir/changelog#2026-07-15-v2-30-8-v4-1-0-live"},{"id":"2026-07-14-v2-30-8-stakeholder-ux","version":"2.30.8","cycle":"پذیرش بازخورد نمایندهٔ کارفرما","publication":"live","title":"ادامهٔ پروفایل، ورود نقش‌محور و انتخاب شفاف مبلغ طرح","summary":"سه بن‌بست گزارش‌شده در تصویر خانم حسنی در source کاندید Next رفع شد؛ این موج فقط .NET را deploy می‌کند و بنابراین اصلاحات UI هنوز live محسوب نمی‌شوند.","at":"2026-07-14T19:03:00+03:30","atTehran":"سه‌شنبه ۲۳ تیر ۱۴۰۵ — ۱۹:۰۳","tags":["fix","improvement","docs"],"items":["فرم پروفایل: CTA ثبت و ادامه + refresh وضعیت پس از بررسی کارشناس، بدون دورزدن gate تأیید","ورود پنل: حفظ مقصد داخلی انتخاب‌شده، RBAC نقش‌محور، fallback امن و رد open-redirect","production UAT: نقش و OTP ۱۲۳۴ فقط با opt-in + allow-list سروری؛ طول چهار/شش‌رقمی پویا با verify و session سمت سرور","طرح اعتباری: مبلغ editable/preset، validation کف و سقف طرح/رتبه و حذف silent-clamp","انتخاب قابل‌تشخیص با navy banner، تیک، متن، هشدار amber تغییر اعمال‌نشده و خلاصه/CTA روشن","regression: Playwright مقصد ۷/۷ سبز؛ شش سناریوی role-routing/UAT و سفر دو‌نشستی KYC تا صف سیستم برای CI Node 22","ادغام کامل توسعهٔ Ati-Vam در checkout مرجع bayabuy.baya.dev با سند provenance و حل تعارض‌ها"],"url":"https://vam.ati.ir/changelog#2026-07-14-v2-30-8-stakeholder-ux"},{"id":"2026-07-13-v2-30-8-uh-acceptance","version":"2.30.8","cycle":"پذیرش UH · سخت‌سازی dual-stack","publication":"live","title":"اثبات دو نشست سفر اعتبار و آمادگی استقرار امن تراکنشی","summary":"release candidate با نشست مستقل متقاضی و مدیر سیستم پوشش داده شد؛ مسیر deploy با backup معتبر، health gate و rollback آماده است، اما production تا اجرای واقعی همچنان Next v2.30.7 و .NET v4.0.1 است.","at":"2026-07-13T23:00:00+03:30","atTehran":"دوشنبه ۲۲ تیر ۱۴۰۵ — ۲۳:۰۰","tags":["fix","improvement","docs"],"items":["Playwright دو نشست: رتبه، امتیاز، سقف، وثایق، CTA، بازیابی پس از refresh و ردیف صف سیستم پیش از requestLoan","محاسبات ماهانه UTC-safe و هم‌ترازی graceDays محصولات TypeScript/C#","CI کامل: ۳۰۱ تست Node + ۲۴۷ تست .NET = ۵۴۸؛ golden ۴۱ و Merchant SDK پنج تست","health پیامک: cache/single-flight سی‌ثانیه‌ای Next و چهل‌وپنج‌ثانیه‌ای .NET با status عمومی sanitize/redact‌شده","CoreState: امضای مستقل، exact-payload CAS، تراکنش اتمیک snapshot/event/index و یک retry اکشن متقاضی","حالت preserve پیش‌فرض هیچ snapshot یا index حساب legacy را حذف/جایگزین نمی‌کند؛ حساب unsigned تا reconciliation با 409 core_state_quarantined قرنطینهٔ منطقی می‌شود","deploy، CORE_STATE_SIGNING_SECRET مستقل را در env ماندگار تولید/حفظ می‌کند","Next روی مسیر اصلی باقی می‌ماند؛ /dotnet sidecar است و cutover API تا تکمیل parity انجام نمی‌شود","CR24 و Emzano زنده همچنان منتظر credential کارفرما هستند"],"url":"https://vam.ati.ir/changelog#2026-07-13-v2-30-8-uh-acceptance"},{"id":"2026-07-13-v4-1-0-dotnet-hardening","version":"4.1.0","cycle":".NET 4.1 · امنیت و parity صادقانه","publication":"live","title":"OTP زندهٔ fail-closed، RBAC سمت API و health مبتنی بر قابلیت واقعی","summary":"نسخهٔ .NET دیگر OTP دمو یا آمادگی cutover کاذب را در Production نمی‌پذیرد و اکشن‌های حساس فقط برای موبایل‌های مدیر پیکربندی‌شده مجازند.","at":"2026-07-13T22:55:00+03:30","atTehran":"دوشنبه ۲۲ تیر ۱۴۰۵ — ۲۲:۵۵","tags":["fix","improvement","integration"],"items":["OTP کاوه‌نگار: challenge هش‌شده، single-use، cooldown و حذف challenge در خطای ارسال","cookie مستقل ativam_dotnet_session و rate limit ورود","sync/import در Production خاموش و اکشن‌های حساس دارای authorization server-side","allowlist قرارداد ۱۰۱ اکشن؛ native واقعی ۷۶/۱۰۱ (۷۵٫۲۵٪)، CoreState 10→11 و cutoverReady=false","verifyShahkarMatch و CR24 demo dispatch افزوده؛ دمو فقط در محیط غیر Production و با opt-in صریح","۲۴۷ تست C# سبز (۲۰۲ domain + ۴۵ infrastructure)؛ در 2026-07-15 روی production منتشر و smoke شد","health کاوه‌نگار با cache/single-flight چهل‌وپنج‌ثانیه‌ای و حذف credit/key/exception از پاسخ عمومی"],"url":"https://vam.ati.ir/changelog#2026-07-13-v4-1-0-dotnet-hardening"},{"id":"2026-07-13-github-agent-continuity","version":"2.30.7","cycle":"تداوم Agent · GitHub","publication":"live","title":"همسان‌سازی مخزن GitHub و بستهٔ تحویل Agent (Codex)","summary":"کل درخت کاری با GitHub همسان شد؛ secrets دیپلوی/SSH و پرامپت کامل تحویل برای ادامهٔ توسعه از مخزن خصوصی آماده است.","at":"2026-07-13T21:00:00+03:30","atTehran":"دوشنبه ۲۲ تیر ۱۴۰۵ — ۲۱:۰۰","tags":["docs","deploy"],"items":["docs/AGENT-CONTINUITY.md · AGENT-HANDOFF-PROMPT.md · GITHUB-SOURCE-OF-TRUTH.md","secrets/ — env snapshots · deploy-access · کلید SSH h91","scripts/bootstrap-agent-env.sh برای راه‌اندازی سیستم جدید","مستندات امضانو (emzano-ati) در مخزن"],"url":"https://vam.ati.ir/changelog#2026-07-13-github-agent-continuity"},{"id":"2026-07-13-v2-30-7-stabilize","version":"2.30.7","cycle":"تثبیت UH · baseline کارفرما","publication":"live","title":"تثبیت v2.30.7 — تکمیل UH قابل‌تحویل و هم‌ترازی مستندات/changelog","summary":"نسخهٔ تثبیت پس از رفع بن‌بست سفر کاربر حقیقی: تست کامل تا requestLoan، تخصیص کارشناس روی صف اعتبار، به‌روزرسانی product-baseline و صفحات کارفرما؛ CR24/Emzano live همچنان منتظر credential.","at":"2026-07-13T20:00:00+03:30","atTehran":"دوشنبه ۲۲ تیر ۱۴۰۵ — ۲۰:۰۰","tags":["improvement","docs","deploy","fix"],"items":["UH تکمیل‌شده در محدودهٔ بدون credential: UH0+UH1+UH2 + زنجیره تست تا loan_submitted","Request Center: تخصیص کارشناس روی ردیف‌های «اعتبار در جریان»","product-baseline / STABILIZATION / OPS / HANDOFF → 2.30.7","DoD سند USER-JOURNEY-UNBLOCK تیک‌خورده برای مسیر mock/دمو","UH3 CR24 live: deferred — بلاکر credential در OPS-WAVE-STATUS","دیپلوی تثبیت روی vam.ati.ir"],"url":"https://vam.ati.ir/changelog#2026-07-13-v2-30-7-stabilize"},{"id":"2026-07-13-v2-30-6-uh-journey","version":"2.30.6","cycle":"UH · رفع توقف سفر کاربر حقیقی","publication":"live","title":"رفع بن‌بست اعتبارسنجی، نمایش رتبه، و صف اعتبار در پنل سیستم","summary":"بازخورد حسنی: پس از هزینه اعتبارسنجی مسیر OTP→رتبه→ادامه شفاف شد؛ رتبه گروه/امتیاز نمایش داده می‌شود؛ پرونده از همان لحظه در مرکز درخواست‌های پنل سیستم دیده می‌شود.","at":"2026-07-13T16:00:00+03:30","atTehran":"دوشنبه ۲۲ تیر ۱۴۰۵ — ۱۶:۰۰","tags":["fix","feature","docs","deploy"],"items":["UH0: راهنمای OTP CR24 · دکمه محاسبه با توضیح غیرفعال · کارت رتبه sticky · ادامه سریع دمو ۱۲۳۴","UH1: بازیابی step ویزارد از creditApplication · برچسب «ثبت درخواست و ادامه به مدارک»","UH2: CreditApplicationIndex + credit-queue · بخش «اعتبار در جریان» در SystemRequestCenter","credit-journey.ts — resolveCreditJourneyStage / resolveCreditWizardStepIndex","OPERATIONS §۷-ب-۲ چک‌لیست UAT رتبه و صف سیستم","تست موتور زنجیره payScoringFee→CR24→assessment→caseFee","DEVELOPMENT-PLAN-USER-JOURNEY-UNBLOCK وضعیت اجرا"],"url":"https://vam.ati.ir/changelog#2026-07-13-v2-30-6-uh-journey"},{"id":"2026-07-12-v2-30-5-emzano-e2","version":"2.30.5","cycle":"امضانو E2 · SmartTrust live","publication":"live","title":"امضانو Wave E2 — کلاینت زنده SmartTrust + قرارداد PDF","summary":"استخراج zip مستندات ATI، adapter live با verify-sdk و sss/sign، op تأیید PDF، UI بدون OTP در live؛ Go-Live روی VM منتظر username/password و Base URL کارفرما.","at":"2026-07-12T18:15:00+03:30","atTehran":"یکشنبه ۲۱ تیر ۱۴۰۵ — ۱۸:۱۵","tags":["feature","integration","docs","deploy"],"items":["docs/emzano-ati — API-CONTRACT از PDFهای SmartTrust (هم‌سان emzano/)","smarttrust.ts — login verify-sdk (هدر auth) · sss/sign (JWT + X-TRUSTED-STRING) · cache توکن","live.ts — create/get/verify_signed_pdf/probe · کانال user_sdk | org_string","health: emzano.mode از resolveEmzanoRuntimeMode · configured/hasUserPass","ContractSignPanel: در live OTP دمو مخفی · راهنمای SDK/PWA",".env.example: EMZANO_USERNAME/PASSWORD/VERIFY/SIGN/TRUSTED/PWA","تست mock + shape live credentials · .NET EmzanoOp هم‌تراز","دیپلوی readiness v2.30.5 — mode=live فقط پس از env روی VM"],"url":"https://vam.ati.ir/changelog#2026-07-12-v2-30-5-emzano-e2"},{"id":"2026-07-12-v2-30-4-ops-waves","version":"2.30.4","cycle":"O0–O4 · تثبیت عملیاتی","publication":"live","title":"موج عملیاتی O0–O4: KPI، UAT، LoanIndex FK، تخصیص درخواست، بکاپ","summary":"هم‌ترازی KPI با واقعیت v2.30.x (SMS 1/5 live)، چک‌لیست UAT کارفرما، hardening ایندکس رابطه‌ای، stub تخصیص کارشناس در مرکز درخواست، اسکریپت بکاپ SQLite، و مستند بلاکرهای O1.","at":"2026-07-12T17:30:00+03:30","atTehran":"یکشنبه ۲۱ تیر ۱۴۰۵ — ۱۷:۳۰","tags":["improvement","docs","fix","deploy"],"items":["KPI Integration live = 1/5 (کاوه‌نگار) — نه 0/5؛ product-baseline + OPERATIONAL + STABILIZATION","docs: ativam-otp ۴۲۴ → fallback sms/send؛ تأیید الگو فقط از پنل کاوه‌نگار توسط کاربر","OPERATIONS: چک‌لیست UAT ۵ دقیقه‌ای شاهکار→پروفایل→تأیید سیستم→امضای دمو","relational-sync: ensure User قبل از LoanIndex (جلوگیری از P2003) + تست backend","Request Center: تخصیص کارشناس (stub محلی) برای صف KYC","scripts/backup-sqlite.sh + cron نمونه · OPERATIONS restore drill","OPS-WAVE-STATUS: بلاکرهای credential کارفرما برای CR24/Emzano/Shaparak/شبانیک",".NET health: otpNote برای شکاف otpMode=demo vs Next live"],"url":"https://vam.ati.ir/changelog#2026-07-12-v2-30-4-ops-waves"},{"id":"2026-07-12-v2-30-3-kavenegar-clarity","version":"2.30.3","cycle":"کاوه‌نگار · شفاف‌سازی کارفرما","publication":"live","title":"شفاف‌سازی OTP زنده کاوه‌نگار برای کارفرما","summary":"اتصال کاوه‌نگار از قبل روی vam.ati.ir زنده بود؛ ظاهر «ناتمام» از متن دمو/۱۲۳۴ و mock هم‌زمان CR24/Emzano می‌آمد. UI و مستندات اصلاح شد تا وضعیت زنده واضح باشد.","at":"2026-07-12T16:45:00+03:30","atTehran":"یکشنبه ۲۱ تیر ۱۴۰۵ — ۱۶:۴۵","tags":["improvement","integration","docs","deploy"],"items":["اثبات live: health otpMode=live · sms credit · POST /api/auth/otp → mock:false · debugmode=disabled","الگوی ativam-otp هنوز ۴۲۴/در صف تأیید پنل — ارسال واقعی با sms/send و خط 9982003385","AuthModal: placeholder دمو فقط در demo · راهنمای ۶رقمی در live","DemoGuide + SystemSettings + /requirements health: SMS زنده جدا از CR24/Emzano mock","health 2.30.3 · kavenegar.live + detail شامل debugmode/template","سیاست تاریخی 2.30.3: bypass برای DEMO_ACCOUNTS/HANDOFF_ADMIN؛ در RC 2.30.8 با opt-in + allow-list سروری جایگزین شد"],"url":"https://vam.ati.ir/changelog#2026-07-12-v2-30-3-kavenegar-clarity"},{"id":"2026-07-12-v2-30-2-kyc-profile-review","version":"2.30.2","cycle":"S1 · KYC · کاوه‌نگار · پنل سیستم","publication":"live","title":"رفع بررسی پروفایل در پنل سیستم · ماندگاری داده · OTP زنده کاوه‌نگار","summary":"حلقهٔ کامل کارفرما: ارسال پروفایل → صف پنل سیستم → تأیید/رد بدون «دسترسی نداری»؛ فیلدها پس از submit پاک نمی‌شوند؛ OTP live کاوه‌نگار با bypass دمو برای حساب‌های ارائه.","at":"2026-07-12T16:00:00+03:30","atTehran":"یکشنبه ۲۱ تیر ۱۴۰۵ — ۱۶:۰۰","tags":["fix","deploy","improvement","integration"],"items":["SystemRequestCenterPanel — بخش اقدام تأیید/رد پروفایل KYC (local + cross-user API)","requireAdminOperationsAccess — ستاد دمو command/system + HANDOFF_ADMIN","localStateIsRicher + UserProfileForm — جلوگیری از wipe فیلدهای استان/آدرس/شغل پس از sync","/api/core/sync — dual-write ProfileReviewIndex","OTP live: کاوه‌نگار روی VM (credit + template ativam-otp با fallback sms/send) · bypass تاریخی DEMO/Handoff که در RC 2.30.8 سخت‌سازی شد","ورود سریع /demo — ایجاد نشست httpOnly برای API پنل سیستم","health 2.30.3 · kavenegar.template/sender/hasApiKey/live","دیپلوی production vam.ati.ir"],"url":"https://vam.ati.ir/changelog#2026-07-12-v2-30-2-kyc-profile-review"},{"id":"2026-07-11-v2-30-1-shahkar-emzano-funds","version":"2.30.1","cycle":"S0/S1 · شاهکار · امضانو E1 · صندوق‌ها","publication":"live","title":"شاهکار قبل از پروفایل · امضانو E1 · ایجاد صندوق و اقدام مرکز درخواست","summary":"گیت شاهکار قبل از تکمیل پروفایل کاربر؛ Wave E1 امضانو (fallback شفاف، webhook stub، UI mode)؛ در پنل سیستم ایجاد صندوق live و تأیید/رد درخواست اعتبار سازمانی/تأمین‌کننده.","at":"2026-07-11T21:30:00+03:30","atTehran":"شنبه ۲۰ تیر ۱۴۰۵ — ۲۱:۳۰","tags":["feature","integration","deploy","docs"],"items":["verifyShahkarMatch + ShahkarVerifyPanel — ترتیب KYC: شاهکار → پروفایل کامل","امضانو Wave E1 — DEVELOPMENT-PLAN-EMZANO · webhook /api/webhooks/emzano · نشان mock/live/fallback","SystemFundsPanel — createProviderFund live · تنظیم سقف صندوق سازمانی","SystemRequestCenterPanel — approve/reject اعتبار سازمانی و تأمین‌کننده","تست موتور ۱۵۶ مورد · CoreState v11 · صفحات /presentation · /demo · /requirements","دیپلوی production vam.ati.ir · health 2.30.1"],"url":"https://vam.ati.ir/changelog#2026-07-11-v2-30-1-shahkar-emzano-funds"},{"id":"2026-07-09-v2-30-system-panel","version":"2.30.0","cycle":"S0/S1 · System Panel · بک‌آفیس ۲۳ ماژول","publication":"live","title":"پنل سیستم — بک‌آفیس فوق‌مدیریتی ۲۳ ماژول (Wave S0/S1)","summary":"پورتال /dashboard/system با ۲۳ ماژول RBAC-gated؛ داشبورد مدیریتی، مرکز درخواست‌ها، Audit Log، نقش‌ها و تنظیمات با دادهٔ زندهٔ cross-user؛ سایر ماژول‌ها اسکافولد spec.","at":"2026-07-09T18:30:00+03:30","atTehran":"پنجشنبه ۱۸ تیر ۱۴۰۵ — ۱۸:۳۰","tags":["feature","docs"],"items":["پورتال system + ۲۳ پنل در panel-registry · SYSTEM_MENU_IDS · ۵ مجوز جدید RBAC (system.access/roles/rules/settings/audit)","داشبورد مدیریتی + مرکز درخواست‌ها — KPI و صف cross-user زنده (/api/system/overview · /api/admin/operations)","Audit Log زنده (/api/system/audit — AdminOperationLog + EventLog) · ماتریس نقش×مجوز · viewer تنظیمات و سرویس‌ها (/api/health)","کاتالوگ داده‌محور ۲۳ ماژول (src/lib/system/modules.ts) + رندر عمومی SystemModulePanel + مسیر داینامیک [module]","super-admin واقعی پنل سیستم از allow-list سرور و OTP واقعی می‌آید؛ شمارهٔ Handoff حساب عمومی دمو نیست","docs/DEVELOPMENT-PLAN-SYSTEM-PANEL.md — برنامهٔ Waveبندی S0–S6","صفحات /changelog · /requirements · /demo · ROADMAP به‌روز"],"url":"https://vam.ati.ir/changelog#2026-07-09-v2-30-system-panel"},{"id":"2026-07-09-v2-29-marketer-panel","version":"2.29.0","cycle":"P10 · Marketer Panel · CoreState v11","publication":"live","title":"پنل بازاریاب کامل — marketer-engine · CoreState v11 · TLS زنده","summary":"M1–M6: ثبت‌نام سه‌مسیره، قرارداد Emzano، پنج نوع معرفی، Rule Engine چهارسطحی، تسویه دستی/ماهانه، Mini-CRM و ۱۲ منوی agent روی vam.ati.ir.","at":"2026-07-09T04:15:00+03:30","atTehran":"پنجشنبه ۱۸ تیر ۱۴۰۵ — ۰۴:۱۵","tags":["feature","deploy","docs"],"items":["src/lib/engines/marketer-engine.ts — MarketerRegistry · planMarketerCommission · cascade · settlement","CoreState v11 — marketerRegistry · migrate از v10 · DEMO_AGENT → ریشهٔ فعال شبکه","پنل /dashboard/agent/* — home · referrals · crm · commission · settlement · network · reports · contracts · profile · notifications · support","ثبت‌نام عمومی /bayabuy/collaborate · لینک ?refm= · پنج introductionType","هوک رویداد: فعال‌سازی پذیرنده/تأمین‌کننده · اعتبار · اولین خرید · agentEarned چندبازاریابی","engine-tests: بلوک Marketer Panel · backend migrate v11 · health 2.29.0","TLS LIVE vam.ati.ir · docs/MARKETER-PANEL · DEVELOPMENT-PLAN-MARKETER-PANEL · DOMAIN-GLOSSARY §۹","صفحات کارفرما: /changelog · /presentation · /requirements · /demo به‌روز"],"url":"https://vam.ati.ir/changelog#2026-07-09-v2-29-marketer-panel"},{"id":"2026-07-08-v2-28-security-integrate","version":"2.28.0","cycle":"امنیت · یکپارچه‌سازی v2","publication":"live","title":"تثبیت امنیت — rate limit یکپارچه در همهٔ APIها","summary":"حذف Mapهای پراکنده · enforce.ts · یکپارچگی/شبانیک/فینوتک/امضانو/CR24/ADT · Retry-After یکسان · تست backend.","at":"2026-07-08T02:50:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۲:۵۰","tags":["improvement","fix","deploy","docs"],"items":["src/lib/security/enforce.ts — enforceIpRateLimit · enforceRateLimit · rateLimitJson","یکپارچه‌سازی: shabanic · finnotech · emzano · cr24 → RATE_LIMITS","OTP · core/action · AI · ADT → پاسخ ۴۲۹ یکسان با Retry-After","adtRateLimitReject — ADT با هدر استاندارد","backend-tests: ۴ تست rate limit · SECURITY.md §۱.۳"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-28-security-integrate"},{"id":"2026-07-08-v2-27-security-hardening","version":"2.27.0","cycle":"امنیت · Security Headers v2","publication":"live","title":"تقویت استانداردهای امنیتی — CSP · rate limit · middleware","summary":"هدرهای متمرکز + CSP/COOP/CORP · rate limit یکپارچه OTP/core/AI · ضد brute-force OTP · nginx hardening · SECURITY.md.","at":"2026-07-08T02:35:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۲:۳۵","tags":["improvement","fix","deploy","docs"],"items":["src/lib/security/headers.ts — منبع واحد هدرها + RATE_LIMITS","src/lib/security/rate-limit.ts — checkRateLimit · Retry-After · getClientIp","middleware: اعمال هدر روی همهٔ مسیرها · poweredByHeader: false","OTP: ۱۰ req/min IP · verify ۸/۱۵min per mobile","nginx-production-hardening.conf — CSP · server_tokens off · deny .git/.env","COOKIE_SECURE env · smoke scripts/security-smoke.mjs","docs/SECURITY.md §۱.۱–۱.۱۱ به‌روز"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-27-security-hardening"},{"id":"2026-07-08-v2-26-pwa-install","version":"2.26.0","cycle":"PWA · نصب وب‌اپ","publication":"live","title":"نصب PWA — ویندوز · macOS · لینوکس · اندروید · iOS","summary":"آیکن PNG · manifest کامل · beforeinstallprompt · صفحه /install · بنر نصب · docs/PWA.md.","at":"2026-07-08T02:22:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۲:۲۲","tags":["feature","deploy","docs"],"items":["آیکن‌های PNG 72–512 + maskable — npm run pwa:icons","manifest: shortcuts · display_override · categories · apple-touch-icon","sw.js v3 — precache manifest و آیکن‌ها","InstallAppPrompt + InstallAppButton + useInstallPrompt","صفحه /install — راهنمای گام‌به‌گام هر OS به فارسی","Footer و منوی موبایل: لینک نصب وب‌اپ","docs/PWA.md + DESIGN-BRIEF"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-26-pwa-install"},{"id":"2026-07-08-v2-25-responsive-rtl","version":"2.25.0","cycle":"UX · ریسپانسیو موبایل/تبلت","publication":"live","title":"بهبود ریسپانسیو موبایل و تبلت — RTL فارسی","summary":"پایه safe-area و touch-target · Navbar تبلت · DashboardShell و AuthModal · TableScroll برای جداول · DESIGN-BRIEF §ریسپانسیو.","at":"2026-07-08T02:08:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۲:۰۸","tags":["improvement","deploy","docs"],"items":["globals.css: overflow-x clip · safe-top/bottom · touch-target 44px · فونت 16px فیلدها در موبایل","viewportFit: cover · Container padding موبایل‌محور","Navbar: منوی موبایل فقط <md · ناوبری افقی فشرده md–lg · اهداف لمسی","DashboardShell: breadcrumb truncate · گرید پورتال 2×3 · padding و safe-bottom","AuthModal: bottom sheet · max-h 92dvh · safe-area","TableScroll + requirements/baseline/changelog","DESIGN-BRIEF.md — بخش ریسپانسیو موبایل/تبلت فارسی"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-25-responsive-rtl"},{"id":"2026-07-08-changelog-audit","version":"2.24.0","cycle":"Changelog · اصلاح زمان و نسخه","publication":"live","title":"اصلاح زمان‌بندی تهران و تفکیک نسخه Next/.NET","summary":"بازبینی timestamps برای monotonic بودن (بدون ساعت آینده)؛ برچسب .NET v3/v4 جدا از Next v2.x؛ اصلاح ورودی آینهٔ VM که اشتباهاً v3.0.0 بود.","at":"2026-07-08T01:52:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۱:۵۲","tags":["fix","docs","improvement"],"items":["رفع `2026-07-08T23:30` و ساعات 02:00–04:00 همان روز که نسبت به انتشار واقعی جلوتر بودند","ترتیب v2.13/v2.14 در ۷ تیر — زمان‌بندی monotonic","`formatChangelogVersion` — نمایش `.NET v4.x` در برابر `v2.x` برای Next.js","ورودی آینهٔ VM: نسخهٔ صحیح Next `2.9.0` (نه 3.0.0)"],"url":"https://vam.ati.ir/changelog#2026-07-08-changelog-audit"},{"id":"2026-07-08-v2-24-phase-a-kickoff","version":"2.24.0","cycle":"فاز A v3 · Admin Operations","publication":"live","title":"Kickoff فاز A — schema رابطه‌ای + صف ops کامل از DB","summary":"Merchant/Supplier index · AdminOperationLog · GET /api/admin/operations · اتاق فرمان cross-user از Prisma.","at":"2026-07-08T01:48:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۱:۴۸","tags":["feature","improvement","docs"],"items":["گام ۱ — Prisma: MerchantApplicationIndex · SupplierApplicationIndex · AdminOperationLog","گام ۲ — migration 20260708133000_relational_ops_kickoff","گام ۳ — syncRelationalIndexes: dual-write پذیرنده/supplier + وام/پروفایل","گام ۴ — GET /api/admin/operations: صف وام · KYC · پذیرنده · supplier + stats","گام ۵ — admin-action.ts: cross-user با elevate sysadmin + ممیزی AdminOperationLog","گام ۶ — AdminOperationsPanel: همه صف‌ها از DB · تأیید/رد cross-user","گام ۷ — backfill گسترش‌یافته · health relational v2.24.0","گام ۸ — BACKEND.md §۱۱ · baseline · changelog کارفرما"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-24-phase-a-kickoff"},{"id":"2026-07-08-baseline-operational-sync","version":"2.23.0","cycle":"Baseline کارفرما · OPERATIONAL","publication":"live","title":"به‌روزرسانی یکپارچه baseline — §۲ و §۷ + UI کارفرما","summary":"هم‌ترازی DEVELOPMENT-PLAN-OPERATIONAL با v2.22–2.23 · KPI 11/11 · product ~83٪ · پنل /requirements.","at":"2026-07-08T01:28:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۱:۲۸","tags":["docs","improvement"],"items":["§۲ baseline: ۱۳ حوزه + جدول دارایی‌ها + انتشارات v2.20–2.23 + صفحات کارفرما","§۷ KPI: merchant/supplier 11/11 · npm test 166 · SDK 5/5 · LoanIndex prod · Go-Live ~58٪","NEWDEVDOC §۱۲ gap matrix هم‌تراز — حذف اعداد منسوخ ۵/۱۱ و ۰/۱۱","src/lib/requirements/product-baseline.ts — منبع واحد UI و مستندات","ProductBaselinePanel در /requirements — نمودار پیشرفت + جدول KPI","stack-comparison: testCount 166 · maturity 83٪ · ۴ migration","هم‌تراز v2.22 Merchant SDK و v2.23 relational در baseline"],"url":"https://vam.ati.ir/changelog#2026-07-08-baseline-operational-sync"},{"id":"2026-07-08-v2-23-relational-index","version":"2.23.0","cycle":"فاز A v3 · Relational Index","publication":"live","title":"ایندکس رابطه‌ای وام/پروفایل — صف admin از DB","summary":"گام‌به‌گام: schema Prisma · dual-write · backfill · API stats · health relational · دیپلوی VM.","at":"2026-07-08T01:12:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۱:۱۲","tags":["feature","improvement","deploy","docs"],"items":["گام ۱ — Prisma: مدل‌های LoanIndex و ProfileReviewIndex + migration 20260707210148_relational_index_a1","گام ۲ — syncRelationalIndexes: همگام‌سازی خودکار پس از persistCoreForUser (dual-write سبک)","گام ۳ — admin-queue: اولویت صف عملیات از ایندکس رابطه‌ای؛ fallback به snapshot scan","گام ۴ — GET /api/admin/stats: آمار loanIndex · pending loans · profileReview · eventLog","گام ۵ — scripts/backfill-relational-index.mjs برای پر کردن ایندکس از CoreSnapshot موجود","گام ۶ — /api/health: نسخه 2.23.0 + بلوک relational (شمارش ایندکس‌ها)","گام ۷ — تست backend: upsert/hard-delete LoanIndex و ProfileReviewIndex","گام ۸ — مستندات baseline: DEVELOPMENT-PLAN-OPERATIONAL · HANDOFF · V3 فاز A","گام ۹ — دیپلوی production VM 185.116.112.4 + prisma migrate deploy + backfill"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-23-relational-index"},{"id":"2026-07-08-v2-22-merchant-sdk","version":"2.22.0","cycle":"EXT-4 · Merchant SDK","publication":"live","title":"Merchant SDK + PrestaShop scaffold + صفحات کارفرما","summary":"packages/ativam-merchant-sdk · integrations/prestashop · /presentation و /requirements به‌روز · تست golden HMAC.","at":"2026-07-08T00:58:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۰:۵۸","tags":["feature","integration","docs","deploy"],"items":["AtiVamMerchantClient (create/verify/cancel) + golden.json","PrestaShop 8 module scaffold · Shopify app stub","PluginsEcosystemSection در /presentation · فی/معماری در /demo","docs/DEVELOPMENT-PLUGIN-FRAMEWORKS.md · npm run test:merchant-sdk"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-22-merchant-sdk"},{"id":"2026-07-08-v2-21-wordpress-plugin","version":"2.21.0","cycle":"WordPress · v1.1.0","publication":"live","title":"افزونه وردپرس BNPL — محاسبه‌گر · Handoff · WC gateway","summary":"افزونه کامل wordpress-plugin/ati-vam v1.1.0 — دانلود /ati-vam-wp.zip · مستند DEVELOPMENT-WORDPRESS.","at":"2026-07-08T00:46:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۰:۴۶","tags":["feature","docs","deploy","integration"],"items":["WC gateway + callback HMAC + cron sync + cancel API","[ativam_calculator] · Handoff · CTA shortcodes · Gutenberg block","npm run pack:wordpress → public/ati-vam-wp.zip","docs/DEVELOPMENT-WORDPRESS.md · DEVELOPMENT-TOOLING.md"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-21-wordpress-plugin"},{"id":"2026-07-08-v2-20-waves-11-13","version":"2.20.0","cycle":"Wave 11–13 · financial + supplier + CI","publication":"live","title":"گزارش مالی admin · onboarding تأمین‌کننده · GitHub Actions","summary":"تکمیل Phase 4–6 PRD: aging/BS/P&L، supplier onboarding، CI workflow و E2E ops.","at":"2026-07-08T00:34:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۰:۳۴","tags":["feature","deploy","integration"],"items":["finance-reports.ts — aging · balance sheet · income statement","AdminFinancePanel: گزارش‌های Phase 4","submitSupplierApplication · reviewSupplierApplication + UI/admin queue","user/supplier-request · GitHub Actions ci.yml · e2e/ops-pages.spec.ts"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-20-waves-11-13"},{"id":"2026-07-08-v2-19-wave10-integrations-panel","version":"2.19.0","cycle":"Wave 10 · ops","publication":"live","title":"پنل health یکپارچه‌سازی‌ها · integrations:health","summary":"نمایش زنده CR24/Emzano/SMS در /requirements و اسکریپت ops برای بررسی production.","at":"2026-07-08T00:22:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۰:۲۲","tags":["improvement","integration","deploy"],"items":["IntegrationHealthPanel در صفحه requirements","npm run integrations:health — بررسی /api/health + cr24/emzano detail",".env.example: CR24_BRIDGE_URL · EMZANO_* · CR24_MODE","DemoGuide: سناریو onboarding پذیرنده (Emzano)"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-19-wave10-integrations-panel"},{"id":"2026-07-08-v2-18-wave9-integrations","version":"2.18.0","cycle":"Wave 9 · integrations","publication":"live","title":"Emzano onboarding پذیرنده · CR24 live bridge · .NET allowlist","summary":"امضای قرارداد پذیرنده via Emzano، پل async CR24_BRIDGE_URL، health emzano/cr24 در /api/health.","at":"2026-07-08T00:10:00+03:30","atTehran":"چهارشنبه ۱۷ تیر ۱۴۰۵ — ۰۰:۱۰","tags":["feature","improvement","deploy"],"items":["startMerchantApplicationEsign + Emzano OTP در merchant-request","cr24/live.ts — runCr24Async + CR24_BRIDGE_URL","health: emzano + cr24.hasBridge",".NET CoreActionAllowlist هم‌تراز Node (merchant + payment + CR24)"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-18-wave9-integrations"},{"id":"2026-07-08-v2-17-wave8-onboarding","version":"2.17.0","cycle":"Wave 8 · newdevdoc","publication":"live","title":"onboarding پذیرنده · LegalBankCs · CR24 health","summary":"فرم کامل درخواست پذیرندگی با flow تأیید/امضا، LegalBankCs در درخواست سازمانی، و وضعیت CR24 در health.","at":"2026-07-07T23:58:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۳:۵۸","tags":["feature","improvement","deploy"],"items":["P7 onboarding: submitMerchantApplication · review · signMerchantApplicationContract","UI: `/dashboard/user/merchant-request` + صف اتاق فرمان","P4/P9: LegalBankCs در submitOrgCreditRequest + hub","merchant profile: success/failed/cancel URL","health + `/api/integrations/cr24?op=health`: hasCredentials · liveBridge"],"url":"https://vam.ati.ir/changelog#2026-07-08-v2-17-wave8-onboarding"},{"id":"2026-07-07-v2-16-wave7-merchant","version":"2.16.0","cycle":"Wave 7 · newdevdoc","publication":"live","title":"تکمیل ۱۱ منوی پنل پذیرنده + تنظیمات supplier","summary":"شعب، گزارش، قرارداد، اعلان و پشتیبانی merchant — پوشش کامل P7؛ supplier settings (P8-11).","at":"2026-07-07T23:46:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۳:۴۶","tags":["feature","improvement","deploy"],"items":["P7-2/3/4: `/dashboard/merchant/branches|reports|contracts|notifications|support`","P8-11: `/dashboard/supplier/settings`","MERCHANT_MENU_IDS ۱۱ آیتم · SUPPLIER_MENU_IDS ۱۱ آیتم"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-16-wave7-merchant"},{"id":"2026-07-07-v2-15-wave6-supplier","version":"2.15.0","cycle":"Wave 6 · newdevdoc","publication":"live","title":"تکمیل ۱۰ منوی پنل تأمین‌کننده","summary":"گزارش، قرارداد، پروفایل، اعلان و پشتیبانی supplier — پوشش کامل منوی P8 به‌جز تنظیمات پیشرفته.","at":"2026-07-07T23:34:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۳:۳۴","tags":["feature","improvement","deploy"],"items":["P8-02: `/dashboard/supplier/reports|contracts|profile|notifications|support`","panel-registry: SUPPLIER_MENU_IDS ۱۰ آیتم","DemoGuide: highlights به‌روز"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-15-wave6-supplier"},{"id":"2026-07-07-v2-14-wave5","version":"2.14.0","cycle":"Wave 5 · newdevdoc","publication":"live","title":"پنل supplier ۵ منو · استعلام صیاد در submitCollateral","summary":"زیرصفحات تأمین‌کننده (صندوق، وام، تراکنش، برداشت) و اعتبارسنجی چک/سفته الکترونیک هنگام ثبت وثیقه.","at":"2026-07-07T23:22:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۳:۲۲","tags":["feature","improvement","deploy"],"items":["P8-01: `/dashboard/supplier/home|fund|loans|transactions|withdrawals` + panel-registry","P1-11: `submitCollateral` — sayad_inquiry ۱۶ رقم + سفته ≥۱۰ رقم","مستندات: gap matrix و baseline عملیاتی به‌روز"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-14-wave5"},{"id":"2026-07-07-v2-13-newdevdoc","version":"2.13.0","cycle":"newdevdoc · Wave 4","publication":"live","title":"جدول ضمانت A/B/C · تسویه زودهنگام · مسدودیت معوق","summary":"هم‌ترازی ScoringEngine با DOMAIN-SPEC §4.1، payEarlySettlement با تنزیل سود، و قفل درخواست اعتبار جدید هنگام قسط معوق.","at":"2026-07-07T23:10:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۳:۱۰","tags":["feature","improvement","deploy"],"items":["P3-01/P1-04: groupLimit · groupMinLimit · groupCollaterals per رتبه A/B/C","validateLoanRequest: بازه مبلغ انفرادی بر اساس رتبه","payEarlySettlement + UI تسویه کامل در پنل کاربر","مسدودیت requestLoan در صورت قسط overdue فعال","golden credit-group-samples.json (۳ case)","CreditRequestWizard: نمایش بازه مبلغ و اعتبارسنجی پیش از ثبت","پنل پذیرنده: `/dashboard/merchant/refunds`"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-13-newdevdoc"},{"id":"2026-07-07-v2-12-wave3","version":"2.12.0","cycle":"Wave 3","publication":"live","title":"KYC زنده CR24 · پرداخت جزئی قسط · Admin cross-user","summary":"grace ۵ روزه طرح‌های ماهانه، OTP اعتبارسنجی CR24، payPartialInstallment + کیف نقدی در بازپرداخت، صف عملیات admin از DB.","at":"2026-07-07T22:30:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۲:۳۰","tags":["feature","integration","improvement"],"items":["W3-06: graceDays=5 برای individual/organizational/insurance_purchase + golden penalty","W3-01/02: runCr24 یکپارچه، sendCr24ScoringOtp/verifyCr24ScoringOtp، mobileMatching در KYC","W3-04: payPartialInstallment + UI پنل کاربر + وضعیت partial","W3-05: payInstallment با split کیف نقدی + شاپرک","W3-07: GET /api/admin/operations/queue + POST action cross-user"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-12-wave3"},{"id":"2026-07-07-v2-11-newdevdoc-wave2","version":"2.11.0","cycle":"سیکل ۶ · تیر ۱۴۰۵ — newdevdoc Wave 2","publication":"live","title":"Wave 2: Payment API کامل، QR، Callback HMAC، پنل پذیرنده","summary":"Create/Verify/Pay/Cancel با Api-Key، توکن یکبارمصرف، Callback HMAC-SHA256 و پنل پذیرنده چندصفحه‌ای.","at":"2026-07-07T20:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۲۰:۰۰","tags":["feature","integration","deploy"],"items":["POST/GET /api/payments/* — create، verify، pay، cancel، [token]","HMAC-SHA256 callback + X-Merchant-Api-Key auth","merchantProfiles + cancelPaymentInvoice + atomic purchase rollback","پنل پذیرنده: home، invoices، orders، settlements، profile","PaymentQrCode (Nayuki MIT) + MERCHANT_MENU_IDS"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-11-newdevdoc-wave2"},{"id":"2026-07-07-v2-10-newdevdoc-wave1","version":"2.10.0","cycle":"سیکل ۶ · تیر ۱۴۰۵ — newdevdoc Wave 1","publication":"live","title":"Wave 1 newdevdoc: CR24، fee 170k، QR پرداخت، split خرید","summary":"هم‌ترازی با مستندات کارفرما: هزینه تشکیل پرونده ۱۷۰k، CR24 mock، schedule از فعال‌سازی، فاکتور QR و Payment API.","at":"2026-07-07T18:15:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۱۸:۱۵","tags":["feature","integration","deploy"],"items":["CASE_FORMATION_FEE_TOMAN = 170_000 (newdevdoc)","CR24 mock + /api/integrations/cr24 + hub credit_bureau","schedule rebuild at loan activation (first due next month)","purchase credit+cash split + spendForPurchase","createPaymentInvoice / payPaymentInvoice + /pay/[token]","POST /api/payments/create + verify — merchant API scaffold","پنل پذیرنده: ایجاد فاکتور QR"],"url":"https://vam.ati.ir/changelog#2026-07-07-v2-10-newdevdoc-wave1"},{"id":"2026-07-07-requirements-v4-0-1-deploy","version":"4.0.1","cycle":"سیکل ۵ · تیر ۱۴۰۵ — requirements + دیپلوی dual-stack","publication":"live","title":"به‌روزرسانی /requirements + دیپلوی زنده Next.js و .NET","summary":"صفحه requirements با v4.0.1، parity 5/5، ops 29/29 و compiled-only همسان شد؛ دیپلوی مجدد dual-stack روی VM.","at":"2026-07-07T11:30:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۱۱:۳۰","tags":["docs","deploy","improvement"],"items":["`stack-comparison.ts` — parityScenarios، opsChecks، compiledOnly، liveVmUrl","`RequirementsPage` — نمایش v4.0.1 و متریک‌های امنیتی","`push-nextjs-vm.sh` + `package-vm-nextjs.sh` — دیپلوی standalone بدون خاموش .NET","VM: `/requirements` 200 + dotnet health 4.0.1"],"url":"https://vam.ati.ir/changelog#2026-07-07-requirements-v4-0-1-deploy"},{"id":"2026-07-07-v4-0-1-security-lockdown","version":"4.0.1","cycle":"سیکل ۵ · تیر ۱۴۰۵ — v4.0.1 سخت‌سازی compiled-only","publication":"live","title":"v4.0.1: استقرار compiled-only + Swagger خاموش + بدون PDB","summary":"Publish Release بدون نماد دیباگ؛ Swagger در production و nginx مسدود؛ Next standalone؛ حذف src از دیسک VM پس از build.","at":"2026-07-07T11:30:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۱۱:۳۰","tags":["deploy","improvement","fix"],"items":["`Directory.Build.props` + publish-linux/windows — `DebugType=none`، حذف PDB","`deploy/verify-dotnet-artifact.sh` — gate قبل از دیپلوی","nginx: deny `.cs/.ts/.pdb` · `/dotnet/swagger` → 404","Next.js: `STANDALONE_DEPLOY=1` + `productionBrowserSourceMaps: false`","VM Next.js: اجرای `server.js` از `.next/standalone` + حذف `src/` پس از build","`ATIVAM_VM_SUDO_PASS` env — بدون رمز hardcoded در اسکریپت‌های commit‌شده","ops ۲۹/۲۹ · parity ۵/۵ · health `4.0.1`"],"url":"https://vam.ati.ir/changelog#2026-07-07-v4-0-1-security-lockdown"},{"id":"2026-07-07-cutover-v4-sync-import-deploy","version":"4.0.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — v4.0 Cutover parity سبز + sync/import .NET","publication":"live","title":"v4.0: پاریتی ۵/۵ سبز + API sync/import در .NET + دیپلوی","summary":"رفع adapt آرگومان در compare-engine-parity (ensureUser + updateValueRiskParameter). POST /api/core/sync و /import در .NET — قرارداد یکسان با Node.","at":"2026-07-07T10:30:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۱۰:۳۰","tags":["feature","deploy","fix"],"items":["`compare-engine-parity.mjs` — adapt mobile برای ensureUser و شکل Node برای updateValueRiskParameter","`POST /api/core/sync` + `POST /api/core/import` در CoreController (.NET)","health `parity.coreSyncImport: true` · نسخه 4.0.0","`GET /api/core/state` — فیلد `version:10` در خروجی .NET (سازگاری sync/import)","ops test: sync/import smoke + parity 5/5 از workstation","دیپلوی v4.0.0 روی `185.116.112.4`"],"url":"https://vam.ati.ir/changelog#2026-07-07-cutover-v4-sync-import-deploy"},{"id":"2026-07-07-cutover-phase9-deploy-v3-9","version":"3.9.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۹ Cutover/Parity + دیپلوی v3.9","publication":"live","title":"فاز ۹ .NET: اعتبارسنجی پاریتی + ابزار cutover + پاریتا ۱۰۰٪ + دیپلوی v3.9","summary":"اسکریپت compare-engine-parity (۵ سناریو)، e2e-backend با --base، health با بلوک parity، snippet canary nginx. نقشه ۹ فاز تکمیل شد.","at":"2026-07-07T09:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۹:۰۰","tags":["feature","deploy","improvement"],"items":["`scripts/compare-engine-parity.mjs` — ۵ سناریو: basic-kyc · loan-request-cancel · org-iam · value-risk · cash-wallet","`e2e-backend.mjs --base URL` — تست remote بدون spawn سرور محلی","`GET /api/health` — بلوک `parity` (71/71 اکشن، ۹/۹ فاز، cutoverReady)","`deploy/dotnet-parity-test.sh` + `nginx-canary-snippet.conf` (canary 0% پیش‌فرض)","پاریتا backend: ۱۰۰٪ · ۱۲۶ تست C# · ops ۲۶/۲۶","دیپلوی v3.9.0 روی `185.116.112.4`","Canary production: تصمیم کارفرما + sticky session (runbook در فاز ۹ doc)"],"url":"https://vam.ati.ir/changelog#2026-07-07-cutover-phase9-deploy-v3-9"},{"id":"2026-07-07-ef-migrations-phase8-deploy-v3-8","version":"3.8.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۸ EF Migrations + دیپلوی v3.8","publication":"live","title":"فاز ۸ .NET: EF Core Migrations رسمی + OTP DB + سخت‌سازی systemd + دیپلوی v3.8","summary":"EnsureCreated با Migrate() جایگزین شد؛ migrationهای InitialCreate و AddOtpTable؛ baseline امن برای DBهای legacy؛ OTP live در جدول Otp؛ health با migrations. باینری v3.8.0 روی VM.","at":"2026-07-07T08:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۸:۰۰","tags":["feature","deploy","improvement"],"items":["EF Migrations: `InitialCreate` (۴ جدول) + `AddOtpTable` — `DatabaseBootstrap.MigrateSafely()`","Baseline خودکار برای DBهای EnsureCreated قدیمی — بدون از‌دست‌رفتن داده","OTP live از in-memory به جدول `Otp` (SQLite) منتقل شد","`GET /api/health` — فیلد `migrations` (applied/pending/latest)","systemd: `ProtectSystem=strict` + `ProtectHome` + `LimitNOFILE`","۳ تست migration xUnit — مجموع ۱۲۶ تست C# سبز","ops test: ۲۶/۲۶ + بررسی migrations در health","دیپلوی v3.8.0 روی `185.116.112.4`","فاز بعدی: Cutover و parity validation (فاز ۹)"],"url":"https://vam.ati.ir/changelog#2026-07-07-ef-migrations-phase8-deploy-v3-8"},{"id":"2026-07-07-integrations-phase7-deploy-v3-7","version":"3.7.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۷ یکپارچگی‌ها + دیپلوی v3.7","publication":"live","title":"فاز ۷ .NET: REST یکپارچگی‌ها (شبانیک/امضانو/فینوتک) + OTP live + دیپلوی v3.7","summary":"۴ endpoint REST پروکسی (mock/upstream fallback)، ConnectorHub circuit-breaker، health با connectors/sms، و OTP live با کاوه‌نگار. باینری v3.7.0 روی VM دیپلوی شد.","at":"2026-07-07T07:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۷:۰۰","tags":["feature","deploy","integration"],"items":["`POST /api/integrations/shabanic|emzano|finnotech` — mock دترمینیستیک + upstream fallback","`ConnectorHub` + `IntegrationRuntimeStore` — rate limit ۳۰/دقیقه/IP، mirror ConnectorHealth","`GET /api/health` — فیلدهای `connectors`، `otpMode`، `sms`","OTP live: `AtiVam:OtpMode=live` + `KavenegarSmsService` (fallback in-memory بدون کلید)","۱۲ تست xUnit (`IntegrationEngineTests`) — مجموع ۱۲۳ تست C# سبز","ops test: ۲۶/۲۶ (health + ۳ integration + جریان KYC/Value/Risk/IAM/loan)","دیپلوی v3.7.0 روی `185.116.112.4` — health `version:3.7.0`","فاز بعدی: EF Core Migrations (فاز ۸)"],"url":"https://vam.ati.ir/changelog#2026-07-07-integrations-phase7-deploy-v3-7"},{"id":"2026-07-07-value-risk-phase6-deploy-v3-6","version":"3.6.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۶ Value/Risk + دیپلوی v3.6","publication":"live","title":"فاز ۶ .NET: اتاق فرمان Value/Risk (۳ اکشن) + پاریتی ۱۰۰٪ بک‌اند + دیپلوی v3.6","summary":"کاتالوگ ۲۹ پارامتر Value/Risk، توسعه طرح محصول و قطع کانکتور پورت شد؛ تمام ۷۱ اکشن allowlist در NativeEngineBridge فعال شد. باینری v3.6.0 روی VM دیپلوی شد.","at":"2026-07-07T06:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۶:۰۰","tags":["feature","deploy","improvement"],"items":["`ValueRiskEngine` + `ValueRiskCatalog` (۲۹ پارامتر) · `PlatformValueRiskBundle` در GlobalCoreState","۳ اکشن: updateValueRiskParameter · updateProductSchemeExtension · setConnectorDown","`ConnectorHealth` + `ConnectorId` برای circuit-breaker (پایه فاز ۷)","۱۳ تست xUnit (`ValueRiskEngineTests`) — مجموع ۱۱۱ تست C# سبز","پاریتی بک‌اند: ۷۱/۷۱ اکشن (٪۱۰۰) · dispatch کامل NativeEngineBridge","دیپلوی v3.6.0 روی `185.116.112.4` — health `version:3.6.0`","فاز بعدی: یکپارچگی‌های REST (فاز ۷)"],"url":"https://vam.ati.ir/changelog#2026-07-07-value-risk-phase6-deploy-v3-6"},{"id":"2026-07-07-guarantor-contract-phase5-deploy-v3-5","version":"3.5.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۵ ضامن/قرارداد + دیپلوی v3.5","publication":"live","title":"فاز ۵ .NET: ضامن، امضای قرارداد امضانو، ارسال فیزیکی (۶ اکشن) + دیپلوی زنده v3.5","summary":"جریان کامل ضامن و قرارداد الکترونیک پورت شد؛ `completeContractSignature` با overload واقعی (contractId + EmzanoSession) جایگزین میان‌بر دمو شد. پاریتی بک‌اند به ۹۴٪ (۶۷/۷۱) رسید.","at":"2026-07-07T05:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۵:۰۰","tags":["feature","deploy","improvement"],"items":["مدل‌ها: `ContractModels.cs` — LoanContract، ContractSignature، EmzanoSession، GuarantorInvite، PhysicalShipment","۶ اکشن: inviteGuarantor · acceptGuarantorByCode · submitPhysicalShipment · confirmPhysicalDocsReceived · recordContractEsignSession · completeGuarantorContractSignature","`completeContractSignature` — مسیر واقعی امضانو + سازگاری میان‌بر تک‌آرگومان (loanId)","`CreditCommitteeApprove` اکنون قرارداد (`GenerateContract` + `ContractHash`) صادر می‌کند","۱۱ تست xUnit جدید (`GuarantorContractEngineTests`) — مجموع ۹۸ تست C# سبز","دیپلوی v3.5.0 روی `185.116.112.4` — health `version:3.5.0`","پاریتی: ۶۷/۷۱ اکشن (٪۹۴ بک‌اند) · فاز بعدی: Value/Risk (فاز ۶)"],"url":"https://vam.ati.ir/changelog#2026-07-07-guarantor-contract-phase5-deploy-v3-5"},{"id":"2026-07-07-kyc-advanced-phase4-deploy-v3-4","version":"3.4.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۴ KYC پیشرفته + دیپلوی v3.4","publication":"live","title":"فاز ۴ .NET: KYC پیشرفته (۷ اکشن) + دیپلوی زنده v3.4","summary":"پروفایل کاربر، تأیید/رد کارشناسی، پذیرش شرایط طرح و پرداخت هزینه‌های اعتبارسنجی/تشکیل پرونده پورت شد؛ پاریتی بک‌اند به ۸۷٪ (۶۲/۷۱) رسید و باینری v3.4.0 روی VM دیپلوی شد.","at":"2026-07-07T04:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۴:۰۰","tags":["feature","deploy","improvement"],"items":["فیلدهای `UserProfile` گسترش یافت — ثنا، معرف‌ها، وضعیت بررسی، `CreditApplication`","۷ اکشن: submitUserProfile · approveUserProfile · rejectUserProfile · acceptPlanTerms · payScoringFee · payCaseFormationFee · payCaseFormationFeePreLoan","`RunAssessment` اکنون `ScoringFeePaid` را وقتی `CreditApplication` وجود دارد چک می‌کند","۱۱ تست xUnit جدید (`KycAdvancedEngineTests`) — مجموع ۸۷ تست C# سبز","دیپلوی v3.4.0 روی `185.116.112.4` — health `version:3.4.0`","پاریتی: ۶۲/۷۱ اکشن (٪۸۷ بک‌اند) · فاز بعدی: ضامن/قرارداد (فاز ۵)"],"url":"https://vam.ati.ir/changelog#2026-07-07-kyc-advanced-phase4-deploy-v3-4"},{"id":"2026-07-07-org-iam-phase3-deploy-v3-3","version":"3.3.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۳ IAM سازمانی + دیپلوی v3.3","publication":"live","title":"فاز ۳ .NET: IAM سازمانی کامل (۱۷ اکشن) + دیپلوی زنده v3.3","summary":"زیرسیستم IAM سازمانی (`OrgIamEngine` + `Organization` سراسری) با ۱۷ اکشن پورت شد؛ پاریتی بک‌اند به ۷۷٪ (۵۵/۷۱) رسید و باینری v3.3.0 روی VM دیپلوی شد.","at":"2026-07-07T03:00:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۳:۰۰","tags":["feature","deploy","improvement"],"items":["موتور `OrgIamEngine` — نقش‌ها، مجوزها، پرسنل، پالیسی، seed سازمان دمو","مدل‌ها: `OrgIamModels.cs` — Organization، Staff، Policy، LegalProfile، Signatory، CreditRequest","۱۷ اکشن: setOrgActor · addOrgStaff · updateOrgStaff · linkStaffToCurrentUser · updateOrgPolicy · updateOrgSettings · updateLegalEntityProfile · updateOrgLegalProfile · addOrgSignatory · verifyOrgSignatoryOtp · submitOrgCreditRequest · approveOrgCreditRequest · inviteOrgEmployee · bulkInviteOrgEmployees · verifyOrgStaffOtpShahkar · setOrgInstallmentPayer · setOrgPerEmployeeCap","`GlobalCoreState.Organization` + `OrgCreditRequests` سراسری · `NativeCoreState.OrgActor` per-session","۸ تست xUnit جدید (`OrgIamEngineTests`) — مجموع ۷۶ تست C# سبز","دیپلوی v3.3.0 روی `185.116.112.4` — health `version:3.3.0`","پاریتی: ۵۵/۷۱ اکشن (٪۷۷ بک‌اند) · فاز بعدی: KYC پیشرفته (فاز ۴)"],"url":"https://vam.ati.ir/changelog#2026-07-07-org-iam-phase3-deploy-v3-3"},{"id":"2026-07-07-settlement-phase2-deploy-v3-2","version":"3.2.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۲ تسویه + دیپلوی v3.2","publication":"live","title":"فاز ۲ .NET: تسویهٔ پذیرنده/پورسانت/استرداد + دیپلوی زنده v3.2 روی VM","summary":"چهار اکشن تسویه و دفتر کل سراسری (`settleMerchant`، `reverseEntry`، `payoutAgent`، `refundPurchase`) پورت شد؛ باینری v3.2.0 روی VM-AtiVaam (از مسیر h91) دیپلوی و health تأیید شد. پاریتی بک‌اند به ۵۴٪ رسید.","at":"2026-07-07T02:40:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۲:۴۰","tags":["feature","deploy","improvement"],"items":["فاز ۲: `JournalEntry.Refs`، `GlobalCoreState.Purchases`، `Merchants.cs` (۴ پذیرنده + بازاریاب دمو)","اکشن‌ها: `settleMerchant` · `reverseEntry` · `payoutAgent` · `refundPurchase` — dispatch در NativeEngineBridge","`CoreEngine.Purchase` اکنون `PurchaseTx` سراسری ثبت می‌کند (برای تسویه/مرجوعی)","۸ تست xUnit جدید (`SettlementEngineTests`) — مجموع ۶۸ تست C# سبز","دیپلوی v3.2.0 روی `185.116.112.4` via jump `h91` — systemd `ativam-dotnet` restart · nginx dual-stack · health ۲۰۰","آدرس‌ها: http://185.116.112.4/dotnet/api/health · http://185.116.112.4/dotnet/swagger","پاریتی: ۳۸/۷۱ اکشن (٪۵۴ بک‌اند) · فاز بعدی: Org IAM (فاز ۳)"],"url":"https://vam.ati.ir/changelog#2026-07-07-settlement-phase2-deploy-v3-2"},{"id":"2026-07-07-cash-wallet-phase1-v3-1","version":"3.1.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — فاز ۱ کیف ریالی .NET","publication":"live","title":"فاز ۱ مهاجرت .NET: کیف پول ریالی (Cash Wallet Engine) — ۷ اکشن + ۱۳ تست golden","summary":"موتور کیف پول ریالی به‌طور کامل به C# پورت شد: زنجیره حسابداری متمرکز (FNV-1a بیت‌به‌بیت با Node)، شارژ کارت/شاپرک، برداشت شبا/کارت با کارمزد، و ۷ اکشن allowlist در NativeEngineBridge. پاریتی بک‌اند از ۳۸٪ به ۴۸٪ رسید.","at":"2026-07-07T02:10:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۲:۱۰","tags":["feature","improvement"],"items":["فایل‌های جدید: `CentralizedChain.cs`، `CashWalletEngine.cs`، `CashWalletModels.cs`، `IranBanking.cs`","اکشن‌ها: `ensureCashWallet` · `linkCashCard` · `linkCashSheba` · `depositCashRial` · `requestCashWithdraw` · `completeCashWithdraw` · `failCashWithdraw`","بردار طلایی: `docs/golden/cash-wallet-samples.json` + اسکریپت `scripts/gen-cash-wallet-golden.mjs`","۱۳ تست xUnit جدید (`CashWalletEngineTests`) — هش genesis و deposit بیت‌به‌بیت با Node تأیید شد","۶۰ تست C# سبز (از ۴۷) · پوشش allowlist ۳۴/۷۱ (٪۴۸) · `CashWallet` در `NativeCoreState` + `MergeState`","مرجع: `docs/migration/dotnet-100/01-CASH-WALLET.md` — فاز ۱ تکمیل ✅"],"url":"https://vam.ati.ir/changelog#2026-07-07-cash-wallet-phase1-v3-1"},{"id":"2026-07-07-dotnet-100-docs-v3-0-1","version":"3.0.1","cycle":"سیکل ۵ · تیر ۱۴۰۵ — نقشهٔ ۱۰۰٪ .NET + به‌روزرسانی ارائه","publication":"live","title":"نقشهٔ اجرایی ۹ فاز تا پاریتای کامل .NET + به‌روزرسانی صفحات presentation/requirements","summary":"مستندات تفصیلی مهاجرت تا ۱۰۰٪ پاریتای .NET (۹ فاز موازی/گام‌به‌گام برای Cursor Auto Ultra) تکمیل شد؛ درصد پیشرفت واقعی (~۲۸٪ کل / ~۳۸٪ بک‌اند) در سند عملیاتی و صفحات داخلی ارائه/نیازمندی‌ها منعکس گردید.","at":"2026-07-07T01:45:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۱:۴۵","tags":["docs","improvement"],"items":["فهرست اصلی `docs/migration/dotnet-100/00-INDEX.md` — ۹ فاز از کیف ریالی تا cutover؛ ~۴۴ اکشن باقی‌مانده · تخمین ~۱۶ هفته تک‌عامل / ~۴–۵ هفته موازی","فازهای ۰۱–۰۹: Cash Wallet، Settlement، Org IAM (۱۷ اکشن)، KYC پیشرفته، ضامن/قرارداد، Value/Risk، یکپارچگی‌ها، EF Migrations، اعتبارسنجی پاریتی — هر کدام با مرجع TypeScript، مدل C#، الگوریتم، dispatch، تست و معیار پذیرش","سند `docs/DOTNET-PARITY-AND-PRODUCTION-LOCKDOWN.md` — فرمول شفاف پاریتی، جدول ۲۷/۷۱ اکشن، نقشه قفل سورس روی سرور بهره‌برداری، چک‌لیست ممیزی ماهانه","به‌روزرسانی `docs/INDEX.md`، `docs/migration/CHECKLIST.md`، `docs/HANDOFF.md` با لینک‌های نقشهٔ جدید","صفحهٔ `/requirements`: اعداد واقعی (۱۳۰ تست Node + ۴۷ C# = ۱۷۷ مجموع) · بلوغ .NET ۳۸٪ · پوشش ۲۷/۷۱ اکشن","صفحهٔ `/presentation`: آمار hero (۳۹٬۶۶۳+ خط · ۱۷۷ تست · ۲۳ نسخه) · بخش پاریتی .NET · تایم‌لاین از changelog v3.0.1","فایل `deploy/nginx-production-hardening.conf` — مسدودسازی `src/`، `.git`، `.env` روی production"],"url":"https://vam.ati.ir/changelog#2026-07-07-dotnet-100-docs-v3-0-1"},{"id":"2026-07-07-vm-mirror-dotnet-v3-0","version":"2.9.0","cycle":"سیکل ۵ · تیر ۱۴۰۵ — آینهٔ production Next v2.9 + تکمیل .NET","publication":"live","title":"آینهٔ کامل ativam.freegpt.ir روی VM + تکمیل موتور .NET (گردش کار پرونده و لغو)","summary":"سرور VM-AtiVaam (185.116.112.4) اکنون آینهٔ کامل Next.js v2.9.0 است — همان لندینگ، داشبوردها و API Node/Prisma. موتور native .NET با ۱۲ اکشن جدید (گردش کار ۵مرحله‌ای پرونده، لغو پرونده، انصراف KYC) تکمیل شد و به‌صورت dual-stack در کنار Next.js روی همان IP در دسترس است.","at":"2026-07-07T00:15:00+03:30","atTehran":"سه‌شنبه ۱۶ تیر ۱۴۰۵ — ۰۰:۱۵","tags":["deploy","feature","improvement","docs"],"items":["دیپلوی آینهٔ کامل Next.js v2.9.0 روی VM-AtiVaam — Docker `ativam` (node:22-alpine) + nginx پورت ۸۰ → :3000؛ ۸۴ route بیلد شد؛ Prisma migrate (۳ مهاجرت)؛ OTP دمو `1234`","تأیید عملیاتی: `/`, `/demo`, `/changelog`, `/requirements`, `/presentation`, `/dashboard/user` همه ۲۰۰؛ health → `version:2.9.0`؛ جریان OTP + core/action سبز","معماری dual-stack: UI/API اصلی از Next.js (`/api/*`) · API مستقل .NET از `/dotnet/api/*` و Swagger از `/dotnet/swagger`","تکمیل .NET native: `CaseCancellation` (هم‌تراز case-cancellation.ts) — `cancelLoan`/`cancelLoanByUser`/`cancelLoanByAdmin`/`cancelLoanByOrgAdmin`، `withdrawKycApplication`","گردش کار پرونده: `startLoanReview` → `approveLoanDocuments` → `rejectLoanDocument` → `creditCommitteeApprove` → `completeContractSignature` + `LoanCaseStage` روی مدل Loan","اکشن `creditPendingReferralRewards` و `rejectLoan` — پوشش allowlist اکنون ۲۷ از ۷۸ اکشن (٪۳۵)؛ ۴۷ تست C# سبز (از ۴۴)","اسکریپت‌های دیپلوی: `deploy/full-deploy-vm-nextjs.sh`، `deploy/patch-dotnet-vm.sh`، `deploy/nginx-ativam-dual.conf`، `deploy/mirror-ops-test.sh`","سند عملیاتی: `docs/DOTNET-PARITY-AND-PRODUCTION-LOCKDOWN.md` — پاریتای ~۲۸٪ کل / ~۳۸٪ بک‌اند · نقشه رسیدن به ۱۰۰٪ · قفل سورس روی سرور بهره‌برداری","تفاوت آینه با production: OTP=demo (نه live کاوه‌نگار)، بدون CDN/HTTPS، AI غیرفعال — برای parity کامل env production لازم است"],"url":"https://vam.ati.ir/changelog#2026-07-07-vm-mirror-dotnet-v3-0"},{"id":"2026-07-06-dotnet-referral-org-arch-v2-9","version":"2.9.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"شبکهٔ دعوت و صندوق سازمانی در .NET، معماری Tenant/Global، دیاگرام‌های ارائه","summary":"موتور شبکهٔ دعوت (Referral) و صندوق سازمانی/تأمین‌کننده مالی (Org/Provider) به‌طور کامل به C# پورت شد و در حین توسعه یک نقص معماری واقعی (اشتراک‌گذاری نادرست دادهٔ سراسری بین کاربران) کشف و با جداسازی صحیح Tenant/Global state رفع گردید — با تست end-to-end چندکاربره تأیید شد. صفحات /requirements و /presentation با دیاگرام معماری، تایم‌لاین توسعه و شبکهٔ استانداردها/ابزارها تکمیل شدند.","at":"2026-07-06T09:10:00+03:30","atTehran":"دوشنبه ۱۵ تیر ۱۴۰۵ — ۰۹:۱۰","tags":["feature","improvement","fix","docs"],"items":["پورت کامل `ReferralEngine` به C# (`AtiVam.Domain/Services/ReferralEngine.cs`): کد دعوت قطعی (deterministic hash)، زنجیرهٔ ۳سطحی بالاسری، پاداش ثبت‌نام/خرید، idempotency — با ۶ تست جدید منطبق بر `docs/golden/referral-samples.json`","پورت `OrgProviderEngine` (صندوق سازمانی + تخصیص تأمین‌کننده مالی با Load Balancing بر اساس بیشترین ظرفیت آزاد) — تست‌های exposure/pickProvider/orgFundAvailable","کشف و رفع یک نقص معماری واقعی حین توسعه: دفتر کل، رجیستری دعوت و تأمین‌کنندگان به‌اشتباه per-user ذخیره می‌شدند (کد دعوت کاربر A برای کاربر B قابل مشاهده نبود) — رفع با معماری دوسطحی جدید `NativeCoreState` (per-tenant، جدول `CoreSnapshot`) + `GlobalCoreState` (سراسری/singleton، جدول جدید `GlobalState`) — دقیقاً مطابق جداسازی «دفاتر مؤسسه» از «حساب مشتری» در بانکداری واقعی","اکشن‌های جدید در `CoreEngine`: `applyReferralCode`، `setOrgFundCap`، `joinOrganization`، `setProviderCap` — همراه با اعمال خودکار پاداش شبکهٔ دعوت پس از تأیید KYC و پس از هر خرید اعتباری","`approveLoan` اکنون تأمین‌کنندهٔ مالی واقعی را با ظرفیت آزاد کافی تخصیص می‌دهد و رکورد `LoanFunding` ثبت می‌کند (نه فقط یک ورودی دفتر کل عمومی)؛ طرح سازمانی اکنون عضویت صندوق و سقف صندوق را واقعاً بررسی می‌کند","تست end-to-end زندهٔ HTTP دو-کاربره روی موتور native: کاربر الف کد دعوت صادر می‌کند، کاربر ب آن را اعمال و KYC می‌کند (۳ پاداش ثبت‌نام)، صندوق سازمانی می‌سازد، وام سازمانی می‌گیرد (تخصیص خودکار به `prov_melal`)، خرید می‌کند (۲ پاداش خرید بیشتر) — مجموع ۵ پاداش صحیح و مشترک بین هر دو کاربر","۴۴ تست C# سبز (از ۳۸)؛ کدبیس .NET به ۳۵ فایل/۲٬۴۹۲ خط رسید (از ۲۹ فایل/۱٬۸۴۳ خط)؛ پوشش اکشن‌های allowlist اکنون ۱۵ از ۷۱ (٪۲۱) — شامل چرخهٔ کامل «ورود تا خرید اعتباری» با شبکهٔ دعوت و تخصیص تأمین‌کننده","دیاگرام معماری کامل سامانه (`ArchitectureDiagram`) در `/requirements` — لایه‌های کلاینت/CDN/Next.js/.NET/دیتابیس/یکپارچه‌سازی‌ها با نمایش بردارهای طلایی به‌عنوان پل تضمین صحت بین دو موتور","تایم‌لاین بصری توسعهٔ نسخه‌ها (`DevelopmentTimeline`) در `/presentation` — مستقیماً از تاریخچهٔ واقعی changelog، بدون هیچ دادهٔ ساختگی","شبکهٔ استانداردها/ابزارها/مخازن (`TechStandardsGrid`) در `/presentation` — دسته‌بندی فرانت‌اند، بک‌اند Node، بک‌اند .NET، کیفیت/تست، استانداردها، DevOps، دیتابیس، مخزن","به‌روزرسانی `dotnet/README.md`، `dotnet/DEPLOY.md`، `docs/MIGRATION-DOTNET.md`، `docs/migration/CHECKLIST.md` با آمار و معماری واقعی جدید"],"url":"https://vam.ati.ir/changelog#2026-07-06-dotnet-referral-org-arch-v2-9"},{"id":"2026-07-06-requirements-presentation-rbac-v2-8","version":"2.8.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"صفحات نیازمندی/ارائه، خروج از حالت دموی عمومی، حجم دادهٔ حداکثری","summary":"صفحهٔ داخلی مقایسهٔ فنی سه استک استقرار (/requirements)، صفحهٔ ارائهٔ استانداردهای توسعه به کارفرما (/presentation) با معرفی ابزار ADT، خروج پنل‌ها از حالت دموی عمومی (دسترسی دقیقاً بر اساس نقش حساب)، و افزایش حجم دادهٔ نمونه/اعلانات برای تجربه‌ای نزدیک‌تر به نسخهٔ نهایی عملیاتی.","at":"2026-07-06T06:45:00+03:30","atTehran":"دوشنبه ۱۵ تیر ۱۴۰۵ — ۰۶:۴۵","tags":["feature","docs","improvement"],"items":["صفحهٔ داخلی `/requirements` — مقایسهٔ دقیق و مبتنی بر اندازه‌گیری واقعی سه استک (لینوکسی Next.js/Node، .NET روی لینوکس، .NET روی ویندوز): حجم کد، تعداد فایل/کتابخانه، حجم build/publish، استانداردها، بلوغ، پیش‌نیازهای سخت‌افزاری/نرم‌افزاری حداقلی/مناسب/حداکثری","قالب استاندارد JSON برای اعلام نیازمندی‌های API — بخش اختصاصی در `/requirements`","صفحهٔ داخلی `/presentation` — طراحی اختصاصی با انیمیشن‌های پیشرفته: استاندارد پیشنهادی مستندسازی (md/xlsx/json/csv در برابر PDF)، معرفی و دعوت به استفاده از ابزار گزارش اشکال ADT، تعهد تیم الفبا به کیفیت صددرصدی مستقل از قالب ارتباط، اهمیت مستندسازی به‌موقع برای توسعهٔ چابک، و یادآوری محترمانهٔ اهمیت نظم پرداخت برای برنامه‌ریزی منابع تیم","بر اساس تشخیص و تحلیل تیم توسعه بر اساس نیاز نزدیک‌شدن به نسخهٔ نهایی اشاره‌شده توسط نماینده کارفرما — خروج از «حالت دموی عمومی»: دسترسی پنل‌ها (`resolveAccountAccess`) از این پس دقیقاً بر اساس نقش حساب واردشده است؛ سوییچر آزاد بین همهٔ پورتال‌ها و نقش‌های ستادی حذف شد","`CommandRoleBar` به نوار نمایش فقط‌خواندنی نقش تبدیل شد (بدون امکان تعویض آزاد نقش)","افزایش حجم دادهٔ نمونه در `seedDemoData`: ۶ خرید اعتباری (از ۳)، ۶ کارمند سازمانی (از ۳)، تراکنش‌های کیف ریالی بیشتر (شامل سناریوی خطا)، گذر زمان تدریجی با پرداخت قسط اول/دوم و معوق‌ماندن عمدی قسط سوم — ۷۶ رویداد/اعلان (از ۶۸)","به‌روزرسانی `docs/DEMO-ACCOUNTS.md` با نکات RBAC جدید و حجم دادهٔ به‌روزشده"],"url":"https://vam.ati.ir/changelog#2026-07-06-requirements-presentation-rbac-v2-8"},{"id":"2026-07-06-dotnet-standalone-v2-7","version":"2.7.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"نسخهٔ مستقل .NET (ویندوز + لینوکس) و پاکسازی ناوبری","summary":"موتور دامنهٔ اصلی (اقساط، امتیازدهی، جریمه، دفتر کل) به‌طور کامل به C# پورت و با بردارهای طلایی تأیید شد؛ API .NET اکنون کاملاً مستقل از Node.js روی هر دو پلتفرم Windows و Linux به‌صورت self-contained قابل publish و اجراست. لینک «تغییرات» از ناوبری اصلی حذف و مانند /demo به لینک فرعی مستقیم تبدیل شد.","at":"2026-07-06T04:20:00+03:30","atTehran":"دوشنبه ۱۵ تیر ۱۴۰۵ — ۰۴:۲۰","tags":["feature","improvement","deploy","docs"],"items":["پورت کامل موتورهای دامنه به C# در `AtiVam.Domain`: `ScheduleBuilder`، `ScoringEngine`، `PenaltyEngine`، `LedgerEngine` — عیناً منطبق با TypeScript","بازتولید و تطبیق بردارهای طلایی (`docs/golden/*.json`) با پیوست ativam فعلی + ۳۸ تست جدید C# سبز (`dotnet test --filter Category=Golden`)","موتور native مستقل `CoreEngine` (بدون Node): ورود، KYC، اعتبارسنجی، درخواست وام، مدارک/تضامین، فعال‌سازی، پرداخت قسط، خرید اعتباری — تست زندهٔ end-to-end با HTTP","`NativeEngineBridge` جایگزین پیش‌فرض `NodeEngineBridge` — `Engine:Mode=native` (config-switchable، پل Node هنوز برای اکشن‌های پورت‌نشده در دسترس است)","دیتابیس SQLite با `EnsureCreated()` خودکار — بدون نیاز به dotnet-ef یا Prisma برای بوت‌استرپ مستقل","Publish مستقل self-contained: `dotnet/publish-windows.ps1` (win-x64 + web.config برای IIS) و `dotnet/publish-linux.sh` (linux-x64 + systemd) — هر دو تست و اجرا شدند","`dotnet/Dockerfile` چندمرحله‌ای (Alpine) برای دیپلوی کانتینری لینوکس","سند جامع `dotnet/DEPLOY.md` — راهنمای کامل دیپلوی هر دو پلتفرم، متغیرهای محیطی، پذیرش","بر اساس تشخیص و تحلیل تیم توسعه بر اساس نیاز دیپلوی مستقل اشاره‌شده توسط نماینده کارفرما — حذف لینک «تغییرات» از Navbar/Footer؛ `/changelog` مانند `/demo` فقط با آدرس مستقیم و خارج از sitemap در دسترس است","ارجاع متقابل `/demo` ↔ `/changelog` برای تیم ارائه"],"url":"https://vam.ati.ir/changelog#2026-07-06-dotnet-standalone-v2-7"},{"id":"2026-07-06-demo-operational-v2-6","version":"2.6.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"عملیاتی‌سازی دموی نهایی — داده نمونه جامع و حساب‌های ارائه","summary":"موتور داده نمونه برای همه اجزای سامانه (۳۳ گام: دو وام فعال، خریدها، کیف ریالی، سازمان کامل، تسویه و پورسانت)، صفحه داخلی /demo با فهرست کامل حساب‌ها/نقش‌ها و سناریوهای ارائه — بدون لینک از سایت اصلی و noindex.","at":"2026-07-06T03:30:00+03:30","atTehran":"دوشنبه ۱۵ تیر ۱۴۰۵ — ۰۳:۳۰","tags":["feature","docs","deploy"],"items":["موتور داده نمونه `seedDemoData` — سفر ۱۷ مرحله‌ای تا وام فعال + ضامن، وام خرد دوم، ۳ خرید اعتباری، کیف ریالی (شارژ/شبا/برداشت)، سازمان با پروفایل حقوقی و ۲ صاحب امضای OTP شده، ۳ کارمند دعوت‌شده، تسویه پذیرنده + پورسانت، گذر زمان ۳۵ روزه و پرداخت قسط","صفحه مخفی `/demo`: دکمه بارگذاری داده نمونه با گزارش گام‌به‌گام، جدول ۹ حساب دمو (موبایل/OTP/نقش) با ورود سریع، تشریح ۶ پنل و ۵ سناریوی ارائه — noindex + disallow در robots","سند `docs/DEMO-ACCOUNTS.md` — مرجع نام کاربری/رمز/نقش برای دموی نهایی و عملیاتی","اسکریپت صحت‌سنجی `npm run demo:seed-check` — اجرای کامل seed در Node (۳۳ گام سبز)","بر اساس تشخیص و تحلیل تیم توسعه بر اساس نیاز دموی عملیاتی اشاره شده توسط نماینده کارفرما — quick-login بدون دستکاری state مشترک برای نقش‌های ستادی"],"url":"https://vam.ati.ir/changelog#2026-07-06-demo-operational-v2-6"},{"id":"2026-07-06-org-legal-guarantor-sign-v2-5","version":"2.5.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"پروفایل حقوقی سازمان، امضای ضامن و E2E موتور ۱۷مرحله‌ای","summary":"پروفایل حقوقی ۱۴فیلدی سازمان با استعلام شرکت و OTP شاهکار صاحبان امضا، امضای قرارداد توسط ضامن (تا تکمیل همه امضاها پرونده فعال نمی‌شود)، و اسکریپت E2E سطح موتور برای کل ۱۷ مرحله پیوست.","at":"2026-07-06T01:45:00+03:30","atTehran":"دوشنبه ۱۵ تیر ۱۴۰۵ — ۰۱:۴۵","tags":["feature","improvement"],"items":["پروفایل حقوقی ۱۴فیلدی سازمان (نام، تاریخ ثبت، شناسه ملی، شماره ثبت، زمینه فعالیت، پرسنل، حقوق ماهیانه، نوع شرکت، …) + استعلام شرکت شبانیک — سرکار خانم مهندس حسنی، نماینده کارفرما (طرح سازمانی.pdf §۴.۱)","صاحبان امضا و هیئت مدیره: استعلام شاهکار + تأیید OTP همه مدیران در «پروفایل سازمان» — سرکار خانم مهندس حسنی، نماینده کارفرما (طرح سازمانی.pdf §۴.۱)","امضای قرارداد توسط ضامن از «ضمانت‌های من» — تا ثبت امضای کاربر و ضامن، پرونده در «در انتظار امضا» می‌ماند — سرکار خانم مهندس حسنی، نماینده کارفرما (روند ورود کاربر.pdf §مرحله ۱۳)","اکشن‌های جدید: updateOrgLegalProfile، addOrgSignatory، verifyOrgSignatoryOtp، completeGuarantorContractSignature (در allow-list سرور)","بر اساس تشخیص و تحلیل تیم توسعه بر اساس مورد تست ۱۷ مرحله‌ای فاز ۱۲ اشاره شده توسط نماینده کارفرما — اسکریپت `npm run test:e2e:journey` (۳۸ ادعا، شامل رد اعتبارسنجی ناموفق، رد پروفایل با دلیل، امضای دومرحله‌ای)"],"url":"https://vam.ati.ir/changelog#2026-07-06-org-legal-guarantor-sign-v2-5"},{"id":"2026-07-05-ativam-gaps-v2-4-1","version":"2.4.1","cycle":"سیکل ۴ · تیر ۱۴۰۵ — تکمیل شکاف‌های v2.4.0","publication":"live","title":"تکمیل شکاف‌های باقی‌مانده پیوست ativam","summary":"E2E Playwright ۱۷مرحله‌ای، OTP تغییر موبایل، شاهkar مدیران سازمان، بارگذاری اکسل کارکنان.","at":"2026-07-05T23:45:00+03:30","atTehran":"یکشنبه ۱۴ تیر ۱۴۰۵ — ۲۳:۴۵","tags":["feature","fix","improvement"],"items":["OTP ورود: «تغییر شماره موبایل» + «ارسال مجدد کد» — سرکار خانم مهندس حسنی، نماینده کارفرما (روند ورود کاربر.pdf §مرحله ۲)","OTP + شاهkar برای مدیران و صاحبان امضای سازمان — سرکار خانم مهندس حسنی، نماینده کارفرما (طرح سازمانی.pdf §۴.۱)","بارگذاری اکسل/CSV کارکنان با preview و bulkInvite — سرکار خانم مهندس حسنی، نماینده کارفرما (منوی پنل سازمان §کارکنان)","بر اساس تشخیص و تحلیل تیم توسعه بر اساس مورد E2E ۱۷مرحله‌ای فاز ۱۲ DEVELOPMENT-PLAN-ATTACHMENTS اشاره شده توسط نماینده کارفرما — Playwright e2e/user-wizard-17-steps.spec.ts","inviteOrgEmployee: ذخیره mobile، creditLimit، months، installmentPayer"],"url":"https://vam.ati.ir/changelog#2026-07-05-ativam-gaps-v2-4-1"},{"id":"2026-07-05-ativam-attachments-v2-4","version":"2.4.0","cycle":"سیکل ۴ · تیر ۱۴۰۵ — همسان‌سازی پیوست ativam","publication":"live","title":"پیاده‌سازی جامع پیوست کارفرما (ativam · DEVELOPMENT-PLAN-ATTACHMENTS)","summary":"همسان‌سازی ۵ طرح اعتباری، فرآیند ۱۷ مرحله‌ای کاربر حقیقی، KYC سه‌رنگ، منوی ۱۱/۱۰تایی پنل کاربر و سازمان، پرداخت اعتبارسنجی و تشکیل پرونده، ضمانت و مشاوره AI — مطابق مستندات ativam (سرکار خانم مهندس حسنی).","at":"2026-07-05T22:30:00+03:30","atTehran":"یکشنبه ۱۴ تیر ۱۴۰۵ — ۲۲:۳۰","tags":["feature","improvement","docs","deploy"],"items":["فاز ۱ — موتور طرح‌ها: ادغام A/B/C در «اعتبار آتی / اشخاص حقیقی»، بیمه زندگی ۱۰۰M/۳٪/۶–۱۸م، سازمانی ۶–۱۸م، فیلد walletChargeTime — سرکار خانم مهندس حسنی، نماینده کارفرما (جدول XLSX ativam)","فاز ۲ — نوار KYC سه‌رنگ (قرمز/زرد/سبز)، فرم تکمیل پروفایل با استان، شهر، دو معرف، نحوه آشنایی، ایمیل + تأیید/رد کارشناس — سرکار خانم مهندس حسنی، نماینده کارفرما (روند ورود کاربر.pdf)","فاز ۳–۴ — پذیرش شرایط طرح، پرداخت هزینه اعتبارسنجی (عودت‌ناپذیر)، هزینه تشکیل پرونده ۷۱٬۰۰۰ تومان + راهنمای رد اعتبارسنجی — سرکار خانم مهندس حسنی، نماینده کارفرما","فاز ۵–۷ — مدارک سه‌گانه (هویتی/شغلی/تضمین)، استعلام ثنا، راهنمای چک «آتی پی مهر گستر»، ارسال فیزیکی با کد رهگیری — سرکار خانم مهندس حسنی، نماینده کارفرما","فاز ۶ — ضمانت‌های من، کد یکتای وام، دعوت ضامن — سرکار خانم مهندس حسنی، نماینده کارفرما","فاز ۹ — منوی ۱۱ آیتم پنل کاربر (داشبورد، درخواست، اعتبارها، تراکنش‌ها، کیف‌ها، ضمانت‌ها، پذیرندگی، معرفی، تیکت، اعلان، مشاوره AI) — سرکار خانم مهندس حسنی، نماینده کارفرما (منو پنل کاربر حقیقی.pdf)","فاز ۱۰–۱۱ — فرم درخواست سازمان، صندوق ویژه (روش پرداخت اقساط)، افزودن کارمند، منوی ۱۰ آیتم پنل سازمان — سرکار خانم مهندس حسنی، نماینده کارفرما (طرح سازمانی.pdf)","مشاوره هوشمند پیشنهاد طرح بر اساس درآمد و شغل","بر اساس تشخیص و تحلیل تیم توسعه بر اساس مورد تست attachment در product-spec.ts اشاره شده توسط نماینده کارفرما — golden test همسان‌سازی XLSX","بر اساس تشخیص و تحلیل تیم توسعه: تست‌های engine برای diff صفر نسبت به XLSX پیوست","به‌روزرسانی ARCHITECTURE.md §۵، ENGINES.md، panel-registry.ts"],"url":"https://vam.ati.ir/changelog#2026-07-05-ativam-attachments-v2-4"},{"id":"2026-07-03-adt-gadget-kavenegar","version":"2.3.0","cycle":"سیکل ۳ · تیر ۱۴۰۵ — بک‌اند واقعی و آمادگی v3","publication":"live","title":"ابزار توسعه و تحویل (ADT) + OTP زنده کاوه‌نگار","summary":"گجت گزارش اشکال کارفرما با ورود پیامکی، triage هوشمند، بانک دانش agent، و اتصال عملیاتی SMS کاوه‌نگار — آماده استخراج به repo مستقل alef.ba AI Development.","at":"2026-07-03T20:30:00+03:30","atTehran":"جمعه ۱۲ تیر ۱۴۰۵ — ۲۰:۳۰","tags":["feature","integration","docs"],"items":["مسیر `/adt` — ورود OTP، فرم گزارش لینوکس/ویندوز، آپلود/اسکرین‌شات، نشانه‌گذاری canvas","API: `POST /api/adt/triage` · `GET/POST /api/adt/tickets` — پرونده `ADT-YYYYMMDD-XXXX`","Prisma: `OtpChallenge`، `AdtTicket`، `AdtAttachment`، `AdtKbEntry`","OTP زنده: `OTP_MODE=live` + `SMS_PROVIDER=kavenegar` — lookup با fallback `sms/send`","`scripts/kavenegar-health.mjs` · `scripts/ai-health.mjs` · `scripts/seed-adt-kb.mjs` · `.env.example`","ویجت شناور «ارسال اشکال» در همه صفحات (به‌جز `/adt`) — `AdtFloatingWidget`","OTP: نرمال‌سازی موبایل، نمایش راهنمای دمو/زنده، بازیابی نشست، پیام خطای فارسی کاوه‌نگار","مستندات: `docs/ADT-GADGET.md`","الگوی `ativam-otp` در صف تأیید کاوه‌نگار — ارسال با `sms/send` فعال است"],"url":"https://vam.ati.ir/changelog#2026-07-03-adt-gadget-kavenegar"},{"id":"2026-07-03-windows-mirror-dotnet","version":"2.2.0","cycle":"سیکل ۳ · تیر ۱۴۰۵ — بک‌اند واقعی و آمادگی v3","publication":"live","title":"نسخهٔ آینه‌ای ویندوز — ASP.NET Core 8","summary":"راه‌اندازی stack موازی .NET برای دیپلوی همزمان روی ویندوز: API با parity کامل auth/core/health، پل موتور TypeScript، پریویو محلی با Next.js (WINDOWS_MIRROR)، و golden tests C#.","at":"2026-07-03T17:00:00+03:30","atTehran":"جمعه ۱۲ تیر ۱۴۰۵ — ۱۷:۰۰","tags":["feature","docs","deploy"],"items":["Solution `dotnet/AtiVam.sln` — Domain، Application، Infrastructure، Api، Domain.Tests","API .NET روی :5100 — `/api/auth/*`، `/api/core/state`، `/api/core/action`، `/api/health` (runtime=dotnet)","پل موتور `scripts/windows-engine-host.ts` روی :5101 — ۴۹ اکشن AtiCore بدون بازنویسی فوری C#","EF Core SQLite — اشتراک `prisma/dev.db` با نسخه Node (دیپلوی آینه‌ای داده)","Golden tests C#: ۶ case اعتبارسنجی ایرانی (`dotnet test --filter Category=Golden`)","پریویو محلی: `npm run dev:windows` یا `scripts/preview-windows.ps1` — Next :3000 + proxy `/api` → .NET","`src/middleware.ts` — پروکسی fetch `/api/*` → .NET وقتی `WINDOWS_MIRROR=1`","E2E: `npm run test:e2e:windows` — ۸ سناریو (health، OTP، state، ensureUser)","مستندات: `dotnet/README.md` · به‌روزرسانی `docs/migration/`","گام بعدی M0: پورت موتورهای schedule/scoring/ledger به C# (حذف تدریجی engine-host)"],"url":"https://vam.ati.ir/changelog#2026-07-03-windows-mirror-dotnet"},{"id":"2026-07-03-v3-planning-docs-stabilize","version":"2.1.0","cycle":"سیکل ۳ · تیر ۱۴۰۵ — بک‌اند واقعی و آمادگی v3","publication":"live","title":"مستندسازی v3.0 و تثبیت پروژه","summary":"بستهٔ کامل برنامه‌ریزی فاز v3 (چندکاربره، یکپارچگی زنده، رشد، استحکام، آمادگی مهاجرت .NET) با ~۴۰ مرحله اجرای خودکار؛ آرتیفکت‌های مستقل از زبان برای تیم C#؛ بردارهای تست طلایی و CI gate.","at":"2026-07-03T14:45:00+03:30","atTehran":"جمعه ۱۲ تیر ۱۴۰۵ — ۱۴:۴۵","tags":["docs","improvement"],"items":["سند master `docs/DEVELOPMENT-PLAN-V3.md` — ۴۰ مرحله (فازهای G/A/B/C/D/E) با پروتکل agent و معیار پذیرش","`docs/DOMAIN-SPEC.md` — فرمول‌ها، ماشین‌های وضعیت، قواعد ایرانی (مستقل از TypeScript)","`docs/API-SPEC.md` + `docs/api/openapi.yaml` — قرارداد OpenAPI 3.1 برای auth، core، admin (planned)، integrations","`docs/MIGRATION-DOTNET.md` — نقشه مهاجرت .NET 8 + هشدار ASPX + جایگزین Razor/Blazor","بردارهای تست طلایی: `scripts/golden-vectors.mjs` + `docs/golden/` (۴۱ case) — suite پذیرش C#","CI gate: `scripts/ci-check.mjs` + اسکریپت‌های `npm run ci` و `npm run test:golden`","`/api/health` هم‌تراز با نسخه 2.1.0 · به‌روزرسانی `CHANGELOG-POLICY.md`","به‌روزرسانی `ROADMAP.md` · `INDEX.md` · `AGENTS.md` · `HANDOFF.md` · `README.md`","صفحه `/changelog`: گروه‌بندی سیکل انتشار + تکمیل bulletهای جاافتاده v1.1–v2.0","بدون تغییر رفتار production — ۱۰۰ تست موتور/بک‌اند همچنان پاس"],"url":"https://vam.ati.ir/changelog#2026-07-03-v3-planning-docs-stabilize"},{"id":"2026-07-03-backend-real-ui-pack-v2-0","version":"2.0.0","cycle":"سیکل ۳ · تیر ۱۴۰۵ — بک‌اند واقعی و آمادگی v3","publication":"live","title":"بک‌اند واقعی + بستهٔ «وای» رابط کاربری","summary":"مهاجرت از localStorage به بک‌اند واقعی (Prisma + SQLite + نشست httpOnly) بدون تغییر موتورها یا کامپوننت‌های موجود؛ مرکز اعلان زنده، نمودارهای تحلیلی، موبایل drawer، خروجی گزارش و PWA.","at":"2026-07-03T02:15:00+03:30","atTehran":"جمعه ۱۲ تیر ۱۴۰۵ — ۰۲:۱۵","tags":["feature","improvement","integration","docs","deploy"],"items":["Auth واقعی: OTP + نشست httpOnly (`/api/auth/otp`, `/me`, `/logout`) — بدون تغییر تجربهٔ دموی فعلی","Action API با فهرست مجاز صریح ~۴۰ اکشن کسب‌وکاری (`/api/core/action`) + `/state` + `/sync` + `/import`","AtiCore اکنون سمت سرور هم قابل نمونه‌سازی است (الگوی stateless-per-request) — موتور دست‌نخورده ماند","useAtiCore v2: تطبیق خودکار state محلی/سرور در mount + همگام‌سازی پس‌زمینهٔ debounce شده + fallback آفلاین کامل","کارت طرح وام سبک Blu در ویزارد اعتبار (`PlanCard`: نرخ، قسط، هزینه عملیات، کل بازپرداخت، محل دریافت)","مرکز اعلان زنده: `NotificationBell` + شمارنده unread + toast سراسری aria-live","موبایل: سایدبار per-portal به کشوی همبرگری با backdrop تبدیل شد","نمودارهای تحلیلی recharts: ترکیب پرتفوی و جریان نقدی (فرمان)، مصرف صندوق (سازمان)، سقف/مانده تعهدات (تأمین‌کننده)، فروش روزانه به تفکیک کانال (پذیرنده)","خروجی CSV دفتر کل و جدول اقساط + PDF خلاصهٔ پرونده (`loan-report-print`)","UI رد مدرک با یادداشت در پنل اپراتور + اکشن‌دار شدن کامل AdminCompliancePanel","PWA: manifest، service worker سبک (اپ‌شل)، preload فونت‌های Bold/Black","a11y: skip-link در همهٔ لی‌اوت‌ها، ناوبری کیبورد فلش‌دار در PanelTabs، احترام به prefers-reduced-motion","۱۰۰ تست خودکار (۷۶ موتور + ۲۴ بک‌اند) + E2E اختیاری · دیپلوی production (tar-over-ssh + `prisma migrate deploy`)","سند فنی جدید `docs/BACKEND.md` — معماری، schema، رویهٔ مهاجرت و deploy"],"url":"https://vam.ati.ir/changelog#2026-07-03-backend-real-ui-pack-v2-0"},{"id":"2026-07-02-credit-wizard-finnotech-v1-2","version":"1.2.0","cycle":"سیکل ۲ · تیر ۱۴۰۵ — محصول و سفر اعتباری","publication":"live","title":"ویزارد یکپارچه اعتبار و اتصال فینوتک","summary":"درخواست اعتبار در یک ویزارد ۱۰ مرحله‌ای (استپر + خلاصه درخواست)؛ زیرساخت واقعی فینوتک برای اعتبارسنجی؛ سند فنی نیازمندی API برای کارفرما.","at":"2026-07-02T18:20:00+03:30","atTehran":"پنجشنبه ۱۱ تیر ۱۴۰۵ — ۱۸:۲۰","tags":["feature","integration","docs","deploy"],"items":["ویزارد ۱۰ مرحله‌ای: ورود، انتخاب طرح، هویت، احراز، مالی، اعتبارسنجی، مدارک، چک، قرارداد، نتیجه","سفر اعتباری بدون اسکرول عمودی — `CreditWizardShell` با پنجره‌های متوالی و استپر مستقل","کارت طرح وام (`PlanCard`) — نمایش نرخ، دوره بازپرداخت، مبلغ قسط، هزینه عملیات، کل بازپرداخت و محل دریافت (الگوی Blu)","تاگل مدت بازپرداخت و پیش‌نمایش زنده اقساط روی همان کارت طرح","سایدبار «خلاصه درخواست» + استپر شمارشی قابل‌کلیک (الگوی درخواستی کارفرما)","فیلدهای هویتی «نام پدر» و «وضعیت تأهل» به پروفایل کاربر افزوده شد","اتصال فینوتک (بانکداری باز/اعتبارسنجی) — OAuth2 Client-Credentials با mock دمو","سند فنی `API-INTEGRATION-BRIEF.md` — نیازمندی API، سرویس‌دهنده پیشنهادی، اطلاعات لازم به/از تأمین‌کننده","مستندسازی کامل payload امضانو برای Handoff به تیم فنی امضانو","منوی per-portal (سوییچر پنل‌ها) تأیید و روی production فعال است"],"url":"https://vam.ati.ir/changelog#2026-07-02-credit-wizard-finnotech-v1-2"},{"id":"2026-07-02-panels-case-flow-v1-1","version":"1.1.0","cycle":"سیکل ۲ · تیر ۱۴۰۵ — محصول و سفر اعتباری","publication":"live","title":"منوی اختصاصی پنل‌ها و گردش پرونده اعتبار","summary":"هر پنل منوبار مستقل با سوییچر؛ مراحل ۵‌گانه پرونده با اقدامات اپراتور؛ دریافت مدارک و تضمین جدا؛ اعتبار سازمانی ۶–۱۸ ماه؛ تفکیک فروش حضوری/مجازی.","at":"2026-07-02T14:40:00+03:30","atTehran":"پنجشنبه ۱۱ تیر ۱۴۰۵ — ۱۴:۴۰","tags":["feature","improvement","deploy","docs"],"items":["سایدبار per-portal: منوی فقط پنل فعال + سوییچر جابه‌جایی بین پورتال‌ها","ناوبری PanelTabs در پنل‌ها — جایگزینی اسکرول عمودی با تب/صفحه مستقل","مراحل پرونده: ثبت اولیه → بازبینی اولیه → تایید مدارک → کمیته اعتبار → فعالسازی","دکمه «درخواست لغو اعتبار» و timeline مرحله‌ای در پنل کاربر","اقدامات مرحله‌ای اپراتور در اتاق فرمان (بازبینی، تأیید مدارک، تصویب کمیته)","پنل حقیقی: دو تب مستقل «دریافت مدارک» و «دریافت تضمین» با بارگذاری/ثبت","کیف پول ریالی: واریز (شاپرک) و برداشت با زنجیره متمرکز دمو","پنل سازمانی: افزودن کاربر، تفکیک مدیران و کارمندان، لیست پرسنل","اعتبار سازمانی: بازپرداخت ۶ تا ۱۸ ماه","پنل پذیرنده: تفکیک فروش حضوری و مجازی (KPI، فیلتر، برچسب کانال)","پنل بازاریاب: نردبان پاداش شبکه ۳ سطحی (۱٪ · ۰٫۵٪ · ۰٫۲۵٪)","CoreState نسخه ۱۰ (مرحله پرونده، مدارک، کانال خرید)؛ ۷۶ تست موتور"],"url":"https://vam.ati.ir/changelog#2026-07-02-panels-case-flow-v1-1"},{"id":"2026-07-02-professionalization-v1","version":"1.0.0","cycle":"سیکل ۲ · تیر ۱۴۰۵ — محصول و سفر اعتباری","publication":"live","title":"حرفه‌ای‌سازی چهرهٔ عمومی","summary":"صفحات حقوقی و شرکتی، SEO، اعتماد شفاف، ماشین‌حساب هم‌تراز با موتور، health API و بهبود a11y.","at":"2026-07-02T10:30:00+03:30","atTehran":"پنجشنبه ۱۱ تیر ۱۴۰۵ — ۱۰:۳۰","tags":["feature","improvement","deploy","docs"],"items":["صفحات `/about` · `/business` · `/contact` · `/legal/terms` · `/legal/privacy`","Footer و Navbar بدون لینک مرده؛ بنر «نسخه نمایشی» در لندینگ","KPIهای واقع‌گرایانه Trust · نشان‌های اعتماد «به‌زودی»","`sitemap.xml` · `robots.txt` · OG image · JSON-LD Organization","ماشین‌حساب لندینگ از `buildMarketingPreview` (موتور products)","صفحه ۴۰۴ برندشده · `/api/health`","شبانیک: برچسب «مسیر در انتظار» برای ۴ سرویس","AuthModal: رفع الگوی hydration با remount"],"url":"https://vam.ati.ir/changelog#2026-07-02-professionalization-v1"},{"id":"2026-07-01-changelog-page","version":"0.9.1","cycle":"سیکل ۱ · تیر ۱۴۰۵ — زیرساخت و شفافیت","publication":"live","title":"صفحهٔ تاریخچه تغییرات (Changelog)","summary":"انتشارهای پلتفرم با تاریخ شمسی و ساعت تهران — فیلتر، جستجو، گروه‌بندی ماهانه و ناوبری نسخه‌ها.","at":"2026-07-01T13:15:00+03:30","atTehran":"چهارشنبه ۱۰ تیر ۱۴۰۵ — ۱۳:۱۵","tags":["feature","improvement","deploy"],"items":["مسیر عمومی `/changelog` با تایم‌لاین انتشارها","نمایش تاریخ هجری شمسی + ساعت رسمی تهران (IRST)","فیلتر برچسب، جستجوی متنی و گروه‌بندی ماه شمسی","نوار KPI، ناوبری سریع نسخه‌ها (دسکتاپ و موبایل)","لینک مستقیم هر انتشار (`#شناسه`) + کپی در کلیپ‌بورد","فید JSON در `/changelog/feed` برای یکپارچه‌سازی","لینک در Navbar و Footer"],"url":"https://vam.ati.ir/changelog#2026-07-01-changelog-page"},{"id":"2026-06-27-panels-referral-value-risk","version":"0.9.0","cycle":"سیکل ۱ · تیر ۱۴۰۵ — زیرساخت و شفافیت","publication":"live","title":"تفکیک پنل‌ها، شبکه دعوت و Value/Risk","summary":"هر موضوع مسیر مستقل؛ RBAC ستادی؛ موتور Referral سه‌سطحی؛ پارامترهای ارزش/ریسک فقط برای مدیر ارشد.","at":"2026-06-27T18:45:00+03:30","atTehran":"شنبه ۶ تیر ۱۴۰۵ — ۱۸:۴۵","tags":["feature","deploy","docs"],"items":["۱۷ مسیر داشبورد با `panel-registry` و `PanelAccessGate`","شبکه دعوت Referral — `/dashboard/agent/referral` + کد `?ref=` در ثبت‌نام","اتاق Value/Risk — `/dashboard/admin/value-risk` (مجوز `value_risk.configure`)","CoreState نسخه ۹ — `referralRegistry` و `platformValueRisk`","۶۳ تست موتور؛ `LoanRequestStudio` از طرح‌های توسعه‌یافته Value/Risk","به‌روزرسانی AGENTS، HANDOFF، ENGINES و سایر مستندات","دیپلوی production روی https://ativam.freegpt.ir"],"url":"https://vam.ati.ir/changelog#2026-06-27-panels-referral-value-risk"},{"id":"2026-06-23-brand-identity","version":"0.8.0","cycle":"سیکل ۰ · خرداد ۱۴۰۵ — برند و پایه","publication":"live","title":"هویت بصری رسمی ۱۴۰۵","summary":"فونت ایران‌یکان، لوگوی SVG رسمی و پالت برند در کل سامانه.","at":"2026-06-23T14:59:00+03:30","atTehran":"سه‌شنبه ۲ تیر ۱۴۰۵ — ۱۴:۵۹","tags":["feature","deploy","improvement"],"items":["فونت Iran Yekan FaNum — `public/fonts/IranYekan-*.woff2`","لوگو و نشان — `public/brand/` + کامپوننت `Logo`","پالت سرمه‌ای `#001F3F` و سبز `#8DC63F`","favicon و `icon.svg`","مستند `docs/BRAND-IDENTITY.md`"],"url":"https://vam.ati.ir/changelog#2026-06-23-brand-identity"},{"id":"2026-06-12-silk-steel","version":"0.7.0","cycle":"سیکل ۰ · خرداد ۱۴۰۵ — برند و پایه","publication":"live","title":"بازطراحی UI «ابریشم و فولاد»","summary":"زبان طراحی واحد در لندینگ، پنل‌ها و احراز هویت.","at":"2026-06-12T03:54:00+03:30","atTehran":"جمعه ۲۲ خرداد ۱۴۰۵ — ۰۳:۵۴","tags":["improvement","integration","docs"],"items":["توکن‌های motion و سطح در `globals.css`","Navbar شیشه‌ای، AuthModal مرحله‌ای، KPIهای tick-in","قرارداد زنده شبانیک تأیید و مستندسازی production","استپر سفر اعتباری و کانکتورهای پالس‌دار اتاق فرمان","بریف طراحی — `docs/DESIGN-BRIEF.md`"],"url":"https://vam.ati.ir/changelog#2026-06-12-silk-steel"},{"id":"2026-06-11-engines-dashboards","version":"0.6.0","cycle":"سیکل ۰ · خرداد ۱۴۰۵ — برند و پایه","publication":"live","title":"پنل‌های BNPL و موتورهای دامنه","summary":"شش پورتال داشبورد و ۱۴+ موتور سمت کلاینت با state دمو.","at":"2026-06-11T18:23:00+03:30","atTehran":"پنجشنبه ۲۱ خرداد ۱۴۰۵ — ۱۸:۲۳","tags":["feature","integration"],"items":["پنل‌های کاربر، سازمان، بازاریاب، پذیرنده، تأمین‌کننده و اتاق فرمان","موتورهای وام، کیف، دفتر کل، امتیازدهی، تقلب و تسویه","پروکسی امن شبانیک — `api/integrations/shabanic`","کیف ریالی و زنجیره متمرکز دمو","IAM سازمانی، timeline پرونده و لغو case","یکپارچه‌سازی امضانو برای امضای قرارداد"],"url":"https://vam.ati.ir/changelog#2026-06-11-engines-dashboards"},{"id":"2026-05-16-handbook","version":null,"cycle":"سیکل ۰ · خرداد ۱۴۰۵ — برند و پایه","publication":"live","title":"راهنمای توسعه و پنل‌ها","summary":null,"at":"2026-05-16T19:19:00+03:30","atTehran":"شنبه ۲۶ اردیبهشت ۱۴۰۵ — ۱۹:۱۹","tags":["docs"],"items":["افزودن PDF راهنمای توسعه و پنل‌ها به مخزن","پایه‌گذاری مستندات ARCHITECTURE و ENGINES"],"url":"https://vam.ati.ir/changelog#2026-05-16-handbook"},{"id":"2026-05-16-landing","version":"0.1.0","cycle":"سیکل ۰ · خرداد ۱۴۰۵ — برند و پایه","publication":"live","title":"لندینگ اولیه آتی‌وام","summary":"صفحه بازاریابی RTL با ماشین‌حساب اقساط و معرفی محصول.","at":"2026-05-16T19:11:00+03:30","atTehran":"شنبه ۲۶ اردیبهشت ۱۴۰۵ — ۱۹:۱۱","tags":["feature"],"items":["لندینگ فارسی RTL با Next.js App Router","بخش‌های Hero، ماشین‌حساب، فروشگاه‌ها و FAQ","پایهٔ استک: Next.js 16، React 19، Tailwind v4"],"url":"https://vam.ati.ir/changelog#2026-05-16-landing"}]}