43 lines
1.0 KiB
Markdown
43 lines
1.0 KiB
Markdown
# Frontend Compute Shift Plan
|
|
|
|
## Targeted Calculations
|
|
|
|
## Resource History (migrated to frontend helpers)
|
|
- `ou_pct`
|
|
- `availability_pct`
|
|
- status percentages:
|
|
- `prd_pct`
|
|
- `sby_pct`
|
|
- `udt_pct`
|
|
- `sdt_pct`
|
|
- `egt_pct`
|
|
- `nst_pct`
|
|
|
|
These are now computed by `frontend/src/core/compute.js` via:
|
|
- `buildResourceKpiFromHours`
|
|
- `calcOuPct`
|
|
- `calcAvailabilityPct`
|
|
- `calcStatusPct`
|
|
|
|
## Parity Rules
|
|
|
|
1. Rounding rule
|
|
- one decimal place, identical to backend (`round(..., 1)`)
|
|
|
|
2. Formula rule
|
|
- OU%: `PRD / (PRD + SBY + UDT + SDT + EGT)`
|
|
- Availability%: `(PRD + SBY + EGT) / (PRD + SBY + EGT + SDT + UDT + NST)`
|
|
- Status%: `status_hours / total_hours`
|
|
|
|
3. Zero denominator rule
|
|
- all percentages return `0`
|
|
|
|
4. Data compatibility rule
|
|
- backend keeps existing fields to preserve API compatibility
|
|
- frontend recomputes display values from hours for deterministic parity
|
|
|
|
## Validation
|
|
|
|
- Python backend formula baseline: `mes_dashboard.services.resource_history_service`
|
|
- Frontend parity check: `tests/test_frontend_compute_parity.py`
|