Add Bento 1 fresh bentonite consumption
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# Bento 1 fresh bentonite consumption
|
||||
|
||||
`config/bento1-material-consumption.yaml` defines
|
||||
`bento1-fresh-bentonite-consumption`. This KPI estimates **fresh bentonite
|
||||
consumption** from the two fresh-spreader setpoints in g/m². The third spreader
|
||||
uses recycled/recovered bentonite and is deliberately excluded; it is neither
|
||||
missing data nor estimated. This is not total bentonite deposited on the product,
|
||||
and setpoints are not a measurement of actual mass flow.
|
||||
|
||||
The generic `area_application` source sums the configured application signals
|
||||
and converts them to kg/h using `sum(g/m²) × nominal_width_m × speed_m/min × 60 / 1000`.
|
||||
The existing previous-value integrator then accumulates kilograms only while
|
||||
speed is strictly greater than 0.3 m/min. `direct_mass_rate` remains the default
|
||||
for existing configurations, including K7. The persistent state schema and
|
||||
production-order bootstrap/resume behavior are unchanged; each disjoint run
|
||||
starts with a new sample baseline while retaining order totals.
|
||||
|
||||
Width comes from the existing ERP workplace status adapter and generic nominal
|
||||
width parser. The ERP order must format to the ENLYZE order using
|
||||
`Bento 1-{production_order}`. Missing/mismatched ERP context or an unparseable
|
||||
width rejects the polling cycle without saving state. ENLYZE product metadata is
|
||||
not used for width. The current ERP context supplies width for all runs of that
|
||||
same order; this assumes the order's article width stays constant. Historical
|
||||
orders no longer present in current ERP workplace status require a separate
|
||||
historical context source for offline replay.
|
||||
|
||||
Run with:
|
||||
|
||||
```sh
|
||||
production-analytics run material-poll \
|
||||
--config config/bento1-material-consumption.yaml \
|
||||
--erp-secrets-file secrets/erp.env
|
||||
```
|
||||
|
||||
`erp_workplace: Bento 1` assumes that exact ERP workplace identifier; verify it
|
||||
against the deployment's workplace view. The 20-second maximum sample gap is a
|
||||
generic policy shared with K7, intended for a nominal 10-second sampling cadence.
|
||||
One missing sample is tolerated: the resulting 20-second interval is integrated
|
||||
using the preceding rate and gate. Gaps greater than 20 seconds are not
|
||||
integrated, so prolonged or repeated gaps can undercount consumption.
|
||||
Missing/nonfinite values from either configured fresh spreader reject the cycle.
|
||||
Intervals exceeding the maximum gap and unobserved run tails are not inferred.
|
||||
|
||||
Before implementation, the calculation was independently validated manually
|
||||
against the same three real ENLYZE signals over the two runs below, yielding
|
||||
approximately **147021.9 kg** of fresh bentonite for `Bento 1-12026000814`.
|
||||
The post-implementation live replay could not be repeated because ENLYZE
|
||||
connectivity was temporarily unavailable (DNS resolution failure), not because
|
||||
of a known implementation issue. Exact production-path replay remains a
|
||||
follow-up verification rather than a blocker for this milestone.
|
||||
|
||||
The regression uses article 180305, description `Bfix NSP 5300, 5,00 x 40 m`
|
||||
(width 5.00 m), and the supplied boundaries of runs
|
||||
`b675818c-4636-4976-be6c-3e0e24da9e8a` and
|
||||
`25d67424-8346-42d4-b844-75b4097382bd` for order `Bento 1-12026000814`.
|
||||
It constructs synthetic samples from the supplied aggregates: 1256.0 active
|
||||
minutes, 31294.6 m² and 4698.0 g/m², yielding approximately 147021.9 kg.
|
||||
It verifies bootstrap across both runs and persisted resume without counting the
|
||||
inter-run gap. It is an aggregate plausibility regression, not an independent
|
||||
replay of recorded signals; raw reference samples were not supplied.
|
||||
Reference in New Issue
Block a user