رزومهٔ مهندسی نرم‌افزار · نمونه‌کارها

محمد صادق پی‌تام

برنامه‌نویس ارشد

مجموعه‌ای از سامانه‌هایی که طراحی و پیاده‌سازی کرده‌ام — از بینایی ماشین در مقیاس کشوری تا کشف تخلف، امنیت و سیستم‌های تخفیف. برای دیدن جزئیات هر پروژه اسکرول کنید.

PROJECTS

نمونه‌کارها

چهار سامانه‌ای که از ایده تا استقرار روی آن‌ها کار کرده‌ام.

۰۱
بینایی ماشین · مقیاس کشوری
سامانهٔ تشخیص و جست‌وجوی اشیا
نمونه‌کار · بینایی ماشین · مقیاس کشوری

سامانهٔ تشخیص و جست‌وجوی اشیا

موتور بینایی ماشینی که اشیای درون تصاویر را تشخیص، برچسب‌گذاری و ایندکس می‌کند تا بتوان در میان دیتاست‌های صدها میلیونی، شیء مورد نظر را در کسری از ثانیه پیدا کرد — با دو حالت استقرار لوکال و توزیع‌شده روی شبکه.

۰M+
تصویر در شبانه‌روز (تحت شبکه)
۰M+
تصویر در ساعت (لوکال · GPU)
صدها میلیون
حجم دیتاست قابل هندل
۲ حالت
استقرار لوکال / تحت شبکه

داستان سامانه

از میلیون‌ها فریم خام تا یافتن یک شیء، در کسری از ثانیه

چالش اصلی، یک کلمه بود: مقیاس. چطور می‌توان میلیون‌ها فریم را پردازش کرد و بعد، یک شیء مشخص را میان آن‌ها برق‌آسا یافت؟ پاسخ، تفکیک دو مسئله بود — پردازش سنگینِ تصویر، و جست‌وجوی سریع روی نتایج.

در لایهٔ پردازش، تصاویر با مدل‌های تشخیص شیء تحلیل و اشیای کشف‌شده برداری و ایندکس می‌شوند؛ سپس یک رابط کاربری ساده اجازه می‌دهد کاربر به‌دنبال آنچه می‌خواهد بگردد؛ سامانه نزدیک‌ترین تصاویر را به‌ترتیب بیشترین شباهت بازمی‌گرداند و حتی محل دقیق شیء در تصویر را روی همان عکس مشخص می‌کند.

همین معماری، سامانه را تا چند ده میلیون تصویر مقیاس‌پذیر کرد: حالت لوکال با بیش از یک میلیون تصویر در ساعت روی یک GPU انویدیا ۲۰۸۰، و حالت توزیع‌شده روی شبکهٔ ۱ گیگابیتی با سه سرور V100 و توان بیش از ۱۰ میلیون تصویر در شبانه‌روز — سامانه‌ای که در سطح کشوری به‌کار گرفته شد.

موتور تشخیص در حال کار

هر فریم اسکن می‌شود، اشیا تشخیص داده و با کادر و برچسب علامت‌گذاری می‌شوند

تشخیص بلادرنگ روی جریان تصویر detector · v1
۰ فریم پردازش‌شده ۰ شیء تشخیص‌داده‌شده میانگین اطمینان: ۰٪

رابط جست‌وجوی اشیا

کافی است نام شیء را بنویسید؛ سامانه از روی ایندکس، فریم‌های مرتبط را برمی‌گرداند

دو حالت استقرار

از یک ایستگاه کاری منفرد تا خوشهٔ سرورها روی شبکه

لوکال

پردازش روی یک ایستگاه کاری با کارت گرافیک

۱M+ تصویر / ساعت
  • اجرای کامل روی یک GPU انویدیا ۲۰۸۰
  • بدون نیاز به زیرساخت شبکه
  • مناسب دیتاست‌های آفلاین و محلی
NVIDIA RTX 2080

تحت شبکه

پردازش توزیع‌شده روی خوشهٔ سرورها

۱۰M+ تصویر / شبانه‌روز
  • سه سرور V100 به‌صورت موازی
  • بستر شبکهٔ ۱ گیگابیتی
  • مقیاس‌پذیر برای دیتاست‌های چند ده‌میلیونی
