@@ -32,6 +32,8 @@ public function handle()
3232 Log::info ("Iniciando atualização via Semantic Scholar para o paper ID {$ this ->paperId }" );
3333
3434 $ service = new SnowballingService ();
35+
36+ // priorizar o DOI se existir
3537 $ query = !empty ($ this ->doi ) ? $ this ->doi : $ this ->title ;
3638
3739 $ result = $ service ->fetch ($ query );
@@ -49,20 +51,29 @@ public function handle()
4951 return ;
5052 }
5153
52- // Atualizar campos conforme tipo de consulta (via DOI ou via título)
53- if (empty ($ this ->doi ) && !empty ($ this ->title )) {
54- // Atualização via título → preencher DOI
55- $ paper ->doi = $ article ['doi ' ] ?? $ paper ->doi ;
56- } elseif (!empty ($ this ->doi ) && empty ($ this ->title )) {
57- // Atualização via DOI → preencher título
54+ // Atualizar sempre via DOI se disponível
55+ if (!empty ($ this ->doi )) {
56+ // Atualização via DOI → pode atualizar título
5857 $ paper ->title = $ article ['title ' ] ?? $ paper ->title ;
58+ } elseif (!empty ($ this ->title )) {
59+ // Atualização via título → pode preencher DOI
60+ $ paper ->doi = $ article ['doi ' ] ?? $ paper ->doi ;
5961 }
6062
61- // Atualizar campos comuns
63+ //Atualizar campos comuns
6264 $ paper ->abstract = $ article ['abstract ' ] ?? $ paper ->abstract ;
6365 $ paper ->keywords = $ this ->extractKeywords ($ article );
6466 $ paper ->author = $ article ['authors ' ] ?? $ paper ->author ;
6567
68+ //Atualizar URL (com fallback para DOI se vier vazio)
69+ if (!empty ($ article ['url ' ])) {
70+ $ paper ->url = $ article ['url ' ];
71+ } elseif (!empty ($ paper ->doi )) {
72+ $ paper ->url = str_contains ($ paper ->doi , 'http ' )
73+ ? $ paper ->doi
74+ : 'https://doi.org/ ' . ltrim ($ paper ->doi );
75+ }
76+
6677 $ paper ->save ();
6778
6879 Log::info ("Atualização via Semantic Scholar concluída para o paper ID {$ this ->paperId }" );
@@ -77,7 +88,7 @@ private function extractKeywords(array $article): string
7788 return $ article ['keywords ' ];
7889 }
7990
80- // Fallback: tentar inferir palavras-chave a partir do abstract
91+ // Fallback: gerar palavras-chave a partir do abstract
8192 if (!empty ($ article ['abstract ' ])) {
8293 $ abstract = strtolower ($ article ['abstract ' ]);
8394 $ words = array_filter (explode (' ' , $ abstract ), fn ($ w ) => strlen ($ w ) > 6 );
0 commit comments