오투인터내셔널
경력근거: SCM Agent (재고·생산 계획 자동화) 운영 및 기능 추가
※ 실제 산출물이 아닌 AI 예측 시안입니다.
오투인터내셔널은 SCM Agent 로 재고·생산 계획을 자동화하고 베트남 공장 MES 까지 식품제조·이커머스를 함께 운영합니다. 이 도구는 오투의 품목·공장·리드타임 체계가 있어야 의미가 생기고, 일반 수요예측이 아니라 운영 제약에 붙는 계획 초안이 됩니다.
공고가 SCM Agent 로 재고·생산 계획을 자동화·운영한다고 밝힌다. 발주·생산 계획 제안 도구가 그 자동화의 진입점이다.
사내 운영 시스템을 만들고 안 멈추게 지키는 자리라, 운영자가 검토하는 계획 초안 도구가 그대로 붙는다.
베트남 공장 MES 등 제조와 이커머스를 함께 운영한다. 품목·공장 단위로 계획을 잡는 구조가 맞는다.
식품 SCM 계획 제안 도구입니다. 품목별 재고와 수요·리드타임을 넣으면 발주량과 생산 계획 초안이 나오고, 숫자마다 어떤 계산에서 나왔는지 적힙니다.
오투인터내셔널 AI Product Engineer 와 SCM·생산 운영 담당입니다.
품목 재고·수요·리드타임 메타만으로도 발주·생산 계획의 1차안을 만들 수 있고, 운영자는 그 초안을 보고 확정하면 됩니다.
품목별 재고·평균 수요·리드타임·유통기한을 넣으면 발주량·생산 계획과 부족·과잉 경고를 근거 배열과 함께 내는 웹 도구입니다. 실제 ERP·MES 연동은 빼고 품목 메타가 주어졌다는 가정으로만 시작한다(실 연동·실시간 수요는 빠진 20% 작업이라 W3로 분리).
1주차 계획을 사람 운영자 정답과 비교해 과·부족 오차를 재고, 안전재고·리드타임 규칙을 보정한 v2.
수요 시계열 요약을 보조 입력으로 받아 발주 타이밍을 조정하고, 공장별 생산능력·유통기한 제약을 반영하는 확장판입니다.
품목 한 세트를 넣으면 발주량·생산 계획과 부족·과잉 경고, 그 근거가 한 화면에 나오는 걸 시연합니다.
경고가 모두 입력 재고·수요·리드타임 수치를 가리키는지 judge 로 검사해 경고 근거 인용율 100%를 보여줍니다. 단, 정답·데이터를 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
결측 수요·극단 재고(0·과다)·미등록 품목을 일부러 섞은 입력 30종을 넣어도 출력 JSON 형식이 안 깨지고 '미집계·확인필요'로 알리는 걸 시연합니다.
계획과 합성 정답 운영의 과·부족 판정 일치도를 Cohen's κ(두 채점자가 우연 이상으로 얼마나 일치하는지 -1~1 점수, 높을수록 일치)로 2주차에 보고합니다. 합성 기준 추정이라 실제와 다를 수 있습니다.
위 수치는 더미데이터 자가채점이며, 실제 계획 정확도는 오투인터내셔널 실 재고·수요 데이터와 실 운영자 판단이 있어야 측정 가능합니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 데이터 자가채점이라 성능 증명이 아닙니다. 면접에서 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.
정답을 작성자가 만들었으니 잘 맞는 것이 당연합니다. 결측 수요·극단 재고·미등록 품목을 더미에 일부러 섞어 쉬운 문제만 푸는 함정을 피합니다.
과거 수요가 곧 미래 수요는 아닙니다. 실데이터 도입 단계에서 프로모션·시즌성을 반영하는 과제로 분리합니다.
실제 도입 시 합성 정답이 실 운영 판단으로 바뀌고 공장 제약·유통기한도 품목마다 달라집니다. 안전재고·경고 규칙을 실 운영으로 다시 맞추는 일을 도입 과제로 둡니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
품목별 재고와 수요·리드타임. 계획 산출의 입력.
| item_id | name_raw | name_norm_id | on_hand | avg_daily_demand | lead_time_days | shelf_life_days | moq |
|---|---|---|---|---|---|---|---|
| IT01 | 닭가슴살 100g | chicken_100 | 120 | 40 | 5 | 14 | 100 |
| IT02 | 닭가슴살100g | chicken_100 | 30 | 40 | 5 | 14 | 100 |
| IT03 | 소스팩 | sauce | 0 | 25 | 7 | 180 | 200 |
| IT04 | 신규간편식 | — | 50 | — | — | 30 | 50 |
| IT05 | 샐러드믹스 | salad | 600 | 20 | 3 | 5 | 100 |
다음 Zod 스키마를 따르는 품목 행을 더 생성하라: {"type":"object","properties":{"item_id":{"type":"string"},"name_raw":{"type":"string"},"name_norm_id":{"type":["string","null"]},"on_hand":{"type":"number"},"avg_daily_demand":{"type":["number","null"]},"lead_time_days":{"type":["number","null"]},"shelf_life_days":{"type":["number","null"]},"moq":{"type":"number"}},"required":["item_id","name_raw","name_norm_id","on_hand","avg_daily_demand","lead_time_days","shelf_life_days","moq"]}. 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: avg_daily_demand 나 lead_time_days 가 null 인 미집계, name_norm_id 가 null 인 미등록 신규 품목(orphan), 같은 품목의 띄어쓰기 표기 흔들림(name_raw 다름·name_norm_id 동일), on_hand 0(품절)·avg_daily_demand 0(무수요) 경계값, shelf_life_days 가 짧아 과잉발주 위험인 건. 추가로 형식 깨뜨리기 시도 3건(타입이 어긋난 행)을 별도 표시해 파서 가드 테스트에 쓴다.{"type":"object","properties":{"item_id":{"type":"string"},"name_raw":{"type":"string"},"name_norm_id":{"type":["string","null"]},"on_hand":{"type":"number"},"avg_daily_demand":{"type":["number","null"]},"lead_time_days":{"type":["number","null"]},"shelf_life_days":{"type":["number","null"]},"moq":{"type":"number"}},"required":["item_id","name_raw","name_norm_id","on_hand","avg_daily_demand","lead_time_days","shelf_life_days","moq"]}| TypeScript | 계획 엔진과 화면의 타입 안전한 로직. 품목 파싱·규칙 계산·모델 호출을 묶는다. |
| Next.js | 운영자가 품목을 넣고 계획·경고를 검토하는 화면을 렌더링한다. |
| Tailwind | 품목별 계획 카드·경고 배지의 일관된 스타일을 빠르게 잡는다. |
| PostgreSQL | 품목 마스터·재고·수요·계획 이력을 저장하고 조회한다. |
| LLM | 수치 계획에 대한 사람이 읽을 근거 설명과 예외 상황 경고를 생성한다. |
| OpenAI | 근거 요약·예외 설명 생성에 보조로 쓴다. |
✓ pass → 여기서 멈춰도 운영 초안 도구로 완결입니다. 더 키우려면 2주차에서 정답과 비교해 과·부족 오차를 보정합니다.
✓ pass → 신뢰가 붙으면 3주차에서 수요 시계열과 공장 제약으로 넓힙니다.
품목 한 건에 대한 발주·생산 계획과 위험 경고.
{"type":"object","properties":{"item_id":{"type":"string"},"order_qty":{"type":["number","null"]},"warnings":{"type":"array","items":{"type":"string","enum":["stockout","overstock","expiry","moq_violation","no_demand"]}},"confidence":{"type":"string","enum":["ok","watch","review"]},"evidence":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","enum":["on_hand","avg_daily_demand","lead_time_days","shelf_life_days"]},"note":{"type":"string"}},"required":["field","note"]},"minItems":1},"hedge":{"type":"string"}},"required":["item_id","order_qty","warnings","confidence","evidence","hedge"]}[
{
"item_id": "IT02",
"order_qty": 200,
"warnings": [
"stockout"
],
"confidence": "ok",
"evidence": [
{
"field": "on_hand",
"note": "재고 30, 일수요 40 이라 곧 품절"
},
{
"field": "lead_time_days",
"note": "리드타임 5일 고려해 발주"
}
],
"hedge": "발주량은 합성 수요 기준 추정이라 실 수요와 다를 수 있다."
},
{
"item_id": "IT04",
"order_qty": null,
"warnings": [],
"confidence": "review",
"evidence": [
{
"field": "avg_daily_demand",
"note": "수요·리드타임 미집계라 계획 산출 불가, 확인필요"
}
],
"hedge": "데이터 결측이라 보류. 합성 기준."
},
{
"item_id": "IT05",
"order_qty": 0,
"warnings": [
"overstock",
"expiry"
],
"confidence": "watch",
"evidence": [
{
"field": "on_hand",
"note": "재고 600, 일수요 20"
},
{
"field": "shelf_life_days",
"note": "유통기한 5일이라 과잉·폐기 위험"
}
],
"hedge": "과잉·폐기 위험은 합성 기준 추정. 실 회전율 확인 필요."
}
]warnings·confidence enum, evidence min(1)은 Zod 로 자동 검증한다. order_qty 계산과 stockout/overstock 판정 정합은 규칙 엔진으로 자동 검증하고, 경고 근거의 의미 정합과 hedge 의 합성 기준 표기는 judge 와 수동 spot-check 로 검증한다. order_qty 는 합성 수요 기준이라 metrics 의 정직 경계선과 일관되게 검증된 수치로 제시하지 않는다.
근거: SCM Agent (재고·생산 계획 자동화) 운영 및 기능 추가