Initial commit: site monorepo with API, web, and infra.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>лаборатория</title>
|
||||
<script src="/static/js/wesp-theme-boot.js"></script>
|
||||
<script>document.documentElement.classList.add('wesp-page-enter-pending');</script>
|
||||
<script src="/static/js/wesp-page-enter.js?v=2"></script>
|
||||
<script src="/static/js/wesp-nav-logo-shimmer.js?v=2"></script>
|
||||
<script src="/static/js/wesp-lab-access.js?v=1"></script>
|
||||
<script src="/static/js/wesp-zootech-nav.js?v=5"></script>
|
||||
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/static/css/wesp-zootech-shell.css" rel="stylesheet">
|
||||
<link href="/static/css/wesp-zootech-layout.css?v=16" rel="stylesheet"> <link href="/static/css/wesp-zootech-components.css?v=8" rel="stylesheet">
|
||||
<link href="/static/css/wesp-lab-sandbox.css?v=10" rel="stylesheet">
|
||||
<link href="/static/css/font-awesome.min.css" rel="stylesheet">
|
||||
<script src="/static/js/wesp-zootech-notification-messages.js?v=1"></script>
|
||||
<script src="/static/js/wesp-user-messages.js?v=1"></script>
|
||||
<script src="/static/js/wesp-zootech-notify.js?v=6"></script>
|
||||
<script src="/static/js/wesp-dialog.js"></script>
|
||||
<script src="/static/js/bootstrap.bundle.min.js"></script>
|
||||
<link href="/static/css/wesp-zootech-theme-organic.css?v=6" rel="stylesheet">
|
||||
</head>
|
||||
<body class="zootech-app-body lab-sandbox-page">
|
||||
<div id="wespZootechNavMount" data-active-page="lab"></div>
|
||||
|
||||
<div class="page-content wesp-page-main">
|
||||
<div class="container py-3">
|
||||
<div class="lab-sandbox-header" data-wesp-enter>
|
||||
<h1><i class="fas fa-flask text-primary me-2"></i>Скажи моё имя. — Хайзенберг. — Ты чертовски прав.</h1>
|
||||
<p>Я здесь, чтобы готовить · <a href="/lab/profiles">Стандарты чистоты</a> · <em>LAB тест — в нормах</em> / <em>полная матрица</em></p>
|
||||
</div>
|
||||
|
||||
<div class="lab-sandbox-flow" data-wesp-enter>
|
||||
<aside class="lab-sandbox-panel">
|
||||
<div class="lab-sandbox-step"><span>1</span> Наука</div>
|
||||
<div class="lab-sandbox-panel__title">Формула и стандарт</div>
|
||||
<div class="lab-sandbox-field">
|
||||
<label class="form-label">Партия</label>
|
||||
<select id="labSandboxRecipe" class="form-select form-select-sm"></select>
|
||||
</div>
|
||||
<div class="lab-sandbox-field">
|
||||
<label class="form-label">Стандарт чистоты</label>
|
||||
<select id="labSandboxProfile" class="form-select form-select-sm"></select>
|
||||
</div>
|
||||
<div class="lab-sandbox-field">
|
||||
<label class="form-label">Линейка продукта</label>
|
||||
<select id="labSandboxRationType" class="form-select form-select-sm">
|
||||
<option value="BEEF">Меф</option>
|
||||
<option value="DAIRY">Say my name</option>
|
||||
</select>
|
||||
</div>
|
||||
<p id="labSandboxMeta" class="small text-muted mb-0"></p>
|
||||
<div class="lab-sandbox-actions">
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary" data-action="seed">Взять партию</button>
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary" data-action="apply">Отправить партию</button>
|
||||
</div>
|
||||
<hr class="my-3">
|
||||
<div class="lab-sandbox-panel__title">Границы чистоты</div>
|
||||
<div id="labSandboxNorms"></div>
|
||||
</aside>
|
||||
|
||||
<section class="lab-sandbox-panel">
|
||||
<div class="lab-sandbox-step"><span>2</span> Готовка</div>
|
||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||
<div class="lab-sandbox-panel__title mb-0">Состав партии</div>
|
||||
<div class="lab-sandbox-actions mt-0">
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" data-action="add-line">+ Реагент</button>
|
||||
<button type="button" class="btn btn-sm btn-primary" data-action="save">Запомни это</button>
|
||||
<button type="button" class="btn btn-sm btn-success" data-action="recalculate">Примени науку</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm lab-sandbox-table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Реагент</th>
|
||||
<th>кг/сут</th>
|
||||
<th>В дело</th>
|
||||
<th>Смесь</th>
|
||||
<th>Себест.</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="labSandboxLinesBody">
|
||||
<tr><td colspan="6" class="lab-sandbox-empty">Сначала выбери партию</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<aside class="lab-sandbox-panel lab-sandbox-results">
|
||||
<div class="lab-sandbox-step"><span>3</span> Кристалл</div>
|
||||
<div class="lab-sandbox-panel__title">Итоговая формула</div>
|
||||
<div id="labSandboxResults">
|
||||
<div class="lab-sandbox-empty">Нажми «Примени науку»</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<section class="lab-agrostar-section mt-4" data-wesp-enter>
|
||||
<div class="lab-sandbox-header mb-3">
|
||||
<h2 class="h5 mb-1"><i class="fas fa-vial text-primary me-2"></i>Поставка чистоты</h2>
|
||||
<p class="mb-0">AgroStar xml/pdf/xlsx · кидай что прислали. Разберём, покажем, привяжем к реагентам.</p>
|
||||
</div>
|
||||
<div class="lab-sandbox-panel">
|
||||
<div class="lab-sandbox-step"><span>4</span> Поставка</div>
|
||||
<div id="labAgrostarDrop" class="lab-agrostar-drop" tabindex="0" role="button" aria-label="Загрузить файл для разбора">
|
||||
<input type="file" id="labAgrostarFile" accept=".xml,.pdf,.xlsx,.xls,text/xml,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" hidden>
|
||||
<i class="fas fa-flask lab-agrostar-drop__icon" aria-hidden="true"></i>
|
||||
<p class="lab-agrostar-drop__title mb-1">Кинь файл сюда</p>
|
||||
<p class="lab-agrostar-drop__hint mb-0 small text-muted">Приготовим науку, понюхаем, привяжем к реагентам, приготовим партию... и посмотрим, кто из нас химик.</p>
|
||||
<p id="labAgrostarFileName" class="lab-agrostar-drop__file small mt-2 mb-0" hidden></p>
|
||||
</div>
|
||||
<div id="labAgrostarStatus" class="small text-muted mt-2 mb-0"></div>
|
||||
<div id="labAgrostarMeta" class="small mt-2 mb-3" hidden></div>
|
||||
<div id="labAgrostarTableWrap" class="table-responsive" hidden>
|
||||
<div class="lab-sandbox-panel__title" id="labImportTableTitle">Кому в каталог</div>
|
||||
<table class="table table-sm lab-sandbox-table mb-2">
|
||||
<thead id="labImportTableHead">
|
||||
<tr>
|
||||
<th>Образец</th>
|
||||
<th>СВ, %</th>
|
||||
<th>Реагент</th>
|
||||
<th>Косяки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="labAgrostarTableBody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="labAgrostarSniff" class="lab-agrostar-sniff" hidden>
|
||||
<div class="lab-sandbox-panel__title">Что нанюхали</div>
|
||||
<div id="labAgrostarSniffBody"></div>
|
||||
</div>
|
||||
<div class="lab-sandbox-actions mt-0">
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary" id="labAgrostarClear" disabled>Забудь это</button>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="labAgrostarPreview" disabled>Сначала понюхаем</button>
|
||||
<button type="button" class="btn btn-sm btn-primary" id="labAgrostarApply" disabled>Запомни это</button>
|
||||
</div>
|
||||
<div id="labAgrostarResult" class="small mt-2"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lab-formulate-section mt-4" data-wesp-enter>
|
||||
<div class="lab-sandbox-header mb-3">
|
||||
<h2 class="h5 mb-1"><i class="fas fa-magic text-primary me-2"></i>Автоготовка</h2>
|
||||
<p class="mb-0">Грубые → сочные → концентраты → добавки → расчёт. Я не в опасности. Я и есть опасность.</p>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-lg-4 lab-formulate-step-panel lab-formulate-step-panel--calc d-none">
|
||||
<div class="lab-sandbox-panel h-100">
|
||||
<div class="lab-sandbox-panel__title">Химия — наука о переменах</div>
|
||||
<div class="lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateProfile">Стандарт чистоты</label>
|
||||
<select id="labFormulateProfile" class="form-select form-select-sm"></select>
|
||||
</div>
|
||||
<div class="lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateNormsMethod">Методика норм</label>
|
||||
<select id="labFormulateNormsMethod" class="form-select form-select-sm">
|
||||
<option value="wesp">WESP (GfE)</option>
|
||||
<option value="racion_moscow">Москва (РАСХН)</option>
|
||||
<option value="racion_piter">Петербург</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="labFormulateRacionFields" class="d-none">
|
||||
<div class="row g-2">
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateFat">Жирность, %</label>
|
||||
<input id="labFormulateFat" type="number" class="form-control form-control-sm" value="4" step="0.1">
|
||||
</div>
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateLactation">Лактация №</label>
|
||||
<input id="labFormulateLactation" type="number" class="form-control form-control-sm" value="2" min="1" max="3" step="1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="lab-sandbox-field lab-formulate-piter-only d-none">
|
||||
<label class="form-label" for="labFormulateKonc">ОЭ/СВ, МДж/кг СВ</label>
|
||||
<input id="labFormulateKonc" type="number" class="form-control form-control-sm" value="10.3" step="0.1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-2">
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateMass">Масса, кг</label>
|
||||
<input id="labFormulateMass" type="number" class="form-control form-control-sm" step="1">
|
||||
</div>
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateMilk">Удой, кг/сут</label>
|
||||
<input id="labFormulateMilk" type="number" class="form-control form-control-sm" step="0.1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-2">
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateTotalKg">Σ кг/гол/сут</label>
|
||||
<input id="labFormulateTotalKg" type="number" class="form-control form-control-sm" value="7.3" step="0.1">
|
||||
</div>
|
||||
<div class="col-6 lab-sandbox-field">
|
||||
<label class="form-label" for="labFormulateCostWeight">Цена отклонения</label>
|
||||
<input id="labFormulateCostWeight" type="number" class="form-control form-control-sm" value="100" step="1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="lab-sandbox-panel__title mt-3">На что смотрим</div>
|
||||
<div id="labFormulateOptimizeKeys" class="lab-formulate-opt-keys"></div>
|
||||
<p id="labFormulateSummary" class="small text-muted mt-3 mb-2">Я принял решение на основе науки</p>
|
||||
<div id="labFormulatePrefilterNote" class="alert alert-info py-1 px-2 small d-none mb-2">
|
||||
Слишком много вариантов — отфильтруем топ-18. Время — деньги.
|
||||
</div>
|
||||
<div class="lab-sandbox-actions">
|
||||
<button type="button" class="btn btn-sm btn-primary" id="labFormulateRun" disabled>Хайзенберг</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8">
|
||||
<div class="lab-sandbox-panel h-100">
|
||||
<nav id="labFormulateSteps" class="lab-formulate-steps mb-3" aria-label="Этапы автоготовки"></nav>
|
||||
<div id="labFormulatePanes"></div>
|
||||
<div id="labFormulateReviewPane" class="lab-formulate-pane d-none">
|
||||
<div class="lab-sandbox-panel__title">Рецепт на столе</div>
|
||||
<ul id="labFormulateReview" class="small mb-2"></ul>
|
||||
<p class="small text-muted mb-0">Позитив — это хорошо. Я за позитив, но позитив не меняет реальность.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-12">
|
||||
<div class="lab-sandbox-panel">
|
||||
<div class="lab-sandbox-panel__title">99,1% чистоты:</div>
|
||||
<div id="labFormulateResult">
|
||||
<div class="lab-sandbox-empty">Скажи моё имя и жми кнопку</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/pages/lab-heisenberg-prime.js?v=2"></script>
|
||||
<script src="/static/js/pages/lab-sandbox.js?v=6"></script>
|
||||
<script src="/static/js/pages/lab-agrostar-import.js?v=11"></script>
|
||||
<script src="/static/js/pages/lab-formulate.js?v=8"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user