Проверок: 4 · 🟢 0 · 🟡 0 · 🔴 4
Требований: 9 · найдено: 7 · не найдено: 2
Найдено заполнение нулём (fillna(0)) в feature_engineering.py:210, медианная импутация по train в коде отсутствует.
В model_training.py используется CalibratedClassifierCV(method='sigmoid') — это Platt scaling, а не изотоническая регрессия.
Функция build_target() помечает наблюдение дефолтным при max(dpd) >= 90 внутри окна 12 месяцев; горизонт задаётся параметром HORIZON_MONTHS = 12.
В filter_contracts() применяется маска по contract_status not in ('CLOSED', 'RESTRUCTURED', 'CESSION').
Класс WOEEncoder обучается только на train и применяется к valid/test; биннинг — монотонный по дефолт-рейту.
train_test_split с stratify=y и random_state=RANDOM_SEED (=42), пропорции 0.6/0.2/0.2 заданы константами.
select_by_iv() отбрасывает признаки с IV <= IV_THRESHOLD (=0.02).
CatBoostClassifier с eval_set=valid и early_stopping_rounds=50.
CTE feature_asof фиксирует report_dt и джойнит источники строго по as-of дате.
Проверок: 15 · пройдено: 9 · не пройдено: 6 (блокирующих: 3)
Тип: Блокирующий
В отчёте о разработке есть обоснование использования переменных из источников, не загруженных в целевые хранилища Банка при наличии аналогичных по бизнес-смыслу переменных в промышленных источниках
Найдено: Обоснование по team_risk_dev.experimental_macro в отчёте не найдено
Обоснование: Используются непромышленные источники (sandbox_ivanov, team_risk_dev, ext_vendor_scoring), но обоснование их применения при наличии промышленных аналогов отсутствует.
Тип: Блокирующий
В отчёте о разработке описаны правила отбора наблюдений: правила фильтрации, правила отбора наблюдений в выборку для разработки из ГС, правила искусственного увеличения количества наблюдений
Найдено: Правила фильтрации описаны, правила сэмплирования из ГС — нет
Обоснование: Не описаны правила отбора наблюдений из генеральной совокупности.
Тип: Блокирующий
В отчёте о разработке указано значение параметра seed в случае, если разработка происходит на случайной подвыборке
Обоснование: Разработка велась на случайной подвыборке, но значение seed в отчёте не зафиксировано.
Тип: Информационный
В отчёте о разработке есть описание атрибутного состава пользовательских витрин, справочников и внешних источников
Найдено: Витрина user_features: 47 атрибутов описаны в приложении А; Справочник region_dict: 5 полей
Обоснование: Атрибутный состав пользовательской витрины user_features описан полностью; для внешнего источника ext_vendor_scoring описание отсутствует.
Тип: Информационный
В отчёте о разработке перечислены все факторы из длинного списка
Найдено: Длинный список заявлен на 214 факторов, в приложении приведено 198
Обоснование: 16 факторов длинного списка отсутствуют в перечислении.
Тип: Информационный
В отчёте о разработке описана бизнес-логика и способ расчёта всех факторов из длинного списка
Найдено: Описание бизнес-логики приведено выборочно (~70% факторов)
Обоснование: Для значимой части длинного списка способ расчёта не описан.
Тип: Информационный
В отчёте о разработке должны быть указаны названия схем и таблиц всех используемых промышленных источников
Найдено: prx_credit.application_scoring — витрина заявок; arnsdprisk_default.dpd_history — история просрочек; arnsdprozn_client.socdem_profile — соцдем профиль; prx_bki.bureau_scores — скоры БКИ
Обоснование: Все промышленные источники из кода перечислены в разделе 3.2 отчёта с указанием схемы и таблицы.
Тип: Блокирующий
В отчёте о разработке есть подробное описание, либо ссылки на документы содержащие подробное описание бизнес-логики расчёта пользовательских витрин
Найдено: Раздел 4.1 содержит формулы расчёта 12 агрегатов оборотов и просрочек
Обоснование: Бизнес-логика расчёта витрин описана с формулами и окнами агрегации.
Тип: Информационный
В отчёте о разработке есть определение понятия наблюдения (зерна) в выборке для разработки
Найдено: Зерно выборки = пара (договор, дата наблюдения), раздел 2.1
Обоснование: Понятие наблюдения определено явно.
Тип: Блокирующий
В отчёте о разработке перечислены все факторы из короткого списка
Найдено: Короткий список: 18 факторов перечислены в таблице 5.1
Обоснование: Все 18 факторов короткого списка перечислены.
Тип: Информационный
В отчёте о разработке описана бизнес-логика и способ расчёта всех факторов из короткого списка
Найдено: Для 18/18 факторов короткого списка описан способ расчёта
Обоснование: Бизнес-логика факторов короткого списка описана полностью.
Тип: Блокирующий
В отчёте о разработке есть описание бизнес-логики расчёта таргета, включая временной лаг необходимый для вызревания
Найдено: Раздел 2.3: дефолт 90+ на горизонте 12 мес, лаг вызревания 3 мес
Обоснование: Бизнес-логика таргета и временной лаг описаны.
Тип: Информационный
В отчёте о разработке описан алгоритм обработки пропущенных и аномальных значений в выборках модели
Найдено: Раздел 4.4: импутация медианой, обрезка выбросов по 1/99 перцентилю
Обоснование: Алгоритм обработки пропусков и аномалий описан.
Тип: Информационный
В отчёте о разработке описаны ограничения на значения фичей и таргета
Найдено: Ограничения на таргет (0/1) и диапазоны 6 ключевых фичей
Обоснование: Ограничения на значения переменных описаны.
Тип: Блокирующий
В отчёте о разработке указаны количество наблюдений и охватываемый временной период в выборках модели
Найдено: train: 1 240 530 набл., 2019-01..2023-06; test: 312 010, 2023-07..2023-12
Обоснование: Количество наблюдений и период по всем выборкам указаны.
Файлов: 5 · с ошибками: 3
Строка 210, столбец 17: undefined name 'np' (numpy не импортирован)
Пояснение: Не импортирован numpy — добавь `import numpy as np` в начало файла.
Извлечено: 3 · валидных: 2 · с ошибками: 1
Expected '}' to close placeholder, got end of input near '${report_dt'
Пояснение: Незакрытый плейсхолдер `${...}` — добавь закрывающую `}` или подставь конкретное значение даты.
Строка 140, столбец 5: IndentationError: unexpected indent
Пояснение: Лишний отступ в строке — выровняй её по родительскому блоку.
Строка 141, столбец 1: invalid syntax (ожидался блок после ':')
Пояснение: После `:` нет тела блока — добавь отступленную строку с кодом (или `pass`).
SQL-запросы не извлечены.
Извлечено: 3 · валидных: 1 · с ошибками: 2
Expected 'BY' after 'GROUP', got 'client_id'
Пояснение: Пропущено ключевое слово `BY` — напиши `GROUP BY client_id`.
Expected expression after ',', got keyword 'FROM'
Пояснение: Лишняя запятая перед `FROM` — убери её после `client_id`.
Извлечено: 2 · валидных: 2 · с ошибками: 0
Извлечено: 1 · валидных: 1 · с ошибками: 0
Источников: 12 · промышленных: 6 · непромышленных: 6
Промышленными считаются источники с префиксами: prx_, arnsdprisk_, arnsdprozn_, custom_cib_
Читается файлами: data_preparation.py
Читается файлами: feature_engineering.py
Читается файлами: feature_engineering.py
Читается файлами: data_preparation.py
Читается файлами: feature_engineering.py
Читается файлами: scoring_pipeline.sql
Читается файлами: data_preparation.py, scoring_pipeline.sql
Читается файлами: target_calculation.py
Читается файлами: feature_engineering.py, data_preparation.py
Читается файлами: feature_engineering.py
Читается файлами: feature_engineering.py, scoring_pipeline.sql
Читается файлами: feature_engineering.py