113 lines
3.1 KiB
Markdown
113 lines
3.1 KiB
Markdown
# Reorganized Folder Structure
|
|
|
|
## New Hierarchy
|
|
|
|
### Input Folder (Exams by Subject and Month)
|
|
```
|
|
data/input/
|
|
├── python/
|
|
│ ├── 2025-10/
|
|
│ │ ├── python-easy-v1.json
|
|
│ │ ├── python-intermediate-v1.json
|
|
│ │ └── python-advanced-v1.json
|
|
│ └── 2025-11/
|
|
│ └── python-lists-quiz.json
|
|
├── django/
|
|
│ └── 2025-10/
|
|
│ ├── django-basics-v1.json
|
|
│ └── django-models-v1.json
|
|
└── angular/
|
|
└── 2025-10/
|
|
└── angular-components-v1.json
|
|
```
|
|
|
|
### Output Folder (Results by Username, Subject, Month)
|
|
```
|
|
data/output/
|
|
├── testuser/
|
|
│ ├── python/
|
|
│ │ └── 2025-10/
|
|
│ │ ├── python-easy-v1_attempt-001.json
|
|
│ │ ├── python-easy-v1_attempt-002.json
|
|
│ │ └── python-intermediate-v1_attempt-001.json
|
|
│ └── django/
|
|
│ └── 2025-10/
|
|
│ └── django-basics-v1_attempt-001.json
|
|
└── john/
|
|
└── python/
|
|
└── 2025-10/
|
|
└── python-easy-v1_attempt-001.json
|
|
```
|
|
|
|
### Attempts Folder (by Username, Subject, Month)
|
|
```
|
|
data/attempts/
|
|
├── testuser/
|
|
│ ├── python/
|
|
│ │ └── 2025-10/
|
|
│ │ ├── python-easy-v1/
|
|
│ │ │ └── attempt-001.json
|
|
│ │ └── python-intermediate-v1/
|
|
│ │ └── attempt-001.json
|
|
│ └── django/
|
|
│ └── 2025-10/
|
|
│ └── django-basics-v1/
|
|
│ └── attempt-001.json
|
|
└── john/
|
|
└── python/
|
|
└── 2025-10/
|
|
└── python-easy-v1/
|
|
└── attempt-001.json
|
|
```
|
|
|
|
## Manifest Format Update
|
|
|
|
```json
|
|
{
|
|
"version": "2.0.0",
|
|
"exams": [
|
|
{
|
|
"examId": "python-easy-v1",
|
|
"subject": "python",
|
|
"month": "2025-10",
|
|
"path": "python/2025-10/python-easy-v1.json",
|
|
"published": true,
|
|
"version": "1.0.0"
|
|
},
|
|
{
|
|
"examId": "django-basics-v1",
|
|
"subject": "django",
|
|
"month": "2025-10",
|
|
"path": "django/2025-10/django-basics-v1.json",
|
|
"published": true,
|
|
"version": "1.0.0"
|
|
}
|
|
],
|
|
"users": {}
|
|
}
|
|
```
|
|
|
|
## Path Patterns
|
|
|
|
### Input
|
|
- Pattern: `input/{subject}/{YYYY-MM}/{examId}.json`
|
|
- Example: `input/python/2025-10/python-easy-v1.json`
|
|
|
|
### Attempts
|
|
- Pattern: `attempts/{username}/{subject}/{YYYY-MM}/{examId}/{attemptId}.json`
|
|
- Example: `attempts/testuser/python/2025-10/python-easy-v1/attempt-20251020-143022.json`
|
|
|
|
### Output
|
|
- Pattern: `output/{username}/{subject}/{YYYY-MM}/{examId}_{attemptId}.json`
|
|
- Example: `output/testuser/python/2025-10/python-easy-v1_attempt-20251020-143022.json`
|
|
|
|
## Benefits
|
|
|
|
1. **Better Organization**: Easy to find exams by subject and time
|
|
2. **Scalability**: Can handle thousands of exams
|
|
3. **User Separation**: Each user's data isolated
|
|
4. **Time-based Filtering**: Easy to archive old exams
|
|
5. **Subject-based Filtering**: Easy to find all exams for a subject
|
|
6. **Cleaner Structure**: Hierarchical instead of flat
|
|
|