Files
2nd/10_Wiki/Topic_Programming/AI_and_ML/Finished Goods.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

6.6 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-finished-goods Finished Goods (제품 완성품) 10_Wiki/Topics verified self
finished goods
FG
finished inventory
supply chain
MRP
ERP
none A 0.88 applied
supply-chain
inventory
manufacturing
erp
mrp
finished-goods
2026-05-10 pending
language applicable_to
ERP / Supply Chain
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

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)

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

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

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)

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)

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

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

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

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)

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)

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)

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)

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

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

🤖 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