3 × Tesla V100 · 1G LAN

مقایسهٔ توان پردازش

ظرفیت هر حالت در بازهٔ زمانی متناظر خود

لوکال (۲۰۸۰)
۱M+ / ساعت
تحت شبکه (3×V100)
۱۰M+ / شبانه‌روز

گردش کار سامانه

از ورود تصویر تا جست‌وجوی شیء

۱ ورود تصاویر دریافت دیتاست در مقیاس کلان
۲ تشخیص اشیا یافتن و برچسب‌گذاری اشیا
۳ ایندکس‌سازی ذخیرهٔ اشیای کشف‌شده برای جست‌وجو
۴ جست‌وجو در UI یافتن سریع شیء مورد نظر

رویکرد و فناوری

آنچه قلب این سامانه را شکل می‌دهد

تشخیص اشیا (Object Detection)
پردازش روی GPU
پردازش توزیع‌شده
ایندکس و جست‌وجوی اشیا
مقیاس چند ده‌میلیونی
استقرار لوکال / تحت شبکه
رابط کاربری جست‌وجو

استک فنی

فناوری‌های به‌کاررفته در پیاده‌سازی این سامانه

React
Python
YOLO
Milvus
gRPC
Kafka
Confluent Kafka
PostgreSQL
MongoDB
MinIO
Ceph
S3
OpenCV
SQLModel
FastAPI
Docker
۰۲
داده‌کاوی · کشف ناهنجاری
سامانهٔ کشف تخلف و ناهنجاری
نمونه‌کار · داده‌کاوی · مقیاس کشوری

سامانهٔ کشف تخلف و ناهنجاری

موتوری برای کشف ناهنجاری و تخلف که هر مسئله را با بیش از ۵۰ الگوریتم و در دو حالت Supervised و Unsupervised تحلیل می‌کند — و نکتهٔ کلیدی: نه‌فقط داده، بلکه خودِ ساختِ رابط کاربری را هم موتور هوش مصنوعی تعیین می‌کند؛ فرانت‌اند از پیش چیزی از صفحه نمی‌داند و تنها آنچه موتور دستور می‌دهد را می‌سازد.

0+
الگوریتم تحلیل ناهنجاری
0
استقرار کشوری بزرگ
خودکار
ساخت UI و داشبورد
۲ حالت
تنظیم خودکار / دستی

داستان سامانه

از دادهٔ خام تا کشف رکوردهای مشکل‌دار — و داشبوردی که خودش ساخته می‌شود

هر دیتاست تعریف متفاوتی از «ناهنجاری» دارد. به‌جای تحمیل یک روش ثابت، سامانه بیش از ۵۰ الگوریتم را در اختیار می‌گیرد و بسته به ماهیت مسئله، مناسب‌ترین‌ها را برای نگاه از زوایای مختلف به داده انتخاب و ترکیب می‌کند.

متمایزکنندهٔ اصلی، رابط کاربریِ کاملاً موتورمحور است: فرانت‌اند از پیش هیچ تصوری از اجزای صفحه ندارد. این موتور هوش مصنوعی است که — علاوه بر داده — تصمیم می‌گیرد چه اجزایی روی صفحه ساخته و چگونه چیده شوند و این دستورها را از طریق پروتکل‌های استانداردی که توسعه دادیم به فرانت‌اند می‌فرستد؛ فرانت‌اند تنها همان چیزی را که موتور می‌گوید می‌سازد و نمایش می‌دهد. همین، کار را به‌شدت داینامیک می‌کند و جابه‌جایی میان مسائل کاملاً متفاوت را بدون هیچ تغییری در فرانت‌اند ممکن می‌سازد. سامانه مسئله را در دو حالت Supervised و Unsupervised حل می‌کند و انتخاب با خود کاربر است.

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

موتور کشف ناهنجاری در حال کار

جریان داده وارد می‌شود، الگوریتم‌ها اعمال می‌شوند و رکوردهای پرت علامت‌گذاری می‌شوند

تحلیل بلادرنگ دیتاست Isolation Forest
۰ رکورد پردازش‌شده ۰ ناهنجاری کشف‌شده نرخ تخلف: ۰٪

