28차시. Conditional Edge 이해
퀴즈 1 — State의 영업 여부만 보고 분기하기
State의 마감 시각만 보고 영업 중인지 나누세요. 함수 안에서 현재 시각을 부르지 않습니다.
빈칸 코드에서 시작합니다.
def route_hours(state):
pass결과 보기 (예시 풀이)
# 시각 계산은 시작 노드가 합니다. 분기 함수는 그 결과만 읽습니다.
def start_node(hour, close_hour=18):
# 지금 몇 시인지는 바깥에서 받아 옵니다. 실제 서비스라면 여기서 시계를 봅니다.
return {"within_hours": hour < close_hour}
# 분기 함수: State 에 적힌 값만 보고 경로 이름을 고릅니다. 시계를 직접 보지 않습니다.
def route_hours(state):
if state.get("within_hours"):
return "document"
# 값이 없거나 False 면 마감 안내로 보냅니다.
return "closed"
# 1) 오전 10시: 영업 중이므로 document 여야 합니다.
print(route_hours(start_node(10)))
# 2) 저녁 20시: 마감이므로 closed 여야 합니다.
print(route_hours(start_node(20)))
# 3) 테스트에서는 시계 없이 State 를 직접 만들어 넣을 수 있습니다. 이것이 결정성의 장점입니다.
print(route_hours({"within_hours": True}))
# 4) 같은 State 를 몇 번 넣어도 같은 경로가 나와야 합니다.
print({route_hours({"within_hours": False}) for _ in range(5)})
실행 결과
document
closed
document
{'closed'}채점 기준: datetime.now()가 있으면 오답이다.