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
|
|
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
|
|
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
|
|
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
|
|