جعبه‌ابزار الگوریتم‌ها

بیش از ۵۰ روش که بسته به مسئله، انتخاب و ترکیب می‌شوند

ساخت خودکار داشبورد

سامانه ساختار داده را می‌خواند و رابط متناسب با آن را خودش می‌سازد

روند تخلف ماهانه
سهم موارد مشکوک
۱۸٪ مشکوک
۸۲٪ سالم
۲٬۳۱۴رکورد علامت‌گذاری‌شده
روند هفتگی
جدول رکوردهای پرت — تولیدشدهٔ خودکار از روی شِمای داده

گردش کار سامانه

از ورود دیتاست تا نمایش روی داشبورد

۱ ورود دیتاست دریافت داده و تشخیص ساختار
۲ تنظیم خودکار/دستی انتخاب الگوریتم‌ها بر اساس مسئله
۳ کشف ناهنجاری اعمال ۵۰+ الگوریتم و امتیازدهی
۴ داشبورد خودکار ساخت UI و نمایش نتایج

جدی‌ترین استقرارهای کشوری

مسائلی که با این سامانه حل شدند

تشخیص اپیدمی کرونا

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

سطح کشوری

بیمهٔ بازنشستگان نیروهای مسلح

تحلیل داده‌های بیمه‌ای بازنشستگان نیروهای مسلح برای یافتن تراکنش‌ها و موارد ناهنجار و مشکوک به تخلف.

سازمانی

بیمهٔ سلامت ایرانیان

شناسایی ناهنجاری و تخلف در داده‌های بیمهٔ سلامت ایرانیان برای صیانت از منابع.

کشوری

رویکرد و فناوری

آنچه قلب این سامانه را شکل می‌دهد

کشف ناهنجاری (Anomaly Detection)
۵۰+ الگوریتم
یادگیری بدون‌ناظر
تولید خودکار UI
داشبورد پویا
تحلیل داده در مقیاس کشوری
تنظیم خودکار / دستی

استک فنی

فناوری‌های به‌کاررفته در پیاده‌سازی این سامانه

React
Python
FastAPI
Dramatiq
Redis
PostgreSQL
SQLAlchemy
Docker
۰۳
وب · پلتفرم تخفیف
سیستم تخفیف آنلاین
نمونه‌کار · فین‌تک · مقیاس کشوری

سیستم تخفیف آنلاین
روی کارت بانکی

پلتفرم فین‌تکی که تخفیف را لحظهٔ کشیدن کارت بانکی روی پوز و کاملاً آنلاین محاسبه و از مبلغ خرید کم می‌کرد — بدون کارت عضویت، بدون اپلیکیشن جداگانه و مستقل از PSP.

0+
پذیرنده در سراسر کشور
0%
سهم بازار تراکنش PSPها
0
کارت بانکی برای هر کاربر
0
PSP بزرگ کشور

داستان سامانه

تخفیف نامرئی، روی همان کارتی که همیشه در جیب کاربر است

ایدهٔ اصلی ساده اما سخت بود: تخفیف باید بدون عنوان کردن اینکه شخص عضو باشگاه تخفیف است اعمال شود. کاربر تا ۱۰ کارت بانکی عضو شبکهٔ شتاب را یک‌بار معرفی می‌کرد و دیگر هیچ صدور کارت عضویتی لازم نبود؛ ثبت‌نام هم به‌صورت انفرادی با لینک یا دسته‌ای از سوی سازمان انجام می‌شد.

برای تحقق این تجربه، باید با روال اختصاصی هر PSP یکپارچه می‌شدیم. سامانه با سپ، به‌پرداخت ملت، پک‌کو، پارسیان و فن‌آوا کارت — که روی‌هم بیش از ۹۰٪ بازار تراکنش را در اختیار داشتند — طرف قرارداد بود و کارت‌های کاربر را مطابق رویهٔ هر PSP ثبت می‌کرد.

هنگام خرید در شبکهٔ بیش از ۶۰۰۰ پذیرنده، تراکنش بی‌درنگ دریافت، تخفیف به‌صورت آنلاین محاسبه و از مبلغ کسر می‌شد؛ مبلغ اصلی، تخفیف و مبلغ پرداختی روی فیش پوز چاپ و هم‌زمان پیامک خرید برای کاربر ارسال می‌شد. تخفیف‌ها داینامیک بودند و در مناسبت‌ها فراتر از نرخ پایهٔ فروشگاه می‌رفتند.

