زروان (Zarvan)
سامانهای داخلی برای مدیریت و رهگیری پروندههای ورود موقت خودرو در گمرک؛ با تمرکز بر استعلام، کنترل سهمیه، ثبت پرونده، صدور معرفینامه و مدیریت سوابق در یک محیط یکپارچه و امن.
سامانه مدیریت و رهگیری ورود موقت خودرو
معرفی پروژه
Customs TIV Tracker یک سامانه داخلی برای مدیریت و رهگیری پروندههای ورود موقت خودرو در گمرک است که با هدف یکپارچهسازی فرایند استعلام، بررسی سهمیه، ثبت پرونده و صدور معرفینامه طراحی شده است.
این سامانه با در نظر گرفتن الزامات خاص فرایندهای گمرکی، از جمله سهمیه زمانی، محدودیت تعداد دفعات ورود، کنترل بر اساس شماره شاسی و تقویم شمسی، بخشهای مختلف عملیات را در یک محیط یکپارچه قرار میدهد.
> وضعیت پروژه: نسخه آزمایشی داخلی و غیررسمی.
مسئله
مدیریت پروندههای ورود موقت خودرو نیازمند کنترل همزمان چندین عامل است؛ از جمله هویت واردکننده، سوابق قبلی، میزان سهمیه استفادهشده، تعداد دفعات ورود و وضعیت هر خودرو.
وجود این محدودیتها باعث میشود ثبت و بررسی پروندهها صرفاً یک عملیات ساده ثبت اطلاعات نباشد و سیستم باید بتواند قواعد کسبوکار را بهصورت دقیق و قابل اتکا اجرا کند.
مهمترین نیازهای شناساییشده عبارت بودند از:
* استعلام سریع فرد بر اساس کد ملی
* مشاهده سوابق ورودهای قبلی
* محاسبه سهمیه باقیمانده
* کنترل سهمیه به تفکیک شخص و شماره شاسی
* جلوگیری از ثبت پروندههای خارج از سهمیه
* مدیریت پروندهها و افراد
* صدور معرفینامه
* ثبت سوابق فعالیت کاربران
* تهیه گزارش از اطلاعات ثبتشده
* کنترل دسترسی کاربران بر اساس نقش
* امکان استفاده کاملاً داخلی و بدون وابستگی به اینترنت
راهکار
راهکار ارائهشده یک سامانه متمرکز با رابط کاربری فارسی و راستبهچپ است که فرایند اصلی را از استعلام تا ثبت و صدور معرفینامه پوشش میدهد.
هسته اصلی سیستم، یک موتور مستقل برای محاسبه سهمیه است که اطلاعات سوابق را دریافت کرده و وضعیت مجاز یا غیرمجاز بودن یک پرونده جدید را تعیین میکند.
مدل سهمیه شامل سه مؤلفه اصلی است:
* مدتزمان مجاز در سال
* تعداد دفعات ورود
* کنترل مستقل بر اساس شماره شاسی
این محدودیتها قابل تنظیم هستند و سیستم آنها را در زمان انجام عملیات بررسی میکند.
قابلیتهای اصلی
استعلام کد ملی
ماژول استعلام، نقطه شروع فرایند عملیاتی است.
اپراتور میتواند با وارد کردن کد ملی، اطلاعات مرتبط با فرد، سوابق پروندهها و وضعیت سهمیه را مشاهده کرده و در صورت وجود شرایط لازم، پرونده جدید را ثبت کند.
این بخش علاوه بر سهمیه فرد، وضعیت سهمیه را به تفکیک خودرو و شماره شاسی نیز در نظر میگیرد.
مدیریت پروندهها
اطلاعات افراد و پروندههای ورود موقت در سامانه نگهداری میشوند و اپراتور میتواند سوابق مرتبط را مشاهده و مدیریت کند.
ساختار پروندهها امکان دنبال کردن چرخه هر مورد و ارتباط آن با شخص و خودرو را فراهم میکند.
کنترل قوانین و سهمیه
یکی از بخشهای کلیدی پروژه، تبدیل قواعد کسبوکار به منطق قابل اتکا در سیستم است.
موتور سهمیه بهصورت مستقل از رابط کاربری طراحی شده و تصمیمگیری نهایی در سمت سرور انجام میشود؛ بنابراین محدودیتها صرفاً به عناصر ظاهری رابط کاربری وابسته نیستند.
همچنین هنگام صدور معرفینامه، وضعیت سهمیه مجدداً بررسی میشود تا تغییرات همزمان یا تلاشهای خارج از جریان عادی باعث دور زدن محدودیتها نشود.
صدور معرفینامه
پس از تأیید شرایط پرونده، سامانه امکان صدور معرفینامه را فراهم میکند.
خروجی به شکل PDF تولید میشود و برای استفاده در ادامه فرایند اداری آماده است.
تمام خروجیهای تولیدشده نیز بهصورت مشخص دارای نشان نسخه آزمایشی داخلی هستند تا با اسناد رسمی اشتباه نشوند.
مدیریت کاربران و نقشها
سیستم از یک مدل ساده کنترل دسترسی مبتنی بر نقش استفاده میکند.
مدیر سیستم (Admin) به امکانات مدیریتی مانند:
* مدیریت کاربران
* تنظیمات سیستم
* مشاهده گزارش رویدادها
دسترسی دارد.
اپراتور (Operator) به امکانات عملیاتی مانند:
* داشبورد
* استعلام و ثبت
* مدیریت افراد و پروندهها
* گزارشها
* بررسی بند «ح» ماده ۱۱۹
* دستیار نگارش
دسترسی دارد، اما به بخشهای مدیریتی دسترسی نخواهد داشت.
گزارشگیری
اطلاعات سامانه قابلیت خروجی گرفتن در قالبهای XLSX و PDF را دارند و امکان استفاده از دادههای ثبتشده برای گزارشگیری و بررسیهای بعدی فراهم شده است.
بررسی بند «ح» ماده ۱۱۹
برای فرایند مرتبط با بند «ح» ماده ۱۱۹، یک بخش مستقل در سامانه در نظر گرفته شده است که امکان بررسی شرایط و ثبت نتیجه را در همان محیط عملیاتی فراهم میکند.
دستیار نگارش
سامانه دارای بخشی برای تبدیل یادداشتهای اولیه فارسی به پیشنویس رسمی نامه است.
این قابلیت در دو حالت طراحی شده است:
1. حالت مبتنی بر الگو که بدون نیاز به مدل هوش مصنوعی نیز قابل استفاده است.
2. مدل زبانی محلی که در صورت فعال بودن، از مدل فارسی محلی برای تولید پیشنویس استفاده میکند.
خروجی همیشه بهعنوان پیشنویس قابل ویرایش در اختیار اپراتور قرار میگیرد و تصمیم نهایی درباره متن بر عهده کاربر است.
معماری سیستم
سامانه بهصورت ماژولار و سرویسمحور طراحی شده است.
اجزای اصلی شامل:
* Next.js / React برای لایه کاربرد و رابط کاربری
* PostgreSQL برای نگهداری دادههای ساختاریافته
* Drizzle ORM برای ارتباط با پایگاه داده
* Caddy بهعنوان Reverse Proxy و لایه TLS
* ClamAV برای بررسی فایلهای بارگذاریشده
* ذخیرهسازی فایل روی سیستم فایل با شناسه مبتنی بر SHA-256
* ماژول اختیاری مدل زبانی محلی برای دستیار نگارش
اطلاعات فایلها در پایگاه داده ذخیره نمیشوند و فایلها بهصورت جداگانه نگهداری شده و متادیتای آنها در پایگاه داده ثبت میشود.
امنیت و کنترل دسترسی
با توجه به ماهیت اطلاعات، امنیت از ابتدا بخشی از طراحی سیستم در نظر گرفته شده است.
برخی از مهمترین ملاحظات امنیتی عبارتاند از:
* عدم وابستگی سامانه به اینترنت در زمان اجرا
* ثبت رویدادها در Audit Log غیرقابل ویرایش و حذف در سطح دسترسی پایگاه داده
* عدم ثبت کد ملی در لاگها
* استفاده از CSRF Protection
* استفاده از Idempotency برای جلوگیری از اجرای تکراری عملیات
* قفلگذاری روی رکورد فرد هنگام تغییرات مرتبط با پرونده
* مدیریت نشستها در سمت سرور
* رمزنگاری رمزهای عبور
* کنترل دسترسی مبتنی بر نقش
* بررسی فایلهای آپلودشده توسط ClamAV
همچنین منطق سهمیه به رابط کاربری وابسته نیست و در سمت سرور اجرا میشود؛ این موضوع مانع از آن میشود که محدودیتهای کسبوکار صرفاً با دستکاری رابط کاربری دور زده شوند.
طراحی رابط کاربری
رابط کاربری سامانه برای محیط فارسی و فرایندهای عملیاتی طراحی شده است.
ویژگیهای اصلی رابط شامل:
* پشتیبانی کامل از RTL
* استفاده از فونت Vazirmatn
* تقویم و ورودی تاریخ بر اساس تقویم فارسی
* ساختار ساده و عملیاتی برای استفاده روزمره اپراتورها
* تفکیک واضح امکانات مدیریتی و عملیاتی
* نمایش وضعیت سهمیه و سوابق در جریان استعلام
تمرکز رابط کاربری بیشتر بر کاهش مراحل غیرضروری و دسترسی سریع به اطلاعات مورد نیاز اپراتور است.
چالشهای اصلی پروژه
تبدیل قوانین کسبوکار به منطق نرمافزاری
یکی از چالشهای اصلی پروژه، پیادهسازی دقیق قواعد مرتبط با سهمیه بود. محدودیتها تنها به یک عدد ثابت محدود نبودند و باید مدتزمان، تعداد دفعات و شماره شاسی را همزمان در نظر میگرفتند.
برای این منظور، منطق سهمیه بهصورت یک ماژول مستقل طراحی شده تا بتوان آن را جداگانه تست و اعتبارسنجی کرد.
جلوگیری از ثبت همزمان و ناسازگار
در محیطی که ممکن است چند اپراتور بهصورت همزمان روی یک فرد کار کنند، بررسی سهمیه بهتنهایی کافی نیست.
سیستم با استفاده از قفلگذاری سطح رکورد، عملیات مرتبط با یک فرد را در شرایط همزمان کنترل میکند تا دو عملیات موازی نتوانند وضعیت سهمیه را ناسازگار کنند.
کار در محیط کاملاً داخلی
سامانه با فرض استفاده در یک محیط بدون دسترسی به اینترنت طراحی شده است.
به همین دلیل وابستگیهایی مانند فونت، کتابخانهها، گواهی و در صورت استفاده، مدل زبانی، بهصورت محلی در نظر گرفته شدهاند و سیستم در زمان اجرا نیازی به سرویسهای خارجی ندارد.
تست و کیفیت
پروژه علاوه بر تستهای واحد، دارای تستهای یکپارچه برای بخشهایی مانند پایگاه داده و سرویسهای جانبی است.
موتور سهمیه بهصورت مستقل تست شده و پوشش شاخههای آن به ۱۰۰٪ رسیده است.
همچنین تستهایی برای بررسی مواردی مانند:
* اعتبارسنجی کد ملی
* منطق سهمیه
* ثبت رویدادها
* کنترل محیط Air-Gapped
* یکپارچگی پایگاه داده
در نظر گرفته شده است.
فناوریهای استفادهشده
| بخش | فناوری |
| -------------- | ------------------------------------- |
| Framework | Next.js 15 + React 19 |
| Language | TypeScript |
| UI | Tailwind CSS + RTL |
| Database | PostgreSQL 16 |
| ORM | Drizzle |
| Authentication | bcrypt + Session-based Auth |
| Calendar | date-fns-jalali + Persian Date Picker |
| PDF | React PDF Renderer |
| File Storage | Local Filesystem + SHA-256 |
| Virus Scanning | ClamAV |
| Reverse Proxy | Caddy |
| Local AI | Ollama + Dorna 8B |
این انتخابها در README پروژه بهعنوان فناوریهای اصلی سامانه معرفی شدهاند.
نتیجه
Customs TIV Tracker یک ابزار عملیاتی برای تبدیل یک فرایند چندمرحلهای و مبتنی بر قواعد مشخص به یک جریان یکپارچه دیجیتال است.
ارزش اصلی پروژه صرفاً در ثبت اطلاعات نیست؛ بلکه در اجرای متمرکز قواعد کسبوکار، کنترل سهمیه، جلوگیری از ثبتهای ناسازگار، ثبت رویدادهای قابل پیگیری و فراهم کردن یک محیط امن و مستقل از اینترنت قرار دارد.
در نتیجه، اپراتور میتواند بخش عمده فرایند را از یک نقطه واحد مدیریت کند و سیستم نیز مسئولیت کنترل بسیاری از قواعد و محدودیتهای عملیاتی را بر عهده میگیرد.