Skip to content

scrap_tracking

scrap_tracking ¤

Scrap and material waste tracking.

Track material waste and scrap (different from NOK parts): - Scrap by shift and reason - Scrap cost calculation - Scrap trends over time

ScrapTracking ¤

ScrapTracking(
    dataframe: DataFrame,
    *,
    time_column: str = "systime",
    shift_definitions: Optional[
        Dict[str, tuple[str, str]]
    ] = None
)

Bases: Base

Track material scrap and waste.

Each UUID represents one signal: - scrap_uuid: scrap weight or count signal - reason_uuid: scrap reason code (optional) - part_id_uuid: part number / material type (optional)

Merge keys: [date, shift] for shift-level, [period] for trend, [reason] for reason-level, [part_number] for part-level.

Pipeline example::

scrap = ScrapTracking(df)
shift_scrap = scrap.scrap_by_shift('scrap_weight')
# → merge with ShiftReporting.shift_production() on [date, shift]
# → merge with QualityTracking.nok_by_shift() on [date, shift]
cost = scrap.scrap_cost('scrap_weight', 'part_id', {'A': 12.5})
# → merge with QualityTracking.quality_by_part() on [part_number]
Example usage

tracker = ScrapTracking(df)

Scrap per shift¤

shift_scrap = tracker.scrap_by_shift(scrap_uuid='scrap_weight')

Scrap by reason¤

reasons = tracker.scrap_by_reason( scrap_uuid='scrap_weight', reason_uuid='scrap_reason' )

Convert to cost¤

cost = tracker.scrap_cost( scrap_uuid='scrap_weight', part_id_uuid='part_number', material_costs={'PART_A': 12.50, 'PART_B': 8.75} )

scrap_by_shift ¤

scrap_by_shift(
    scrap_uuid: str, *, value_column: str = "value_double"
) -> pd.DataFrame

Scrap quantity per shift.

Parameters:

Name Type Description Default
scrap_uuid str

UUID for scrap weight/count signal.

required
value_column str

Column containing scrap values.

'value_double'

Returns:

Type Description
DataFrame

DataFrame with columns:

DataFrame
  • date, shift, scrap_quantity

scrap_by_reason ¤

scrap_by_reason(
    scrap_uuid: str,
    reason_uuid: str,
    *,
    value_column_scrap: str = "value_double",
    value_column_reason: str = "value_string"
) -> pd.DataFrame

Scrap quantity by reason code.

Parameters:

Name Type Description Default
scrap_uuid str

UUID for scrap weight/count signal.

required
reason_uuid str

UUID for scrap reason code signal.

required
value_column_scrap str

Column containing scrap values.

'value_double'
value_column_reason str

Column containing reason codes.

'value_string'

Returns:

Type Description
DataFrame

DataFrame with columns:

DataFrame
  • reason, scrap_quantity, pct_of_total

scrap_cost ¤

scrap_cost(
    scrap_uuid: str,
    part_id_uuid: str,
    material_costs: Dict[str, float],
    *,
    value_column_scrap: str = "value_double",
    value_column_part: str = "value_string"
) -> pd.DataFrame

Convert scrap quantities to monetary cost.

Parameters:

Name Type Description Default
scrap_uuid str

UUID for scrap weight/count signal.

required
part_id_uuid str

UUID for part number / material type signal.

required
material_costs Dict[str, float]

Dict mapping part numbers to cost per unit scrap.

required
value_column_scrap str

Column containing scrap values.

'value_double'
value_column_part str

Column containing part numbers.

'value_string'

Returns:

Type Description
DataFrame

DataFrame with columns:

DataFrame
  • part_number, scrap_quantity, cost_per_unit, total_cost

scrap_trend ¤

scrap_trend(
    scrap_uuid: str,
    *,
    value_column: str = "value_double",
    window: str = "1D"
) -> pd.DataFrame

Track scrap quantity trend over time.

Parameters:

Name Type Description Default
scrap_uuid str

UUID for scrap weight/count signal.

required
value_column str

Column containing scrap values.

'value_double'
window str

Time window for aggregation (default '1D').

'1D'

Returns:

Type Description
DataFrame

DataFrame with columns:

DataFrame
  • period, scrap_quantity