--- id: wiki-2026-0508-finished-goods title: Finished Goods (제품 완성품) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [finished goods, FG, finished inventory, supply chain, MRP, ERP] duplicate_of: none source_trust_level: A confidence_score: 0.88 verification_status: applied tags: [supply-chain, inventory, manufacturing, erp, mrp, finished-goods] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: ERP / Supply Chain applicable_to: [Manufacturing, Logistics, Forecast] --- # Finished Goods ## 매 한 줄 > **"매 manufacturing 의 의 의 sale-ready inventory"**. Raw material → WIP → Finished Goods. 매 inventory turnover, 매 demand forecast, 매 safety stock 의 critical. 매 modern: 매 ML demand forecast + 매 real-time visibility. ## 매 핵심 ### 매 inventory tier - **Raw material**. - **WIP** (Work in Progress). - **Finished Goods** (FG). - **MRO** (maintenance, repair, ops). ### 매 metric - **Inventory turnover** = COGS / avg FG. - **Days of inventory** = 365 / turnover. - **Stockout rate**. - **Service level**. - **Carrying cost** (보관, capital, obsolete). ### 매 strategy - **MTS** (Make-to-stock). - **MTO** (Make-to-order). - **ATO** (Assemble-to-order). - **ETO** (Engineer-to-order). - **JIT** (Just-in-time). ### 매 응용 1. **Demand forecast**: 매 ML. 2. **Safety stock**. 3. **Reorder point**. 4. **EOQ** (Economic Order Quantity). 5. **ABC analysis**: 매 80/20 importance. ## 💻 패턴 ### Inventory turnover ```python def turnover(cogs_year, avg_inventory_value): return cogs_year / avg_inventory_value def days_of_inventory(turnover): return 365 / turnover # 매 lower = leaner ``` ### EOQ (Wilson formula) ```python import math def eoq(annual_demand, order_cost, holding_cost_per_unit): return math.sqrt(2 * annual_demand * order_cost / holding_cost_per_unit) ``` ### Safety stock ```python from scipy.stats import norm def safety_stock(service_level, std_demand_during_lead, lead_time_days): z = norm.ppf(service_level) return z * std_demand_during_lead * math.sqrt(lead_time_days) def reorder_point(avg_demand_per_day, lead_time_days, safety_stk): return avg_demand_per_day * lead_time_days + safety_stk ``` ### ABC analysis ```python import pandas as pd def abc(df): """매 80/20 importance.""" df = df.sort_values('annual_value', ascending=False) df['cum_pct'] = df.annual_value.cumsum() / df.annual_value.sum() df['class'] = df.cum_pct.apply(lambda p: 'A' if p < 0.8 else 'B' if p < 0.95 else 'C') return df ``` ### Demand forecast (ML) ```python import xgboost as xgb def forecast_demand(history, exog): """매 history: time series. exog: promo, season, price.""" X = create_features(history, exog) # 매 lag, rolling, seasonality y = history.shift(-7) # 매 1-week ahead model = xgb.XGBRegressor().fit(X[:-7], y[:-7]) return model.predict(X[-7:]) ``` ### Bill of Materials (BOM) ```python @dataclass class BOM: finished_good: str components: dict[str, int] # 매 part: qty def total_components(self, n_units): return {part: qty * n_units for part, qty in self.components.items()} ``` ### MRP run (simplified) ```python def mrp_run(forecast_fg, on_hand, bom, lead_time): """매 매 component 의 의 의 plan.""" plan = {} for fg, qty in forecast_fg.items(): net_need = max(0, qty - on_hand.get(fg, 0)) if net_need > 0: for part, ratio in bom[fg].items(): plan[part] = plan.get(part, 0) + net_need * ratio return {part: {'order_qty': q, 'order_by': today() - timedelta(days=lead_time[part])} for part, q in plan.items()} ``` ### Inventory carrying cost ```python def carrying_cost(unit_cost, holding_rate=0.25, qty=1, time_year=1): """매 holding rate = 매 storage + capital + obsolete.""" return unit_cost * holding_rate * qty * time_year ``` ### Stockout cost ```python def stockout_cost(unit_lost_margin, prob_stockout, expected_demand_during_stockout): return unit_lost_margin * prob_stockout * expected_demand_during_stockout ``` ### JIT signal (kanban) ```python class KanbanCard: """매 trigger production / replenish.""" def __init__(self, part, qty, supplier): self.part = part; self.qty = qty; self.supplier = supplier def consume(self): self.send_signal_to(self.supplier) ``` ### ERP integration (SAP-like) ```python def sync_to_erp(fg_movement): erp_api.post('/inventory/movement', json={ 'material': fg_movement.sku, 'plant': fg_movement.plant, 'storage_loc': fg_movement.bin, 'qty': fg_movement.qty, 'movement_type': fg_movement.type, }) ``` ### Real-time visibility (RFID / IoT) ```python def rfid_event_handler(event): update_inventory(event.sku, event.location, event.timestamp) if get_quantity(event.sku) < reorder_point(event.sku): trigger_replenishment(event.sku) ``` ### Forecast accuracy (MAPE, WAPE) ```python def mape(actual, forecast): return abs((actual - forecast) / actual).mean() * 100 def wape(actual, forecast): return abs(actual - forecast).sum() / actual.sum() * 100 ``` ### LLM-aided demand sensing ```python def demand_sense(news_signals, social_trends, llm): prompt = f"""You are a supply chain expert. News: {news_signals} Social: {social_trends} Output JSON with demand impact predictions for these SKUs...""" return json.loads(llm.generate(prompt)) ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Stable demand | EOQ + safety stock | | Variable demand | ML forecast + dynamic | | Seasonal | + seasonality features | | Custom product | MTO / ETO | | Mass | MTS + JIT | | Critical SKU | A class — tight monitor | **기본값**: 매 ML forecast + 매 ABC class + 매 dynamic safety stock + 매 ERP/MRP integration + 매 RFID visibility. ## 🔗 Graph - 부모: [[Supply-Chain]] - 응용: [[ERP]] · [[MRP]] - Adjacent: [[Dynamic Pricing & Offers]] · [[E-commerce-Optimization]] ## 🤖 LLM 활용 **언제**: 매 manufacturing. 매 retail FG planning. 매 supply chain. **언제 X**: 매 service-only. ## ❌ 안티패턴 - **No safety stock**: 매 stockout cascade. - **Fixed reorder regardless demand**: 매 over/under. - **A/B/C uniform treatment**: 매 efficiency lose. - **No forecast eval**: 매 bias accumulate. - **JIT without supplier reliability**: 매 risk. ## 🧪 검증 / 중복 - Verified (APICS, Sahin OR textbook, ERP standards). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-04-20 | Auto-reinforced | | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — inventory + 매 EOQ / safety / ABC / MRP / forecast code |