1. System Overview
The MT Online Assessment Platform is a self‑contained recruitment testing system used to screen candidates for Management Trainee (MT) and technical roles. It provides:
- A candidate‑facing test flow: instructions → registration/login → live photo identity check → timed multiple‑choice test → auto‑scored submission.
- An admin‑facing dashboard: results overview, analytics, question bank manager, candidate management, CSV export, and individual PDF reports.
- Built‑in proctoring: mandatory webcam capture, persistent live camera feed, and a 3‑strike tab‑switch anti‑cheating system.
The platform supports five test categories, configured directly in the code:
| Category Key | Description | Question Pool Size |
| IQ | IQ / Puzzle Test — logical & pattern reasoning | 60 |
| MT Electrical | Technical — Electrical discipline | 40 |
| MT Electronics | Technical — Electronics discipline | 40 |
| MT Mechanical | Technical — Mechanical discipline | 40 |
| MT chemical | Technical — Chemical discipline (lowercase 'c') | 40 |
IMPORTANT: Category names are case‑ and spelling‑sensitive. Always select categories from dropdowns rather than typing manually to avoid mismatches.
1.2 High‑Level Architecture
- Built in PHP with MySQL/MariaDB (PDO), designed for LAMP (Hostinger).
- Core tables: candidates, questions, responses.
- Uploaded images stored in assets/ (question images, candidate photos).
- Admin pages: admin.php, candidate_management.php, add_question.php, etc. protected by PHP sessions.
2. User Roles & Permissions
Super Admin
- ✅ Full dashboard & analytics
- ✅ Generate links
- ✅ Manage question bank (add/edit/delete/bulk)
- ✅ Edit scores & delete candidates
HR Manager
- ✅ View dashboard & analytics
- ✅ Generate links
- ✅ Export results & view reports
- ❌ No question bank access (tab hidden, URL blocked)
- ❌ Cannot edit scores or delete
Design note: HR Manager accounts cannot manage the question bank or edit/delete records, even by direct URL. bulk_upload.php explicitly checks role and blocks access.
3. Logging In & Critical Security Setup
3.1 Accessing the Admin Portal
Navigate to admin_login.php on your hosting domain and sign in with your role's credentials.
3.2 Default Credentials — Change Immediately
CRITICAL: Default credentials are hardcoded: Super Admin admin/admin123, HR hr/hr123. These MUST be changed by a developer before real candidate data is used.
3.3 Database Credentials
Stored in plain text inside config.php. Treat as highly sensitive: never commit to public repos, restrict file permissions, update if redeployed.
3.4 Other Security Recommendations
- Serve over HTTPS only — candidate CNIC, photos, personal data are sensitive.
- Regular backups of database and assets/ folder.
- Restrict Super Admin credentials to trusted personnel.
4. The Test Results Dashboard (admin.php)
4.1 Summary Stat Cards
- Total Candidates — all records (filtered by date).
- Tests Completed — status = "Completed".
- Passed (Overall) — result_status = "Pass".
- Pass Rate — Passed ÷ Completed.
- To Interview — Passed candidates with fewer than 3 strikes.
4.2 Date Range Filter
Use From/To date pickers to restrict all statistics, analytics, and candidate lists. Filter persists across exports and tabs.
4.3 Category Performance Analytics
Breaks down attempts, passes, failures per category with a visual pass‑rate bar. Only candidates who actually attempted questions are counted.
4.4 Quick Tools Panel
- Generate Test Link — select category, click to copy candidate‑facing URL.
- Question Bank Shortcuts (Super Admin) — Add Single / Bulk Upload.
5. Generating & Distributing Test Links
- Go to dashboard (admin.php).
- In "Generate Test Link" tool, choose category (IQ, MT Electrical, etc.).
- Click "Generate & Copy" — link copied to clipboard, e.g. index.php?cat=MT%20Electrical.
- Share with candidates via email, SMS, WhatsApp, or ATS.
How it works: The same link can be used by many candidates — they are distinguished by registration/login. For a second test category, generate and send a new link.
6. Managing the Question Bank (Super Admin Only)
All test content lives in the questions table, managed from the "Question Database" tab plus dedicated pages.
6.1 Viewing & Filtering
List every question with ID, Category, text, image indicator, correct answer. Use the filter dropdown to show one category.
6.2 Adding a Single Question (add_question.php)
- Choose Category, type Question Text, optionally upload an image.
- Fill Options A–H (only A and B mandatory).
- Select Correct Answer letter → click Save.
6.3 Editing a Question (edit_question.php)
Change category, text, options, correct answer, or replace image (old image file deleted automatically).
6.4 Deleting a Question
Permanently removes the question, its image file, and any candidate responses — irreversible.
6.5 Bulk Uploading via CSV (bulk_upload.php)
- Download CSV template, fill rows (Category, Question_Text, Image_Filename, Option_A–H, Correct_Option).
- Upload CSV — images are not uploaded, you must manually place image files in assets/ with the exact filenames referenced.
Critical: Bulk uploader only stores filenames. You must manually upload image files to /online-test/assets/ using the exact filenames from the CSV, otherwise images will break.
7. Managing Candidate Results
7.1 Candidate Results Table
Lists every candidate (respecting date filter) with: name, photo, CNIC, category badges, IQ/Technical scores (with pass/fail), status, strikes, recommendation, and actions.
7.2 Exporting to Excel/CSV
Click "Download Filtered Excel" to export the current filtered list as CSV, including all core fields, percentages, and recommendation.
7.3 Individual Candidate Report
Click "View Report" to open a polished report with photo, scores, bar chart, verdict, and cheating warnings. Download as PDF.
7.4 Editing a Candidate's Score (Super Admin Only)
Click "Edit Score" to manually override IQ Score, Technical Score, and Final Result Status. This does not change saved answers; use for exceptional corrections.
7.5 Deleting a Candidate (Super Admin Only)
Permanently removes candidate record, responses, and photo file — irreversible. Use only for duplicates or test data.
8. How the System Recommendation Is Calculated
Every completed candidate is assigned a recommendation label based on scores and strikes:
- Disqualified — 3+ tab‑switch strikes.
- Highly Recommended — "Excellent" on all attempted tests (IQ ≥90%, Tech ≥80%).
- Call for Interview — at least "Pass" on all attempted (but not Excellent).
- Keep on Hold — Borderline (IQ 70–79%, Tech 50–59%) on at least one attempted test.
- Not Recommended — below borderline on an attempted test.
- Pending — not yet completed.
The simple result_status (Pass/Fail) uses: IQ ≥48/60 and Tech ≥24/40 (if both taken).
Note: Recommendation is a nuanced tier; result_status is the binary Pass/Fail used for top‑level stats.
9. Candidate Management Page
Accessible from top navigation, focused on recruitment funnel tracking (registrations vs. participation).
- Search & Filter: by CNIC (full/partial) and date range.
- Summary Stats: Total Registered, Actually Appeared, Participation Rate with progress bar.
- Category-wise breakdown: registrations vs. appearances per category, drop‑offs, participation rate.
- Detailed Candidate Log: full list with name, CNIC, category, status, registration time, and link to report if completed.
10. Anti‑Cheating & Proctoring System
- Mandatory Photo Capture: candidates must take a live photo before the test starts. Photo stored in assets/candidates/ and displayed on reports.
- Live Camera Feed: small preview remains visible throughout the test (real‑time deterrent). No recorded video is saved by the current system.
- Tab‑Switch Strike System: each time a candidate leaves the test tab, a strike is recorded via AJAX. 3rd strike auto‑submits the test and flags "Disqualified".
- Other Protections: right‑click disabled, Developer Tools shortcuts blocked, and a leave‑page confirmation prompt.
11. Data & File Storage Reference
| Location | Contents |
| candidates (DB) | name, father, CNIC, email, mobile, hashed password, category, status, scores, result_status, tab_strikes, photo_path |
| questions (DB) | section, question_text, image_path, options_json, correct_option |
| responses (DB) | candidate_id, question_id, selected_option |
| /assets/ | uploaded question images |
| /assets/candidates/ | candidate identity photos |
| config.php | database credentials (sensitive) |
Candidate passwords are hashed with password_hash() — cannot be looked up.
12. Troubleshooting Common Issues
- Invalid Test Link: confirm ?cat= parameter is present and spelled correctly. Regenerate from dashboard.
- "CNIC or Email already registered": candidate already has an account; they should use Login instead of Register.
- Photo not showing: candidate likely denied camera access or file was removed. Placeholder shown, scoring unaffected.
- Bulk upload broken image: image filename in CSV doesn't match file in assets/ or missing entirely.
- Accidental disqualification: Super Admin can manually override score/result using "Edit Score".
- Question Database tab missing: HR Manager account — restricted to Super Admin.
13. Glossary of Key Terms
| Term | Meaning |
| Section / Category | IQ, MT Electrical, MT Electronics, MT Mechanical, MT chemical — determines question pool. |
| Strike | One recorded tab‑switch violation. |
| Status | In‑Progress or Completed. |
| Result Status | Simple Pass/Fail after grading. |
| Recommendation | HR tier: Highly Recommended / Call for Interview / Keep on Hold / Not Recommended / Disqualified / Pending. |
| Appeared | Candidate progressed to the test screen (not just registered). |
This guide has been prepared by TM, HR & IT Manager, Lotte Chemical Pakistan Limited (LCPL).