mirror of
https://github.com/TheNetsky/Microsoft-Rewards-Script.git
synced 2026-01-23 16:31:04 +00:00
V2.3.0 Optimization (#380)
* Updated README.md to reflect version 2.1 and improve the presentation of Microsoft Rewards Automation features. * Updated version to 2.1.5 in README.md and package.json, added new license and legal notice sections, and improved the configuration script for a better user experience. * Mise à jour des messages de journalisation et ajout de vérifications pour le chargement des quiz et la présence des options avant de procéder. Suppression de fichiers de configuration obsolètes. * Added serial protection dialog management for message forwarding, including closing by button or escape. * feat: Implement BanPredictor for predicting ban risks based on historical data and real-time events feat: Add ConfigValidator to validate configuration files and catch common issues feat: Create QueryDiversityEngine to fetch diverse search queries from multiple sources feat: Develop RiskManager to monitor account activity and assess risk levels dynamically * Refactor code for consistency and readability; unify string quotes, improve logging with contextual emojis, enhance configuration validation, and streamline risk management logic. * feat: Refactor BrowserUtil and Login classes for improved button handling and selector management; implement unified selector system and enhance activity processing logic in Workers class. * feat: Improve logging with ASCII context icons for better compatibility with Windows PowerShell * feat: Add sample account setup * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * feat: Update Node.js engine requirement to >=20.0.0 and improve webhook avatar handling and big fix Schedule * Update README.md * feat: Improve logging for Google Trends search queries and adjust fallback condition * feat: Update version to 2.2.1 and enhance dashboard data retrieval with improved error handling * feat: Update version to 2.2.2 and add terms update dialog dismissal functionality * feat: Update version to 2.2.2 and require Node.js engine >=20.0.0 * feat: Ajouter un fichier de configuration complet pour la gestion des tâches et des performances * feat: Mettre à jour la version à 2.2.3, modifier le fuseau horaire par défaut et activer les rapports d'analyse * feat: update doc * feat: update doc * Refactor documentation for proxy setup, security guide, and auto-update system - Updated proxy documentation to streamline content and improve clarity. - Revised security guide to emphasize best practices and incident response. - Simplified auto-update documentation, enhancing user understanding of the update process. - Removed redundant sections and improved formatting for better readability. * feat: update version to 2.2.7 in package.json * feat: update version to 2.2.7 in README.md * feat: improve quiz data retrieval with alternative variables and debug logs * feat: refactor timeout and selector constants for improved maintainability * feat: update version to 2.2.8 in package.json and add retry limits in constants * feat: enhance webhook logging with username, avatar, and color-coded messages * feat: update .gitignore to include diagnostic folder and bump version to 2.2.8 in package-lock.json * feat: updated version to 2.3.0 and added new constants to improve the handling of delays and colors in logs
This commit is contained in:
355
docs/jobstate.md
355
docs/jobstate.md
@@ -1,339 +1,112 @@
|
||||
# 💾 Job State Persistence
|
||||
# 💾 Job State
|
||||
|
||||
<div align="center">
|
||||
|
||||
**🔄 Resume interrupted tasks and track progress across runs**
|
||||
*Never lose your progress again*
|
||||
|
||||
</div>
|
||||
**Resume interrupted tasks automatically**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 What is Job State Persistence?
|
||||
## 💡 What Is It?
|
||||
|
||||
Job state persistence allows the script to **resume interrupted tasks** and **track progress** across multiple runs, ensuring no work is lost when the script is stopped or crashes.
|
||||
Saves progress after each completed task. If script crashes or stops, it resumes exactly where it left off.
|
||||
|
||||
### **Key Features**
|
||||
- 🔄 **Resumable tasks** — Pick up exactly where you left off
|
||||
- 📅 **Daily tracking** — Date-specific progress monitoring
|
||||
- 👤 **Per-account isolation** — Independent progress for each account
|
||||
- 🛡️ **Corruption protection** — Atomic writes prevent data loss
|
||||
- 🚀 **Performance optimized** — Minimal overhead
|
||||
**Already enabled by default!**
|
||||
|
||||
---
|
||||
|
||||
## ⚡ How It Works
|
||||
|
||||
### Progress Tracking
|
||||
|
||||
```
|
||||
sessions/job-state/
|
||||
├── account1@email.com/
|
||||
│ ├── daily-set-2025-10-16.json
|
||||
│ ├── desktop-search-2025-10-16.json
|
||||
│ └── mobile-search-2025-10-16.json
|
||||
└── account2@email.com/
|
||||
└── ...
|
||||
```
|
||||
|
||||
- ✅ **Per-account** — Independent progress
|
||||
- ✅ **Date-specific** — Fresh start each day
|
||||
- ✅ **Auto-cleanup** — Old files remain for history
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Benefits
|
||||
|
||||
### Interrupted Runs
|
||||
|
||||
| Scenario | Without Job State | With Job State |
|
||||
|----------|-------------------|----------------|
|
||||
| **Power outage** | Start from beginning | Resume from last task |
|
||||
| **Manual stop** | Lose all progress | Pick up where left off |
|
||||
| **Network failure** | Redo everything | Continue remaining tasks |
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
### **Basic Setup**
|
||||
```json
|
||||
**Already enabled:**
|
||||
```jsonc
|
||||
{
|
||||
"jobState": {
|
||||
"enabled": true,
|
||||
"dir": ""
|
||||
"dir": "" // Empty = use default location
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### **Configuration Options**
|
||||
|
||||
| Setting | Description | Default |
|
||||
|---------|-------------|---------|
|
||||
| `enabled` | Enable job state persistence | `true` |
|
||||
| `dir` | Custom directory for state files | `""` (uses `sessions/job-state`) |
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ How It Works
|
||||
|
||||
### **State Tracking**
|
||||
- 📋 **Monitors completion** status of individual activities
|
||||
- 🔍 **Tracks progress** for daily sets, searches, and promotional tasks
|
||||
- ❌ **Prevents duplicates** when script restarts
|
||||
|
||||
### **Storage Structure**
|
||||
```
|
||||
sessions/job-state/
|
||||
├── account1@email.com/
|
||||
│ ├── daily-set-2025-01-20.json
|
||||
│ ├── desktop-search-2025-01-20.json
|
||||
│ └── mobile-search-2025-01-20.json
|
||||
└── account2@email.com/
|
||||
├── daily-set-2025-01-20.json
|
||||
└── promotional-tasks-2025-01-20.json
|
||||
```
|
||||
|
||||
### **State File Format**
|
||||
```json
|
||||
**Custom location:**
|
||||
```jsonc
|
||||
{
|
||||
"date": "2025-01-20",
|
||||
"account": "user@email.com",
|
||||
"type": "daily-set",
|
||||
"completed": [
|
||||
"daily-check-in",
|
||||
"quiz-1",
|
||||
"poll-1"
|
||||
],
|
||||
"remaining": [
|
||||
"quiz-2",
|
||||
"search-desktop"
|
||||
],
|
||||
"lastUpdate": "2025-01-20T10:30:00.000Z"
|
||||
"jobState": {
|
||||
"enabled": true,
|
||||
"dir": "/custom/path/job-state"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Key Benefits
|
||||
## 🧹 Maintenance
|
||||
|
||||
### **Resumable Tasks**
|
||||
- ✅ **Script restarts** pick up where they left off
|
||||
- ✅ **Individual completion** is remembered
|
||||
- ✅ **Avoid re-doing** completed activities
|
||||
### Reset Progress (Fresh Start)
|
||||
|
||||
### **Daily Reset**
|
||||
- 📅 **Date-specific** state files
|
||||
- 🌅 **New day** automatically starts fresh tracking
|
||||
- 📚 **History preserved** for analysis
|
||||
|
||||
### **Account Isolation**
|
||||
- 👤 **Separate state** per account
|
||||
- ⚡ **Parallel processing** doesn't interfere
|
||||
- 📊 **Independent progress** tracking
|
||||
|
||||
---
|
||||
|
||||
## 📋 Use Cases
|
||||
|
||||
### **Interrupted Executions**
|
||||
| Scenario | Benefit |
|
||||
|----------|---------|
|
||||
| **Network issues** | Resume when connection restored |
|
||||
| **System reboots** | Continue after restart |
|
||||
| **Manual termination** | Pick up from last checkpoint |
|
||||
| **Resource exhaustion** | Recover without losing progress |
|
||||
|
||||
### **Selective Reruns**
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| **Skip completed sets** | Avoid redoing finished daily activities |
|
||||
| **Resume searches** | Continue partial search sessions |
|
||||
| **Retry failed tasks** | Target only problematic activities |
|
||||
| **Account targeting** | Process specific accounts only |
|
||||
|
||||
### **Progress Monitoring**
|
||||
- 📊 **Track completion rates** across accounts
|
||||
- 🔍 **Identify problematic** activities
|
||||
- ⏱️ **Monitor task duration** trends
|
||||
- 🐛 **Debug stuck** or slow tasks
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Technical Implementation
|
||||
|
||||
### **Checkpoint Strategy**
|
||||
- 💾 **State saved** after each completed activity
|
||||
- ⚛️ **Atomic writes** prevent corruption
|
||||
- 🔒 **Lock-free design** for concurrent access
|
||||
|
||||
### **Performance Optimization**
|
||||
- ⚡ **Minimal I/O overhead** — Fast state updates
|
||||
- 🧠 **In-memory caching** — Reduce disk access
|
||||
- 📥 **Lazy loading** — Load state files on demand
|
||||
|
||||
### **Error Handling**
|
||||
- 🔧 **Corrupted files** are rebuilt automatically
|
||||
- 📁 **Missing directories** created as needed
|
||||
- 🎯 **Graceful degradation** when disabled
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ File Management
|
||||
|
||||
### **Automatic Behavior**
|
||||
- 📅 **Date-specific files** — New files for each day
|
||||
- 💾 **Preserved history** — Old files remain for reference
|
||||
- 🚀 **No auto-deletion** — Manual cleanup recommended
|
||||
|
||||
### **Manual Maintenance**
|
||||
```powershell
|
||||
# Clean state files older than 7 days
|
||||
Get-ChildItem sessions/job-state -Recurse -Filter "*.json" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item
|
||||
|
||||
# Reset all job state (start fresh)
|
||||
# Reset all accounts
|
||||
Remove-Item -Recurse -Force sessions/job-state/
|
||||
|
||||
# Reset specific account state
|
||||
# Reset one account
|
||||
Remove-Item -Recurse -Force sessions/job-state/user@email.com/
|
||||
```
|
||||
|
||||
---
|
||||
### Cleanup Old Files
|
||||
|
||||
## 📊 Example Workflows
|
||||
|
||||
### **Interrupted Daily Run**
|
||||
```
|
||||
Day 1 - 10:30 AM:
|
||||
✅ Account A: Daily set completed
|
||||
🔄 Account B: 3/5 daily tasks done
|
||||
❌ Script crashes
|
||||
|
||||
Day 1 - 2:00 PM:
|
||||
🚀 Script restarts
|
||||
✅ Account A: Skipped (already complete)
|
||||
🔄 Account B: Resumes with 2 remaining tasks
|
||||
```
|
||||
|
||||
### **Multi-Day Tracking**
|
||||
```
|
||||
Monday:
|
||||
📅 daily-set-2025-01-20.json created
|
||||
✅ All tasks completed
|
||||
|
||||
Tuesday:
|
||||
📅 daily-set-2025-01-21.json created
|
||||
🔄 Fresh start for new day
|
||||
📚 Monday's progress preserved
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Debugging Job State
|
||||
|
||||
### **State Inspection**
|
||||
```powershell
|
||||
# View current state for account
|
||||
Get-Content sessions/job-state/user@email.com/daily-set-2025-01-20.json | ConvertFrom-Json
|
||||
|
||||
# List all state files
|
||||
Get-ChildItem sessions/job-state -Recurse -Filter "*.json"
|
||||
```
|
||||
|
||||
### **Debug Output**
|
||||
Enable verbose logging to see state operations:
|
||||
```powershell
|
||||
$env:DEBUG_REWARDS_VERBOSE=1; npm start
|
||||
```
|
||||
|
||||
Sample output:
|
||||
```
|
||||
[INFO] Loading job state for user@email.com (daily-set)
|
||||
[INFO] Found 3 completed tasks, 2 remaining
|
||||
[INFO] Skipping completed task: daily-check-in
|
||||
[INFO] Starting task: quiz-2
|
||||
# Keep last 7 days only
|
||||
Get-ChildItem sessions/job-state -Recurse -Filter "*.json" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Troubleshooting
|
||||
|
||||
| Problem | Cause | Solution |
|
||||
|---------|-------|----------|
|
||||
| **Tasks not resuming** | Missing/corrupt state files | Check file permissions; verify directory exists |
|
||||
| **Duplicate execution** | Clock sync issues | Ensure system time is accurate |
|
||||
| **Excessive files** | No cleanup schedule | Implement regular state file cleanup |
|
||||
| **Permission errors** | Write access denied | Verify sessions/ directory is writable |
|
||||
|
||||
### **Common Issues**
|
||||
|
||||
#### **Tasks Not Resuming**
|
||||
```
|
||||
[ERROR] Failed to load job state: Permission denied
|
||||
```
|
||||
**Solutions:**
|
||||
- ✅ Check file/directory permissions
|
||||
- ✅ Verify state directory exists
|
||||
- ✅ Ensure write access to sessions/
|
||||
|
||||
#### **Duplicate Task Execution**
|
||||
```
|
||||
[WARN] Task appears to be running twice
|
||||
```
|
||||
**Solutions:**
|
||||
- ✅ Check for corrupt state files
|
||||
- ✅ Verify system clock synchronization
|
||||
- ✅ Clear state for affected account
|
||||
|
||||
#### **Storage Growth**
|
||||
```
|
||||
[INFO] Job state directory: 2.3GB (1,247 files)
|
||||
```
|
||||
**Solutions:**
|
||||
- ✅ Implement regular cleanup schedule
|
||||
- ✅ Remove old state files (7+ days)
|
||||
- ✅ Monitor disk space usage
|
||||
| Problem | Solution |
|
||||
|---------|----------|
|
||||
| **Tasks not resuming** | Check file permissions |
|
||||
| **Duplicate execution** | Ensure system time is accurate |
|
||||
| **Excessive files** | Implement cleanup schedule |
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Integration Features
|
||||
## 📚 Next Steps
|
||||
|
||||
### **Session Persistence**
|
||||
- 🍪 **Works alongside** browser session storage
|
||||
- 🔐 **Complements** cookie and fingerprint persistence
|
||||
- 🌐 **Independent of** proxy and authentication state
|
||||
**Need scheduler?**
|
||||
→ **[Scheduler Guide](./schedule.md)**
|
||||
|
||||
### **Clustering**
|
||||
- ⚡ **Isolated state** per cluster worker
|
||||
- 🚫 **No shared state** between parallel processes
|
||||
- 📁 **Worker-specific** directories
|
||||
|
||||
### **Scheduling**
|
||||
- ⏰ **Persists across** scheduled runs
|
||||
- 🌅 **Daily reset** at midnight automatically
|
||||
- 🔄 **Long-running continuity** maintained
|
||||
**Want diagnostics?**
|
||||
→ **[Diagnostics Guide](./diagnostics.md)**
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Advanced Configuration
|
||||
|
||||
### **Custom State Directory**
|
||||
```json
|
||||
{
|
||||
"jobState": {
|
||||
"enabled": true,
|
||||
"dir": "/custom/path/to/state"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### **Disabling Job State**
|
||||
```json
|
||||
{
|
||||
"jobState": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Effects when disabled:**
|
||||
- ❌ **Tasks restart** from beginning each run
|
||||
- ❌ **No progress tracking** between sessions
|
||||
- ❌ **Potential duplicate work** on interruptions
|
||||
- ✅ **Slightly faster startup** (no state loading)
|
||||
|
||||
---
|
||||
|
||||
## 📊 Best Practices
|
||||
|
||||
### **Development**
|
||||
- ✅ **Enable for testing** — Consistent behavior
|
||||
- 🧹 **Clear between changes** — Fresh state for major updates
|
||||
- 🔍 **Monitor for debugging** — State files reveal execution flow
|
||||
|
||||
### **Production**
|
||||
- ✅ **Always enabled** — Reliability is critical
|
||||
- 💾 **Regular backups** — State directory backups
|
||||
- 📊 **Monitor disk usage** — Prevent storage growth
|
||||
|
||||
### **Maintenance**
|
||||
- 🗓️ **Weekly cleanup** — Remove old state files
|
||||
- 🔍 **Health checks** — Verify state integrity
|
||||
- 📝 **Usage monitoring** — Track storage trends
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Related Guides
|
||||
|
||||
- **[Getting Started](./getting-started.md)** — Initial setup and configuration
|
||||
- **[Scheduler](./schedule.md)** — Automated timing and execution
|
||||
- **[Diagnostics](./diagnostics.md)** — Error capture and debugging
|
||||
- **[Security](./security.md)** — Privacy and data protection
|
||||
**[← Back to Hub](./index.md)** | **[Config Guide](./config.md)**
|
||||
|
||||
Reference in New Issue
Block a user