SurveyPro хэрхэн ажилладаг вэ
SurveyPro нь судалгааны асуулга бүтээхээс эхлээд хариулт цуглуулах, квот хянах, дүн шинжлэх хүртэлх бүх үйл явцыг нэг системд нэгтгэсэн платформ. Судалгааны мэргэжилтнүүдийн өдөр тутмын ажлын урсгалаас гарч ирсэн шийдлүүд тул архитектур нь судалгааны мөчлөгийг шууд тусгасан.
Платформ нь Монголын байгууллагуудын хэрэгцээнд зориулагдсан: 21 аймаг, Улаанбаатарын 9 дүүрэг, хорооны түвшний байршлын квот; монгол хэл; олон компани нэг дор, харин өгөгдөл нь бүрэн тусгаарлагдсан.
Платформын давхарга
Систем гурван давхаргаас бүрдэнэ. Хэрэглэгчийн давхарга бүх төрлийн хэрэглэгчийн интерфейсийг агуулна; API давхарга бизнесийн логик, эрхийн шалгалт, квот хөдөлгүүрийг гүйцэтгэнэ; өгөгдлийн давхарга PostgreSQL дээр бүх өгөгдлийг нэг schema дотор хадгална.
- Хэрэглэгчийн давхарга — нэг статик HTML аппликейшн. Нэвтэрсэн хэрэглэгчид бүтээгч/удирдлагын орчин, нэвтрээгүй хариулагчид нийтийн линкийн орчин үзнэ.
- API давхарга — Node.js / Express. Бүх бичих үйлдэл (судалгаа, асуулт, квот, хариулт) сервер талд эрх шалгагдаж, дараа нь гүйцэтгэгдэнэ. Хөтчийн тал шийдвэр гаргахгүй.
- Өгөгдлийн давхарга — PostgreSQL 16. Хариултууд
JSONBхэлбэрээр, квотын тоолуур мөр бүр дээр атомик шинэчлэгддэг.
Судалгааны мөчлөг
Судалгаа бүр таван үе шат дамжина. Статус нь ноорог → идэвхтэй → хаалттай гэсэн гурван төлөвтэй; зөвхөн идэвхтэй судалгаа хариулт хүлээн авна.
| Үе шат | Юу болдог | Хэн |
|---|---|---|
| 01 Дизайн | Асуултын төрөл сонгох, дараалал, заавал тохиргоо, өмнөх хариултыг дараагийн асуултад оруулах (пайпинг {{N}}) | Эзэмшигч, засах эрхтэй |
| 02 Квот | Нийт түүвэр, хэмжүүр бүрийн зорилтот тоо. Нийлбэр нийт түүвэртэй тэнцэх ёстойг систем анхааруулна | Эзэмшигч, засах эрхтэй |
| 03 Тархалт | Санамсаргүй эсвэл гараар өгсөн slug-тай нийтийн линк; идэвхжүүлэх/хаах | Эзэмшигч |
| 04 Цуглуулалт | Скринер → квот шалгалт → асуулга → хадгалах. Квот дүүрсэн бүлэг мессеж авна | Хариулагч |
| 05 Шинжилгээ | Асуулт тус бүрийн тархалт, дундаж, эрэмбийн оноо; CSV экспорт | Эзэмшигч, засах, харах эрхтэй |
Квот хөдөлгүүр
Квот нь төлөөлөх чадвартай түүврийн үндэс. SurveyPro-д квот хэмжүүр бүр (хүйс, нас, орлого, байршил, захиалгат) хэд хэдэн нүд-тэй, нүд бүр target ба current тоолууртай. Байршлыг аймаг, УБ дүүрэг, хорооны түвшинд тохируулж болно.
Шалгалт бүхэлдээ сервер дээр хийгдэнэ. Хариулагч скринерээ бөглөхөд систем хэмжүүр бүрээр тохирох нүдийг олж, аль нэг нь дүүрсэн бол хариултыг хадгалахгүйгээр 409 буцаана. Бүгд боломжтой бол тоолуурыг current < target нөхцөлтэй атомик UPDATE-аар нэмэгдүүлээд хариултыг хадгална — зэрэг ирсэн хүсэлтүүд зорилтыг давахгүй.
Эрх ба олон компани
Платформ олон компанийг нэг дор үйлчилдэг боловч компани бүрийн өгөгдөл тусгаарлагдсан. Гурван системийн эрх, хоёр хуваалцалтын түвшин байна.
| Master Admin | Company Admin | Эзэмшигч | Засах эрх | Харах эрх | |
|---|---|---|---|---|---|
| Бүх компанийн судалгаа | ● | — | — | — | — |
| Компанийн бүх судалгаа | ● | ● | — | — | — |
| Судалгаа үүсгэх | ● | ● | ● | — | — |
| Асуулт, квот засах | ● | ● | ● | ● | — |
| Хуваалцах, устгах | ● | — | ● | — | — |
| Хариулт, дүн харах | ● | ● | ● | ● | — |
| Бөглөх | ● | ● | ● | ● | ● |
| Компани, хэрэглэгч удирдах | ● | өөрийн | — | — | — |
Судалгаа үүсгэсэн хэрэглэгч эзэмшигч болно. Эзэмшигч нь өөрийн компанийн хэрэглэгчдэд харах эсвэл засах эрх олгоно. Company Admin өөрийн компанийн бүх судалгааг харна, өөр компанийнхыг харахгүй.
Асуулт ба логик
| Төрөл | Хариултын хэлбэр | Дүн шинжилгээ |
|---|---|---|
| Богино / урт текст | текст | жагсаалт |
| Нэг сонголт · Унадаг | нэг утга | тархалт, % |
| Олон сонголт | массив | тархалт, % |
| Үнэлгээ 1–5 | тоо | дундаж, тархалт |
| Тоо · Огноо | тоо / огноо | жагсаалт |
| Эрэмбэлэх | эрэмбэлсэн массив | оноон дундаж эрэмбэ (1-р байр = n оноо) |
Пайпинг. Асуултын текст дотор {{1}} гэж бичвэл 1-р асуултын хариулт тухайн газар орно; хариулагч бичих тусам бодит цагт шинэчлэгдэнэ. Заавал тохиргоотой асуулт хоосон бол илгээхийг зогсооно.
Өгөгдөл, аюулгүй байдал
Бүх өгөгдөл PostgreSQL-ийн surveypro schema дотор: companies · users · surveys · survey_permissions · questions · quota_groups · quota_cells · responses · contact_requests. Хариултын мөр бүр судалгаа, хариулагч, скринерийн өгөгдөл, хариултууд (JSONB), цаг, IP-г агуулна.
- Нэвтрэлт — нууц үг bcrypt (cost 12) хэшлэгдэнэ; session нь 7 хоногийн JWT.
- Эрхийн шалгалт — endpoint бүр дээр сервер талд; хөтчийн интерфейс зөвхөн харуулна.
- Тусгаарлалт — компани хоорондын хандалт API түвшинд хаагдсан.
- Rate limit — 15 минутад 200 хүсэлт / IP; холбоо барих хүсэлт 5.
- TLS — Let's Encrypt сертификат Caddy автоматаар сунгана.
Дэд бүтэц
Платформ Docker Compose дээр ажиллана: API, статик frontend, PostgreSQL. Хостын Caddy бүх ирж буй холболтыг TLS-ээр хүлээн авч, /api/* замыг API рүү, бусдыг статик сервер рүү дамжуулна.
Интеграци ба экспорт
Хариултыг CSV хэлбэрээр татаж Excel, SPSS, R зэрэгт ашиглана. Нийтийн endpoint-ууд нэвтрэлт шаардахгүй:
| Метод | Зам | Тайлбар |
|---|---|---|
| GET | /api/public/s/:slug | Идэвхтэй судалгааны асуулт, квот бүтэц |
| POST | /api/responses | Хариулт илгээх (квот шалгалттай) |
| POST | /api/public/contact | Хамтран ажиллах хүсэлт |
Нэвтрэлттэй API-аар судалгаа, асуулт, квот, хуваалцалт, хариулт, хэрэглэгч, компанийг бүрэн удирдана. Гадаад системтэй холбох (CRM, BI) хэрэгцээ гарвал API-ийн баримтыг хүсэлтээр өгнө.



