Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions src/bpp/newsfragments/fd437.feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Nowy raport „kompletność danych POL-on" (menu *ewaluacja*, dla redaktorów
danych): wskazuje, przy którym pracowniku i w którym rekordzie brakuje danych
wymaganych przez § 2 ust. 10 rozporządzenia MNiSW z 16 czerwca 2026 r.
(Dz. U. 2026 poz. 811). Zestawienie zbiorcze pokazuje autorów posortowanych
malejąco po brakach wymaganych, a widok szczegółów wypisuje przy każdym
rekordzie naruszone wymogi wraz z podstawą prawną i linkiem prosto do
formularza edycji. Raport odróżnia dane wymagane bezwarunkowo od tych, których
rozporządzenie żąda tylko „jeżeli posiada" — te drugie liczone są osobno i nie
zawyżają pilności. Zakres raportu to lata **od 2026 wzwyż**: górna granica
pozostaje otwarta, dopóki MEiN nie ogłosi długości nowego okresu ewaluacyjnego,
żeby raport nie przestał po cichu widzieć najnowszych rekordów.
1 change: 1 addition & 0 deletions src/django_bpp/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ def _elem_in_sys_argv(possible):
"ewaluacja_optymalizacja",
"ewaluacja_optymalizuj_publikacje",
"ewaluacja_dwudyscyplinowcy",
"kompletnosc_polon",
# UWAGA: NIE USUWAĆ aplikacji test_bpp z INSTALLED_APPS!
#
# Mimo nazwy sugerującej "tylko do testów", test_bpp dostarcza realnych
Expand Down
1 change: 1 addition & 0 deletions src/django_bpp/templates/top_bar.html
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
<ul class="menu vertical column-1">
<li><a href="{% url "ewaluacja_liczba_n:index" %}"><i class="fi-list-number"></i> liczba N</a></li>
<li><a href="{% url "ewaluacja_metryki:lista" %}"><i class="fi-graph-trend"></i> metryki ewaluacyjne</a></li>
<li><a href="{% url "kompletnosc_polon:lista" %}"><i class="fi-clipboard-notes"></i> kompletność danych POL-on</a></li>
<li><a href="{% url "ewaluacja_optymalizacja:index" %}"><i class="fi-target-two"></i> optymalizacja ewaluacji</a></li>
<li><a href="{% url "snapshot_odpiec:index" %}"><i class="fi-camera"></i> snapshoty odpięć</a></li>
<li><a href="{% url "oswiadczenia:wydruk-2022-25" %}"><i class="fi-print"></i> wydruk oświadczeń 2022-25</a></li>
Expand Down
6 changes: 6 additions & 0 deletions src/django_bpp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,12 @@ def protected_media_serve(request, path, document_root=None):
"ewaluacja_metryki.urls",
),
),
path(
"kompletnosc_polon/",
include(
"kompletnosc_polon.urls",
),
),
path(
"ewaluacja_optymalizacja/",
include(
Expand Down
29 changes: 29 additions & 0 deletions src/ewaluacja_common/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,32 @@
# od uśpionej apki ``ewaluacja2021`` (patrz ``ewaluacja2021/README.md``).
ROK_MIN = 2022
ROK_MAX = 2026

# Okno lat raportu kompletności danych POL-on, jako para
# (pierwszy rok, ostatni rok). Okno otwiera się w 2026 r., a jego górna
# granica jest **z rozmysłem nieustalona** — stąd ``None``.
#
# ``None`` NIE jest przeoczeniem ani „brakiem czasu, żeby wpisać rok”.
# W chwili pisania tego kodu MEiN nie ogłosił, czy nowy okres ewaluacyjny
# trwa cztery czy pięć lat. Wpisanie tu zgadniętego roku (np. 2029) znaczyło
# by, że w pierwszym roku poza zgadniętym zakresem raport po cichu przestanie
# pokazywać nowe rekordy — najgorszy możliwy tryb awarii dla raportu
# o brakach, bo wygląda dokładnie jak „wszystko w porządku”. ``None`` czyta
# się jako „od 2026 wzwyż, granicy jeszcze nie znamy”: selektory nie nakładają
# wtedy górnego odcięcia, a interfejs pokazuje „od 2026”, nie zmyśloną datę.
#
# Gdy zasady zostaną ogłoszone, domknięcie okna to zmiana jednej liczby:
# ``OKNO_EWALUACJI = (2026, <ostatni rok>)``. Kod obsługuje oba warianty
# (patrz ``kompletnosc_polon.selektory._zawez`` i
# ``kompletnosc_polon.views.mixins.opis_okna``) i ma na oba testy.
#
# To okno jest **prywatnym ustawieniem raportu POL-on** (``kompletnosc_polon``,
# FD#437) — raport pyta o braki wyłącznie w rekordach z tego zakresu lat.
# Celowo NIE jest tym samym, co ``ROK_MIN``/``ROK_MAX`` powyżej ani co
# domyślne argumenty ``rok_min``/``rok_max`` w ``ewaluacja_metryki``
# (czyli domyślny okres metryk i liczby N). To dwa różne zegary: tu chodzi
# o obowiązek sprawozdawczy z rozporządzenia o danych w POL-on (jakie dane
# muszą być kompletne), tam — o okres, za który liczy się punktację, sloty
# i liczbę N. Ujednolicenie ich zmieniłoby wyniki liczenia metryk, więc idzie
# osobnym zgłoszeniem. Nowy kod raportu POL-on ma używać ``OKNO_EWALUACJI``.
OKNO_EWALUACJI = (2026, None)
Empty file.
7 changes: 7 additions & 0 deletions src/kompletnosc_polon/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.apps import AppConfig


class KompletnoscPolonConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "kompletnosc_polon"
verbose_name = "Kompletność danych POL-on"
53 changes: 53 additions & 0 deletions src/kompletnosc_polon/const.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""Stałe słownikowe raportu kompletności danych POL-on.

Rozporządzenie MNiSW z dnia 16 czerwca 2026 r. w sprawie danych przetwarzanych
w ZSIoSW POL-on (Dz. U. 2026 poz. 811) określa w § 2 ust. 10 zakres danych
o osiągnięciach naukowych wprowadzanych do wykazu pracowników.
"""

from django.db import models


class Osiagniecie(models.TextChoices):
"""Typ osiągnięcia naukowego w rozumieniu § 2 ust. 10 rozporządzenia.

Każdy wariant odwzorowuje jeden punkt ustępu i jeden model BPP:

* ``ARTYKUL`` — pkt 4, ``bpp.Wydawnictwo_Ciagle``,
* ``MONOGRAFIA`` — pkt 5, ``bpp.Wydawnictwo_Zwarte`` o charakterze
slotów „książka” (``bpp.const.CHARAKTER_SLOTY_KSIAZKA``),
* ``ROZDZIAL`` — pkt 6, ``bpp.Wydawnictwo_Zwarte`` o charakterze slotów
„rozdział” (``bpp.const.CHARAKTER_SLOTY_ROZDZIAL``),
* ``PATENT`` — pkt 1, ``bpp.Patent``.

Osiągnięcia artystyczne (pkt 7), wzory użytkowe (pkt 2) i odmiany roślin
(pkt 3) nie mają w BPP modelu ani charakteru formalnego, więc raport ich
nie obejmuje — nie da się zgłosić braku danej, dla której nie istnieje
miejsce zapisu.
"""

ARTYKUL = "ART", "Artykuł naukowy"
MONOGRAFIA = "MON", "Monografia naukowa"
ROZDZIAL = "ROZ", "Rozdział w monografii naukowej"
PATENT = "PAT", "Patent"


class Waga(models.TextChoices):
"""Kategoria wymogu — czy rozporządzenie żąda danej bezwarunkowo.

``WYMAGANE`` to wymóg bezwarunkowy; brak danej jest błędem, który trzeba
uzupełnić. ``WARUNKOWE`` odwzorowuje zwroty „jeżeli posiada”, „jeżeli są
znane”, „o ile został nadany” — braki tej kategorii raport pokazuje
osobno i nie wlicza do licznika braków krytycznych.
"""

WYMAGANE = "W", "Wymagane"
WARUNKOWE = "C", "Warunkowe"


#: Skrót pozycji słownika ``bpp.Czas_Udostepnienia_OpenAccess`` oznaczającej
#: udostępnienie utworu *po* opublikowaniu. Tylko dla tej wartości ma sens
#: pytanie o liczbę miesięcy karencji (patrz reguły ``*_OA_MIESIACE``).
#: Wartość pochodzi z fixture instalacyjnego ``bpp.fixtures.DANE_OPEN_ACCESS``
#: i jest tożsama ze słownikiem PBN (``releaseDateMode``).
OA_CZAS_PO_OPUBLIKOWANIU = "AFTER_PUBLICATION"
Loading