fix: clarify council publication counters and sources
This commit is contained in:
1 parent
ec9a03fcf2
commit
2e48292a32
7 files changed
+20
-15
No files matched your search
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## 0.16.3
|
||||
|
||||
- Уточнены описание страницы совета и пояснения к источникам данных, предварительным счётчикам, подтверждённым работам и подбору по специальности.
|
||||
|
||||
## 0.16.2
|
||||
|
||||
- Страница совета и XLSX настроены на технические науки и пятилетний период относительно текущей даты. Убраны дата ходатайства, сведения о монографиях и связанные причины проверки.
|
||||
|
||||
@@ -155,7 +155,7 @@ node --check app/static/admin.js
|
||||
|
||||
Тесты с данными используют временную SQLite; отдельные API smoke-тесты запускают приложение с его текущей конфигурацией. Браузерная проверка: `pip install playwright`, `python -m playwright install chromium`, затем `python tests/browser_admin.py`. Она проверяет реальный рендеринг страниц, клавиатуру, диалог, фильтры и восстановление прогресса после ошибки. Скриншоты сохраняются во временную папку; путь выводится в конце.
|
||||
|
||||
Версия сервиса: `0.16.2`. Админка всегда показывает версии backend и frontend в footer.
|
||||
Версия сервиса: `0.16.3`. Админка всегда показывает версии backend и frontend в footer.
|
||||
|
||||
## Разовый импорт публикаций
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<header class="council__hero">
|
||||
<div class="council__hero-copy">
|
||||
<h2 class="council__title" id="council-title">Диссертационный совет</h2>
|
||||
<p class="council__intro">Проверка публикационных критериев пунктов 5–6 по техническим наукам для докторов, кандидатов наук и PhD. Показаны обнаруженные степени, предварительные сведения и отдельно подтверждённые работы. Соответствие этим критериям не означает автоматического включения в совет.</p>
|
||||
<p class="council__intro">Подбор сотрудников в диссертационный совет по техническим наукам. Публикации за последние пять лет сопоставляются с данными о квартилях и категориях журналов. Минимум — 9 работ для доктора наук и 20 для кандидата наук или PhD. Предварительный подсчёт и подтверждённые работы показаны отдельно.</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
{% else %}
|
||||
{% if catalog_issues %}<div class="council__message" role="alert"><p>{{ catalog_issues|join('; ') }}. Повреждённые сведения не используются для зачёта.</p></div>{% endif %}
|
||||
<details class="council__notice">
|
||||
<summary><strong>Как читать счётчики и критерии</strong></summary>
|
||||
<p>Предварительные Q1/Q2 включают отметки CSV, применимые снимки каталогов и отдельные подтверждения. Предварительные К1/К2 включают совпадения журнала со справочником ВАК. ВСЕГО — объединение Q1/Q2/К1/RSCI и К2 для доктора наук. Работа учитывается один раз. Подтверждённое число требует самостоятельных доказательств применимости основания к этой работе.</p>
|
||||
<p>Период {{ start.strftime('%d.%m.%Y') }} — {{ end.strftime('%d.%m.%Y') }} относительно текущей даты. Подтверждённый итог требует документального подтверждения высшей степени и работ с проверенными типом, периодом и допустимым основанием. Пограничные даты и годы, неизвестные типы и исторические категории требуют проверки. Предварительные числа сами по себе не подтверждают соответствие порогу. К2 допустим самостоятельно только для доктора наук; РИНЦ не заменяет RSCI.</p>
|
||||
<p>Q1/Q2-каталоги — ограниченные тематические подборки со снимком метрик 2025 года. Они не подтверждают другие годы и текущую индексацию. Данные основаны на открытых копиях таблиц Scopus/JCR. Аналитическая связь журнала со специальностью не подтверждает содержание конкретной статьи. Порог и тематическое рассмотрение показываются отдельно.</p>
|
||||
<p>«В БД» и «Все публикации» показывают количество работ за все годы, независимо от категорий. Общий перечень объединяет CSV и БД без дублей. Наличие публикаций не подтверждает соответствие всем требованиям совета.</p>
|
||||
<p>При выборе специальности показаны сотрудники с хотя бы одной учитываемой за пять лет публикацией в журнале К1, которому эта специальность присвоена в «ВАК Перечень.pdf» на 15.09.2026. Это соответствие по журналу; содержание статьи и исторический перечень специальностей на дату публикации не проверяются.</p>
|
||||
<summary><strong>Как рассчитываются показатели</strong></summary>
|
||||
<p>Период оценки: {{ start.strftime('%d.%m.%Y') }} — {{ end.strftime('%d.%m.%Y') }}, последние пять лет относительно текущей даты Москвы. Для доктора наук применяется минимум 9 публикаций по пункту 5, для кандидата наук или PhD — 20 по пункту 6. Используется высшая обнаруженная степень; её документальное подтверждение проверяется отдельно.</p>
|
||||
<p>Q1, Q2, К1, К2 и RSCI — предварительные показатели. Квартили определяются по отметкам CSV, применимым данным каталогов и проверенным основаниям; категории К1/К2 — по сопоставлению журнала со справочниками ВАК. RSCI учитывается при наличии отдельной записи об этом основании; отметка РИНЦ сама по себе его не подтверждает. Сведения из профиля сотрудника дополняются внешними источниками.</p>
|
||||
<p>ВСЕГО — число уникальных работ с основаниями Q1/Q2/К1/RSCI; для доктора наук учитывается также К2. Пересечения между основаниями не увеличивают итог. Для кандидата наук или PhD одной категории К2 недостаточно. Известные другие виды материалов не входят в этот подсчёт без отдельного подтверждения их допустимости.</p>
|
||||
<p>«Подтверждено» — работы с проверенными видом материала, периодом и допустимым основанием. Для пограничных лет нужно уточнить дату публикации; текущая категория журнала не подтверждает его категорию в год выхода работы. «Требует проверки» означает, что для вывода не хватает подтверждений: например, степени, даты или основания зачёта работы. Это не означает, что у сотрудника нет нужных публикаций. Соответствие публикационному минимуму не означает автоматического включения в совет.</p>
|
||||
<p>Фильтр «Специальность ВАК» подбирает сотрудников с хотя бы одной публикацией за пять лет в подходящем журнале К1. Связь определяется по журналу из Перечня ВАК на 15.09.2026, а не по содержанию статьи. Квартильные каталоги содержат ограниченные подборки и метрики 2025 года; они не подтверждают другие годы или текущую индексацию. Аналитическая связь журнала со специальностью и отдельное рассмотрение статьи показаны в публикациях.</p>
|
||||
<p>«В БД» — количество сохранённых публикаций сотрудника за все годы. «Все публикации» — общий перечень из БД и CSV без дублей, также за все годы и независимо от категории. При совпадении ФИО нескольких сотрудников записи CSV не присваиваются автоматически. XLSX содержит всех найденных сотрудников и их публикации, включая другие страницы списка.</p>
|
||||
</details>
|
||||
|
||||
<form class="council__search" method="get" action="/admin/council" role="search">
|
||||
|
||||
+3
-3
@@ -1,3 +1,3 @@
|
||||
APP_VERSION = "0.16.2"
|
||||
FRONTEND_VERSION = "0.16.2"
|
||||
BACKEND_VERSION = "0.16.2"
|
||||
APP_VERSION = "0.16.3"
|
||||
FRONTEND_VERSION = "0.16.3"
|
||||
BACKEND_VERSION = "0.16.3"
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "miem-workers"
|
||||
version = "0.16.2"
|
||||
version = "0.16.3"
|
||||
description = "MIEM employees parser, admin API, and web admin"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ def test_health_returns_versions():
|
||||
response = TestClient(app).get("/api/health")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()["backend_version"] == "0.16.2"
|
||||
assert response.json()["backend_version"] == "0.16.3"
|
||||
|
||||
|
||||
def test_api_employees_and_stats_require_admin_session():
|
||||
|
||||
@@ -212,13 +212,13 @@ def test_public_page_data_minimization_and_safe_links(db_session, export):
|
||||
response = client.get("/admin/council", follow_redirects=False)
|
||||
assert response.status_code == 200
|
||||
assert "Иванов Иван Иванович" in response.text and "Доктор технических наук" in response.text
|
||||
assert "Подтверждённый итог требует документального подтверждения высшей степени" in response.text
|
||||
assert "Используется высшая обнаруженная степень; её документальное подтверждение проверяется отдельно." in response.text
|
||||
assert "CSV по критериям" not in response.text and "ВСЕГО" in response.text and "Все публикации" in response.text
|
||||
assert "Книга" in response.text and "Тип не указан" in response.text
|
||||
assert "<script>" in response.text and "<script>" not in response.text
|
||||
assert "javascript:" not in response.text and "private@example.org" not in response.text
|
||||
assert "/admin/employees/" not in response.text and "/admin/logout" not in response.text
|
||||
assert "Backend 0.16.2 · Frontend 0.16.2" in response.text
|
||||
assert "Backend 0.16.3 · Frontend 0.16.3" in response.text
|
||||
assert "Вход в админку" in response.text
|
||||
assert client.get("/admin/directory", follow_redirects=False).status_code in (302, 303, 401, 403)
|
||||
assert "Сотрудники не найдены" in client.get("/admin/council?q=missing").text
|
||||
|
||||
Reference in new issue
Block a user