Repository navigation
Releases
Releases · ht2473/RegionLens_v2
0.9.4 — защита учётных записей, проверка OWASP ZAP и испорченными файлами
Защита учётных записей и служебных меток, проверка сканером OWASP ZAP и испорченными файлами.
При выкладке применяется миграция учётных записей: уже заведённые записи считаются
подтверждёнными с даты создания.
Добавлено
- Проверки: испорченные файлы в загрузку своих таблиц (пути наружу, пароль, бомбы
в архиве и книге Excel, внешние сущности XML, незакрытая кавычка, перегруженная страница
PDF), одновременный поиск, адрес возврата из формы, копия базы без схемы. - Документация: проверка защищённости сканером OWASP ZAP и испорченными файлами, замер
памяти стенда под нагрузкой.
Изменено
- Кабинет: регистрация заканчивается переходом по ссылке из письма; до этого в запись
войти нельзя. Страница отвечает одинаково свободному и занятому адресу, занятому уходит
письмо-напоминание. Неподтверждённая запись удаляется через трое суток. - Кабинет: браузер, из которого владелец уже входил, чужие неверные пароли не блокируют;
блокировка по одной почте действует на остальных. - Развёртывание: Django 6.1.3.
- Свои данные: книга XLSX и ODS проверяется до чтения по размеру и сжатию всех частей,
а не только листов; страница PDF больше чем с 10 000 линий и знаков отклоняется до разбора
(USERDATA_PDF_PAGE_OBJECTS, у сборников ведомств — до 2 646).
Исправлено
- Свои данные: таблица с незакрытой кавычкой роняла страницу «Что в таблице» ошибкой
сервера; теперь страница говорит, что разобрать не удалось, и называет причину. - Свои данные: книга Excel в сотни килобайт с огромным списком общих строк принималась
и разворачивалась в памяти сайта в сотни мегабайт. - Свои данные: PDF с перегруженной страницей разбирался во время загрузки десятки секунд
и занимал гигабайты памяти. - Поверхность: поиск вопросом изредка отвечал ошибкой сервера при одновременных запросах.
- Поверхность: форма «В исследование» отвечала ошибкой сервера, если в поле адреса
возврата подставить строку, которая не адрес; адрес возврата принимается, только если
это путь на этом сайте. - Сбор: путь от корня (
/…) внутри архива выпуска отклоняется, как и путь с «..». - Развёртывание: после выкладки, оборванной до миграций, следующая падала на резервной копии.
- Кабинет: выключение входа с кодом принимало неограниченное число неверных кодов;
теперь — пять в час на учётную запись. - Кабинет: ключ кодов входа во время настройки лежал в сеансе открытым; теперь зашифрован.
- Панель: метка закрытой ссылки на таблицу или исследование попадала в историю посещений
и в журнал веб-сервера; в обоих она заменяется звёздочкой, как метки ссылок из писем. - Кабинет: при недоступном Valkey пределы частоты (регистрация, восстановление пароля,
ввод кода) переставали действовать; теперь счёт ведёт рабочий процесс. - Сбор: архив выпуска, который разворачивается больше 2 ГБ, не распаковывается.
- Развёртывание: резервная копия, переименованная под другую отметку времени, не проходит
проверку; проверка называет дату и возраст копии.
0.9.3 — доступность, безопасность разбора таблиц, готовность к развёртыванию
Доступность по WCAG 2.2 AA, безопасность разбора своих таблиц и готовность к развёртыванию.
Добавлено
- Доступность: шаг кода входа за две минуты до конца срока предупреждает, программа чтения
это объявляет; кнопка «Продлить» отсчитывает срок заново, не больше десяти раз, набранные
цифры остаются в поле. - Доступность: форма, вернувшаяся с ошибками, ставит фокус на первое неверное поле.
- Доступность: подсказки поиска и окно быстрого перехода сообщают программе чтения строку,
отмеченную стрелкой. - Анализ: свежие расчёты (мимо кэша) с одного адреса ограничены — 300 за 10 минут
(ANALYTICS_COMPUTATIONS); посчитанное открывается без ограничения. - Проверки: сквозные проверки размера целей нажатия, фокуса под шапкой и под нижней полосой
на телефоне, режима высокой контрастности и ширины 320 пикселей с увеличенными
интервалами текста; разметка и цели
в кабинете, панели и «Своих данных», цели — и в английской версии; контраст рамки поля
и нижней ступени тёмной шкалы. - Документация: защита персональных данных и криптография, обязанности оператора перед
открытием сайта, доступность; политика безопасности репозитория; выпуски Росстата
при первом наполнении стенда — из архива (на 08.11.2026 файлы Росстата отвечают
сборщику 404).
Изменено
- Оформление: рамки полей ввода контрастнее (3 : 1 к фону в обеих темах); нижние ступени
шкалы карты в тёмной теме отделены от подложки и от «нет данных». - Оформление: цели нажатия не меньше 24 пикселей — кнопка подсказки, ссылки в строках таблиц,
ссылки подвала и строки пути, пункты оглавлений, раскрывающиеся заголовки, поле поиска
во всю высоту рамки. - Оформление: прилипшая шапка не закрывает элемент в фокусе; карточка региона на главной,
подписи показателей анализа и название источника исследования больше не обрезаются при
крупном шрифте и увеличенных интервалах. - Оформление: в режиме высокой контрастности Windows видно кольцо фокуса в полях, образцы
легенды карты сохраняют цвета. - Оформление: подсказка графика не исчезает под указателем и закрывается клавишей Esc;
предупреждения остаются на экране до закрытия, как ошибки. - Кабинет: в журнале сервера неудачная попытка входа подписана отпечатком, а не почтой
и адресом посетителя. - Развёртывание: pandas 3.1, pyarrow 26, python-calamine 0.9, python-dateutil 4 и другие
зависимости; разбор таблиц корпуса при этом не изменился.
Исправлено
- Свои данные: имя столбца в файле Parquet могло дописать к запросу разбора свой текст и прочитать
файлы сервера. Имена экранируются, а соединение разбора после чтения файла теряет доступ
к файлам и сети. - Свои данные: таблица Parquet со столбцом «v» не разбиралась.
- Свои данные: подделка документа Word с объявлением сущностей в кодировке UTF-16 проходила
проверку; объявления теперь ищет сам парсер, в любой кодировке. - Свои данные: срок в единице измерения («на конец года, штук», «в среднем за год») больше
не принимается за единицу «годы». - Развёртывание: таблицы, загруженные на машине разработчика, попадали в образ и оттуда —
в хранилище стенда; служба разборов на новом стенде не могла писать в свой том. - Склад: первая сборка на новом стенде присылала администраторам ложное письмо о пропавших
рядах Банка России и ФНС, которые появляются только с первым сбором выпусков. - Кабинет: в «Настройках» подписи полей «Текущий пароль» всех форм вели к первому полю.
- Оформление: на телефоне полоса вызова панели параметров закрывала элемент в фокусе.
- Развёртывание:
main.pyпадал, если его вывод перенаправить в файл. - Панель и сравнение: таблицы без подписи и без заголовков строк.
- Поверхность: после кнопок «Назад» и «Вперёд» поля выбора и кнопки сохранения графика
удваивались; возврат на адрес, открытый без перезагрузки, мог показать страницу без шапки
и оформления. - О проекте: тема работы — «Веб-приложение…», как в README.
0.9.2 — поиск, сверка расчётов и данных
Поиск вопросом, сверка расчётов с библиотеками, сверка склада с публикацией Росстата
и поправки к исходному набору.
Добавлено
- Поиск: опечатка в названии места и в служебных словах («нижегроодская область», «рейтинг
регоинов»), падежи названий, которые не узнавались («в Адыгее», «население Алтая»). - Поиск: «уровень жизни» и «благосостояние» — общие вопросы, поиск предлагает интегральный
индекс. - Поиск: «покажи», «подскажите», «по региону», «российских регионов», «в области» не мешают
понять вопрос. - Проверки: индекс Морана и локальные индексы сверены с esda (PySAL), регрессия с обычными
и устойчивыми ошибками — со statsmodels, веса CRITIC и энтропии и TOPSIS — с pymcdm. Ответы
библиотек лежат в проверках, в зависимости проекта библиотеки не входят. - Проверки: формулы нормировки, свёртки индекса, весов, классов карты и сближения — на значениях,
посчитанных вручную.
Изменено
- Поиск: ответ числами — только если в показателе нашлись все содержательные слова вопроса.
«Население Китая», «плотность населения», «пособие по безработице» больше не получают чужой
показатель: поиск показывает ближайшее без уверенного ответа. - Поиск: опечатка — одна правка в слове, а не похожее слово: «доставка» не «ставка», «гороскоп»
не «городской», «экологический» не «экономический». - Поиск: слова степени — «высокая», «крупные», «лидеры», «быстрее» — признак рейтинга, а не
слова показателя. - Поиск: если слова запроса нашлись только в длинном официальном названии ряда, сначала
смотрится полный перечень: «прожиточный минимум» ведёт к ряду о прожиточном минимуме, а не
к уровню бедности. - Поиск: разрез показателя («Прочие выплаты») не отвечает на одно слово.
- Выгрузка: PDF печатает значения с точностью показателя, как страницы сайта, а не всегда
с двумя знаками после запятой.
Исправлено
- Данные: 53 значения шести рядов с доказанными ошибками исходного набора исправлены при сборке
склада (data/reference/source_corrections.json) и отмечены на сайте и в API. Поправка
применяется, только пока в наборе стоит ошибочное значение. - Перевод: пояснения к расчётам анализа на английской версии выходили по-русски; добавлены
английские названия 113 разрезов рядов. - Поиск: «за 2023 год» — год, а не срок: ответ значением, а не динамикой.
- Поиск: «Sakhalin» больше не принимается за Саху: среди написаний одной длины точное
совпадение проверяется раньше совпадения по началу слова. - Поиск: ряды, непригодные к сравнению регионов, больше не вытесняют пригодные из отбора
по полному перечню. - Поиск: «что такое коэффициент корреляции» находит этот термин: слово связи в вопросе
о термине — часть термина. - Поиск: на вопрос «почему» показывается ближайший показатель, даже если нашлись не все слова.
0.9.1 — правки по итогам замера
Правки по итогам замера распознавания на незнакомых таблицах ведомств.
Добавлено
- Свои данные: таблицы PDF, размеченные одними горизонтальными линейками без вертикальных
(сводки территориальных органов Росстата): столбцы — по стыкам линеек, шапка в несколько
строк с надписями над несколькими столбцами. - Свои данные: у таблицы без строки России «Динамика по России» — сумма регионов с пометкой:
только у сумм, в годы со значениями не меньше чем у 80 субъектов, по общему составу.
Изменено
- Свои данные: у таблицы без разрезов — до 2 000 показателей (было 500), сверх предела —
совет отметить лишние столбцы «пропустить». - Свои данные: год в шапке только у части показателей («Зарплата», «Индекс цен», а рядом
«Безработные | 2026 | 2025») — таблица «показатели в столбцах»: столбцы без года больше
не теряются, один показатель за разные годы — один ряд. - Свои данные: список «Тот же показатель, что…» — у таблиц до 100 показателей.
Исправлено
- Свои данные: таблицу больше чем на 450 показателей нельзя было собрать — шаг
«Показатели» отвечал ошибкой 400, а его страница весила десятки мегабайт. - Свои данные: таблица PDF на следующей странице без названия, но со своей шапкой —
отдельная таблица, а не продолжение прошлой; подпись без значений в начале страницы
(«в том числе:») — продолжение. - Свои данные: строка значений над таблицей PDF больше не берётся её названием, числа
мелким кеглем остаются в своей строке, строка шапки на линейке не попадает в тело. - Свои данные: база сравнения в шапке, разбитой на строки («В % к» над «июню 2025 г.»),
больше не принимается за период: столбец «в % к июню 2025» не получает год 2025, а год
таблицы не берётся из базы «к I кварталу 2025» — раньше таблица молча собиралась
не за тот год, теперь мастер спрашивает год. - Свои данные: справочные столбцы и столбцы без названия не считаются показателями,
когда год есть только у части столбцов. - Свои данные: большой документ Word старого вида (DOC) — совет сохранить его как DOCX,
а не «не читается как таблица Excel»; книга Excel с вложенным документом Word — книга. - Зависимости: filelock 4.2.1, msgpack 1.2.3.
0.9.0 — заморозка перед итоговым замером
Добавлено
- Свои данные: приём таблиц CSV, TXT, XLSX, XLS, ODS, Parquet, DOCX, PDF с текстом (до 100
страниц), ZIP и вставки из буфера, в том числе из Word частями. - Свои данные: мастер в три шага «Файл», «Что в таблице», «Проверка». Форма таблицы,
регионы, годы и периоды, разрезы и единицы узнаются сами; год берётся из заголовка,
листа или имени файла. - Свои данные: тип величины у каждого показателя (поток, запас, доля или среднее,
изменение) и правила, что с ним можно считать; сумма анализируется по значению на жителя. - Свои данные: знаки Росстата читаются по смыслу («–», «…», «x», «К», «0,0»), нули-заглушки
находятся до сборки, сумма регионов сверяется со значением по России. - Свои данные: вопросы мастера об областях с автономными округами, годе, единице,
прочерке, нулях, своде месяцев в год и повторах регионов в строках. - Свои данные: исследование — поле карточек с видами, ответами числами, заметками,
настройкой каждой карточки, окнами «Добавить карточку» и «Расчёт показателя». - Свои данные: 23 готовых расчёта и своя формула из рядов своих таблиц и рядов сайта,
предпросмотр картой и предупреждения о смысле. - Свои данные: отчёт исследования в Word и Excel, закрытая ссылка, версии таблицы,
свои группы регионов, примеры таблиц ведомств. - Поиск вопросом: «где самая высокая зарплата», «безработица в Татарстане» — ответ числами,
место региона, составные вопросы, журнал запросов без ответа в панели. - Карта: картодиаграмма (значки) для сумм, приближение к охвату данных, пометки значений.
- Анализ: устойчивость вывода к составу регионов, тепловая таблица мест в рейтинге,
выгрузка рейтинга, разбор пары в корреляции. - Кабинет: «Сохранённое» плитками, обзор «мой стол», настройки одной страницей.
- Развёртывание: шифрованные и подписанные резервные копии, ключ кодов входа хранится
зашифрованным, служба разборов своих таблиц.
Изменено
- Названия разделов, карточек, способов разбиения и изображения — принятыми терминами:
квантили, равные интервалы, естественные границы (Дженкс), стандартные отклонения;
картограмма и картодиаграмма. - Рабочая поверхность: панель «что смотрим», «Настроить вид» над графиком, выбор
показателя по темам с недавними. - Главная и «Показатели» начинаются с поля поиска.
- Каталог расчётов своих данных — без редких и повторяющих другие.
- Анализ: выборочное стандартное отклонение, поправка на число сравнений для локальных
индексов, равные места в рейтинге — по алфавиту. - Способ Дженкса: регион-выброс — отдельный класс.
Исправлено
- Окно расчёта пересчитывается сразу при выборе расчёта, а не только по «Проверить».
- В «Настроить» карточки — только настройки, которые её меняют.
- Деньги узнаются по единице: «срок кредитов в рублях» в месяцах — не деньги.
- Одинаковые названия на графиках сравнения и связи различаются источником.
- Общие границы соседних регионов на карте — без щелей.
- Отступы между полями и положение флажков с подписью в две строки.
- Уязвимости в зависимостях: Django REST Framework 3.18.2, Brotli 1.2.1, brotlicffi 1.2.1.0,
virtualenv 21.14.13; выгрузкаrequirements.txt— заново изuv.lock.
Убрано
- Поиск резких скачков в своих таблицах: на корпусе он отмечал в основном настоящие события.
- Готовые наборы карточек и редкие расчёты: скользящее среднее, накопленный итог,
достижение цели, z-оценка — их можно написать формулой.
0.1.0 — первая выкладка
Первая выкладка.
- Аналитический склад DuckDB из набора «Социально-экономические показатели регионов
России» (Росстат, «Если быть точным»), справочники территорий и показателей. - Сбор выпусков Росстата, Банка России и ФНС: архив, разбор, сверка с набором.
- Рабочая поверхность: карта, динамика, рейтинг, распределение, таблица.
- Инструменты анализа: неравенство, конвергенция, корреляции, пространственная
автокорреляция, интегральный индекс, пересмотры. - Паспорт региона и страница показателя, отметки разрывов сопоставимости.
- Выгрузка документов в CSV, XLSX и PDF, интерфейс REST.
- Учётные записи, личный кабинет, вход с одноразовым кодом, обратная связь.
- Панель управления, методика и глоссарий, английская версия интерфейса.
- Проверки, непрерывная интеграция, развёртывание в Docker Compose с Caddy и резервными
копиями.