Страница диссовета позволяет исправлять название статьи, её журнал, квартиль и связь журнала со специальностями из одного редактора. Карточка li.council__article показывает боковую иконку по клику или с клавиатуры; она открывает попап. Кнопка «Статьи, журналы и квартили» открывает отдельную вкладку с совместными фильтрами по ФИО, названию статьи и журнала.
Ручная связь со специальностями заменяет справочную для всех статей выбранного журнала независимо от года. Можно выбрать несколько специальностей, исключить связь пустым списком или вернуть справочники. Она учитывается в подборе сотрудников и XLSX и не заменяет рассмотрение содержания каждой статьи. Изменение только специальностей не сбрасывает проверенное квартильное основание.
Добавлен выбор отрасли оценки с применением существующих порогов: например, для доктора технические — 9, физико-математические — 11; для кандидата/PhD — 20. Выбор сохраняется при пагинации, сбросе поиска и XLSX. Пороги вынесены в пояснения над списком, отдельные поля «Пункт» и «Минимум» убраны из карточки сотрудника.
XLSX теперь содержит только согласованные столбцы. «Сотрудники»: №, ФИО, Научная степень (текущая выбранная степень), Q1, Q2, К1, К2, Всего, Всего из ЛК, Общее количество всех публикаций без дублей, Специальности ВАК, Профиль ВШЭ. «Публикации»: №, ФИО, Название, Год, Тип материала, Критерии, Q1, Q2, К1, К2, RSCI, Специальность ВАК, DOI, Ссылка на сайт. Экспортный «Всего» считает уникальные работы Q1 ИЛИ Q2 ИЛИ К1: самостоятельные К2/RSCI в него не добавляются. Счётчики за все годы сохранены. Отсутствующий тип — «не указан»; положительные сообщения о периоде объединены в «В пределах пяти лет». «Параметры» описывают фактические столбцы, отличие экспортного итога от сайта и текущий календарный период; пояснения удалённых столбцов убраны. Сохранены фильтры Excel, закрепление заголовков, переносы строк, защита от формул и проверки ограничений ячеек.
Исправлено замечание P2 независимого ревью: автоматические основания из employee_publications.quartiles передаются подробными записями с исходными category, metric, metric_year, source и source_url, а не восстанавливаются из подписей Scopus Q1/Q2. Общий отбор применимых записей сохраняет проверки DOI, журнала/ISSN и года публикации/метрики. Для подготовленной CSV без детальных метаданных сохраняется прежнее основание из доступной подписи. Ключ конфликта учитывает также метрику: разные категории или разные метрики не создают ложного конфликта; противоречие внутри одной системы/категории/метрики/года остаётся причиной проверки. Новые регрессионные тесты проходят полный путь _database_article → _unique_articles → council_candidates и проверяют сохранение метаданных и источника, один подтверждённый зачёт для разных категорий и отказ при настоящем противоречии.
По согласованному продуктовому правилу период состоит из пяти календарных лет, ��ключая текущий год Москвы: в 2026 году — 2022–2026. День и месяц публикации не влияют на зачёт. Разные дни одного года не создают конфликт; разные годы источников требуют проверки. Статья с известным видом материала, журналом и применимым к её году квартилем Q1/Q2 из источника автоматически входит в «Подтверждено», если период соблюдён и нет конфликтов. Отдельная ручная запись подтверждения известных вида и квартиля больше не требуется. Неизвестный вид, квартиль другого года или ручная замена квартиля/журнала без источника не дают автоматического зачёта. Подтверждение степени и тематическое рассмотрение остаются отдельными проверками.
Повторяющиеся сообщения объединяются до отображения; сообщение о календарном периоде выводится один раз. Без выбранной специальности не выводится повторяемое уведомление о её отсутствии. Страница и XLSX используют общий расчёт.
Сохранение требует существующего входа администратора, проверяет поля и защищено от межсайтовых отправок и перезаписи устаревшей вкладкой. Правки отделены от парсера и исходной выгрузки, в council_corrections. Квартиль применяется к журналу за год статьи, включая остальные статьи этого журнала за тот же год; при неизвестном/неоднозначном годе квартиль недоступен. Общая ревизия ручных правок требует обновить устаревший редактор после другого сохранения. Привязка статьи использует исходный DOI либо название и год; при изменении исходной идентичности привязку нужно проверить.
Версия frontend/backend: 1.0.1. Набор и порядок столбцов XLSX изменены несовместимо с прежними шаблонами. Таблица создаётся при штатном запуске; migrations/012_council_corrections.sql доступна для ручного добавления схемы. Для специальностей дополнительная миграция не нужна. Перед обновлением рабочей БД рекомендуется штатная резервная копия; производственные БД и сервисы в этой сессии не изменялись. Зависимости не добавлены, посторонние локальные изменения сохранены вне коммитов.
Проверки текущего исправления: полный pytest — 372 passed, 10 skipped (PostgreSQL integration без тестовой БД). Три новых регрессионных случая воспроизводили ошибку до исправления и проходят после него. node --check для admin.js/council.js, sh -n для скриптов резервного копирования и git diff --cached --check — passed. Браузерные проверки на этом коммите не повторялись; успешные проверки редактора и XLSX описаны в предыдущих коммитах. Новых зависимостей, миграций и изменений production нет.
Готово к независимому ревью в отдельной сессии. Changelog оставлен до предусмотренного шага после ревью. Слияние и развёртывание не выполняются.
Страница диссовета позволяет исправлять название статьи, её журнал, квартиль и связь журнала со специальностями из одного редактора. Карточка li.council__article показывает боковую иконку по клику или с клавиатуры; она открывает попап. Кнопка «Статьи, журналы и квартили» открывает отдельную вкладку с совместными фильтрами по ФИО, названию статьи и журнала.
Ручная связь со специальностями заменяет справочную для всех статей выбранного журнала независимо от года. Можно выбрать несколько специальностей, исключить связь пустым списком или вернуть справочники. Она учитывается в подборе сотрудников и XLSX и не заменяет рассмотрение содержания каждой статьи. Изменение только специальностей не сбрасывает проверенное квартильное основание.
Добавлен выбор отрасли оценки с применением существующих порогов: например, для доктора технические — 9, физико-математические — 11; для кандидата/PhD — 20. Выбор сохраняется при пагинации, сбросе поиска и XLSX. Пороги вынесены в пояснения над списком, отдельные поля «Пункт» и «Минимум» убраны из карточки сотрудника.
XLSX теперь содержит только согласованные столбцы. «Сотрудники»: №, ФИО, Научная степень (текущая выбранная степень), Q1, Q2, К1, К2, Всего, Всего из ЛК, Общее количество всех публикаций без дублей, Специальности ВАК, Профиль ВШЭ. «Публикации»: №, ФИО, Название, Год, Тип материала, Критерии, Q1, Q2, К1, К2, RSCI, Специальность ВАК, DOI, Ссылка на сайт. Экспортный «Всего» считает уникальные работы Q1 ИЛИ Q2 ИЛИ К1: самостоятельные К2/RSCI в него не добавляются. Счётчики за все годы сохранены. Отсутствующий тип — «не указан»; положительные сообщения о периоде объединены в «В пределах пяти лет». «Параметры» описывают фактические столбцы, отличие экспортного итога от сайта и текущий календарный период; пояснения удалённых столбцов убраны. Сохранены фильтры Excel, закрепление заголовков, переносы строк, защита от формул и проверки ограничений ячеек.
Исправлено замечание P2 независимого ревью: автоматические основания из employee_publications.quartiles передаются подробными записями с исходными category, metric, metric_year, source и source_url, а не восстанавливаются из подписей Scopus Q1/Q2. Общий отбор применимых записей сохраняет проверки DOI, журнала/ISSN и года публикации/метрики. Для подготовленной CSV без детальных метаданных сохраняется прежнее основание из доступной подписи. Ключ конфликта учитывает также метрику: разные категории или разные метрики не создают ложного конфликта; противоречие внутри одной системы/категории/метрики/года остаётся причиной проверки. Новые регрессионные тесты проходят полный путь _database_article → _unique_articles → council_candidates и проверяют сохранение метаданных и источника, один подтверждённый зачёт для разных категорий и отказ при настоящем противоречии.
По согласованному продуктовому правилу период состоит из пяти календарных лет, ��ключая текущий год Москвы: в 2026 году — 2022–2026. День и месяц публикации не влияют на зачёт. Разные дни одного года не создают конфликт; разные годы источников требуют проверки. Статья с известным видом материала, журналом и применимым к её году квартилем Q1/Q2 из источника автоматически входит в «Подтверждено», если период соблюдён и нет конфликтов. Отдельная ручная запись подтверждения известных вида и квартиля больше не требуется. Неизвестный вид, квартиль другого года или ручная замена квартиля/журнала без источника не дают автоматического зачёта. Подтверждение степени и тематическое рассмотрение остаются отдельными проверками.
Повторяющиеся сообщения объединяются до отображения; сообщение о календарном периоде выводится один раз. Без выбранной специальности не выводится повторяемое уведомление о её отсутствии. Страница и XLSX используют общий расчёт.
Сохранение требует существующего входа администратора, проверяет поля и защищено от межсайтовых отправок и перезаписи устаревшей вкладкой. Правки отделены от парсера и исходной выгрузки, в council_corrections. Квартиль применяется к журналу за год статьи, включая остальные статьи этого журнала за тот же год; при неизвестном/неоднозначном годе квартиль недоступен. Общая ревизия ручных правок требует обновить устаревший редактор после другого сохранения. Привязка статьи использует исходный DOI либо название и год; при изменении исходной идентичности привязку нужно проверить.
Версия frontend/backend: 1.0.1. Набор и порядок столбцов XLSX изменены несовместимо с прежними шаблонами. Таблица создаётся при штатном запуске; migrations/012_council_corrections.sql доступна для ручного добавления схемы. Для специальностей дополнительная миграция не нужна. Перед обновлением рабочей БД рекомендуется штатная резервная копия; производственные БД и сервисы в этой сессии не изменялись. Зависимости не добавлены, посторонние локальные изменения сохранены вне коммитов.
Проверки текущего исправления: полный pytest — 372 passed, 10 skipped (PostgreSQL integration без тестовой БД). Три новых регрессионных случая воспроизводили ошибку до исправления и проходят после него. node --check для admin.js/council.js, sh -n для скриптов резервного копирования и git diff --cached --check — passed. Браузерные проверки на этом коммите не повторялись; успешные проверки редактора и XLSX описаны в предыдущих коммитах. Новых зависимостей, миграций и изменений production нет.
Готово к независимому ревью в отдельной сессии. Changelog оставлен до предусмотренного шага после ревью. Слияние и развёртывание не выполняются.
codex
changed title from Редактирование статей, журналов и квартилей на странице диссовета to Редактор статей и специальностей журналов, отрасль оценки и автоматический зачёт Q1/Q22026-10-09 09:44:54 +00:00
codex
changed title from Редактор статей и специальностей журналов, отрасль оценки и автоматический зачёт Q1/Q2 to Редактор публикаций диссовета, настройка оценки и компактный XLSX2026-10-09 10:05:31 +00:00
Независимое ревью HEAD f4fb966b78: найдено замечание P2 к автоматическому зачёту публикаций с несколькими предметными категориями. Подробности в комментарии к council.py.
Воспроизведение на текущих функциях PR: известная статья ARTICLE за 2024 год, один журнал и согласованный DOI; поле quartiles содержит Scopus/CiteScore 2024, Q1 в Analysis и Q2 в Applied Mathematics. Q1/Q2 равны 1/1, но confirmed_count=0 с сообщением «Подтверждённые основания источников расходятся». После удаления только второй категории confirmed_count=1. Причина — превращение подробных записей квартилей в подписи и создание автоматических оснований без категории/метрики/года метрики; разные категории ошибочно попадают в один ключ конфликта.
Проверены расчёт и автоматические основания, сохранение ручных правок, авторизация и защита POST от межсайтовых форм, контроль ревизии, JS/шаблоны редактора, схема новой таблицы, компактный экспорт и тесты. Изолированные проверки функций в памяти прошли для календарных границ 2021/2022/2026/2027, известного/неизвестного вида материала и отказа автоматического зачёта ручного квартиля без источника. Сам assess_article при сохранённых категориях корректно принимает разные категории и отклоняет противоречие внутри одной категории. git diff --check — успешно. Несовместимый формат XLSX сопровождается повышением версий до 1.0.0.
Ограничения: CI текущего SHA пока pending (Waiting to run), успешный запуск ещё не подтверждён. Полный pytest и браузерные проверки локально не выполнялись: pytest, SQLAlchemy и openpyxl отсутствуют; сценарии воспроизведения использовали код PR в памяти с изолированными входами без записи файлов и доступа к реальной БД. Новые тесты автоматического зачёта не покрывают выявленное сочетание Q1/Q2 одной системы в разных категориях. Продуктовое правило календарного периода рассмотрено как явно заявленное изменение; нормативный первоисточник не проверялся.
Origin сверён с репозиторием PR: admin/miem_workers. Reviewer agent (id=7) независим от автора PR codex (id=6); три Git-коммита authored/committed codex. HEAD перед публикацией не изменился. Правки, push, создание PR, миграции и операции с production не выполнялись.
Независимое ревью HEAD f4fb966b78910b2421c356f856b04629a56b59dc: найдено замечание P2 к автоматическому зачёту публикаций с несколькими предметными категориями. Подробности в комментарии к council.py.
Воспроизведение на текущих функциях PR: известная статья ARTICLE за 2024 год, один журнал и согласованный DOI; поле quartiles содержит Scopus/CiteScore 2024, Q1 в Analysis и Q2 в Applied Mathematics. Q1/Q2 равны 1/1, но confirmed_count=0 с сообщением «Подтверждённые основания источников расходятся». После удаления только второй категории confirmed_count=1. Причина — превращение подробных записей квартилей в подписи и создание автоматических оснований без категории/метрики/года метрики; разные категории ошибочно попадают в один ключ конфликта.
Проверены расчёт и автоматические основания, сохранение ручных правок, авторизация и защита POST от межсайтовых форм, контроль ревизии, JS/шаблоны редактора, схема новой таблицы, компактный экспорт и тесты. Изолированные проверки функций в памяти прошли для календарных границ 2021/2022/2026/2027, известного/неизвестного вида материала и отказа автоматического зачёта ручного квартиля без источника. Сам assess_article при сохранённых категориях корректно принимает разные категории и отклоняет противоречие внутри одной категории. git diff --check — успешно. Несовместимый формат XLSX сопровождается повышением версий до 1.0.0.
Ограничения: CI текущего SHA пока pending (Waiting to run), успешный запуск ещё не подтверждён. Полный pytest и браузерные проверки локально не выполнялись: pytest, SQLAlchemy и openpyxl отсутствуют; сценарии воспроизведения использовали код PR в памяти с изолированными входами без записи файлов и доступа к реальной БД. Новые тесты автоматического зачёта не покрывают выявленное сочетание Q1/Q2 одной системы в разных категориях. Продуктовое правило календарного периода рассмотрено как явно заявленное изменение; нормативный первоисточник не проверялся.
Origin сверён с репозиторием PR: admin/miem_workers. Reviewer agent (id=7) независим от автора PR codex (id=6); три Git-коммита authored/committed codex. HEAD перед публикацией не изменился. Правки, push, создание PR, миграции и операции с production не выполнялись.
[P2] Сохраните предметную категорию и метрику при создании автоматического основания. Здесь основания строятся из строк вида 'Scopus Q1'/'Scopus Q2', хотя quartiles.entries хранит category, metric и metric_year. Для статьи с CiteScore 2024 Q1 в Analysis и Q2 в Applied Mathematics получаются два основания с одинаковым ключом (Scopus, None, None, 2024). assess_article считает их конфликтом и исключает работу из «Подтверждено». Воспроизведено через _database_article → _unique_articles → council_candidates: q1_count=q2_count=1, confirmed_count=0; с одной категорией confirmed_count=1. Разные квартили в разных предметных категориях допустимы, и PR №66 специально сохраняет их отдельно. Передавайте в расчёт подробные применимые записи из quartiles.entries с собственной категорией, метрикой, годом метрики и источником, сохранив проверку идентичности. Не решайте это отключением проверки конфликтов. Нужны регрессионные тесты: разные категории одной системы Q1/Q2 дают один подтверждённый зачёт, а противоречие в одной системе/категории/метрике/году остаётся причиной проверки.
[P2] Сохраните предметную категорию и метрику при создании автоматического основания. Здесь основания строятся из строк вида 'Scopus Q1'/'Scopus Q2', хотя quartiles.entries хранит category, metric и metric_year. Для статьи с CiteScore 2024 Q1 в Analysis и Q2 в Applied Mathematics получаются два основания с одинаковым ключом (Scopus, None, None, 2024). assess_article считает их конфликтом и исключает работу из «Подтверждено». Воспроизведено через _database_article → _unique_articles → council_candidates: q1_count=q2_count=1, confirmed_count=0; с одной категорией confirmed_count=1. Разные квартили в разных предметных категориях допустимы, и PR №66 специально сохраняет их отдельно. Передавайте в расчёт подробные применимые записи из quartiles.entries с собственной категорией, метрикой, годом метрики и источником, сохранив проверку идентичности. Не решайте это отключением проверки конфликтов. Нужны регрессионные тесты: разные категории одной системы Q1/Q2 дают один подтверждённый зачёт, а противоречие в одной системе/категории/метрике/году остаётся причиной проверки.
Повторное независимое ревью HEAD c58bb8d626: замечание P2 из review #174 устранено. В исправлении новых блокирующих замечаний нет.
Применимые подробные quartiles.entries теперь проходят через _database_article и _unique_articles в автоматические основания с сохранением category, metric, metric_year, source и source_url. Проверка конфликтов включает метрику: разные категории либо метрики не превращаются в противоречие, а разные квартили одного сочетания система/категория/метрика/год по-прежнему исключают зачёт. Подписи Q1/Q2 для счётчиков отделены от подробных оснований. Обратная совместимость с подготовленным CSV сохранена. Ручная смена журнала не возвращает прежние подробные основания в автоматический зачёт.
Проверен весь diff после f4fb966 и добавленные регрессионные тесты. Воспроизведение на текущих функциях PR в памяти с изолированными входами: Q1 Analysis и Q2 Applied Mathematics одной системы/метрики дают q1_count=q2_count=total_count=confirmed_count=1; Q1/Q2 в одной категории и метрике дают confirmed_count=0 с причиной конфликта; разные метрики одной категории допускаются. Поля категории/метрики/года/источника сохранены на всём пути. Дополнительно проверены исключение источников после ручной смены журнала, конфликт DOI и метрика другого года. Все сценарии прошли. git diff --check — успешно; версии backend/frontend повышены до 1.0.1.
CI / test (pull_request) текущего SHA — success (9m30s), production diagnostics штатно skipped. Полный pytest и браузерные проверки локально не запускались из-за отсутствия зависимостей; изолированная проверка не обращалась к реальной БД и внешним источникам.
Origin и независимость аккаунта повторно проверены: admin/miem_workers, reviewer agent (id=7), автор PR codex (id=6); новый Git-коммит authored/committed codex. HEAD непосредственно перед публикацией сверён. Правки, push, merge, миграции и операции с production не выполнялись.
Повторное независимое ревью HEAD c58bb8d6265b3b23f61adbe0fa2a485591bc4191: замечание P2 из review #174 устранено. В исправлении новых блокирующих замечаний нет.
Применимые подробные quartiles.entries теперь проходят через _database_article и _unique_articles в автоматические основания с сохранением category, metric, metric_year, source и source_url. Проверка конфликтов включает метрику: разные категории либо метрики не превращаются в противоречие, а разные квартили одного сочетания система/категория/метрика/год по-прежнему исключают зачёт. Подписи Q1/Q2 для счётчиков отделены от подробных оснований. Обратная совместимость с подготовленным CSV сохранена. Ручная смена журнала не возвращает прежние подробные основания в автоматический зачёт.
Проверен весь diff после f4fb966 и добавленные регрессионные тесты. Воспроизведение на текущих функциях PR в памяти с изолированными входами: Q1 Analysis и Q2 Applied Mathematics одной системы/метрики дают q1_count=q2_count=total_count=confirmed_count=1; Q1/Q2 в одной категории и метрике дают confirmed_count=0 с причиной конфликта; разные метрики одной категории допускаются. Поля категории/метрики/года/источника сохранены на всём пути. Дополнительно проверены исключение источников после ручной смены журнала, конфликт DOI и метрика другого года. Все сценарии прошли. git diff --check — успешно; версии backend/frontend повышены до 1.0.1.
CI / test (pull_request) текущего SHA — success (9m30s), production diagnostics штатно skipped. Полный pytest и браузерные проверки локально не запускались из-за отсутствия зависимостей; изолированная проверка не обращалась к реальной БД и внешним источникам.
Origin и независимость аккаунта повторно проверены: admin/miem_workers, reviewer agent (id=7), автор PR codex (id=6); новый Git-коммит authored/committed codex. HEAD непосредственно перед публикацией сверён. Правки, push, merge, миграции и операции с production не выполнялись.
admin
merged commit 2554cbf39a into main2026-10-09 11:50:52 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Страница диссовета позволяет исправлять название статьи, её журнал, квартиль и связь журнала со специальностями из одного редактора. Карточка li.council__article показывает боковую иконку по клику или с клавиатуры; она открывает попап. Кнопка «Статьи, журналы и квартили» открывает отдельную вкладку с совместными фильтрами по ФИО, названию статьи и журнала.
Ручная связь со специальностями заменяет справочную для всех статей выбранного журнала независимо от года. Можно выбрать несколько специальностей, исключить связь пустым списком или вернуть справочники. Она учитывается в подборе сотрудников и XLSX и не заменяет рассмотрение содержания каждой статьи. Изменение только специальностей не сбрасывает проверенное квартильное основание.
Добавлен выбор отрасли оценки с применением существующих порогов: например, для доктора технические — 9, физико-математические — 11; для кандидата/PhD — 20. Выбор сохраняется при пагинации, сбросе поиска и XLSX. Пороги вынесены в пояснения над списком, отдельные поля «Пункт» и «Минимум» убраны из карточки сотрудника.
XLSX теперь содержит только согласованные столбцы. «Сотрудники»: №, ФИО, Научная степень (текущая выбранная степень), Q1, Q2, К1, К2, Всего, Всего из ЛК, Общее количество всех публикаций без дублей, Специальности ВАК, Профиль ВШЭ. «Публикации»: №, ФИО, Название, Год, Тип материала, Критерии, Q1, Q2, К1, К2, RSCI, Специальность ВАК, DOI, Ссылка на сайт. Экспортный «Всего» считает уникальные работы Q1 ИЛИ Q2 ИЛИ К1: самостоятельные К2/RSCI в него не добавляются. Счётчики за все годы сохранены. Отсутствующий тип — «не указан»; положительные сообщения о периоде объединены в «В пределах пяти лет». «Параметры» описывают фактические столбцы, отличие экспортного итога от сайта и текущий календарный период; пояснения удалённых столбцов убраны. Сохранены фильтры Excel, закрепление заголовков, переносы строк, защита от формул и проверки ограничений ячеек.
Исправлено замечание P2 независимого ревью: автоматические основания из employee_publications.quartiles передаются подробными записями с исходными category, metric, metric_year, source и source_url, а не восстанавливаются из подписей Scopus Q1/Q2. Общий отбор применимых записей сохраняет проверки DOI, журнала/ISSN и года публикации/метрики. Для подготовленной CSV без детальных метаданных сохраняется прежнее основание из доступной подписи. Ключ конфликта учитывает также метрику: разные категории или разные метрики не создают ложного конфликта; противоречие внутри одной системы/категории/метрики/года остаётся причиной проверки. Новые регрессионные тесты проходят полный путь _database_article → _unique_articles → council_candidates и проверяют сохранение метаданных и источника, один подтверждённый зачёт для разных категорий и отказ при настоящем противоречии.
По согласованному продуктовому правилу период состоит из пяти календарных лет, ��ключая текущий год Москвы: в 2026 году — 2022–2026. День и месяц публикации не влияют на зачёт. Разные дни одного года не создают конфликт; разные годы источников требуют проверки. Статья с известным видом материала, журналом и применимым к её году квартилем Q1/Q2 из источника автоматически входит в «Подтверждено», если период соблюдён и нет конфликтов. Отдельная ручная запись подтверждения известных вида и квартиля больше не требуется. Неизвестный вид, квартиль другого года или ручная замена квартиля/журнала без источника не дают автоматического зачёта. Подтверждение степени и тематическое рассмотрение остаются отдельными проверками.
Повторяющиеся сообщения объединяются до отображения; сообщение о календарном периоде выводится один раз. Без выбранной специальности не выводится повторяемое уведомление о её отсутствии. Страница и XLSX используют общий расчёт.
Сохранение требует существующего входа администратора, проверяет поля и защищено от межсайтовых отправок и перезаписи устаревшей вкладкой. Правки отделены от парсера и исходной выгрузки, в council_corrections. Квартиль применяется к журналу за год статьи, включая остальные статьи этого журнала за тот же год; при неизвестном/неоднозначном годе квартиль недоступен. Общая ревизия ручных правок требует обновить устаревший редактор после другого сохранения. Привязка статьи использует исходный DOI либо название и год; при изменении исходной идентичности привязку нужно проверить.
Версия frontend/backend: 1.0.1. Набор и порядок столбцов XLSX изменены несовместимо с прежними шаблонами. Таблица создаётся при штатном запуске; migrations/012_council_corrections.sql доступна для ручного добавления схемы. Для специальностей дополнительная миграция не нужна. Перед обновлением рабочей БД рекомендуется штатная резервная копия; производственные БД и сервисы в этой сессии не изменялись. Зависимости не добавлены, посторонние локальные изменения сохранены вне коммитов.
Проверки текущего исправления: полный pytest — 372 passed, 10 skipped (PostgreSQL integration без тестовой БД). Три новых регрессионных случая воспроизводили ошибку до исправления и проходят после него. node --check для admin.js/council.js, sh -n для скриптов резервного копирования и git diff --cached --check — passed. Браузерные проверки на этом коммите не повторялись; успешные проверки редактора и XLSX описаны в предыдущих коммитах. Новых зависимостей, миграций и изменений production нет.
Готово к независимому ревью в отдельной сессии. Changelog оставлен до предусмотренного шага после ревью. Слияние и развёртывание не выполняются.
Редактирование статей, журналов и квартилей на странице диссоветаto Редактор статей и специальностей журналов, отрасль оценки и автоматический зачёт Q1/Q2Редактор статей и специальностей журналов, отрасль оценки и автоматический зачёт Q1/Q2to Редактор публикаций диссовета, настройка оценки и компактный XLSXНезависимое ревью HEAD
f4fb966b78: найдено замечание P2 к автоматическому зачёту публикаций с несколькими предметными категориями. Подробности в комментарии к council.py.Воспроизведение на текущих функциях PR: известная статья ARTICLE за 2024 год, один журнал и согласованный DOI; поле quartiles содержит Scopus/CiteScore 2024, Q1 в Analysis и Q2 в Applied Mathematics. Q1/Q2 равны 1/1, но confirmed_count=0 с сообщением «Подтверждённые основания источников расходятся». После удаления только второй категории confirmed_count=1. Причина — превращение подробных записей квартилей в подписи и создание автоматических оснований без категории/метрики/года метрики; разные категории ошибочно попадают в один ключ конфликта.
Проверены расчёт и автоматические основания, сохранение ручных правок, авторизация и защита POST от межсайтовых форм, контроль ревизии, JS/шаблоны редактора, схема новой таблицы, компактный экспорт и тесты. Изолированные проверки функций в памяти прошли для календарных границ 2021/2022/2026/2027, известного/неизвестного вида материала и отказа автоматического зачёта ручного квартиля без источника. Сам assess_article при сохранённых категориях корректно принимает разные категории и отклоняет противоречие внутри одной категории. git diff --check — успешно. Несовместимый формат XLSX сопровождается повышением версий до 1.0.0.
Ограничения: CI текущего SHA пока pending (Waiting to run), успешный запуск ещё не подтверждён. Полный pytest и браузерные проверки локально не выполнялись: pytest, SQLAlchemy и openpyxl отсутствуют; сценарии воспроизведения использовали код PR в памяти с изолированными входами без записи файлов и доступа к реальной БД. Новые тесты автоматического зачёта не покрывают выявленное сочетание Q1/Q2 одной системы в разных категориях. Продуктовое правило календарного периода рассмотрено как явно заявленное изменение; нормативный первоисточник не проверялся.
Origin сверён с репозиторием PR: admin/miem_workers. Reviewer agent (id=7) независим от автора PR codex (id=6); три Git-коммита authored/committed codex. HEAD перед публикацией не изменился. Правки, push, создание PR, миграции и операции с production не выполнялись.
@@ -180,0 +198,4 @@continuefor label in item["quartiles"]:if label.endswith((" Q1", " Q2")):article["automatic_quartile_bases"].append({"basis": label[-2:], "system": label[:-3],[P2] Сохраните предметную категорию и метрику при создании автоматического основания. Здесь основания строятся из строк вида 'Scopus Q1'/'Scopus Q2', хотя quartiles.entries хранит category, metric и metric_year. Для статьи с CiteScore 2024 Q1 в Analysis и Q2 в Applied Mathematics получаются два основания с одинаковым ключом (Scopus, None, None, 2024). assess_article считает их конфликтом и исключает работу из «Подтверждено». Воспроизведено через _database_article → _unique_articles → council_candidates: q1_count=q2_count=1, confirmed_count=0; с одной категорией confirmed_count=1. Разные квартили в разных предметных категориях допустимы, и PR №66 специально сохраняет их отдельно. Передавайте в расчёт подробные применимые записи из quartiles.entries с собственной категорией, метрикой, годом метрики и источником, сохранив проверку идентичности. Не решайте это отключением проверки конфликтов. Нужны регрессионные тесты: разные категории одной системы Q1/Q2 дают один подтверждённый зачёт, а противоречие в одной системе/категории/метрике/году остаётся причиной проверки.
Повторное независимое ревью HEAD
c58bb8d626: замечание P2 из review #174 устранено. В исправлении новых блокирующих замечаний нет.Применимые подробные quartiles.entries теперь проходят через _database_article и _unique_articles в автоматические основания с сохранением category, metric, metric_year, source и source_url. Проверка конфликтов включает метрику: разные категории либо метрики не превращаются в противоречие, а разные квартили одного сочетания система/категория/метрика/год по-прежнему исключают зачёт. Подписи Q1/Q2 для счётчиков отделены от подробных оснований. Обратная совместимость с подготовленным CSV сохранена. Ручная смена журнала не возвращает прежние подробные основания в автоматический зачёт.
Проверен весь diff после
f4fb966и добавленные регрессионные тесты. Воспроизведение на текущих функциях PR в памяти с изолированными входами: Q1 Analysis и Q2 Applied Mathematics одной системы/метрики дают q1_count=q2_count=total_count=confirmed_count=1; Q1/Q2 в одной категории и метрике дают confirmed_count=0 с причиной конфликта; разные метрики одной категории допускаются. Поля категории/метрики/года/источника сохранены на всём пути. Дополнительно проверены исключение источников после ручной смены журнала, конфликт DOI и метрика другого года. Все сценарии прошли. git diff --check — успешно; версии backend/frontend повышены до 1.0.1.CI / test (pull_request) текущего SHA — success (9m30s), production diagnostics штатно skipped. Полный pytest и браузерные проверки локально не запускались из-за отсутствия зависимостей; изолированная проверка не обращалась к реальной БД и внешним источникам.
Origin и независимость аккаунта повторно проверены: admin/miem_workers, reviewer agent (id=7), автор PR codex (id=6); новый Git-коммит authored/committed codex. HEAD непосредственно перед публикацией сверён. Правки, push, merge, миграции и операции с production не выполнялись.