Skip to content

[planner] 계획 가능성 판정 및 초기 계획 생성 View 연결 #57

Description

@wngjs8114

배경

planner 서비스 로직(scheduler, feasibility_checker, schedule_generator)은 이미 구현·머지됐지만, 이를 실제로 호출하는 View/URL이 전혀 없어서 화면에서 계획을 생성할 방법이 없다. 확정된 View 연결 우선순위(plan_generate → plan_complete → dashboard → today → ...)의 첫 단계.

작업 내용

  • planner:feasibility (GET): 시험기간 전체 가용시간·확정 작업 기준 가능성 판정 표시
  • planner:plan_generate (POST): 가능성 재검증 후 generate_schedule() 호출, 실패 시 사유별 안내
  • planner:plan_complete (GET): 생성된 DailyPlan 요약 표시

검증 로직

  • 화면 버튼(RISKY/IMPOSSIBLE 비활성화)만 믿지 않고 서버에서 재검증 (POSSIBLE만 허용)
  • 계획 배치용 가용시간은 오늘 이후만 사용 (과거 날짜 배치 방지)
  • 과목이 여러 개인데 일부만 확정된 상태로 조용히 생성되는 것 방지 (_validate_task_readiness)
  • 작업 0개, 예상시간 0인 작업, 미확정 작업 존재 시 생성 차단
  • generate_schedule()의 각 예외(ScheduleAlreadyExistsError, UnallocatedTasksError, MismatchedExamPeriodError, DuplicateTaskAllocationError)를 사유별로 안내

이번 이슈 범위 밖

  • 과목별 세부 판정 (AvailableTime이 exam_period 단위라 배분 정책 없이는 불가 — style: #49 대시보드 화면 구현 #51 리뷰에서 확정된 제약과 동일)
  • 위험(RISKY) 판정 시 계획 생성 (별도 후속 이슈)
  • 최종 템플릿/CSS (FE 담당, 지금은 최소 뼈대만)

테스트

  • 다른 사용자 시험기간 접근 차단
  • 확정 작업 없음 / 미확정 작업 존재 / 작업 없는 과목 존재 / 예상시간 0 → 전부 생성 차단
  • 과거 가용시간이 배치에 사용 안 됨
  • RISKY/IMPOSSIBLE 판정 시 생성 거부
  • 정상 생성 시 모든 작업 배치
  • 중복 제출 시 기존 계획으로 이동
  • 계획 없을 때 plan_complete 접근 시 가능성 화면으로 리다이렉트

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions