Skip to content
Merged
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'
15 changes: 13 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,19 +567,31 @@ 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 он подбирает допустимую рецептуру двух компонентов при закреплённых
значениях долей или присадки. Последняя введённая доля сохраняется и при ручном
запуске подбора; пустая соседняя доля заполняется из остатка. Изменение введённой
доли требует отдельной команды поиска ближайшего допустимого варианта. Предложения
проходят тот же фильтр ограничений, что и обычный расчёт; исходное и показанное
значения записываются в журнал. В синтетическом режиме сравнение с пределом
качества допускает только погрешность округления 1e-10 в единицах показателя.

`source/ui_charts.py` строит график исторического point/upper и лимита серы.
Ось времени соответствует цели прогноза (as_of + 60 минут); пропуски сохраняются,
неизвестные значения не подменяются нулями. Пути данных и моделей на странице
истории находятся в свёрнутых дополнительных настройках. Ни редактор, ни график
не меняют `supports_actions=false`.

«Обзор» модельного сценария показывает исходную и выбранную рецептуры рядом:
доли компонентов, проверяемые оценки качества, модельный риск и стоимость с
разницей и пределами. Это сравнение в одном сценарии, не временной прогноз;
при отказе выбранные значения отсутствуют.

Целевой экран должен поддерживать:

1. Выбор режима, сценария, времени истории и совместимой модели; кнопка «Рассчитать».
Expand Down
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,39 @@

Локальное приложение поддержки технологических решений: модельные рецептуры дизельного топлива, исторический прогноз серы и объяснимые проверки ограничений.

[Скачать Windows-версию](https://github.com/bug00n/HackathonPetrolCode/releases/latest/download/Neftekod-Windows-x64.zip) · [Все файлы релиза](https://github.com/bug00n/HackathonPetrolCode/releases/latest) · [Сценарий защиты](docs/DEMO_SCRIPT.md)
[Скачать Windows-версию](https://github.com/bug00n/HackathonPetrolCode/releases/download/v1.3.6/Neftekod-Windows-x64.zip) · [Все файлы релиза](https://github.com/bug00n/HackathonPetrolCode/releases/tag/v1.3.6) · [Сценарий защиты](docs/DEMO_SCRIPT.md)

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

В v1.1.0 добавлены **синтетический what-if** (свойства, запасы, присадка, пересчёт и сброс) и **график исторического прогноза**. Технические пути на экране истории скрыты в дополнительных настройках. Инструкция и материалы для жюри обновлены.
1. Скачайте **Neftekod-Windows-x64.zip** по ссылке выше и распакуйте **весь архив**.
2. Откройте **Neftekod.exe** (Windows x64). Дождитесь готового результата на экране «Обзор».
3. Нажмите **«Смесь»**, чтобы увидеть рецепт и проверки. Кнопка **«Настроить смесь»** позволяет изменить входы и пересчитать вариант.

1. Скачайте **Neftekod-Windows-x64.zip** по ссылке выше.
2. Распакуйте **весь архив** в доступную для записи папку, например `D:\Нефтекод`.
3. Откройте **Neftekod.exe**.

Python, установка библиотек, обучение моделей и интернет после скачивания не нужны. Рядом с EXE должны оставаться `_internal`, `config`, `data`, `artifacts` и остальные файлы поставки. Не запускайте приложение прямо внутри ZIP.
Приложение работает локально: Python, Docker, обучение моделей и интернет после скачивания не нужны. Не запускайте EXE прямо внутри ZIP и не переносите его отдельно от `_internal`, `config`, `data` и `artifacts`.

**Code → Download ZIP скачивает исходники, а не готовое приложение.** Для запуска без настройки используйте Releases. Закрытый репозиторий и его релизы доступны только пользователям с выданным доступом; для показа на другом компьютере можно передать скачанный полный архив.

## Что показать первым

На «Обзоре» выберите **«Повышенная сера»**, нажмите «Рассчитать» и откройте **«Смесь»**. Вы увидите состав, проверку ограничений и объяснение результата.
В приложении на «Обзоре» уже рассчитан сценарий **«Повышенная сера»**. Откройте **«Смесь»**: верхняя модельная оценка серы меняется с 14,058 до 9,306 мг/кг при пределе 10 мг/кг. Нажмите **«Настроить смесь»**, чтобы изменить долю, сохранить важное поле отметкой «Не менять» и сравнить допустимые варианты. Если с введённой долей подходящей смеси нет, кнопка «Найти ближайшую допустимую» предложит изменить её.

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

Для истории уже закреплены совместимые данные и модели. Начните с интервала **01.06.2025, 12:00–13:00 +03:00**. Он занимает время; состояние расчёта показывается на экране.
Исторический график показан в презентации. Для самостоятельного пересчёта в приложении выбран совместимый набор данных и модель; контрольный интервал — **01.06.2025, 12:00–13:00 +03:00**. Интервал считается отдельно и может занять время.

## Материалы для жюри

- [Презентация — 14 слайдов](https://github.com/bug00n/HackathonPetrolCode/releases/latest/download/Neftekod_Presentation.pptx).
- [Технический документ для жюри](https://github.com/bug00n/HackathonPetrolCode/releases/latest/download/Neftekod_Jury.docx).
- [Пятиминутный сценарий показа, полная инструкция по UI и ответы на вопросы](docs/DEMO_SCRIPT.md).
- [Презентация](https://github.com/bug00n/HackathonPetrolCode/releases/download/v1.3.6/Neftekod_Presentation.pptx).
- [Технический документ для жюри](https://github.com/bug00n/HackathonPetrolCode/releases/download/v1.3.6/Neftekod_Jury.docx).
- [Короткий сценарий показа, полная инструкция по UI и ответы на вопросы](docs/DEMO_SCRIPT.md).

Документы также находятся внутри готового ZIP. PPTX и DOCX можно скачать отдельно со страницы релиза.
В готовом ZIP документы лежат в `docs/jury`. PPTX и DOCX можно скачать отдельно со страницы релиза.

## Границы результата

Expand All @@ -55,6 +53,8 @@ Python, установка библиотек, обучение моделей

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

Редактор синтетической смеси предлагает допустимые доли после изменения поля, сохраняет поля «Не менять» и показывает варианты «ближе», «дешевле» и «меньше присадки». Для проверки откройте «Обзор» → «Настроить смесь», измените долю компонента и нажмите 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.3.6",
"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
Loading
Loading