generated from ttipo/project-base
feat(backend): AI 코스 시간표를 짜고 검증·고치는 순수 로직 추가 #11
Reference in New Issue
Block a user
Delete Branch "feat/course-planner"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
무엇을 · 왜
AI 코스 생성에서 코드가 맡는 부분(설계 §3.3–§3.7)을 순수 함수로 만든다. 구현 순서의 2단계(설계 §14)다. 아직 API·앱에는 연결하지 않았고, 연결은 4단계에서 한다.
AI 는 후보 번호로 장소와 머무는 시간만 고른다. 영업시간·이동·반려동물 조건 검증과 순서 고치기는 코드가 맡는다. 그래야 닫힌 식당으로 보내거나 지어낸 사실이 화면에 나가지 않는다. 키 없이 시험할 수 있게 DB·AI 와 떨어진 순수 함수로 먼저 만든다.
흐름 —
backend/src/modules/course-generation/planner/filter.tsshortlist.tsschedule.ts·travel.ts·availability.tsplan-course.ts거르기
줄이기
시간표·검증
고치기
결과는 세 가지다.
coursepartial: 장소를 뺐거나 AI 가 알림을 남겼다failed: 2곳 미만이다. 위반 목록을 함께 주므로 생성 작업이 AI 를 다시 부르거나AI_003을 낸다장소마다 경고(
hours_unknown·event_time_unknown·pet_unknown·event_last_day)를 붙인다. 코스 합계(장소 수 · 전체 시간 · 이동 시간 · 반려동물 동반이 확인된 장소 수)도 붙인다.구현하며 정한 것 (설계 §3.4·§3.6·§3.7 에 적었다)
event_ends_early대신event_last_day(그날이 마지막 날)partial로 낸다partial_with_notice와 맞춘다함께 바꾼 것
shared/utils/geo.ts에distanceMeters를 더했다. 장소 반경 검색 SQL 과 같은 하버사인 식이다tsconfig.build.json에서 테스트용*.fixtures.ts를 운영 빌드에서 뺐다확인 방법
영향 범위
체크리스트
planner.constants.ts에 모았다npm run sync:error-codes실행 후 생성 파일까지 커밋: 해당 없음🤖 Generated with Claude Code