Skip to content

문제 풀이 상태 관리 API #25

@dlwlehd

Description

@dlwlehd

📝 작업 개요

이번 이슈에서 구현하거나 수정할 내용을 간단히 요약해주세요.

  • 문제 풀이 상태 업데이트 API 개발 (오늘의 추천 문제 일괄 업데이트)
  • 문제 풀이 상태 조회 API 개발 (개인/그룹 조회)
  • 특정 문제의 모든 멤버 풀이 상태 조회 API 개발
  • 문제 풀이 통계 조회 API 개발 (개인/그룹/멤버별)
  • 문제 풀이 상태 모델 및 서비스 레이어 구현

🎯 세부 작업 내용

구체적으로 어떤 작업을 수행해야 하는지 작성해주세요.

  • ProblemSolvingStatus 모델 생성 및 마이그레이션
  • ProblemSolvingStatusService 서비스 클래스 구현 (상태 업데이트, 조회, 통계)
  • Serializers 구현 (Request/Response/Query)
  • Views 구현 (4개 API 엔드포인트)
  • URL 패턴 추가

✅ 완료 조건 (Acceptance Criteria)

이 이슈가 닫히기 위해 충족해야 하는 조건을 명확히 작성해주세요.

  • 모든 API 엔드포인트가 정상 동작한다.
  • 문제 풀이 상태 업데이트 시 5분 쿨다운이 정상 작동한다.
  • 개인 조회(view=me)와 그룹 조회(view=group)가 모두 정상 작동한다.
  • Note status가 정확히 계산되어 응답에 포함된다.
  • 통계 조회 API가 me/group/member 모든 view에서 정상 작동한다.
  • 모든 API 응답 형식이 스펙과 일치한다.
  • 권한 체크가 정상 작동한다 (스터디 멤버만 접근 가능).
  • 관련 테스트가 통과한다.
  • API 문서가 업데이트되었다.

💡 참고 사항 (선택)

참고 문서, Figma 링크, API 스펙 문서 등이 있다면 추가해주세요.

API 스펙

1. 문제 풀이 상태 업데이트

  • POST /studies/<study_id>/assignments/update/
  • Request Body: { "status": "completed" | "in_progress" | "not_attempted" }
  • 쿨다운: 같은 날짜에 대해 5분마다 1회만 업데이트 가능

2. 문제 풀이 상태 조회

  • GET /studies/<study_id>/assignments/status/
  • Query Parameters:
    • date: YYYY-MM-DD (선택, 기본값: 오늘)
    • view: me | group (선택, 기본값: me)

3. 특정 문제의 모든 멤버 풀이 상태 조회

  • GET /studies/<study_id>/problems/<problem_id>/status/members/

4. 통계 조회

  • GET /studies/<study_id>/statistics/
  • Query Parameters:
    • view: me | group | member (선택, 기본값: me)
    • member_id: 멤버 ID (view=member일 때 필수)
    • start_date: 시작 날짜 (YYYY-MM-DD, 선택)
    • end_date: 종료 날짜 (YYYY-MM-DD, 선택)

상태 정의

  • Problem Status: not_attempted | in_progress | completed
  • Note Status: not_completed | completed

응답 필드

  • 각 응답에 member_id, member_email, username (boj_username) 포함
  • problem_status, note_status 모두 포함
  • 통계 응답에 problem_status_summary, note_status_summary 포함

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