feat(importer): autodetekcja języka pracy także spoza {en,es,pl} (FD#389)#419
Open
mpasternak wants to merge 1 commit into
Open
feat(importer): autodetekcja języka pracy także spoza {en,es,pl} (FD#389)#419mpasternak wants to merge 1 commit into
mpasternak wants to merge 1 commit into
Conversation
…389)
Wykrywanie języka pracy w importerze już istniało, ale mapowanie kodu na
obiekt Jezyk szło wyłącznie przez Komparator.porownaj_language, które
twardo odrzuca każdy kod spoza statycznego enuma Jezyk.SKROT_CROSSREF
({en, es, pl}). W efekcie publikacja niemiecka/francuska/rosyjska/
ukraińska była wykrywana, lecz język pozostawał pusty — mimo istnienia
pasującego rekordu Jezyk.
Po porażce komparatora dokładamy łagodny fallback _resolve_jezyk
(dopasowanie po skrot_crossref) — ta sama logika, której importer używa
już dla języka streszczeń. Bez migracji i bez zmiany enuma.
Fixes Freshdesk FD#389
https://iplweb.freshdesk.com/a/tickets/389
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Zgłoszenie
Fixes Freshdesk FD#389 — https://iplweb.freshdesk.com/a/tickets/389
(Importer publikacji — autodetekcja języka pracy)
Problem
Importer publikacji już wykrywa język pracy (
_detect_language—heurystyka polskich znaków diakrytycznych +
langdetect). Wykryty (lubpodany przez źródło: CrossRef
language, PBNmainLanguage, BibTeXlanguage) kod był jednak mapowany na obiektJezykwyłącznie przezKomparator.porownaj_language, które twardo odrzuca każdy kod spozastatycznego enuma
Jezyk.SKROT_CROSSREF={en, es, pl}(
crossref_bpp/core.py:586).Skutek: publikacja niemiecka / francuska / rosyjska / ukraińska (częste w
polskich bibliografiach) była wykrywana, ale jej język nie był
przypisywany — pole zostawało puste, mimo że instalacja miała pasujący
rekord
Jezyk. Co ciekawe, ścieżka języka streszczeń już używałałagodnego dopasowania (
_resolve_jezyk), więc zachowanie było niespójne.Rozwiązanie
W
_auto_match_type_and_language(importer_publikacji/tasks.py): gdyKomparator.porownaj_languagenie zwróci dopasowania, dokładamy fallbackdo
_resolve_jezyk(language_code)— dopasowanie poskrot_crossref, tasama logika, której importer używa już dla języka streszczeń.
SKROT_CROSSREF(zmianaTextChoiceswygenerowałaby migrację).
{en, es, pl}(komparator nadalpierwszy).
Testy (TDD)
Nowy
src/importer_publikacji/tests/test_repro_fd389.py— najpierwczerwony, potem zielony:
depodany przez źródło + istniejeJezyk(skrot_crossref="de")→
session.jezykprzypisany,dewykryty (patch_detect_language) → przypisany,en) nadal dopasowuje się przezKomparator.Cała aplikacja:
416 passed, 1 skipped(bez regresji).🤖 Generated with Claude Code