Skip to content

P3: BrakIDPracyPoStroniePBN = alias PublicationNotFound (rozpoznanie 422 w paczce)#606

Open
mpasternak wants to merge 1 commit into
feat/pbn-adopt-api2from
feat/pbn-adopt-api3
Open

P3: BrakIDPracyPoStroniePBN = alias PublicationNotFound (rozpoznanie 422 w paczce)#606
mpasternak wants to merge 1 commit into
feat/pbn-adopt-api2from
feat/pbn-adopt-api3

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Kontynuacja adopcji API PBN 0.2 (stack na #604). Centralizuje rozpoznanie
„publikacja nie istnieje w PBN" w endpoincie paczki i upraszcza BPP.

Zmiana

Rozpoznanie 422 „was not exists!" robi teraz RAZ endpoint paczki
(pbn_client.get_publication_by_idPublicationNotFound), zamiast być
duplikowane w call-site BPP.

  • pbn_api/exceptions.py: BrakIDPracyPoStroniePBN staje się aliasem
    PublicationNotFound (przypisanie, ta sama klasa, is — nie podklasa).
    Istniejące except BrakIDPracyPoStroniePBN (kasowanie cache w
    odswiez_tabele_publikacji, per-item fail w workerze importu) łapią wyjątek
    rzucany przez paczkę bez zmian. To co innego niż BPPPublicationNotFound
    (brak rekordu po stronie BPP).
  • pbn_integrator/utils/publications.py (_pobierz_pojedyncza_prace):
    usunięto ręczną re-detekcję markera w treści; PublicationNotFound
    propagujemy, zwykły HttpException (w tym 404) leci dalej, 500 „Internal
    server error" nadal → None.

Decyzja 404 (wg planu ekstrakcji)

Zwykły 404 bywa przejściowyNIE jest traktowany jako „brak pracy",
nie kasuje lokalnego cache'u. Ani paczka, ani BPP nie mapują 404 na
PublicationNotFound — tylko 422+marker.

Testy (przepisane na nowy kontrakt)

  • alias-identity (BrakIDPracyPoStroniePBN is PublicationNotFound),
  • PublicationNotFound z paczki → propagacja jako BrakID (pola HTTP zachowane),
  • 404 ≠ BrakID (decyzja 404),
  • goły 422 nie jest już re-detektowany przez BPP (rozpoznanie = odpowiedzialność paczki),
  • 500 „Internal server error" → None.

Weryfikacja

  • manage.py check: OK
  • pytest src/pbn_integrator/tests/ src/pbn_api/tests/: 540 passed
  • ruff check + format: clean

Pozostało (świadomie wstrzymane)

download_to_model/iter_pages w getterach — osobny PR (zmienia ścieżkę
pobierania).

🤖 Generated with Claude Code

…w paczce)

Rozpoznanie 422 "was not exists!" robi teraz RAZ endpoint paczki
(pbn_client.get_publication_by_id rzuca PublicationNotFound) — BPP nie
duplikuje już tej detekcji w call-site.

- pbn_api/exceptions.py: BrakIDPracyPoStroniePBN staje się aliasem
  PublicationNotFound (przypisanie, ta sama klasa, `is`) zamiast osobnej
  podklasy HttpException. Dzięki temu istniejące `except
  BrakIDPracyPoStroniePBN` (odswiez_tabele_publikacji kasujący cache;
  worker importu zwracający per-item fail) łapią wyjątek rzucany przez
  paczkę. To CO INNEGO niż BPPPublicationNotFound (brak rekordu BPP).
- pbn_integrator/utils/publications.py (_pobierz_pojedyncza_prace):
  usunięto ręczną re-detekcję markera w treści; PublicationNotFound
  propagujemy, zwykły HttpException (w tym 404) leci dalej, 500
  "Internal server error" nadal → None.

Decyzja 404 (zapisana w planie): 404 bywa przejściowy → NIE jest "brak
pracy", nie kasuje lokalnego cache'u. Ani paczka, ani BPP nie mapują 404
na PublicationNotFound.

Testy przepisane na nowy kontrakt: alias-identity, PublicationNotFound z
paczki → propagacja jako BrakID (pola HTTP zachowane), 404 ≠ BrakID, goły
422 nie jest już re-detektowany przez BPP, 500 → None.
540 passed (pbn_integrator + pbn_api), ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant