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

node show-protection-status.js

Shows current protection status of all tutorial tasks.

2. Test Protection System

node enhanced-protection-system.js

Tests the protection system to ensure it's working correctly.

3. Lock Tasks

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

node show-protection-status.js

Find the task ID from the output.

Step 2: Use the Unlock Function

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:

node lock-week1-week2-tasks.js

βœ… Safe Operations

For Non-Protected Tasks

Use these functions for safe operations:

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