Dokumentasi Proses 1–3 (End-to-End)
MC-ATERA PremiumGambaran Keseluruhan (Flow)
Matlamat: Peserta submit sekali di front-end, Prof/Panel menilai di back-end yang tersusun dan boleh diaudit.
Apa berlaku: Peserta melengkapkan borang proposal (tanpa upload) dan sistem akan memastikan min–max word limit, medan wajib, dan deklarasi dipenuhi sebelum membenarkan submit.
- Validasi: word limits + required fields + checkbox declaration.
- Format data: dihantar sebagai JSON (payload) ke endpoint Apps Script.
- Best practice: guna email sama seperti pendaftaran/pembayaran untuk matching.
{
"action": "submitProposal",
"data": {
"FullName": "Nama Peserta",
"Email": "nama@email.com",
"ParticipantID": "IQRDC-2026-000123",
"Category": "Student Researcher",
"ProjectTitle": "Tajuk Kajian",
"ProblemStatement": "...",
"PurposeOfStudy": "...",
"MainResearchQuestion": "...",
"SubResearchQuestions": "...",
"Theory": "...",
"ResearchDesignAndJustification": "...",
"SamplingAndParticipants": "...",
"DataCollection": "...",
"DataAnalysis": "...",
"Ethics": "...",
"Trustworthiness": "...",
"Impact": "...",
"ExecutiveSummary": "...",
"SubmittedAt": "2026-01-15T00:00:00.000Z",
"FormVersion": "IQRDC-2026-Structured-v1"
}
}
Nota: Dalam Apps Script, jika SubmissionID tidak dihantar, sistem akan auto-generate.
// 1) Set endpoint Apps Script
const ENDPOINT_URL = "PASTE_APPS_SCRIPT_WEBAPP_URL_HERE";
// 2) Bila submit, bungkus payload ikut format API
const payload = collectFormData();
await fetch(ENDPOINT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ action:"submitProposal", data: payload })
});
Apa berlaku: Apps Script menerima JSON dan menyimpan data ke tab Submissions. Ini menjadi “single source of truth” untuk semua proposal.
- Tab Submissions: menyimpan semua jawapan peserta (mentah).
- SubmissionID: ID unik untuk rujukan & linking penilaian.
- Status: NEW / IN-REVIEW / SCORED (boleh dikembangkan).
SubmissionID SubmittedAt FormVersion FullName Email ParticipantID Category ProjectTitle ProblemStatement PurposeOfStudy MainResearchQuestion SubResearchQuestions Theory ResearchDesignAndJustification SamplingAndParticipants DataCollection DataAnalysis Ethics Trustworthiness Impact ExecutiveSummary Status
Tip: Pastikan header ini tepat (Apps Script append ikut header). Ini elak data “lari kolum”.
✅ doPost(action="submitProposal") → appendRow ke tab Submissions ✅ doGet(action="listSubmissions") → list untuk portal penilai ✅ doGet(action="getSubmission") → tarik 1 submission penuh (viewer) ✅ doPost(action="saveEvaluation") → simpan markah panel ke tab Evaluations
Apa berlaku: Panel membuka portal penilai (HTML Premium), melihat proposal secara teratur, mengisi rubric, sistem mengira jumlah markah, kemudian menyimpan markah ke tab Evaluations.
- Rubric 100 markah: 9 kriteria (20/10/20/10/10/10/10/5/5).
- 2 panel: setiap submission ada 2 record penilaian (EvaluatorID berbeza).
- Recommendation: auto (Gold/Silver/Bronze/Pass/Revise) ikut ambang.
EvalID SubmissionID EvaluatorID EvaluatedAt Score_ClarityAlignment Score_TheoryLens Score_DesignJustification Score_Sampling Score_DataCollection Score_DataAnalysis Score_Ethics Score_Trustworthiness Score_Impact TotalScore Comments Recommendation
{
"action":"saveEvaluation",
"evaluatorID":"EVAL01",
"pin":"1234",
"data":{
"SubmissionID":"IQRDC-2026-20260115-101010-1234",
"Score_ClarityAlignment":18,
"Score_TheoryLens":8,
"Score_DesignJustification":17,
"Score_Sampling":8,
"Score_DataCollection":9,
"Score_DataAnalysis":8,
"Score_Ethics":9,
"Score_Trustworthiness":4,
"Score_Impact":5,
"TotalScore":88,
"Comments":"Kuat dari segi alignment & justifikasi; cadang perincikan prosedur temubual.",
"Recommendation":"Gold"
}
}
Nota Pengajaran (Untuk kelas / latihan panel)
Gunakan halaman ini untuk menerangkan konsep: Front-end (form), API (Apps Script), Data store (Google Sheets), dan Back-end UI (Evaluator Portal).