review_agent_application.php 1.8 KB

1234567891011121314151617181920212223242526272829
  1. <?php
  2. /** Optional cross-project API test bridge; only opens its disposable SQLite file. */
  3. $database = $argv[1] ?? '';
  4. $id = filter_var($argv[2] ?? '', FILTER_VALIDATE_INT);
  5. if (!str_starts_with($database, sys_get_temp_dir() . '/agent-api-test-') || !is_file($database) || !$id || $id < 1) {
  6. throw new RuntimeException('A disposable agent API test database and application ID are required');
  7. }
  8. require dirname(__DIR__) . '/bootstrap-agent.php';
  9. $app = new Illuminate\Foundation\Application(dirname(__DIR__, 2));
  10. $app->instance('config', new Illuminate\Config\Repository(['app' => ['locale' => 'zh', 'timezone' => 'Asia/Shanghai']]));
  11. Illuminate\Support\Facades\Facade::setFacadeApplication($app);
  12. $db = new Illuminate\Database\Capsule\Manager($app);
  13. $db->addConnection(['driver' => 'sqlite', 'database' => $database, 'prefix' => 'bot_']);
  14. $db->setAsGlobal(); $db->bootEloquent();
  15. $app->instance('db', $db->getDatabaseManager());
  16. $app->bind('db.schema', fn () => $db->schema());
  17. (require dirname(__DIR__, 2) . '/database/migrations/2026_11_10_120000_add_is_test_to_agents.php')->up();
  18. $app->instance('hash', new Illuminate\Hashing\BcryptHasher(['rounds' => 4]));
  19. $app->instance('translator', new Illuminate\Translation\Translator(new Illuminate\Translation\ArrayLoader(), 'zh'));
  20. $app->instance('validator', new Illuminate\Validation\Factory($app['translator'], $app));
  21. $app->instance('log', new Psr\Log\NullLogger());
  22. $request = Illuminate\Http\Request::create('/admin/agent/applicationAudit', 'POST');
  23. $request->user = (object) ['id' => 1, 'username' => 'test-admin'];
  24. $app->instance('request', $request);
  25. $agents = new App\Services\Agent\AgentService();
  26. $result = (new App\Services\Agent\AgentApplicationService())->audit(['id' => $id, 'status' => 'approved'], $agents);
  27. echo json_encode($result, JSON_THROW_ON_ERROR);