[
{
"objectID": "docs.html",
"href": "docs.html",
"title": "docs",
"section": "",
"text": "Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org."
},
{
"objectID": "docs.html#quarto",
"href": "docs.html#quarto",
"title": "docs",
"section": "",
"text": "Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org."
},
{
"objectID": "index.html",
"href": "index.html",
"title": "سامانه تردد",
"section": "",
"text": "مقدمه\nراهنمای جامع فنی سامانه تردد",
"crumbs": [
"خانه",
"صفحه اصلی"
]
},
{
"objectID": "index.html#بخش-اول",
"href": "index.html#بخش-اول",
"title": "سامانه تردد",
"section": "",
"text": "مورد اول\nمورد دوم\nمورد سوم"
},
{
"objectID": "index.html#بخش-دوم",
"href": "index.html#بخش-دوم",
"title": "سامانه تردد",
"section": "",
"text": "این بخش یک فرمول ریاضی را نشان میدهد:\n\\[\nE = mc^2\n\\]"
},
{
"objectID": "docs/models.html",
"href": "docs/models.html",
"title": "مدلها",
"section": "",
"text": "فیلدهای موجود در دیتابیس\nمدل درخواست کاربر که شامل رویههای واردات، صادرات، ترانزیت، تدارکات، تجهیزات، سوخترسانی، آبرسانی، عودت تجهیزات (ورود و خروج) میشود.\nconst mongoose = require('mongoose');\n\nconst REQUEST_STATUSES = {\n OPEN: 0, // باز\n IN_PROGRESS: 1, // در حال بررسی\n CLOSE: 2, // بسته شده\n END: 3, // پایان عملیات\n};\n\nconst REQUEST_PERMISSIONS_STATUSES = {\n NOT_HAS: 0, // ندارد\n HAS: 1, // دارد\n CANCEL: 2, // لغو شده\n IN_PROGRESS: 3, // در حال بررسی\n};\n\n// ['صادرات', 'واردات', 'ترانزیت', 'آب رسانی', 'سوخت رسانی', 'تجهیزات', 'تدارکات'],\nconst OPERATION_TYPES = {\n EXPORT: 0,\n IMPORT: 1,\n TRANSIT: 2,\n WATER: 3,\n FUEL: 4,\n EQUIPMENT: 5,\n PROVISION: 6,\n};\n\n// یک تردد، چند تردد، شهری\nconst TRAFFIC_TYPES = {\n ONE_DIRECTION: 0,\n MULTIPLE_DIRECTION: 1,\n CITY: 2,\n ENTRANCE_PERMISSION: 3,\n EXIT_PERMISSION: 4,\n};\n\n// کانتینری، نفتی، عمومی\nconst TERMINAL_OPTIONS = {\n CONTAINER: 0,\n OIL: 1,\n GENERAL: 2,\n SERVICE: 3,\n};\n\n// تخلیه، بارگیری، تشریفات گمرکی\nconst ENTRANCE_TRAFFIC_TYPES = {\n LOAD: 0,\n UNLOAD: 1,\n CUSTOM: 2,\n SERVICE: 3,\n};\n\nconst requestSchema = new mongoose.Schema(\n {\n کسی که درخواست ثبت میکنه - واردات صادرات و ...\n requestBy: {\n type: mongoose.Types.ObjectId,\n ref: 'User',\n },\n\n به نمایندگی از ... درخواستها ثبت میشه. نماینده در واقع\n requestFor: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'User',\n },\n ],\n\n // نوع عملیات درخواست مثل واردات صادرات و ...\n operationType: {\n type: Number,\n required: [true, 'نوع عملیات الزامی می باشد.'],\n enum: Object.values(OPERATION_TYPES),\n },\n\n // فیلدی حمل یکسره و عملیاتی در آن ذخیره میشود\n options: {\n type: String,\n },\n\n // فیلدی که جهت در آن ذخیره میشود. جهت تخلیه، بارگیری و تشریفات گمرکی و ...\n entranceTrafficType: {\n type: Number,\n enum: Object.values(ENTRANCE_TRAFFIC_TYPES),\n },\n\n // حساسیت کالا در این فیلد ذخیره میشود\n danger: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'dangerType',\n required: false,\n },\n ],\n\n // تاییده نهایی نوع تردد که توسط ادمین وارد میشود\n traffic: {\n // تردد تایید شده توسط مجوز دهنده\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // اظهار نوع تردد که توسط کاربر ثبت میشود و نهایی نیست\n trafficType: {\n // اظهار تردد\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // پایانهای که کالا برای آن ثبت میشود\n terminalOption: {\n type: Number,\n enum: Object.values(TERMINAL_OPTIONS),\n },\n\n // آدرس فایل حواله سوخت و ...\n filename: {\n type: String,\n },\n\n // نام محصول یا کالایی که کاربر وارد میکند\n name: {\n // نام بار\n type: String,\n trim: true,\n },\n\n // شماره سفر\n voyageNumber: {\n type: String,\n },\n\n // کد قبض انبار اگر کالا عمومی و یا کانتینری باشد\n receiptNumber: [\n {\n type: String,\n trim: true,\n },\n ],\n\n // تناژ کالا\n tonaj: {\n type: String,\n },\n\n // عددی که برای تناژ استفاده میشود\n tonajNumber: {\n type: String,\n },\n\n // واحد تناژ کالا\n tonajType: {\n type: String,\n },\n\n // تعداد محصول یا بار\n packageNumber: {\n type: String,\n },\n\n // شماره پلاکهای ثبت شده برای درخواست کاربر\n plates: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'plates',\n required: false,\n },\n ],\n\n // بدون استفاده\n truckNumber: {\n type: String,\n },\n\n // اسم شناور\n vesselName: String,\n\n // اسم کشتی رانی صاحب شناور\n shipping: {\n type: String,\n },\n\n // منطقه عملیاتی\n storeRoom: {\n type: mongoose.Types.ObjectId,\n ref: 'storeRoom',\n required: false,\n },\n // نوع منطقه عملیاتی - که استفاده نمیشود\n storeRoomType: {\n type: String,\n },\n\n // دستگاه نظارت درخواست\n supervisionDepartment: {\n type: mongoose.Types.ObjectId,\n ref: 'supervisionDepartment',\n required: false,\n },\n\n // کاربری که برای درخواست مشاور است\n consultingUser: {\n type: String,\n },\n consultingUsername: {\n type: String,\n },\n consultingStatus: {\n type: String,\n },\n supervisionStatus: {\n type: String,\n },\n propertyBossStatus: {\n type: String,\n },\n HSEStatus: {\n type: String,\n },\n portBossStatus: {\n type: String,\n },\n customsStatus: {\n type: String,\n },\n selectedStores: {\n type: Array,\n },\n\n // مقصد کالا\n destination: {\n type: mongoose.SchemaTypes.ObjectId,\n trim: true,\n ref: 'city',\n },\n\n // مجوز یگان حفاظت \n permissionGuard: {\n // مجوز یگان حفاظت\n type: Number,\n enum: Object.values(REQUEST_PERMISSIONS_STATUSES),\n default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS,\n },\n\n // مجوز پایانه اسکله برای حرکت کردن ناوگان حمل از پایانه کامیونی\n permissionPier: {\n // مجوز اسکله\n type: Number,\n enum: Object.values(REQUEST_PERMISSIONS_STATUSES),\n default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS,\n },\n\n // اظهارات کوتاژ کاربر\n userCottages: [\n //اظهار کوتاژ\n {\n type: String,\n trim: true,\n },\n ],\n date: {\n type: Date,\n },\n dateString: {\n type: String,\n },\n\n // کامنت اسکله - بروز میشود\n pierComment: {\n type: String,\n },\n\n // پایانه حمل\n terminalTruckName: {\n type: mongoose.Types.ObjectId,\n ref: 'terminals',\n required: false,\n },\n\n // شماره حواله سوخت\n gasolineRequestNumber: {\n type: String,\n },\n\n // شماره سفارش\n orderNumber: {\n type: String,\n },\n\n // دروازهای که درخواست برای \n gateName: {\n type: mongoose.Types.ObjectId,\n ref: 'gate',\n required: [true, 'نام دروازه الزامی می باشد.'],\n },\n\n // کد رهگیری تولید شده\n requestNumber: {\n type: String,\n },\n supervisionUser: {\n type: String,\n },\n supervisionUsername: {\n type: String,\n },\n propertyBossUser: {\n type: String,\n },\n propertyBossUsername: {\n type: String,\n },\n HSEUser: {\n type: String,\n },\n HSEUsername: {\n type: String,\n },\n portBossUser: {\n type: String,\n },\n portBossUsername: {\n type: String,\n },\n terminalUser: {\n type: String,\n },\n terminalUsername: {\n type: String,\n },\n permissionPierDate: {\n type: Date,\n },\n permissionPierDateString: {\n type: String,\n },\n\n // وضعیت درخواست کاربر\n status: {\n type: Number,\n enum: Object.values(REQUEST_STATUSES),\n default: REQUEST_STATUSES.IN_PROGRESS,\n },\n\n // اظهارات کوتاژ کاربر تایید شده است یا نه\n cottageVerified: {\n type: Boolean,\n default: false,\n },\n verfiedAt: {\n type: Date,\n required: false,\n },\n cottages: [\n // کوتاژهای تایید شده توسط سرویس استعلام گمرک\n {\n type: mongoose.Types.ObjectId,\n ref: 'cottage',\n required: false,\n },\n ],\n\n // فیلدی برای کانتینر خالی\n emptyContainer: {\n type: Boolean,\n },\n\n // اگر کالا خطرناک باشد \n unNumber: {\n type: String,\n },\n\n // اگر کالا خطرناک باشد\n casNumber: {\n type: String,\n },\n process: {\n // شروع فرآیند\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'process',\n },\n commodityList: [\n // لیست اقلام\n {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'equipements',\n required: false,\n },\n ],\n },\n { timestamps: true }\n);\n\nconst Request = mongoose.model('request', requestSchema);\n\nmodule.exports = {\n Request,\n REQUEST_STATUSES,\n REQUEST_PERMISSIONS_STATUSES,\n TERMINAL_OPTIONS,\n TRAFFIC_TYPES,\n OPERATION_TYPES,\n};\n\nمدل مربوط به شماره پلاک درخواستها که کاربر اطلاعات راننده را وارد میکند.\nconst mongoose = require('mongoose');\nconst { TRAFFIC_TYPES } = require('./request.model');\n\n// وضعیت فعلی پلاک که در چه مرحلهای است\nconst PLATE_STATES = {\n OUT_PORT: 0,\n IN_PORT: 1,\n CLOSED: 2,\n};\n\n// پلاک مجوز حرکت دارد یا ندارد\nconst PLATE_PERMISSIONS = {\n NOT_HAS: 0,\n HAS: 1,\n PENDING: 2,\n};\n\n// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی\nconst GUARD_REGISTRATION_TYPES = {\n AUTO: 0,\n MANUAL: 1,\n};\n\n// مدل پلاک\nconst platesSchema = new mongoose.Schema(\n {\n // شماره پلاک\n plate: {\n type: String,\n trim: true,\n },\n //مجوز ورود به بندر که هم یگان حفاظت برای چند ترددی و شهری صادر می کند و هم پایانه کامیونی\n permission: {\n type: Number,\n enum: Object.values(PLATE_PERMISSIONS),\n },\n\n // مجوز یگان حفاظت\n permissionGuard: {\n type: Number,\n },\n permissionGuardDate: {\n type: Date,\n },\n status: {\n type: Number,\n },\n\n // نوع ترددی که توسط ادمین ثبت شده است\n traffic: {\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // زمان ورود ناوگان حمل به درون بندر\n entranceTime: [\n {\n type: Date,\n },\n ],\n entranceTimeString: [\n {\n type: String,\n },\n ],\n\n // زمان خروج ناوگان حمل از بندر\n exitTime: [\n {\n type: Date,\n },\n ],\n exitTimeString: [\n {\n type: String,\n },\n ],\n\n // مجوز پایانه راهداری\n delfardTerminalTime: {\n type: Date,\n },\n delfardTerminalTimeString: {\n type: String,\n },\n\n // زمان مجوز گرفتن از پایانه کامیونی\n truckTerminalTime: {\n type: Date,\n },\n truckTerminalTimeString: {\n type: String,\n },\n\n // تخلف\n violationType: {\n type: String,\n },\n violationComment: {\n type: String,\n },\n\n // حساسیت کالایی که حمل میکند\n dangers: [\n {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'dangerType',\n },\n ],\n date: {\n type: Date,\n },\n dateString: {\n type: String,\n },\n\n // اگر درخواست از نوع کانتینری باشد شمارههای کانتینر هم باید وارد شود\n containerNumbers: [\n {\n type: String,\n },\n ],\n\n closeDate: {\n type: Date,\n },\n\n // اسم راننده\n driverName: {\n type: String,\n },\n\n // شماره پاسپورت برای خارجیها و کد ملی برای داخلیها\n driverPersonalCode: {\n type: String,\n },\n\n // شماره موبایل راننده\n driverMobile: {\n type: String,\n },\n\n // ملیت راننده\n driverNationality: {\n type: String,\n },\n\n // نوع ناوگان حمل\n truckType: {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'trucks',\n },\n\n // کدی که اگر نوع ناوگان از نوع چادری یا یخچالی باشد\n TYnumber: {\n type: String,\n },\n\n // درخواست کنسل شده است یا نه\n isCancel: {\n type: Boolean,\n },\n bijakType: {\n type: String,\n },\n bijakNumber: {\n type: Number,\n },\n bijakTruckScaleNumber: {\n type: String,\n },\n bijakUser: {\n type: String,\n },\n bijakGCOMS: {\n type: Array,\n },\n\n // درخواست برای بستن \n requestForClose: {\n type: Boolean,\n },\n requestForCloseFullName: {\n type: String,\n },\n\n // نوع پلاک که ایرانی خارجی و منطقه آزاد باشد\n plateOption: {\n type: String,\n },\n plateState: {\n type: Number,\n enum: Object.values(PLATE_STATES),\n default: PLATE_STATES.OUT_PORT,\n },\n\n // نوع ورود پلاک به بندر\n entranceGuardRegistrationType: {\n type: Number,\n enum: Object.values(GUARD_REGISTRATION_TYPES),\n },\n\n // نوع خروج پلاک از بندر\n exitGuardRegistrationType: {\n type: Number,\n enum: Object.values(GUARD_REGISTRATION_TYPES),\n },\n // transportation\n\n // شرکت حمل اگر درخواست شهری ثبت شود\n transportationCompany: {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'terminals',\n required: false,\n },\n },\n { timestamps: true }\n);\n\nconst Plate = mongoose.model('plates', platesSchema);\n\nmodule.exports = { Plate, PLATE_STATES, PLATE_PERMISSIONS };",
"crumbs": [
"مستندات",
"مدلها",
"Backend"
]
},
{
"objectID": "docs/models/description.html",
"href": "docs/models/description.html",
"title": "توضیحات مدلها",
"section": "",
"text": "مدلهای داده در سامانه تردد\nاین بخش شامل معرفی مدلهای دادهای مورد استفاده در سامانه است. هر مدل توضیح کوتاهی از کاربرد و جایگاه خود دارد.\n\nAction\nذخیره لاگها در سطح Middleware\nدر آینده احتمالاً به ElasticSearch منتقل خواهد شد\n\n\nCategory / EquipmentCategory\nاشتباه در طراحی اولیه باعث ایجاد دو مدل مشابه شد (هر دو یکی هستند)\nبرای دستهبندی اقلام تدارکات استفاده میشوند\n\n\nCity\nمدیریت لیست شهرها\n\n\nComment\nثبت نظر ادمین پایانهها روی درخواستها\n\n\nCompanyType\nانواع شرکتها\nبرای کاربران حقوقی استفاده میشود\n\n\nCottage\nاظهار کوتاژ گمرکی کاربر\nاعتبارسنجی از طریق سرویس گمرک انجام میشود\nدر صورت معتبر بودن در این مدل ذخیره میگردد\n\n\nCountry\nلیست کشورها\n\n\nDangerType\nدستهبندی کالاها از نظر میزان حساسیت / خطر\n\n\nDestination\nمشابه City\nاحتمالاً استفاده نخواهد شد\n\n\nEquipment\nلیست اقلام تدارکات و تجهیزات\nهر آیتم میتواند به یک Plate متصل شود\n\n\nGate\nلیست دروازههای بندر\n\n\nGCOMS\nسرویس داخلی اداره بندر\nارائهدهنده دادههای کانتینر\n\n\nIncident\nلیست رخدادها\n\n\nLogisticEvent\nمدیریت انواع رخدادها و رویدادهای لجستیکی\n\n\nMessage\nپیامهای نمایشی به کاربران در کارتابلها\n\n\nPermission / PermissionGroup\nتعریف مجوزها و گروههای مجوزها\n\n\nPersonal\nمجوز برای اشخاص (کارکنان)\n\n\nPersonalTraffic\nمجوز تردد اشخاص عمومی (اربابرجوعها)\n\n\nPersonalVehicle\nمجوز خودروهای شخصی\n\n\nPhonebook\nدفترچه تلفن عمومی داخل سامانه\n\n\nPlate\nلیست پلاکهای ثبتشده توسط کاربر برای درخواستها\n\n\nPlateCamera\nلیست دوربینهای پلاکخوان\n\n\nPomixCamera\nاطلاعات ارسالشده از دوربین پلاکخوان به سامانه تردد\n\n\nPort\nمدیریت بنادر\n\n\nProcess\nتعریف و مدیریت فرآیندها\n(در حال توسعه)\n\n\nProvince\nلیست استانها\n(احتمالاً حذف خواهد شد)\n\n\nRequest\nدرخواستهای کاربران شامل واردات، صادرات و سایر موارد\n\n\nStoreRoom\nمناطق عملیاتی (انبار، اسکله و …)\n\n\nSupervisionDepartment\nدستگاههای نظارت بر درخواستها\nمثال: اداره فاوا، امور بندری\n\n\nTemplate\nقالبهای پیامک\n\n\nTemplateUsage\nکاربردهای مختلف پیامکها\n\n\nTruckFleet\nانواع ناوگان (سبک، سنگین و …)\n\n\nTruckTerminal\nپایانههای حمل (کامیونی و …)\n\n\nUnauthorizedPlate\nترددهای غیرمجاز ثبتشده توسط دوربین\n\n\nUser\nمدیریت کاربران سامانه\n\n\nVessel\nاطلاعات شناورها\nدادهها از سامانه IMAS دریافت میشوند",
"crumbs": [
"مستندات",
"مدلها",
"توضیحات"
]
},
{
"objectID": "docs/models/backend.html",
"href": "docs/models/backend.html",
"title": "مدلها",
"section": "",
"text": "فیلدهای موجود در دیتابیس\nمدل درخواست کاربر که شامل رویههای واردات، صادرات، ترانزیت، تدارکات، تجهیزات، سوخترسانی، آبرسانی، عودت تجهیزات (ورود و خروج) میشود.\nconst REQUEST_STATUSES = {\n OPEN: 0, // باز\n IN_PROGRESS: 1, // در حال بررسی\n CLOSE: 2, // بسته شده\n END: 3, // پایان عملیات\n};\n\nconst REQUEST_PERMISSIONS_STATUSES = {\n NOT_HAS: 0, // ندارد\n HAS: 1, // دارد\n CANCEL: 2, // لغو شده\n IN_PROGRESS: 3, // در حال بررسی\n};\n\n// ['صادرات', 'واردات', 'ترانزیت', 'آب رسانی', 'سوخت رسانی', 'تجهیزات', 'تدارکات'],\nconst OPERATION_TYPES = {\n EXPORT: 0,\n IMPORT: 1,\n TRANSIT: 2,\n WATER: 3,\n FUEL: 4,\n EQUIPMENT: 5,\n PROVISION: 6,\n};\n\n// یک تردد، چند تردد، شهری\nconst TRAFFIC_TYPES = {\n ONE_DIRECTION: 0,\n MULTIPLE_DIRECTION: 1,\n CITY: 2,\n ENTRANCE_PERMISSION: 3,\n EXIT_PERMISSION: 4,\n};\n\n// کانتینری، نفتی، عمومی\nconst TERMINAL_OPTIONS = {\n CONTAINER: 0,\n OIL: 1,\n GENERAL: 2,\n SERVICE: 3,\n};\n\n// تخلیه، بارگیری، تشریفات گمرکی\nconst ENTRANCE_TRAFFIC_TYPES = {\n LOAD: 0,\n UNLOAD: 1,\n CUSTOM: 2,\n SERVICE: 3,\n};\n\nمدل مربوط به شماره پلاک درخواستها که کاربر اطلاعات راننده را وارد میکند.\n\n// وضعیت فعلی پلاک که در چه مرحلهای است\nconst PLATE_STATES = {\n OUT_PORT: 0,\n IN_PORT: 1,\n CLOSED: 2,\n};\n\n// پلاک مجوز حرکت دارد یا ندارد\nconst PLATE_PERMISSIONS = {\n NOT_HAS: 0,\n HAS: 1,\n PENDING: 2,\n};\n\n// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی\nconst GUARD_REGISTRATION_TYPES = {\n AUTO: 0,\n MANUAL: 1,\n};",
"crumbs": [
"مستندات",
"مدلها",
"mongoose"
]
},
{
"objectID": "index.html#فرآیند-رویههای-تجاری",
"href": "index.html#فرآیند-رویههای-تجاری",
"title": "سامانه تردد",
"section": "",
"text": "رویه تجاری",
"crumbs": [
"خانه",
"صفحه اصلی"
]
},
{
"objectID": "docs/processes/business.html",
"href": "docs/processes/business.html",
"title": "فرآیندهای تجاری",
"section": "",
"text": "فرآیند تجاری\nفرآیند شروع و پایان یک درخواست تجاری در سامانه تردد و بندر",
"crumbs": [
"مستندات",
"فرآیندها",
"تجاری"
]
},
{
"objectID": "docs/processes/truckTerminal.html",
"href": "docs/processes/truckTerminal.html",
"title": "فرآیندهای پایانه راهداری",
"section": "",
"text": "فرآیند پایانه راهداری\nنحوه اعلام بار توسط صاحب بار و انتخاب بار توسط راننده",
"crumbs": [
"مستندات",
"فرآیندها",
"راهداری"
]
},
{
"objectID": "docs/processes/service.html",
"href": "docs/processes/service.html",
"title": "فرآیند درخواستهای خدمات",
"section": "",
"text": "فرآیند درخواستهای خدماتی\nنحوه شروع و پایان فرآیند درخواست خدمات",
"crumbs": [
"مستندات",
"فرآیندها",
"خدمات"
]
}
]