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
14 changes: 12 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ on:
pull_request:
branches: [ main, dev ]

jobs:
lint-and-test:
jobs:
test-matrix:
name: lint-and-test (${{ matrix.os }}, ${{ matrix.python }})
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -53,3 +54,12 @@ jobs:
run: |
python -m source.main validate-stage0
python -m source.main acceptance --output reports/ci-acceptance

lint-and-test:
name: lint-and-test
runs-on: ubuntu-latest
needs: test-matrix
if: always()
steps:
- name: Require both platform checks
run: test '${{ needs.test-matrix.result }}' = 'success'
6 changes: 4 additions & 2 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ flowchart TD
```text
HackathonPetrolCode/
├── README.md # запуск и ограничения готовой версии
├── IMPLEMENTATION_PLAN.md # сроки, этапы и критерии готовности
├── DESIGN.md # архитектура и контракты
├── pyproject.toml # Ruff и pytest; заменяет config.toml
├── requirements.txt # проверенные зависимости Python 3.11
Expand Down Expand Up @@ -568,12 +567,15 @@ point/upper и reason codes. В отдельных экранах доступн
action-shadow и контроль ПАК--ЛИМС; ни один из этих результатов не разрешает изменение
реальных уставок.

В v1.1.0 редактор `source/ui_what_if.py` создаёт проверенную копию
Редактор `source/ui_what_if.py` создаёт проверенную копию
`ScenarioConfig` только для `model_demo` без реальных controls. Свойства A/B,
запасы, доли, масса партии и синтетическая кривая присадки передаются через
`run_model_demo(scenario_override=...)` существующему циклу решения.
Preset на диске не изменяется; изменённые входы попадают в журнал и JSON-экспорт.
Сброс восстанавливает поля preset и требует явного пересчёта.
С v1.2.0 он подбирает допустимую рецептуру двух компонентов при закреплённых
значениях долей или присадки. Предложения проходят тот же фильтр ограничений,
что и обычный расчёт; исходное и показанное значения записываются в журнал.

`source/ui_charts.py` строит график исторического point/upper и лимита серы.
Ось времени соответствует цели прогноза (as_of + 60 минут); пропуски сохраняются,
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

## Запуск за три шага

В v1.1.0 добавлены **синтетический what-if** (свойства, запасы, присадка, пересчёт и сброс) и **график исторического прогноза**. Технические пути на экране истории скрыты в дополнительных настройках. Инструкция и материалы для жюри обновлены.
В v1.2.0 синтетический what-if подбирает допустимую смесь при изменении доли или присадки: можно закрепить введённое значение, сравнить варианты и отменить автоподбор. Исторический прогноз показывает причины отказа и сохраняет статус запуска в журнале.

1. Скачайте **Neftekod-Windows-x64.zip** по ссылке выше.
2. Распакуйте **весь архив** в доступную для записи папку, например `D:\Нефтекод`.
Expand All @@ -22,7 +22,7 @@ Python, установка библиотек, обучение моделей

| Раздел | Что доступно |
| --- | --- |
| Обзор и Смесь | Шесть сценариев и редактор «Синтетический what-if»: свойства компонентов, запасы и присадка |
| Обзор и Смесь | Шесть сценариев и редактор «Синтетический what-if»: автоподбор рецептуры, свойства компонентов, запасы и присадка |
| АВТ и Гидроочистка | Исторические сигналы, единицы, источники и свежесть |
| История/ML | График прогноза и верхней оценки, выбор периода, прогресс, отмена и экспорт |
| Hybrid и v2 | Условное смешение по сере и исследовательские предупреждения |
Expand Down Expand Up @@ -55,6 +55,8 @@ Python, установка библиотек, обучение моделей

## Для разработчика

Редактор синтетической смеси предлагает допустимые доли после изменения поля, сохраняет закреплённые значения и показывает варианты «ближе», «дешевле» и «меньше присадки». Для проверки откройте «Обзор» → «Смесь» → «Синтетический what-if», измените долю компонента и нажмите Enter или «Подобрать смесь». «Отменить автоподбор» возвращает введённые значения; переключатель «Автоподбор» оставляет ручной режим.

В `main` находится сдаваемая версия без дневников разработки. Планы этапов, старые ревью и журнал проблем сохранены в [ветке dev](https://github.com/bug00n/HackathonPetrolCode/tree/dev); конкретная поставка закреплена тегом релиза. В Git хранятся исходники, конфигурации, тесты и технические материалы. EXE, презентация, Word-документ, подготовленные данные и модели поставляются через Releases. Уведомления сторонних компонентов сохранены в [third_party/licenses](third_party/licenses).

[Запуск исходников, тесты и сборка](docs/DEVELOPMENT.md) · [Архитектура и контракты](DESIGN.md) · [Уточнения организаторов](docs/technical/QA_CLARIFICATIONS.md)
Expand Down
10 changes: 9 additions & 1 deletion config/release_manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
{
"schema_version": "1.0",
"release_id": "neftekod-v1.1.0",
"release_id": "neftekod-v1.2.0",
"prepared_dataset": "data/processed/66bdfcbb23b4",
"legacy_config_sha256": "00a45650caa0f415e78037d56bc49de7161f55f9eecd24675e8874d64efb63e2",
"preparation_config_sha256": "7f8dab1f4befa7ed4d14108146d344eeeb4341711880144ad0195d163a55c4dd",
"prepared_sha256": {
"telemetry.csv.gz": "20b434e7fd01e49ad45ec82635ea14940677267f58d0d3f70f63812d8c17c84d",
"quality.csv.gz": "fbef330af12854052c7622f10c561460af3d1a708d59b87892ad49d82f0be9e4",
"issues.csv.gz": "bffe17ad1fcfdfaa4496405ce1b7eb2d0f318c67103bfbaf63a0e45d17ee9fb9",
"feature_order.json": "fb7b26c4991e029f246baa8efc99f971f07fc765bbb5e59d521794a3ed33932e"
},
"forecast_artifact": "artifacts/models/sulfur-upper-33efba3c3141",
"v2_artifact": "artifacts/models/sulfur-v2-shadow-61f972d07181",
"action_artifact": null,
Expand Down
12 changes: 8 additions & 4 deletions docs/DEMO_SCRIPT.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,19 +97,23 @@ Hybrid проверяет только серу. Он не подтвержда

Нажмите «Синтетический what-if» на «Обзоре» или «Смеси». За основу берётся выбранный готовый сценарий. При повторном открытии после успешного пересчёта редактор показывает последние изменённые входы этого сценария. Это эксперимент с модельными допущениями, а не правка истории предприятия.

На вкладке «Компоненты и текущая рецептура» для A и B задаются сера и её верхняя оценка (мг/кг), T95 и его верхняя оценка (°C), цетановое число и его нижняя оценка, запас (т), стоимость (условный индекс/т), риск от 0 до 1 и текущая массовая доля (%). Пустое поле качества означает неизвестное значение и может привести к отказу; запас и другие обязательные числа оставлять пустыми нельзя.
На первой вкладке «Рецептура» задайте доли A, B, присадки и массу партии. После Enter или выхода из поля редактор подбирает допустимые значения остальных долей, оставляя последнее изменённое значение неизменным. Галочка «Зафиксировать» удерживает долю и при следующих правках. В списке вариантов можно выбрать смесь ближе к введённой, с меньшей стоимостью или меньшим количеством присадки. Под списком показаны изменения и проверки серы, T95 и цетанового числа. Если смесь невозможна при закреплённых полях или запасах, редактор объясняет причину.

На вкладке «Партия и присадка» задаются положительная масса партии (т), текущая доля присадки (%), максимум присадки (1, 2 или 3%), запас (т), стоимость (условный индекс/т) и прирост цетанового числа при 1, 2 и 3%. Кривая эффекта остаётся синтетической; прирост не должен уменьшаться с дозой.
На вкладке «Свойства и запасы» для A и B задаются сера и её верхняя оценка (мг/кг), T95 и его верхняя оценка (°C), цетановое число и его нижняя оценка, запас (т), стоимость (условный индекс/т) и риск от 0 до 1. Пустое поле качества означает неизвестное значение и может привести к отказу; запас и другие обязательные числа оставлять пустыми нельзя.

На вкладке «Параметры присадки» задаются максимум присадки (1, 2 или 3%), запас (т), стоимость (условный индекс/т) и прирост цетанового числа при 1, 2 и 3%. Кривая эффекта остаётся синтетической; прирост не должен уменьшаться с дозой.

| Кнопка | Действие |
| --- | --- |
| Пересчитать what-if | Проверяет поля, закрывает редактор и запускает существующий расчёт; результат появляется на «Смеси» с отметкой what-if |
| Подобрать смесь | Пересчитывает допустимые варианты с учётом закреплённых значений |
| Отменить автоподбор | Возвращает введённые перед подбором значения; ручной режим также доступен через переключатель «Автоподбор» |
| Пересчитать what-if | Проверяет поля, закрывает редактор и оценивает именно показанную смесь; результат появляется на «Смеси» с отметкой what-if |
| Сбросить к сценарию | Восстанавливает исходные поля; затем нажмите «Пересчитать what-if», чтобы обновить результат |
| Закрыть без изменений | Закрывает редактор без применения введённых значений; крестик действует так же |

Сумма текущих долей A, B и присадки должна равняться 100%. Верхняя оценка не может быть ниже точки, нижняя — выше. Числа должны быть конечными и неотрицательными; допустимы точка и запятая. Ошибка ввода остаётся в окне. Нехватка запасов, пропущенное качество или отсутствие допустимой смеси дают объяснённый отказ, а не вымышленную рекомендацию.

Оптимизатор сохраняет прежний дискретный перебор: соотношение A/B с шагом 5% без присадки, присадка с шагом 1%. Редактор не обещает непрерывный математический оптимум. Изменённый сценарий сохраняется в журнале `input.json` и в экспорте; исходный preset на диске остаётся прежним.
Обычный расчёт сохраняет прежний дискретный перебор и добавляет допустимые граничные смеси, если сетка пропускает узкий допустимый диапазон. Редактор ищет смесь в пределах заданных свойств, запасов и закреплённых полей; он не обещает непрерывный математический оптимум. Изменённый сценарий и введённые значения сохраняются в журнале `input.json` и в экспорте; исходный preset на диске остаётся прежним.

Для дополнительной минуты показа выберите «Повышенная сера», откройте редактор и измените серу A с 6 до 1, верхнюю оценку с 7 до 2 мг/кг. Нажмите пересчёт и сравните качество исходной смеси. Затем снова откройте редактор, сбросьте поля и пересчитайте: исходный пример вернётся.

Expand Down
Loading
Loading