Системийн Товч Танилцуулга
Хотын захиргаа & дүүргийн удирдлага
Бодит цагийн мэдээлэл, статистик, тайлан авах боломж.
Гүйцэтгэгч компаниуд
Ачлалт, маршрут, жолоочийн удирдлагын хэрэгсэл.
Иргэд
QR код уншуулах, дуудлага илгээх мобайл боломж.
Хяналтын ажилтнууд
Талбайн шалгалтыг гар утсаар бүртгэх систем.
Зорилго ба Зорилтууд
| Зорилт | Тайлбар |
|---|---|
| 🔍 Ил тод байдал | Хогийн цэгийн байршил, дүүрэлт, тээвэрлэлтийг бодит цагт харах |
| ⚡ Хурдан хариу | Иргэдийн дуудлагыг хүлээн авч, компанид хуваарилах хугацааг багасгах |
| 📊 Хяналт | Гүйцэтгэгч компаниудын үйл ажиллагааг KPI-ийн үндсэн дээр үнэлэх |
| 📄 Цаасгүй болгох | Шалгалт, тайлан, гэрчилгээний баримтыг дижитал хэлбэрт шилжүүлэх |
| 🤝 Иргэний оролцоо | QR код уншуулж, гар утасны аппаар хог асуудал мэдэгдэх боломж |
| 📈 Тайлагналт | Удирдлагад автоматаар статистик, тайлан гаргаж өгөх |
Архитектур ба Технологийн Стэк
┌──────────────────────────────────────────────────────────────────┐
│ ХЭРЭГЛЭГЧИД │
│ │
│ ┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │
│ │ Иргэн / QR │ │ Жолооч │ │ Хяналтын │ │
│ │ Мобайл апп │ │ Мобайл апп │ │ ажилтан │ │
│ └────────┬─────────┘ └───────┬─────────┘ └────────┬─────────┘ │
└───────────┼────────────────────┼────────────────────┼────────────┘
│ HTTPS / REST API │
└──────────────────┬────────────────────────┘
│
┌───────────────────▼──────────────────────────┐
│ АДМНИ ДАШБОАРД │
│ React 18 · Vite 5 · Tailwind CSS │
│ https://admin.smartcleanub.mn │
└───────────────────┬──────────────────────────┘
│ REST API (JWT)
┌───────────────────▼──────────────────────────┐
│ BACKEND API SERVER │
│ Node.js 24 · Express.js · PORT 3005 │
│ │
│ JWT Auth · RBAC · Rate Limit · Helmet · CORS │
│ Sequelize ORM · Joi Validation · Multer │
│ QRCode Generator · AI Assistant Service │
└───────────────────┬──────────────────────────┘
│ MySQL (Sequelize ORM)
┌───────────────────▼──────────────────────────┐
│ MySQL 8.0 Мэдээллийн Сан │
│ utf8mb4 · InnoDB · FK │
│ │
│ users · companies · vehicles · waste_points │
│ requests · trips · inspections · schedules │
│ news · notifications · activity_logs │
└──────────────────────────────────────────────┘
🔧 Технологийн стэк
⚙️ Backend
🖥️ Frontend Admin
📱 Mobile App
Платформ Бүрийн Дэлгэрэнгүй Тайлбар
🖥️ Адмни Дашбоард — 20 хуудас
| Хуудас | URL зам | Тайлбар |
|---|---|---|
| Нэвтрэх | /login | Утасны дугаар + нууц үгээр нэвтрэх |
| Дашбоард | /dashboard | Ерөнхий статистик, топ мэдээлэл |
| Хогийн цэгүүд | /waste-points | Бүртгэл, хайх, газрын зурагт харах |
| Дуудлагууд | /requests | Иргэдийн хүсэлт удирдах |
| Рейс/Ачилт | /trips | Ачилтын бүртгэл, маршрут |
| Шалгалт | /inspections | Хяналтын тайлан, хэмжилт |
| Мэдэгдэл | /news | Мэдээ, мэдэгдэл үүсгэх |
| Компаниуд | /companies | Гүйцэтгэгч байгууллагын бүртгэл, KPI |
| Ажилчид | /employees | Компанийн ажилтны бүртгэл |
| Тээврийн хэрэгсэл | /vehicles | Автомашины бүртгэл |
| Хуваарь | /schedules | Цуглуулалтын цагийн хуваарь |
| Дүүргийн бүртгэл | /districts | Дүүрэг, хорооны бүртгэл |
| Хяналтын самбар | /field-monitoring | Талбайн бодит цагийн хяналт |
| Иргэдийн тайлан | /citizen-reports | Иргэдийн мэдэгдсэн асуудлууд |
| Шийдвэрлэлтүүд | /resolutions | Шийдвэрлэгдсэн зөрчил |
| Хэрэглэгчид | /users | Бүртгэл, эрхийн удирдлага |
| Газрын зураг | /map | Бодит цагийн интерактив зураг |
| Тайлан | /reports | Дэлгэрэнгүй тайлан гаргах |
| Тохиргоо | /settings | Системийн тохиргоо |
| Профайл | /profile | Хэрэглэгчийн профайл |
⚙️ Backend API — 25 маршрут
📱 Мобайл Апп — 6 дэлгэц
HomeScreen
Нүүр хуудас — ойрын хогийн цэгүүд, мэдэгдлүүд
ScanScreen
QR код сканнер — шууд дуудлага илгээх
ReportScreen
Асуудал мэдэгдэх — зураг, GPS байршилтай
DriverTasksScreen
Жолооч: өдрийн ажлын жагсаалт
DriverTaskDetailScreen
Жолооч: тодорхой ажлын дэлгэрэнгүй
FallbackLocationScreen
GPS хүрэхгүй үеийн гараар байршил оруулах
Функциональ Боломжууд
🗑️ Хогийн Цэгийн Удирдлага
- GPS координаттай бүртгэл
- QR код автоматаар үүсгэх — цэг бүрт өөрийн QR
- Дүүрэлтийн хувь (0–100%), байдлын мэдээлэл
- Дүүрэг, хорооны ангилал ба фильтр
- Компанид хуваарилах, газрын зурагт харах
- Идэвхтэй/идэвхгүй статус удирдах
📞 Иргэдийн Дуудлага & Хүсэлт
- Мобайл апп эсвэл QR код уншуулж дуудлага
- Хүртэл 3 зураг, GPS байршил оруулах
- Статус хяналт: хүлээгдэж → оноогдсон → дуусгасан
- Компанид хуваарилах, дахин хуваарилах
- Иргэний үнэлгээ (star rating)
🚛 Ачилт & Маршрут
- Рейс бүртгэх — компани, жолооч, машин, маршрут
- GPS маршрутын бүртгэл
- Ачсан хогийн жин (тонноор)
- Статус дагах: төлөвлөсөн → явцад → дуусгасан
🔍 Хяналт & Шалгалт
- Мобайл аппаар талбайд шалгалт бүртгэх
- Зөрчил илрүүлэх, зурагтайгаар тэмдэглэх
- Хяналтын тайлан — хэмжилтийн утга, дүгнэлт
- Шийдвэрлэгдсэн тохиолдлуудын бүртгэл
🏢 Компанийн Удирдлага
- Компанийн бүртгэл — нэр, хаяг, лиценз
- KPI үнэлгээ — хариу хугацаа, гүйцэтгэлийн хувь
- Компанид хэрэглэгч, машин, цэг хуваарилах
- Компанийн ажилтны бүртгэл
🗺️ GPS & Газрын Зураг
- Leaflet интерактив газрын зураг
- Хогийн цэгүүдийн байршил marker-ууд
- Машинуудын бодит цагийн байршил
- QR уншиж, тухайн цэгийг олох
- Дүүргийн хилийг харуулах
📊 Дашбоард & Тайлан
- Бодит цагийн статистик
- Recharts-аар график, диаграм
- Тайлан экспорт: CSV/JSON
- Хугацааны шүүлтүүр: өнөөдөр, 7 хоног, сар
🔔 Мэдэгдэл & Мэдээ
- Хэрэглэгчийн бүлгүүдэд чиглүүлэх мэдэгдэл
- Уншсан/уншаагүй тэмдэглэл
- Мэдээ нийтлэх — зураг, тайлбартай
- Мэдээний ангилал
Хэрэглэгчийн Эрх & Үүрэг
permissions хүснэгтэд хадгалагдах, runtime-д ачааллагддаг ухаалаг эрхийн систем.
admin
Системийн Администратор — бүх мэдээлэлд хандах эрхтэй.
general_supervisor
Ерөнхий Хянагч — хот даяарх хяналт.
district_supervisor
Дүүргийн Хянагч — харьяа дүүргийн хяналт.
company_manager
Компанийн Менежер — компанийн өгөгдөл.
inspector
Хяналтын Ажилтан — шалгалт хийх, бүртгэх.
driver
Жолооч — ачилтын бүртгэл.
| Боломж | admin | gen_super | dist_super | company_mgr | inspector | driver |
|---|---|---|---|---|---|---|
| Бүх мэдээлэл харах | ✅ | ✅ | ✅* | ✅* | — | — |
| Хэрэглэгч үүсгэх | ✅ | ✅ | ✅* | — | — | — |
| Компани удирдах | ✅ | ✅ | — | ✅* | — | — |
| Хогийн цэг удирдах | ✅ | ✅ | ✅ | ✅* | — | — |
| Шалгалт хийх | ✅ | ✅ | ✅ | — | ✅ | — |
| Ачилт бүртгэх | ✅ | ✅ | — | ✅ | — | ✅ |
| Дуудлага хүлээн авах | ✅ | ✅ | ✅ | ✅* | — | — |
| Тайлан харах | ✅ | ✅ | ✅* | ✅* | — | — |
* — зөвхөн харьяа дүүрэг/компанийн өгөгдөлд хандана
Аюулгүй Байдал
JWT Token Auth
1 цагийн хугацаатай токен, bcrypt cost factor 10, нэвтрэх оролдлого хязгаарлалттай.
Helmet.js HTTP Headers
X-Frame-Options, HSTS, XSS-Protection, noSniff, Content-Security-Policy.
Rate Limiting
IP тутамд 100 хүсэлт / 15 минут. DDoS болон brute-force хамгаалалт.
CORS Хяналт
Зөвшөөрөгдсөн origin-уудын бүртгэл. Гуравдагч тал хандалтыг хаах.
Joi Input Validation
Бүх API endpoint-д хатуу схем шалгалт. SQL Injection хамгаалалт — Sequelize parameterized query.
RBAC Middleware
authMiddleware + checkPermission — компани/дүүргийн хязгааралтай хандалт.
File Upload Security
MIME type шалгалт, дээд хэмжээ 10MB, зөвшөөрөгдсөн формат бүртгэл.
Activity Logs
activity_logs хүснэгт — хэн, хэзээ, ямар үйлдэл хийснийг бүртгэнэ. Morgan HTTP лог.
AI Туслах Систем
🎯 Таниж чадах Entity-үүд
💬 Харилцааны Жишээ
✨ AI Widget-ийн Онцлогууд
Яриа таних
Мэндлэл, баярлалаа, тусламж, баяртай гэх харилцааны хэв маягийг танина.
Follow-up шийдэл
Өмнөх яриаг үндэслэн богино асуултыг тайлбарлана ("ямар төлөвтэй вэ?" → бүтэн асуулт).
Санал болгосон асуулт
Хариу бүрийн дараа үргэлжлэх асуултуудыг санал болгоно.
Quick Questions
Түгээмэл 5 асуултыг товчоор анхны ачааллахад харуулна.
Яриа хадгалах
Сүүлийн 6 мессежийг context болгон backend руу илгээнэ.
Schema Tolerant
Мэдээллийн сангийн баганын нэр өөрчлөгдсөн ч unахгүй, safeCount/safeFindAll ашиглана.
Системийн Давуу Талууд
🔗 Нэгдсэн Платформ
Хотын захиргаа, компани, жолооч, иргэн гэх 7 ялгаатай хэрэглэгчийн бүлгийн 4 платформ нэг системд нэгдсэн — давхардсан мэдээлэл байхгүй.
🧠 Ухаалаг RBAC
Хэрэглэгч нэвтрэх мөчид л зөвхөн өөрт зөвшөөрөгдсөн цэс харагдана. Дүүргийн хянагч зөвхөн харьяа өгөгдөлдөө хандана.
📱 QR Нэгтгэл
Хогийн цэг бүрт QR код — иргэн утсаараа уншуулаад бүртгүүлэхгүйгээр шууд мэдэгдэл илгээх боломжтой.
⚡ Мэдэгдлийн Хурд
Иргэд дуудлага шууд оруулдаг тул утсаар мэдэгдэх, хаягаар очих шаардлагагүй. Хариу хугацаа эрс богиносдог.
📊 Автомат KPI
Компанийн хариу хугацаа, гүйцэтгэлийн хувь системд автоматаар бүртгэгдэж, үнэлгээ гардаг — гар тооцоолол шаардлагагүй.
🌍 Өргөтгөх Чадвар
Microservice-д бэлэн бие даасан route файлуудтай. Улаанбаатараас гадна бусад хотод нэвтрүүлэхэд хялбар дүүргийн бүтэц.
Техникийн Үзүүлэлтүүд
Байршуулалт ба Дэд Бүтэц
Домэйн бүтэц:
https://smartcleanub.mn — Нийтийн вэб https://admin.smartcleanub.mn — Адмни дашбоард https://api.smartcleanub.mn — Backend API
🖥️ Хурдан Эхлүүлэх
# 1. Backend суулгах cd backend npm install cp .env.example .env # .env тохируулах npm start # → PORT 3005 # 2. Frontend Admin суулгах cd ../frontend-admin npm install npm run dev # → PORT 5173 # 3. Мобайл апп cd ../mobile-app npm install npx expo start # Анхны нэвтрэх: # Утас: 99999999 # Нууц үг: admin123 # Дашбоард: http://localhost:5173 # API: http://localhost:3005
Өгөгдлийн Бүтэц
users
Хэрэглэгчид — 7 үүрэгтэй, phone-based login
companies
Гүйцэтгэгч компаниуд — нэр, лиценз, гэрээ
vehicles
Тээврийн хэрэгслүүд — улсын дугаар, GPS
waste_points
Хогийн цэгүүд — GPS, QR, дүүрэлт, байдал
requests
Иргэдийн дуудлага — статус, зураг, байршил
trips
Ачилтын рейс — маршрут, жин, жолооч
inspections
Хяналтын тайлан — хэмжилт, зураг, дүгнэлт
news
Мэдээ, мэдэгдэл — зураг, ангилал
schedules
Цуглуулалтын хуваарь — долоо хоногийн
notifications
Мэдэгдлүүд — уншсан/уншаагүй
activity_logs
Үйл ажиллагааны лог
permissions
RBAC эрхийн удирдлага
users ─────────────── companies (companyId)
└─ districts (districtId)
vehicles ─────────── companies (companyId)
waste_points ─────── companies (assignedCompanyId)
└─ districts (districtId)
requests ─────────── waste_points (wastePointId)
└─ companies (companyId)
└─ users (reportedBy)
trips ──────────────── vehicles (vehicleId)
└─ companies (companyId)
└─ users (driverId)
inspections ─────────── waste_points (wastePointId)
└─ companies (assignedCompanyId)
API Ерөнхий Бүтэц
🔑 Нэвтрэх
POST /api/auth/login Content-Type: application/json { "phone": "99999999", "password": "admin123" } → 200 OK { "token": "eyJhbG...", "user": { "id": "...", "role": "admin" } }
📦 Стандарт Хариу
// Жагсаалт { "data": [...], "total": 811, "page": 1, "limit": 20 } // Алдаа { "error": "Алдааны тайлбар", "details": [...] }
🤖 AI Туслах API
POST /api/assistant/query Authorization: Bearer <JWT token> { "query": "Хогийн цэг хэд байна?", "scope": "auto", "history": [{ "role": "user", "summary": "..." }] } → 200 OK { "answer": { "summary": "Манай системд нийт **811** хогийн цэг байна." }, "suggestedQuestions": ["Дүүрсэн цэг хэд вэ?", ...], "metadata": { "intentDetected": true, "executionMs": 42 } }
Ирээдүйн Хөгжлийн Чиглэл
📡 GPS Бодит Цагийн Tracking
Машины байршлыг Navixy / Google Maps API-тай нэгтгэж, дашбоардад харуулах.
🔔 Push Notification
Firebase FCM ашиглан мобайл мэдэгдэл — дуудлага хүлээн авах, төлөв өөрчлөгдөх.
📱 Иргэний Мобайл Апп
Expo/React Native — App Store болон Google Play-д нийтлэх иргэний апп.
📄 Тайлан PDF Export
Тайлануудыг PDF хэлбэрээр татаж авах боломж — нийтлэг загвартай.
📶 Офлайн Ажиллагаа
Интернэтгүй үед мобайлд хадгалж, холболт сэргэх үед sync хийх.
📩 SMS Alert
Хугацаа хэтэрсэн дуудлагад утасны дугаарт SMS мэдэгдэл илгээх.
⚡ Redis Cache
Дашбоардын статистик, тайлан API-уудыг Redis-д кэш хийж хугацааг богиносгох.
🤖 AI Сайжруулалт
LLM (GPT / Llama) ашиглан ухаалаг хариу — бичгийн тайлан, дүн шинжилгээ.
📊 ML Загвар
Хог дүүрэлтийг урьдчилан таамаглах машин сургалтын загвар.
🔗 Bi-directional API
НЗДТГ болон гуравдагч тал системтэй нэгтгэх интеграц.