Files
ai6-m2/docs/technical-specs/teacher-project-guide.md
2025-11-27 23:17:03 +03:00

262 lines
6.6 KiB
Markdown

# Teacher - Complete Project Manager Guide
## YOUR ROLES:
- Team Lead - Guide students through development
- Git Master - Manage repositories and merges
- User Tester - Verify all components work
- Integration Manager - Combine all student work
## PROJECT TIMELINE (6 Lessons)
=========================================
## LESSON 1-2: SETUP & FOUNDATION
=========================================
### STUDENT GOALS:
- Dima: Implement prize money system and game logic in app.py
- Danil: Create first 5 Russian culture questions
- Inna: Make basic question loading and display work
- Artyom: Start Russian color theme in CSS
### TEACHER TASKS:
✅ Setup Verification:
1. Ensure main repo is ready:
https://gitea.techshare.cc/technolyceum/ai6-m2
2. Verify all students have:
- Forked the repository
- Created their role-specific branch
- Made first commit
3. Quick Progress Check (Terminal):
```bash
# Check each student's fork manually in Gitea web interface
# Look for 4 branches:
# - dima-backend-work
# - inna-frontend-work
# - danil-database-work
# - artyom-graphics-work
```
✅ Individual Progress Checks:
```bash
# Temporary check for each student:
git clone [STUDENT-FORK-URL] temp-check
cd temp-check
git checkout [THEIR-BRANCH]
# Dima Check:
grep -A 15 "PRIZE_LEVELS" app.py
# Danil Check:
python3 -c "import json; print('Questions:', len(json.load(open('questions.json'))))"
# Inna Check:
grep -c "function" static/script.js
# Artyom Check:
grep -c "background" static/style.css
cd ..
rm -rf temp-check
```
=========================================
## LESSON 3-4: CORE DEVELOPMENT
=========================================
### STUDENT GOALS:
- Dima: Complete game session management and answer validation
- Danil: 10+ questions completed
- Inna: Answer handling system and lifelines
- Artyom: Enhanced question/option styling
### TEACHER TASKS:
✅ Code Review Workshop:
Show examples of DRY (Don't Repeat Yourself) principles:
**Before (repetitive code):**
```javascript
document.getElementById('q-number').textContent = data.question_number;
document.getElementById('question-text').textContent = data.question;
document.getElementById('prize').textContent = data.current_prize;
```
**After (DRY code with utility functions):**
```javascript
updateElementText('q-number', data.question_number);
updateElementText('question-text', data.question);
updateElementText('prize', data.current_prize);
```
✅ Git Workshop:
```bash
# Help students resolve merge conflicts:
git fetch origin
git checkout main
git pull origin main
git checkout [THEIR-BRANCH]
git merge main
# If conflicts occur:
# 1. Edit conflicted files
# 2. Remove conflict markers
# 3. git add .
# 4. git commit
```
=========================================
## LESSON 5-6: INTEGRATION & TESTING
=========================================
### STUDENT GOALS:
- Dima: Finalize lifelines and error handling
- Danil: Complete 15 questions with difficulty progression
- Inna: Complete game flow and end game screens
- Artyom: Polish all visual elements and animations
### FINAL INTEGRATION:
✅ Integration Steps:
1. Merge all branches to main:
```bash
# On main branch:
git merge dima-backend-work
git merge danil-database-work
git merge inna-frontend-work
git merge artyom-graphics-work
```
2. Resolve any conflicts
3. Test complete game flow:
- Start game from index.html
- Play through all questions
- Test lifelines
- Verify scoring system
- Check end game states
✅ Final Testing Checklist:
- [ ] All 15 questions load correctly
- [ ] Answer validation works
- [ ] Scoring system functions properly
- [ ] Lifelines function correctly
- [ ] Game over states work (win/lose)
- [ ] Restart functionality works
- [ ] Responsive design on different screens
- [ ] No console errors in browser
=========================================
## PROJECT ARCHITECTURE OVERVIEW
=========================================
### File Structure:
```
/ai6-m2
├── app.py # Flask backend (Dima)
├── questions.json # Question database (Danil)
├── static/
│ ├── script.js # Frontend logic (Inna)
│ └── style.css # Styling (Artyom)
├── templates/
│ ├── index.html # Landing page
│ └── game.html # Game interface
├── docs/
│ ├── roles/ # Role-specific instructions
│ └── technical-specs/ # Technical documentation
└── README.md # Project overview
```
### Technical Implementation:
**Backend (app.py):**
- Flask routes for game operations
- Session management for game state
- JSON data handling for questions
- Helper functions for DRY code
**Frontend (script.js):**
- API communication with backend
- DOM manipulation for game interface
- Utility functions for common operations
- Event handling for user interactions
**Database (questions.json):**
- JSON format for easy parsing
- Structured question data with options
- Correct answer validation
**Styling (style.css):**
- Responsive design principles
- Russian-themed color scheme
- Component-based styling approach
=========================================
## TROUBLESHOOTING GUIDE
=========================================
### Common Issues and Solutions:
1. **"TypeError: Cannot read properties of undefined"**
- Usually caused by API returning error instead of data
- Solution: Check backend implementation and JSON formatting
2. **Lifelines not working**
- Check session management for lifeline state
- Verify frontend-backend communication
3. **Scoring issues**
- Verify prize structure in backend
- Check guaranteed level calculations
4. **Git merge conflicts**
- Use systematic approach to resolve conflicts
- Communicate with team members about changes
### Verification Commands:
```bash
# Run the application
export FLASK_APP=app.py
python -m flask run
# Check for syntax errors
python -m py_compile app.py
npx eslint static/script.js
# Validate JSON
python -m json.tool questions.json
```
=========================================
## ASSESSMENT CRITERIA
=========================================
### Technical Skills:
- Code quality and organization (20%)
- Implementation of requirements (30%)
- Problem-solving and debugging (20%)
- Git usage and collaboration (15%)
- Documentation and comments (15%)
### Collaboration:
- Team communication
- Code review participation
- Helpfulness to teammates
- Integration contribution
### Final Product:
- Game functions without errors
- All features implemented
- Visually appealing interface
- Good user experience
🎉 Congratulations on completing the Russian Millionaire Quiz Game project!