جریان یک تراکنش

از کشیدن کارت تا کسر تخفیف و چاپ فیش — همه به‌صورت آنلاین

کشیدن کارت روی پوز فروشگاه
PSP دریافت تراکنش
محاسبهٔ تخفیف آنلاین و داینامیک
کسر و اعلان پیامک + پروفایل
شبیه‌سازی در حال اجرا…

فیش پرداخت

مبلغ خرید۵۰۰٬۰۰۰ ریال
تخفیف (۱۵٪)−۷۵٬۰۰۰ ریال
پرداخت واقعی۴۲۵٬۰۰۰ ریال

قابلیت‌های کلیدی

آنچه این سیستم را متمایز می‌کرد

ثبت‌نام انعطاف‌پذیر

عضویت کاربران هم به‌صورت دسته‌ای از طرف سازمان و هم انفرادی از طریق لینک ثبت‌نام.

تا ۱۰ کارت شتاب

هر کاربر می‌توانست تا ۱۰ کارت بانکی عضو شبکهٔ شتاب را به سیستم معرفی کند.

تخفیف داینامیک

تخفیف ثابت یا متغیر؛ در مناسبت‌های مختلف بیش از تخفیف پایهٔ فروشگاه اعمال می‌شد.

اعلان لحظه‌ای

پیامک فوری شامل محل خرید، مبلغ خرید و میزان تخفیف، هم‌زمان با تراکنش.

پروفایل مستقل از PSP

کاربر در یک UI یکپارچه ریز همهٔ خریدهایش را مستقل از PSP مشاهده می‌کرد.

بدون کارت عضویت

نیازی به صدور یا ارائهٔ کارت عضویت نبود؛ کارت بانکی خودِ کاربر کافی بود.

یکپارچگی با PSPهای بزرگ کشور

پوشش بیش از ۹۰٪ بازار تراکنش

سپ
به‌پرداخت ملت
پرداخت الکترونیک پاسارگاد (PEC)
پارسیان
فن‌آوا کارت

استک فنی

فناوری‌های به‌کاررفته در پیاده‌سازی این سیستم

Angular
Java 8
Spring Boot
Spring Framework
Oracle 11g
Power BI
Hibernate
۰۴
امنیت · سطح کشوری
آنتی‌ویروس ایرانی
نمونه‌کار · امنیت · مقیاس کشوری

آنتی‌ویروس ایرانی

پاسخی کشوری به استاکس‌نت: موتور ضدبدافزار بومی برای ویندوز ۷ که در مرکز آپای دانشگاه شیراز ساخته شد — بیش از ۱۶ زیرماژول مستقل که از طریق Named Pipe با یکدیگر گفت‌وگو می‌کردند.

0
دانشگاه برتر مجری پروژه
ویندوز ۷
پلتفرم هدف
0+
زیرماژول مستقل
C/C++
زبان اصلی توسعه

داستان پروژه

از یک تهدید سایبری کشوری تا یک محصول امنیتی بومی

حملهٔ استاکس‌نت نشان داد اتکای زیرساخت‌های حیاتی کشور به آنتی‌ویروس‌های خارجی یک ریسک راهبردی است. در پاسخ، توسعهٔ یک موتور ضدبدافزار بومی در سطح دانشگاهی به شش دانشگاه برتر کشور سپرده شد.

مرکز آپای دانشگاه شیراز مسئول نسخهٔ ویندوز ۷ شد. هستهٔ محصول با C/C++ نوشته شد و معماری آن بر پایهٔ بیش از ۱۶ زیرماژول مستقل بنا شد؛ هر ماژول یک مسئولیت داشت — از محافظت از هستهٔ برنامه و انطباق با الگوهای ویروس تا زمان‌بندی اسکن خودکار و یافتن فایل‌ها.

اجزای مستقل از طریق Named Pipe با هم در ارتباط بودند؛ تصمیمی معماری‌محور که جداسازی، پایداری و محافظت متقابل ماژول‌ها را تضمین می‌کرد — اگر بخشی از کار می‌افتاد، بقیه سالم می‌ماندند.

