Add complete ScoutIQ system: Crawler (RSS+AI), CRUD Controllers (Organizations, Contacts, Opportunities, Sources), dynamic Views, API routes, CLI collector
This commit is contained in:
35
cli.php
35
cli.php
@@ -23,6 +23,9 @@ require_once __DIR__ . '/database/seeds/DatabaseSeeder.php';
|
||||
use App\Core\Container;
|
||||
use App\Services\Database\Connection;
|
||||
use App\Services\Database\MigrationRunner;
|
||||
use App\Services\Crawler\RssParser;
|
||||
use App\Services\Crawler\AiAnalyzer;
|
||||
use App\Services\Crawler\Collector;
|
||||
use Database\Seeds\DatabaseSeeder;
|
||||
|
||||
$container = new Container();
|
||||
@@ -32,6 +35,11 @@ $container->singleton(Connection::class, Connection::class);
|
||||
$container->singleton(MigrationRunner::class, MigrationRunner::class);
|
||||
$container->singleton(DatabaseSeeder::class, DatabaseSeeder::class);
|
||||
|
||||
// Crawler service (needed for CLI collect command)
|
||||
$container->singleton(RssParser::class, RssParser::class);
|
||||
$container->singleton(AiAnalyzer::class, AiAnalyzer::class);
|
||||
$container->singleton(Collector::class, Collector::class);
|
||||
|
||||
$args = $argv;
|
||||
$command = $args[1] ?? 'help';
|
||||
|
||||
@@ -58,6 +66,32 @@ switch ($command) {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'collect':
|
||||
echo "=== Running Data Collector ===\n";
|
||||
try {
|
||||
$collector = $container->get(Collector::class);
|
||||
$results = $collector->collectAll();
|
||||
|
||||
echo "\n--- Results ---\n";
|
||||
echo "Sources processed: {$results['processed']}/{$results['total_sources']}\n";
|
||||
echo "Errors: {$results['errors']}\n";
|
||||
echo "New opportunities: {$results['new_opportunities']}\n";
|
||||
echo "New organizations: {$results['new_organizations']}\n\n";
|
||||
|
||||
foreach ($results['details'] as $detail) {
|
||||
echo "[{$detail['status']}] {$detail['source']} ({$detail['type']}): ";
|
||||
if ($detail['status'] === 'success') {
|
||||
echo "{$detail['entries_found']} entries, {$detail['new_opportunities']} opps, {$detail['new_organizations']} orgs\n";
|
||||
} else {
|
||||
echo "ERROR: {$detail['error']}\n";
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
echo "Collection failed: " . $e->getMessage() . "\n";
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'help':
|
||||
default:
|
||||
echo "ScoutIQ CLI Utility\n";
|
||||
@@ -65,6 +99,7 @@ switch ($command) {
|
||||
echo "Commands:\n";
|
||||
echo " migrate Run SQL database migrations\n";
|
||||
echo " seed Seed the database with default data\n";
|
||||
echo " collect Run data collector (RSS feeds)\n";
|
||||
echo " help Show this help menu\n";
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user