فصل ۰۲ · معماری

سامانه، یک مدل نیست؛ زنجیره‌ای از کنترل‌هاست

مرورگر، API، موتور قطعی، صف عملیات، حافظهٔ کارشناسی و درگاه AI مرزهای جدا دارند. این تفکیک باعث می‌شود خطای یک لایه، حقیقت مرجع را بی‌اجازه تغییر ندهد.

هسته قطعی LIVEGateway و Harness PILOTProvider/RAG UNAVAILABLE

معماری جاریِ مستقر

این تصویر، مرز منطقی اجزای فعلی را نشان می‌دهد؛ جزئیات حساس زیرساخت عمومی نشده‌اند.

رابط فارسی/RTLOps، Workbench و صفحات راهنما
NginxTLS، header و مسیرها
Express BFFقرارداد، RBAC، run و audit
NDJSON Bridgeworker طولانی‌عمر Python
Deterministic Engineقواعد، lookup و حافظه

مرز رابط

کاربر وضعیت، evidence و پیشنهاد را می‌بیند؛ policy را تعیین نمی‌کند و کلید provider در مرورگر قرار نمی‌گیرد.

مرز API

اعتبارسنجی، هویت، workflow scope، ثبت عملیات، نرخ درخواست و ترجمهٔ قرارداد به engine.

مرز موتور

منطق قطعی فارسی و GS1؛ مستقل از UI و قابل آزمون با ورودی/خروجی نسخه‌دار.

چرا این جداسازی اهمیت دارد؟

اگر رابط کاربری اشتباه نمایش دهد، دادهٔ مرجع نباید تغییر کند. اگر provider قطع شود، استانداردسازی قطعی باید ادامه یابد. اگر پردازش دسته‌ای متوقف شود، رکوردهای تمام‌شده نباید دوباره یا گم شوند.

ترتیب تصمیم: Rules → Exact → Retrieval → LLM

۱. قواعد قطعی

Unicode، فاصله، واحد، رقم کنترل، ساختار و constraintهای دامنه. سریع، تکرارپذیر و مرجع.

۲. تطبیق دقیق

فرهنگ واژگان، نام پایه، کد و حافظهٔ کارشناسی. برای identifier و official-code از vector similarity استفاده نمی‌شود.

۳. بازیابی

فقط منبع مجاز و نسخه‌دار. retrieval بدون citation و rights کافی نباید به ادعای استاندارد تبدیل شود.

۴. مدل زبانی

پیشنهاد ساختاریافته، تحت post-validation و proposal-only. مسیر تولید فعلی خاموش است.

UNAVAILABLE

مرز ادعا

وجود adapter و Responses API در کد، اثبات inference زنده نیست. تا provider، snapshot RAG و canary معتبر نشوند، مرحله‌های ۳ و ۴ در تولید تصمیم‌ساز نیستند.

جریان پردازش دسته‌ای

هدف، پردازش ایمن هزاران رکورد با حافظهٔ محدود و امکان ادامه پس از وقفه است.

IngestJSON/CSV/TSV/NDJSON/XLSX
Row isolationخطای یک ردیف بقیه را متوقف نمی‌کند
Durable queueفایل و lifecycle پایدار
Engine callرکوردبه‌رکورد با backpressure
Exportخروجی + sidecar و provenance

سناریوی قطعی برق یا restart

run وضعیت خود را روی دیسک دارد. پس از بازگشت سرویس، فقط رکوردهای ناتمام باید دوباره در صف قرار گیرند؛ نتیجه‌های تمام‌شده و audit باقی می‌مانند.

ماشین وضعیت رکورد

وضعیت‌های اصلی رکورد و معنای عملیاتی
وضعیتعلتاقدام بعدی
pendingوارد صف شده و هنوز پردازش کامل نیستانتظار یا resume کنترل‌شده
auto_resolvedنتیجه قطعی، بدون leftover و بالاتر از آستانهٔ مصوبنمونه‌گیری پایشی؛ نه نادیده‌گرفتن کامل
needs_reviewابهام، leftover، confidence ناکافی یا flag کارشناسیتخصیص به کارشناس و ثبت reason
blockedخطای ورودی/Schema که قابل پردازش نیستاصلاح ورودی؛ retry کور ممنوع
failedخطای موتور یا timeoutبررسی رخداد و retry محدود
expert_*تصمیم تأیید، رد یا تعویق کارشناسaudit، export و نامزدی offline برای بهبود

معماری هدف؛ نه وضعیت امروز

چند مؤلفه برای مقیاس سازمانی طراحی شده‌اند اما هنوز ROADMAP هستند.

PostgreSQL + RLS

جایگزینی state فایل‌محور با تراکنش، tenant boundary و audit پایدار. وضعیت: ROADMAP.

pgvector و hybrid retrieval

FTS + lexical + vector + rerank برای corpus رسمی. وضعیت: ROADMAP/وابسته به داده و حقوق.

OIDC + mTLS

انتساب هر اقدام به انسان/سرویس واقعی و احراز متقابل backendها. وضعیت: ROADMAP و پیش‌نیاز onboarding نهایی.

Object storage

snapshot غیرقابل تغییر منابع و artifactهای ارزیابی؛ طراحی شده، مستقر نشده است.

چند replica و HA

نیازمند database و session پایدار؛ وضعیت فعلی process-local و تک‌گره است.

streaming مدل

adapterها اکنون streaming واقعی ندارند؛ UI نباید آن را فعال نشان دهد.

شکست‌های قابل انتظار و رفتار سالم

شکسترفتار سالمرفتار ممنوع
Provider در دسترس نیستdegraded deterministic یا human pathنمایش پاسخ ساختگی به‌عنوان AI
corpus یا citation نامعتبرRAG خاموش و abstainپاسخ بدون منبع
ورودی محرمانهlocal-only یا توقف policyfallback پنهانی به cloud
worker متوقف می‌شودثبت failed/interrupted و resume محدوداز دست‌دادن run یا retry storm
release gate شکست می‌خوردrollback و حفظ همسایهادامه انتشار بدون checkpoint