TransHub_backend / PROTECTION_SYSTEM_GUIDE.md
linguabot's picture
Upload folder using huggingface_hub
da819ac verified
# πŸ”’ PROTECTION SYSTEM GUIDE
## Overview
The protection system prevents accidental modification of critical tutorial tasks (Week 1 and Week 2) by implementing a locking mechanism that requires special authorization to modify protected content.
## πŸ›‘οΈ Current Protection Status
- **Week 1**: 3 tutorial tasks + 6 weekly practice tasks LOCKED
- **Week 2**: 12 tutorial tasks LOCKED
- **Total Protected**: 21 tasks
- **Unlock Key**: `UNLOCK_WEEK1_WEEK2_2024`
## πŸ“‹ Protected Tasks
### Week 1 (9 tasks)
**Tutorial Tasks (3):**
1. Tutorial Task 1 - Gulangyu Stone
2. Tutorial Task 2 - Gulangyu Geology
3. Tutorial Task 3 - Opium War History
**Weekly Practice Tasks (6):**
1. Chinese Pun 1
2. Chinese Pun 2
3. Chinese Pun 3
4. English Joke 1
5. English Joke 2
6. English Joke 3
### Week 2 (12 tasks)
1. Tutorial ST 1 - Week 2
2. Tutorial ST 2 - Week 2
3. Tutorial ST 3 - Week 2
4. Tutorial ST 4 - Week 2
5. Tutorial ST 5 - Week 2
6. Tutorial ST 6 - Week 2
7. Tutorial ST 7 - Week 2
8. Tutorial ST 8 - Week 2
9. Tutorial ST 9 - Week 2
10. Tutorial ST 10 - Week 2
11. Tutorial ST 11 - Week 2
12. Tutorial ST 12 - Week 2
## πŸ”§ Available Scripts
### 1. Check Protection Status
```bash
node show-protection-status.js
```
Shows current protection status of all tutorial tasks.
### 2. Test Protection System
```bash
node enhanced-protection-system.js
```
Tests the protection system to ensure it's working correctly.
### 3. Lock Tasks
```bash
node lock-week1-week2-tasks.js
```
Locks Week 1 and Week 2 tutorial tasks (already done).
## 🚫 What's Protected
Protected tasks **CANNOT** be:
- βœ… Updated (content, images, etc.)
- βœ… Deleted
- βœ… Modified in any way
## πŸ”“ How to Unlock a Protected Task
### Step 1: Get the Task ID
```bash
node show-protection-status.js
```
Find the task ID from the output.
### Step 2: Use the Unlock Function
```javascript
const { unlockProtectedTask } = require('./enhanced-protection-system.js');
// Unlock a specific task
await unlockProtectedTask('TASK_ID_HERE', 'UNLOCK_WEEK1_WEEK2_2024');
```
### Step 3: Make Your Changes
Once unlocked, you can modify the task normally.
### Step 4: Re-lock (Optional)
After making changes, you can re-lock the task:
```bash
node lock-week1-week2-tasks.js
```
## βœ… Safe Operations
### For Non-Protected Tasks
Use these functions for safe operations:
```javascript
const { safeUpdateTask, safeDeleteTask } = require('./enhanced-protection-system.js');
// Safe update
await safeUpdateTask(taskId, { content: 'New content' }, 'Update reason');
// Safe delete
await safeDeleteTask(taskId, 'Delete reason');
```
### For Protected Tasks
1. **Unlock first**: Use `unlockProtectedTask(taskId, key)`
2. **Make changes**: Update normally
3. **Re-lock**: Run the locking script again
## 🚨 Important Notes
### Protection Features
- βœ… **Automatic Protection**: Week 1 and Week 2 tasks are automatically protected
- βœ… **Clear Messages**: System provides clear feedback when operations are blocked
- βœ… **Modification History**: All changes are tracked with timestamps and reasons
- βœ… **Special Key Required**: Unlock key prevents accidental unlocking
### Safety Measures
- βœ… **No Automatic Unlocking**: Tasks stay locked until manually unlocked
- βœ… **Key Verification**: Invalid keys are rejected
- βœ… **History Tracking**: All modifications are logged
- βœ… **Safe Functions**: Use `safeUpdateTask()` and `safeDeleteTask()` for protection
## πŸ” Troubleshooting
### Task Won't Update
**Problem**: Getting "CANNOT UPDATE: Task is PROTECTED" error
**Solution**:
1. Unlock the task: `unlockProtectedTask(taskId, 'UNLOCK_WEEK1_WEEK2_2024')`
2. Make your changes
3. Re-lock if needed
### Can't Find Task ID
**Problem**: Don't know the task ID
**Solution**: Run `node show-protection-status.js` to see all task IDs
### Invalid Unlock Key
**Problem**: Getting "Invalid unlock key" error
**Solution**: Use the correct key: `UNLOCK_WEEK1_WEEK2_2024`
## πŸ“ Best Practices
1. **Always check protection status** before making changes
2. **Use safe functions** (`safeUpdateTask`, `safeDeleteTask`) when possible
3. **Document your changes** with clear reasons
4. **Re-lock tasks** after making necessary changes
5. **Keep the unlock key secure** and don't share it publicly
## πŸ” Security Notes
- The unlock key is currently hardcoded for simplicity
- In production, consider using environment variables or a more secure method
- The protection system prevents accidental changes but doesn't replace proper backup procedures
- Always backup your database before making significant changes
## πŸ“ž Support
If you encounter issues with the protection system:
1. Check the protection status first
2. Verify you're using the correct task ID
3. Ensure you're using the correct unlock key
4. Check the modification history for recent changes