Major additions:
- wrike_monitor.py: Real-time folder monitoring with watchdog
- Daily email reports at 7PM with comprehensive statistics
- Failed file handling with error logs
- Periodic scanning for missed files
- systemd service support for production deployment
- Sequential processing to prevent race conditions
- Proper parent/child folder matching using childIds
Configuration:
- Easy path configuration for local/production
- Configurable Wrike space ID
- Email settings for daily reports
- Auto-cleanup of processed files (24h retention)
Documentation:
- INSTALLATION.md: Complete systemd service setup guide
- QUICKSTART.md: Quick reference for both tools
- Updated README.md with tool comparison
- requirements.txt with clear dependencies
Bug fixes:
- Fixed duplicate folder/project creation via childIds matching
- Added logging for skipped deliverables
- Improved cache management
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
5.2 KiB
5.2 KiB
Quick Start Guide
Choose Your Tool
Option 1: Simple Batch Import (wrike_import.py)
Best for: One-time imports, manual runs, testing
# Install
pip install requests
# Run
python wrike_import.py /path/to/json/files/
# That's it! Files processed and moved to Processed/
Option 2: Real-time Monitor Service (wrike_monitor.py)
Best for: Production, 24/7 monitoring, automatic processing
# Install
pip install -r requirements.txt
# Configure (edit these lines in wrike_monitor.py):
# Line 41: HOT_FOLDER = Path("your/input/folder")
# Line 42: PROCESSED_FOLDER = Path("your/processed/folder")
# Line 52: WRIKE_SPACE_ID = "your_space_id"
# Line 79: REPORT_EMAILS = ["your@email.com"]
# Run locally for testing
python wrike_monitor.py
# Deploy as service (see INSTALLATION.md)
Configuration Quick Reference
wrike_monitor.py - Key Settings
| Setting | Line | Description |
|---|---|---|
HOT_FOLDER |
41 | Input folder to watch |
PROCESSED_FOLDER |
42 | Where processed files go |
FAILED_FOLDER |
43 | Where failed files go |
REPORTS_DIR |
44 | Where reports are saved |
WRIKE_TOKEN |
49 | Your Wrike API token |
WRIKE_SPACE_ID |
52 | Target Wrike space ID |
WRIKE_SPACE_NAME |
53 | Space name (for logs) |
REPORT_EMAILS |
79 | Who gets daily reports |
DAILY_REPORT_TIME |
84 | When to send report (24h format) |
CLEANUP_PROCESSED_HOURS |
98 | Delete processed files after X hours |
PERIODIC_SCAN_INTERVAL |
88 | How often to scan for missed files |
Custom Field IDs (Lines 57-68)
Update these if you're using a different Wrike space with different custom field IDs.
Example Workflows
Workflow 1: Local Testing
# 1. Create test folder
mkdir -p ~/wrike-test/json_files
# 2. Edit wrike_monitor.py
# Set HOT_FOLDER = Path("/Users/yourname/wrike-test/json_files")
# 3. Run monitor
python wrike_monitor.py
# 4. Drop JSON files into json_files/
# Watch them get processed automatically!
Workflow 2: Production Deployment
# 1. Configure paths for production in wrike_monitor.py
# 2. Copy to server
scp wrike_monitor.py wrike-monitor.service server:/root/wrike-import/
# 3. SSH to server and install service
ssh server
sudo cp /root/wrike-import/wrike-monitor.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable wrike-monitor
sudo systemctl start wrike-monitor
# 4. Monitor logs
sudo journalctl -u wrike-monitor -f
# 5. Get daily reports at 7PM via email!
Workflow 3: Batch Import Existing Files
# Use wrike_import.py for one-time batch
python wrike_import.py /path/to/existing/json/files/
# All files processed and moved to Processed/
# Switch to wrike_monitor.py for ongoing monitoring
Testing Checklist
Before deploying to production:
- Test with sample JSON files locally
- Verify folders/projects created correctly in Wrike
- Check duplicate detection works (reprocess same file)
- Confirm files move to Processed/ folder
- Test failed file handling (drop invalid JSON)
- Verify email settings (check inbox at report time)
- Review custom field IDs match your space
- Test with production paths (but staging space first!)
Common Configuration Scenarios
Scenario: Multiple Environments
Create separate config files:
# wrike_monitor_staging.py - points to Staging space
# wrike_monitor_production.py - points to LGL Team space
Or use environment variables:
import os
WRIKE_SPACE_ID = os.environ.get('WRIKE_SPACE_ID', 'MQAAAABpz7l_')
Scenario: Different Report Times
# Morning report at 9AM
DAILY_REPORT_TIME = "09:00"
# Multiple reports per day - use schedule in setup_daily_reporting():
schedule.every().day.at("09:00").do(self.generate_daily_report)
schedule.every().day.at("17:00").do(self.generate_daily_report)
schedule.every().day.at("19:00").do(self.generate_daily_report)
Scenario: Longer File Retention
# Keep processed files for 7 days instead of 24 hours
CLEANUP_PROCESSED_HOURS = 168 # 7 days * 24 hours
Troubleshooting Quick Fixes
Files not being processed
# Check folder permissions
chmod 777 /your/input/folder
# Check if monitor is running
ps aux | grep wrike_monitor
Duplicates being created
- Sequential processing is enabled (BATCH_SIZE=1, MAX_WORKERS=1)
- Caches persist during runtime
- Restart service if caches get stale:
sudo systemctl restart wrike-monitor
Email not sending
- Check SMTP credentials in Config
- Test manually: send test email from server
- Check firewall allows SMTP port 587
High memory usage
- Reduce BATCH_SIZE (line 82)
- Increase PERIODIC_SCAN_INTERVAL (line 88)
- Clear old logs:
rm /PRODUCTION/WRIKE_LOGS/*.log.old
Getting Space IDs
# Get all spaces
curl -X GET "https://www.wrike.com/api/v4/spaces" \
-H "Authorization: Bearer YOUR_TOKEN"
# Find your space and copy the ID
Getting Custom Field IDs
# Get all custom fields
curl -X GET "https://www.wrike.com/api/v4/customfields" \
-H "Authorization: Bearer YOUR_TOKEN"
# Update CUSTOM_FIELDS in Config with your IDs
Need Help? Check the main README.md for detailed documentation.