first working version

This commit is contained in:
howard
2025-10-22 20:14:31 +08:00
parent c9767b830b
commit 8dc869634e
118 changed files with 22518 additions and 0 deletions

View File

@@ -0,0 +1,169 @@
# New Exam Created: Python Easy 15 Questions
## Summary
**User data cleared successfully**
- Removed all data from `data/attempts/`
- Removed all data from `data/output/`
- Removed all data from `data/progress/`
- Reset manifest users to empty object
**New exam created: `python-easy-15q-v1`**
## Exam Details
- **Exam ID:** `python-easy-15q-v1`
- **Title:** Python Fundamentals - Easy Level (15 Questions)
- **Subject:** Python
- **Difficulty:** Beginner (Easy)
- **Duration:** 30 minutes
- **Passing Score:** 70%
- **Total Points:** 95 points
- **Total Questions:** 15
## Question Type Breakdown
| Type | Count | Total Points |
|------|-------|--------------|
| single_choice | 6 | 30 points (5 each) |
| true_false | 5 | 25 points (5 each) |
| multiple_choices | 4 | 40 points (10 each) |
## Question List
### Section 1: Python Basics (5 questions)
1. **[Single Choice, 5 pts]** What is the correct way to create a variable in Python?
- Answer: B (x = 5)
2. **[True/False, 5 pts]** Python is a case-sensitive language.
- Answer: True
3. **[Multiple Choices, 10 pts]** Which of the following are valid Python data types?
- Answers: A (int), C (float), D (bool)
- Partial credit enabled
4. **[Single Choice, 5 pts]** Which keyword is used to define a function in Python?
- Answer: B (def)
5. **[True/False, 5 pts]** In Python, indentation is used to define code blocks.
- Answer: True
### Section 2: Data Structures (5 questions)
6. **[Multiple Choices, 10 pts]** Which of the following are mutable data structures in Python?
- Answers: A (list), C (dict), D (set)
- Partial credit enabled
7. **[Single Choice, 5 pts]** How do you create an empty list in Python?
- Answer: B (list = [])
8. **[True/False, 5 pts]** A tuple in Python can be modified after creation.
- Answer: False
9. **[Single Choice, 5 pts]** What is the output of: print(type([1, 2, 3]))
- Answer: B (<class 'list'>)
10. **[Multiple Choices, 10 pts]** Which methods can be used to add elements to a list?
- Answers: A (append()), C (insert()), D (extend())
- Partial credit enabled
### Section 3: Control Flow (5 questions)
11. **[True/False, 5 pts]** The 'elif' keyword in Python is used for else-if conditions.
- Answer: True
12. **[Single Choice, 5 pts]** Which loop is used to iterate over a sequence in Python?
- Answer: B (for)
13. **[Multiple Choices, 10 pts]** Which statements are valid loop control keywords in Python?
- Answers: A (break), B (continue), C (pass)
- Partial credit enabled
14. **[True/False, 5 pts]** Python supports switch-case statements like C or Java.
- Answer: False
15. **[Single Choice, 5 pts]** What does the 'range(5)' function return?
- Answer: B (A range object representing 0 to 4)
## Features Enabled
**"I Don't Know" Option**
- All questions have `allowIDK: true`
- Students can select "I don't know" to avoid guessing
- IDK responses score 0 points (no penalty for honesty)
**Multiple Choices with Partial Credit**
- All multiple_choices questions have `partialCredit: true`
- Scoring formula: `(correct_selected - wrong_selected) / total_correct × points`
- Minimum score is 0 (no negative points)
**Automatic Scoring**
- Exam contains only auto-gradable question types
- Score is calculated immediately upon submission
- No manual grading required
## File Location
```
/Volumes/data/tutor_system/exam_system/data/input/python/2025-10/python-easy-15q-v1.json
```
## Manifest Update
The exam has been added to `data/manifest.json` and published:
```json
{
"examId": "python-easy-15q-v1",
"subject": "python",
"month": "2025-10",
"path": "python/2025-10/python-easy-15q-v1.json",
"published": true,
"version": "1.0.0"
}
```
## Next Steps
### To Deploy (when Docker Hub connectivity is stable):
```bash
cd /Volumes/data/tutor_system/exam_system
docker-compose down
docker-compose up --build -d
```
### To Test:
1. Open http://localhost:4200
2. Register/Login as a user
3. You should see the new exam: "Python Fundamentals - Easy Level (15 Questions)"
4. Start the exam and test:
- Single choice questions with IDK option
- Multiple choices with checkboxes and IDK option
- True/False with IDK option
- Selecting IDK in multiple_choices clears all other selections
5. Submit and verify:
- Automatic scoring works
- Partial credit is awarded correctly
- Result page shows all options with color coding
- IDK selections show yellow notice
## Known Issue
⚠️ **Docker Hub connectivity is currently unstable**
- Connection resets when pulling node:18-alpine and nginx:alpine images
- This is a temporary network issue
- The exam server (Python) container builds successfully
- Retry the docker-compose command when network is stable
## Previous Exams Still Available
The following exams remain published in the system:
- `python-easy-v1` (original easy exam)
- `python-intermediate-v1` (50 questions, intermediate level)
- `python-easy-15q-v1` (new 15-question exam with multiple_choices)
All three exams are available in the exam list.