fabagent / core /schema.py
hee_!J
chore: FabAgent ๊ณจ๊ฒฉ ๊ตฌ์„ฑ
8a48888
Raw
History Blame Contribute Delete
1.71 kB
"""FabAgent Tier ๋ฐ์ดํ„ฐ ๊ณ„์•ฝ
ํ”„๋ก ํŠธ์—”๋“œ(components/)์™€ ๋ฐฑ์—”๋“œ(agents/)๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋‹จ์ผ ๊ณ„์•ฝ๋ฉด
์ด ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊พธ๋ฉด ์–‘์ชฝ ๋‹ค ์˜ํ–ฅ๋ฐ›์œผ๋ฏ€๋กœ, ๋ณ€๊ฒฝ์€ ์ž‘์€ PR๋กœ ๋จผ์ € ํ•ฉ์˜ ์˜ˆ์ •
๋ชจ๋“  Tier ๋ฐ์ดํ„ฐ๋Š” plain dict๋กœ ๋‹ค๋ฃธ - components/๊ฐ€ HTML f-string์—์„œ
dict ํ‚ค๋กœ ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ, TypedDict๋Š” ํƒ€์ž… ํžŒํŠธ/๋ฌธ์„œ ์šฉ๋„
"""
from typing import Optional, TypedDict
# Tier 1 ์ด์ƒ ํƒ์ง€
class Feature(TypedDict):
name: str
value: float
class LotRef(TypedDict):
id: str
wafers: int
class Tier1(TypedDict):
score: float # ์ด์ƒ ์ ์ˆ˜ (0~1)
features: list[Feature] # ๊ธฐ์—ฌ ํ”ผ์ฒ˜ Top-N (value ๋‚ด๋ฆผ์ฐจ์ˆœ)
lot: LotRef
# Tier 2 ์›์ธ ๋ถ„์„
class Cause(TypedDict):
name: str
pct: int # ์ถ”์ • ๊ธฐ์—ฌ๋„ (%)
evidence: str
citations: list[str] # RAG ๊ทผ๊ฑฐ ๋ฌธ์„œ ID
class Tier2(TypedDict):
causes: list[Cause]
# Tier 3 ๊ณต์ • ๊ฐ„ ์˜ํ–ฅ ํ‰๊ฐ€
class Dependency(TypedDict):
stage: str
delta: str
tag: str
kind: str # "current" | "impacted" | "minor"
class ImpactLot(TypedDict):
label: str
lots: int
wafers: int
class Tier3(TypedDict):
yield_loss: float # ์˜ˆ์ƒ ์ˆ˜์œจ ์†์‹ค (%p)
dependencies: list[Dependency]
impact_lots: list[ImpactLot]
# Tier 4 ๋Œ€์‘ ๊ถŒ๊ณ 
class Action(TypedDict):
text: str
meta: Optional[str]
class Reference(TypedDict):
id: str
desc: str
class Tier4(TypedDict):
immediate: list[Action]
longterm: list[Action]
refs: list[Reference]
# ์ „์ฒด
class TierData(TypedDict):
tier1: Tier1
tier2: Tier2
tier3: Tier3
tier4: Tier4