fetchFromGitHub($perPage); }); } /** * 캐시 클리어 */ public function clearCache(): void { Cache::forget(self::CACHE_KEY); } /** * GitHub API에서 릴리즈 정보 가져오기 */ private function fetchFromGitHub(int $perPage): array { try { $response = Http::withHeaders([ 'Accept' => 'application/vnd.github.v3+json', 'User-Agent' => 'SAM-MNG-App', ])->timeout(10)->get(self::API_URL, [ 'per_page' => $perPage, ]); if (! $response->successful()) { return []; } return collect($response->json()) ->map(function ($release) { return [ 'id' => $release['id'], 'tag_name' => $release['tag_name'], 'name' => $release['name'] ?? $release['tag_name'], 'body_html' => Str::markdown($release['body'] ?? ''), 'published_at' => $release['published_at'], 'author' => $release['author']['login'] ?? 'unknown', 'author_avatar' => $release['author']['avatar_url'] ?? '', 'html_url' => $release['html_url'], 'prerelease' => $release['prerelease'] ?? false, 'draft' => $release['draft'] ?? false, ]; }) ->toArray(); } catch (\Exception $e) { report($e); return []; } } }