Files
brasiliano/pipeline/nobrade/config.py
T
rodado 23b56e8c87 feat: descrição arquivística NOBRADE multinível com exportação EAD 3, EAC-CPF e AtoM
- pipeline/nobrade: normalizadores de datas (ISO 8601-2), séries, autoridades,
  espécie/suporte, direitos, lugar e assuntos; montagem dos níveis 0–5 com
  código de referência BR RJXYZ.BF.<seção>.<série>.<handle>.<imagem>
- validador dos elementos obrigatórios: 0 pendências em 26.454 unidades
- EAD 3 e 457 EAC-CPF validados contra os XSD
- mural: cartão com código, data normalizada, série e reprodução; filtro por série
2026-09-30 21:22:00 +02:00

73 lines
3.7 KiB
Python

"""Constantes da descrição NOBRADE — decisões registradas em CONARQ.md §5."""
from pathlib import Path
RAIZ = Path(__file__).resolve().parents[2]
PIPELINE = RAIZ / 'pipeline'
CATALOGO = PIPELINE / 'catalogo.jsonl'
LEDGER = PIPELINE / 'subidor.sqlite'
POSTS = PIPELINE / 'wordpress-posts.jsonl'
ERROS = RAIZ / 'errors.md'
AJUSTES = Path(__file__).resolve().parent / 'ajustes'
SAIDA = RAIZ / 'descricao'
TEXTOS = SAIDA / 'textos'
REVISAO = SAIDA / 'revisao'
# 1.1 — código da entidade custodiadora. PROVISÓRIO até o CONARQ atribuir um
# (proc. 1.1.1). Trocar aqui regenera todos os códigos de referência.
# Formato do CODEARQ, como o AGCRJ usa: país, espaço, UF + sigla, e as partes
# da unidade separadas por ponto — BR RJAGCRJ.SOP.NL.AVE.03.01
PAIS = 'BR'
ENTIDADE = 'RJXYZ'
ENTIDADE_NOME = 'xyz — cópia digital de acervos fotográficos'
ENTIDADE_SITE = 'https://xn--2dk.xyz/brasiliana/'
COLECAO = 'BF'
COLECAO_TITULO = 'Coleção Brasiliana Fotográfica (cópia digital)'
RESPONSAVEL = 'rafapolo'
BUCKET = 's3://brasiliana'
REGRAS = ('NOBRADE: Norma brasileira de descrição arquivística (CONARQ, 2006); '
'ISAD(G) 2ª ed. (CIA, 2000); ISAAR(CPF) 2ª ed. (CIA, 2004); '
'datas em ISO 8601-2 (EDTF); idiomas em ISO 639-2; países em ISO 3166.')
ORIGEM_NOME = 'Brasiliana Fotográfica'
ORIGEM_SITE = 'https://brasilianafotografica.bn.gov.br/'
HANDLE_URL = 'https://brasilianafotografica.bn.gov.br/brasiliana/handle/{}'
# Nível 2 — uma seção por instituição de origem (campo `community` do catálogo).
# sigla → (nome autorizado, cidade)
INSTITUICOES = {
'Instituto Moreira Salles': ('IMS', 'Instituto Moreira Salles', 'Rio de Janeiro (RJ)'),
'Biblioteca Nacional': ('BN', 'Biblioteca Nacional (Brasil)', 'Rio de Janeiro (RJ)'),
'Museu Aeroespacial': ('MUSAL', 'Museu Aeroespacial', 'Rio de Janeiro (RJ)'),
'Museu da Republica': ('MR', 'Museu da República', 'Rio de Janeiro (RJ)'),
'Museu Historico Nacional': ('MHN', 'Museu Histórico Nacional', 'Rio de Janeiro (RJ)'),
'Fiocruz': ('COC', 'Fundação Oswaldo Cruz. Casa de Oswaldo Cruz', 'Rio de Janeiro (RJ)'),
'Diretoria do Patrimonio Historico e Documentacao da Marinha':
('DPHDM', 'Diretoria do Patrimônio Histórico e Documentação da Marinha', 'Rio de Janeiro (RJ)'),
'Arquivo Nacional': ('AN', 'Arquivo Nacional (Brasil)', 'Rio de Janeiro (RJ)'),
'Arquivo Geral da Cidade do Rio de Janeiro':
('AGCRJ', 'Arquivo Geral da Cidade do Rio de Janeiro', 'Rio de Janeiro (RJ)'),
'Leibniz-Institut fuer Laenderkunde, Leipzig':
('IFL', 'Leibniz-Institut für Länderkunde', 'Leipzig (Alemanha)'),
'Instituto Historico e Geografico Brasileiro':
('IHGB', 'Instituto Histórico e Geográfico Brasileiro', 'Rio de Janeiro (RJ)'),
'Fundacao Joaquim Nabuco': ('FUNDAJ', 'Fundação Joaquim Nabuco', 'Recife (PE)'),
'Museu Paraense Emilio Goeldi': ('MPEG', 'Museu Paraense Emílio Goeldi', 'Belém (PA)'),
'Escola de Ciencias Sociais (FGV CPDOC)':
('CPDOC', 'Fundação Getulio Vargas. Escola de Ciências Sociais (FGV CPDOC)', 'Rio de Janeiro (RJ)'),
'Instituto Brasileiro de Geografia e Estatistica':
('IBGE', 'Instituto Brasileiro de Geografia e Estatística', 'Rio de Janeiro (RJ)'),
}
# 4.1 — obrigatório nos níveis 0 e 1
ACESSO = ('Sem restrição de acesso à descrição. As cópias digitais são mantidas '
f'para preservação em {BUCKET} e consultáveis pelo mural em {ENTIDADE_SITE}. '
'O acesso aos originais segue as regras de cada instituição de origem '
'(ver 5.1 em cada dossiê).')
def codigo(*partes: str) -> str:
"""BR RJXYZ, BR RJXYZ.BF, BR RJXYZ.BF.IMS.GF.12345.01 …"""
return f'{PAIS} ' + '.'.join((ENTIDADE,) + tuple(p for p in partes if p))