
يعد التركيب تطبيقًا مستضيفًا ذاتيًا لبناء ونشر الدراسات الاستقصائية باستخدام التعليمات البرمجية بدلاً من بناة المسح التقليدية.
يوفر هذا النهج عددًا من المزايا ، بما في ذلك:
يستخدم الصيغة لغة إعلانية قابلة للقراءة الإنسان.

لوحة المسؤول
ملاحظة: استخدم user / pass لتسجيل الدخول إلى وحدة التحكم في وحدة التحكم.
كل دليل في SURVEYS_DIR هو مسح. يمكنك تكوين مصدر الدراسات الاستقصائية الخاصة بك عن طريق تعيين SURVEYS_DIR مختلفة env var.
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ... للبدء ، تحقق من مجلد ./surveys مع أمثلة متعددة.
هذا الملف مطلوب! يتكون الملف من كائن Yaml مع خصائص محددة تصف المسح.
title : Survey Title
theme : default # or custom
intro : |
This is the introduction to the survey.
It can be multiple lines long.
outro : |
Thank you for taking the survey.
Your feedback is important to us.هذا الملف مطلوب! يتكون الملف من قائمة الأسئلة ، يتم تعريف كل منها ككائن YAML مع خصائص محددة.
single-choice multiple-choice ranking . questions :
- type : single-choice
id : question1 # optional ID, must be unique across all questions
label : What is the capital of Germany?
description : You can select multiple options
optionsFromVariable : german-city-options # defined in variables.yaml
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologne
validation :
min : 1
max : 3هذا الملف اختياري. يتكون الملف من كائن YAML مع خصائص محددة لإعدادات أمان المسح.
duplicateProtection : cookie # cookie | ipهذا الملف اختياري. يتكون الملف من قائمة المتغيرات ، يتم تعريف كل منها ككائن YAML مع خصائص محددة.
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne يطالب المستخدمين بإجابة مكتوبة موجزة.
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100يطالب المستخدمين للحصول على إجابة مكتوبة مفصلة.
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100يقدم سؤالًا مع إجابة واحدة صحيحة فقط من قائمة الخيارات.
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologneيقدم سؤالاً حيث يمكن للمستخدمين تحديد إجابات متعددة (مع قيود). يمكنك تخصيص الحد الأدنى والحد الأقصى للاختيارات المسموح بها في قسم التحقق من الصحة.
- type : multiple-choice
label : Which of the following are cities in Germany?
description : You can select multiple options
validation :
min : 1
max : 3
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologneيطلب من المستخدمين إدخال تاريخ محدد.
- type : date
label : When was the Berlin Wall built?يقدم مقياسًا للمستخدمين لتقييم شيء ما على نطاق محدد مسبقًا.
- type : rating
label : How much do you like Berlin?
min : 1
max : 5يطلب من المستخدمين ترتيب الخيارات بناءً على معايير معينة.
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-optionsيقدم سؤالاً حيث لا يمكن للمستخدمين الإجابة إلا على "نعم" أو "لا".
- type : yes-no
label : Is Berlin the capital of Germany?يطالب المستخدم بإدخال بريده الإلكتروني
- type : email
label : Please enter your email.يطالب المستخدم بتحميل ملفه بناءً على تنسيقات معينة وحجم التحميل القصوى.
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB يمكن إظهار الردود في واجهة المستخدم وتصديرها على أنها JSON. بدلاً من ذلك ، يمكنك استخدام REST API للحصول على Resposnes للمسح:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc حيث {SURVEY_ID} معرف uuid من مسح معين.


docker-compose up -d --build
ويجب أن تكون قادرًا على الوصول إلى واجهة المستخدم على http: // localhost: 3000 (الافتراضي الأساسي المصادقة: user:pass ).
يمكنك نشر الخدمات الفردية على أي مزود سحابي أو استضافها ذاتيًا.
يتم نشر الخدمة التجريبية (الروابط أعلاه) إلى Fly.io (Go ، SQLite) و Vercel (Next.js) وهي تحت المستويات المجانية.
تثبيت الهواء محليا من هنا
قم بتشغيل الأمر التالي بعد تثبيت الهواء
cd api
air
سيساعد هذا الأمر في إعادة التحميل المباشر كلما تم إجراء التغييرات في واجهات برمجة التطبيقات باستخدام air . يمكن تعيين التكوينات المخصصة عن طريق تعديل ملف air.toml
API:
DATABASE_TYPE - sqlite أو postgresDATABASE_URL - سلسلة اتصال postgres أو sqliteLOG_LEVEL - مستوى السجل ، على سبيل infoSURVEYS_DIR - دليل مع الدراسات الاستقصائية ، على سبيل المثال /root/surveys . يُقترح استخدام وحدة التخزين المكونة لهذا الدليل.واجهة المستخدم:
CONSOLE_API_ADDR - العنوان العام لـ GOND Backend. يجب أن تكون متاحة من المتصفح.CONSOLE_API_ADDR_INTERNAL - العنوان الداخلي للرجوع ، على سبيل المثال http://api:8080 (يمكن أن يكون هو نفسه CONSOLE_API_ADDR ).IRON_SESSION_SECRET - سر تشفير الجلسةHTTP_BASIC_AUTH - التنسيق: user:pass للحصول على المصادقة الأساسية (اختياري) تأكد من تثبيت go-migrate أولاً.
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
يتم الترحيب بطلبات السحب وتقارير الأخطاء وجميع أشكال المساهمة الأخرى وتشجيعها بشدة!