Skip to content

Latest commit

 

History

History
134 lines (100 loc) · 4.7 KB

File metadata and controls

134 lines (100 loc) · 4.7 KB

SciELO Processing

Conjunto de utilitários para a produção de tabulações com metadados e métricas e também para o envio de dados à parceiros.

Requisitos:

  • Python 3.14

Docker

Para instalar as dependências e executar a suíte de testes:

docker compose run --rm tests

Para executar o processamento via Docker, configure as variáveis em um arquivo .env local, baseado em .env.example. O .env não deve ser versionado.

cp .env.example .env

Preencha no .env os valores equivalentes ao antigo config.ini:

ARTICLEMETA_THRIFTSERVER=
ARTICLEMETA_ADMINTOKEN=
RATCHET_THRIFTSERVER=
ACCESSSTATS_THRIFTSERVER=
CITEDBY_THRIFTSERVER=
PUBLICATIONSTATS_THRIFTSERVER=
SOLR_SEARCH_SCIELO_ORG=
SOLR_SEARCH_SCIELO_ORG_INDEX=
PUBLICATIONSTATS_TIMEOUT_MS=60000
SLACK_WEBHOOK_URL=

Depois execute:

docker compose run --rm processing "scl-BR"

Os logs ficam persistidos em var/log/processing e os arquivos ZIP gerados em var/tabs.

Kubernetes / Argo

O agendamento para Argo Workflows está em k8s/argo-cronworkflow.yaml com o cron:

0 3 1,8,15,22 1-12 *

O workflow executa as coleções sequencialmente. Quando uma coleção falha, o script envia a notificação de erro e continua para a próxima. Ao final, o job termina com falha, mantém os checkpoints para retomada e preserva o ZIP de rede completo publicado anteriormente.

Os valores sensíveis devem ser criados em um Secret do Kubernetes chamado processing-env, baseado em k8s/processing-env.secret.example.yaml. Não versione o Secret real.

Volumes esperados:

processing-data -> /var/www/static_scielo_org/tabs
processing-logs -> /var/log/processing

O processamento é orquestrado pelo comando processing_tabs. Os logs informam coleção, etapa, tentativa, duração, comando executado e arquivos produzidos.

Quando uma coleção falha, o runner registra o acrônimo em /var/log/processing/failed_collections.queue por padrão. Na próxima execução, essa fila é carregada antes da lista normal de coleções. Cada etapa concluída também é salva em um checkpoint; assim, somente etapas incompletas são executadas novamente. Por padrão, os checkpoints ficam em $TABS_DIR/.processing-checkpoints, no mesmo volume persistente dos arquivos gerados. Os caminhos podem ser alterados com FAILED_COLLECTIONS_FILE e CHECKPOINT_DIR. Checkpoints de uma data anterior são descartados para evitar que arquivos de períodos diferentes sejam combinados.

As etapas de documentos, periódicos e KBART somente são concluídas quando os arquivos essenciais possuem pelo menos um registro além do cabeçalho. O arquivo de mudanças de status pode conter somente o cabeçalho. Quando essa validação falha, o pacote da coleção não é publicado e o último pacote completo da rede é preservado.

Aplicação:

kubectl apply -f k8s/processing-env.secret.yaml
kubectl apply -f k8s/argo-cronworkflow.yaml

Exportação de dados ao DOAJ

Esta integração é realizada por meio de um robô que obtém os metadados dos documentos a partir do ArticleMeta, já codificados em XML conforme o schema do DOAJ, e os envia, um a um, através do formulário de submissão de artigos em XML, do site do DOAJ. Este processo não é ótimo mas é o único que nos permite enviar metadados em múltiplos idiomas.

Ao depositar um documento, o DOAJ verifica automaticamente se os ISSNs informados correspondem exatamente com os cadastrados em sua base de dados e, no caso de qualquer divergência, o depósito é rejeitado. A fim de contornar este problema, é possível construir uma base de correções que poderá ser utilizada pelo utilitário de depósito. A base de correções é produzida a partir de consultas às bases do DOAJ e, quando aplicada, modifica os metadados dos documentos de forma que os ISSNs fiquem conforme esperado pelo DOAJ.

Para produzir a base de correções e armazená-la em /tmp/corr.jsonl:

python export/gen_doaj_correctionsdb.py gen-correctionsdb > /tmp/corr.jsonl

Para executar o depósito dos documentos no DOAJ:

PROCESSING_SETTINGS_FILE=myconfig.ini processing_export_doaj --corrections_db /tmp/corr.jsonl --user US3R --password P4SSW0RD

Note que: (a) será necessário criar um arquivo de configurações e atribuí-lo à variável PROCESSING_SETTINGS_FILE. Este arquivo poderá ser baseado no exemplo fornecido no projeto e (b) que o utilitário processing_export_doaj aceita opções que podem ser usadas de forma a delimitar o conjunto de dados que serão depositados no DOAJ. Para mais detalhes execute PROCESSING_SETTINGS_FILE=myconfig.ini processing_export_doaj --help.