موتور اسکن در حال کار

انطباق فایل‌ها بر الگوهای ویروس و قرنطینهٔ موارد مشکوک

اسکن سیستم در حال اسکن…
۰ فایل بررسی شد ۰ تهدید

معماری ماژولار

اجزای مستقل، متصل از طریق Named Pipe

محافظت از هستهٔ برنامهجلوگیری از خاموش‌کردن یا دستکاری آنتی‌ویروس
انطباق الگوی ویروس تطبیق امضای بدافزار
زمان‌بندی اسکن خودکار اجرای دوره‌ای و خودکار
پیمایش و یافتن فایل‌ها جست‌وجوی فایل‌سیستم
ماژول رابط کاربری UI با MFC و تعامل با کاربر
گذرگاه ارتباطی هماهنگی پیام میان اجزا
هماهنگی اجزا در حال اجرا…
ارتباط بین‌فرایندی از طریق \\.\pipe\ Named Pipe

قابلیت‌های کلیدی

آنچه این محصول امنیتی را شکل می‌داد

محافظت از هسته

ماژولی برای دفاع از خودِ آنتی‌ویروس در برابر تلاش بدافزارها برای متوقف‌کردن یا دستکاری فرایندهای آن.

انطباق با الگوی ویروس

تطبیق محتوای فایل‌ها با پایگاه امضاهای بدافزار برای شناسایی موارد آلوده.

اسکن زمان‌بندی‌شده

اجرای خودکار و دوره‌ای فرایند بررسی، بدون نیاز به دخالت دستی کاربر.

پیمایش فایل‌سیستم

ماژول یافتن و پیمایش فایل‌ها برای تغذیهٔ موتور انطباق با اهداف بررسی.

ارتباط Named Pipe

اتصال اجزای مستقل از طریق Named Pipe برای ارتباط بین‌فرایندی پایدار و امن.

رابط کاربری با MFC

ماژول UI مستقل برای کنترل، گزارش وضعیت اسکن و مدیریت تهدیدها؛ به‌دلیل مشکل موجود در Qt با MFC پیاده‌سازی شد.

پلتفرم و فناوری

پشتهٔ فنی استفاده‌شده در پروژه

C / C++
MFC (UI)
Qt
Windows 7
Named Pipes (IPC)
معماری ماژولار
مرکز آپای دانشگاه شیراز

استک فنی

پشتهٔ فنی به‌کاررفته در پیاده‌سازی این پروژه

C / C++
PHP
MFC
Named Pipe

سهم در جامعهٔ متن‌باز

از دل توسعهٔ محصول تا گزارش یک باگ به جامعهٔ توسعه‌دهندگان

کشف و گزارش یک باگ در Qt

در جریان توسعهٔ این پروژه، شخصاً یک باگ در فریم‌ورک Qt شناسایی کردم و آن را در StackOverflow مطرح و مستند کردم. همین مشکل سبب شد ماژول رابط کاربری در نهایت با MFC پیاده‌سازی شود.

مشاهدهٔ پروفایل StackOverflow ↗
ABOUT

درباره من

برنامه‌نویس ارشد Back-End با بیش از ۱۵ سال تجربه در طراحی و توسعهٔ سیستم‌های مقیاس‌پذیر، event-driven و مبتنی بر میکروسرویس. متخصص در Python (FastAPI + AsyncIO) و Java، با تمرکز عمیق روی راهکارهای هوش مصنوعی در حوزهٔ سلامت و تشخیص تقلب.

سابقهٔ موفق در راه‌اندازی مجدد یک شرکت داده‌محور، پیاده‌سازی Ontology پزشکی، مدل‌های تشخیص تومور مغزی (BRATS) و یکپارچه‌سازی با PSPهای اصلی کشور.

Python FastAPI AsyncIO Java میکروسرویس Event-Driven هوش مصنوعی تشخیص تقلب Ontology پزشکی BRATS Kafka PostgreSQL یکپارچه‌سازی PSP

بیایید صحبت کنیم

برای همکاری یا اطلاعات بیشتر دربارهٔ پروژه‌ها در دسترس هستم.