rci / member-rewards
SeAT Member Rewards Programme - Track corporation member activity across mining, PvP, and tax contributions
Package info
github.com/rational-chaos-inc/seat-mrp
Type:seat-plugin
pkg:composer/rci/member-rewards
Requires
- php: ^8.1
- eveseat/services: ^5.1
- laravel/framework: ^10.0|^11.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v3.5.6
- v3.5.5
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.0
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.0-stable
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.35
- v1.0.34
- v1.0.33
- v1.0.32
- v1.0.31
- v1.0.30
- v1.0.29
- v1.0.28
- v1.0.27
- v1.0.26
- v1.0.25
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-09-11 20:56:35 UTC
README
A SeAT plugin for tracking corporation member activity across mining, PvP combat, and tax wallet contributions.
Features
- Track member activities: mining, PvP kills/losses, tax wallet bounties
- Aggregate data per user (main character + linked alts)
- View totals and averages across linked characters
- Configurable time windows (daily, weekly, monthly, quarterly, yearly)
- Member dashboard for personal activity tracking
- Director dashboard with corporation-wide summaries and league tables
- Member drill-down and search/filter capabilities
- Activity alerts and target setting
- Hybrid Manager-Core integration (optional)
Installation
Prerequisites
- SeAT 5.x (Laravel 10)
- PHP 8.1+
- Database with migration support
- Redis or queue driver (for scheduled jobs)
- EVE Online ESI API access (for kills/losses)
- Mining-Manager plugin (for mining data) - optional but recommended
Step-by-Step Installation
-
Add to your SeAT installation
For development/local testing:
# Add to composer.json repositories section "repositories": [ { "type": "vcs", "url": "https://github.com/rational-chaos-inc/seat-mrp.git" } ]
Then install:
composer require rci/member-rewards
-
Publish configuration and views
php artisan vendor:publish --tag=member-rewards-config php artisan vendor:publish --tag=member-rewards-views
-
Run database migrations
php artisan migrate
-
Seed scheduled tasks (via database seeder)
php artisan db:seed --class="\RCI\MemberRewards\Database\Seeders\ScheduleSeeder" -
Configure permissions (if using role-based access)
- Log into SeAT admin panel
- Go to: Admin → Permissions & Roles
- Assign
view_own_activitiesto members - Assign
view_all_activitiesto directors
-
Configure scheduler (if not already running)
Ensure Laravel's task scheduler runs every minute:
* * * * * cd /path/to/seat && php artisan schedule:run >> /dev/null 2>&1
Or use the SeAT Scheduler UI if available:
- Admin → Scheduler
-
Verify installation
# Check if service provider is registered php artisan list | grep member-rewards # Verify permissions exist php artisan tinker >>> \Spatie\Permission\Models\Permission::where('name', 'like', '%member-rewards%')->get() # Verify schedule is registered (if Manager-Core available) php artisan manager-core:diagnose --detailed
Optional: Manager-Core Integration
To enable real-time activity updates and cross-plugin communication:
composer require seatplus/manager-core php artisan migrate
The plugin will auto-detect Manager-Core and enable:
- Real-time kill/loss detection (~2 minutes vs 20-30 minutes)
- Mining data via events
- Cross-plugin alerts
Configuration
Edit config/member-rewards.php to configure:
return [ 'enabled' => env('MEMBER_REWARDS_ENABLED', true), 'polling_interval' => env('MEMBER_REWARDS_POLLING_INTERVAL', 5), // minutes 'aggregation_cache_ttl' => env('MEMBER_REWARDS_CACHE_TTL', 0), // seconds (0 = disabled) 'esi.retry_attempts' => 3, 'esi.retry_delay_seconds' => 2, 'time_windows' => ['day', 'week', 'month', 'quarter', 'year'], 'activity_types' => ['mining', 'pvp_kill', 'pvp_loss', 'tax_wallet'], 'manager_core_integration' => true, 'alerts.enabled' => true, 'alerts.check_interval' => 5, // minutes ];
Post-Installation
Start collecting activities
Activities begin collecting automatically every 5 minutes via scheduled job. First run should complete within 5 minutes depending on corporation size.
Monitor collection
# View recent collection logs php artisan tinker >>> \Illuminate\Support\Facades\Log::tail('laravel.log', 50) # Or via file tail -f storage/logs/laravel.log | grep 'member-rewards'
Access the plugin
- Member Dashboard:
/member-rewards/dashboard - Director Dashboard:
/member-rewards/director(requiresview_all_activitiespermission) - League Tables:
/member-rewards/league-tables - API:
/api/member-rewards/...
Uninstallation
To remove the plugin:
# Disable the plugin from SeAT admin or composer.json composer remove rci/member-rewards # Remove database tables (careful!) php artisan migrate:rollback --path=vendor/rci/member-rewards/database/migrations
Troubleshooting
Activities not collecting:
- Check scheduler is running:
php artisan schedule:list - Check logs:
storage/logs/laravel.log - Verify characters have ESI tokens: SeAT Admin → Characters
- Check ESI API status: https://status.eve-esi.com/
No permissions appearing:
- Run migration:
php artisan migrate - Seed permissions:
php artisan db:seed --class="\RCI\MemberRewards\Database\Seeders\ScheduleSeeder" - Clear config cache:
php artisan config:cache
Manager-Core integration not working:
- Verify MC installed:
composer show seatplus/manager-core - Check MC is bootstrapped:
php artisan list | grep manager-core - Run diagnostic:
php artisan manager-core:diagnose --detailed
Architecture
Phase 1: Foundation (✓ Complete)
- Plugin bootstrap and service provider
- Database schema (activities, alerts, aggregation cache)
- Eloquent models with aggregation scopes
- Core service layer structure (ESI, tax wallet, mining, orchestration)
- Configuration and route placeholders
- Character linking via SeAT's built-in relationships
Phase 2: Data Collection (In Progress)
- ESI API integration for kills/losses
- Tax wallet data collection
- Mining data integration (via Mining-Manager)
- Activity collection orchestration job
Phase 3: Aggregation & Performance (✓ Complete)
- On-the-fly aggregation logic with comprehensive metrics
- Optional caching layer (configurable TTL)
- Time window calculations (day/week/month/quarter/year)
- Character grouping logic with per-character breakdowns
- League table generation and ranking
- Activity trend analysis over time
- Cache management commands
Phase 4: Access Control & Views (✓ Complete)
- Permission model implementation (view_own_activities, view_all_activities)
- Member dashboard with time windows and activity breakdown
- Director dashboard with corp-wide summaries
- League tables and member rankings
- Character detail drilldown (member view)
- Member detail drilldown (director view)
- Permission middleware and route protection
Phase 5: API & Advanced Features (✓ Complete)
- REST API endpoints (activities, aggregations, league tables)
- Alert system (threshold, unusual activity, member alerts)
- Notification dispatch (in-app, email, webhook stubs)
- Alert management (CRUD via API)
- Test notification endpoint
- Scheduled alert checking
Phase 6: Manager-Core Integration (✓ Complete)
- EventBus subscription for character/mining/ESI events
- ESI FastPoll integration for real-time kills/losses
- Event listeners for Mining-Manager integration
- Event publishing (activities, alerts)
- Cross-plugin communication via PluginBridge
- Graceful fallback when Manager-Core unavailable
Development Notes
- Uses Laravel PSR-4 autoloading
- Database migrations auto-discovered by SeAT
- Permissions managed via Spatie/Laravel-Permission
- Graceful fallback when Manager-Core is not available
License
MIT