[
  {
    "assignment_id": "AS-웹개발-04",
    "course": "웹개발",
    "week_no": 4,
    "case_id": "TC-1",
    "case_title": "서버가 켜지고 루트 경로가 응답합니다",
    "required": true,
    "weight": 25,
    "hint_text": "포트 설정과 실행 명령을 다시 확인해 보세요.",
    "required_files": [
      "app.py",
      "README.md"
    ],
    "forbidden_imports": [
      "requests"
    ],
    "due_at_raw": "2026-05-18 23:59"
  },
  {
    "assignment_id": "AS-웹개발-04",
    "course": "웹개발",
    "week_no": 4,
    "case_id": "TC-2",
    "case_title": "목록 조회가 저장된 항목을 모두 돌려줍니다",
    "required": true,
    "weight": 25,
    "hint_text": "조회 결과를 정렬하기 전에 개수를 먼저 맞춰 보세요.",
    "required_files": [
      "app.py",
      "README.md"
    ],
    "forbidden_imports": [
      "requests"
    ],
    "due_at_raw": "2026-05-18 23:59"
  },
  {
    "assignment_id": "AS-웹개발-04",
    "course": "웹개발",
    "week_no": 4,
    "case_id": "TC-3",
    "case_title": "삭제한 항목이 목록에서 빠집니다",
    "required": true,
    "weight": 25,
    "hint_text": null,
    "required_files": [
      "app.py",
      "README.md"
    ],
    "forbidden_imports": [
      "requests"
    ],
    "due_at_raw": "2026-05-18 23:59"
  },
  {
    "assignment_id": "AS-웹개발-04",
    "course": "웹개발",
    "week_no": 4,
    "case_id": "TC-4",
    "case_title": "합계 값이 응답에 포함됩니다",
    "required": false,
    "weight": 30,
    "hint_text": "응답 본문의 키 이름을 과제 안내와 맞춰 보세요.",
    "required_files": [
      "app.py",
      "README.md"
    ],
    "forbidden_imports": [
      "requests"
    ],
    "due_at_raw": "2026-05-18 23:59"
  },
  {
    "assignment_id": "AS-데이터-02",
    "course": "데이터분석",
    "week_no": 2,
    "case_id": "TC-1",
    "case_title": "파일을 읽어 행 수를 맞춥니다",
    "required": true,
    "weight": 40,
    "hint_text": "구분자와 인코딩을 먼저 확인해 보세요.",
    "required_files": [
      "solution.py"
    ],
    "forbidden_imports": [],
    "due_at_raw": "2026-05-19 23:59"
  },
  {
    "assignment_id": "AS-데이터-02",
    "course": "데이터분석",
    "week_no": 2,
    "case_id": "TC-2",
    "case_title": "빈 값을 걸러 내고 평균을 계산합니다",
    "required": true,
    "weight": 60,
    "hint_text": "숫자로 바꿀 수 없는 값이 섞여 있는지 보세요.",
    "required_files": [
      "solution.py"
    ],
    "forbidden_imports": [],
    "due_at_raw": "2026-05-19 23:59"
  },
  {
    "assignment_id": "AS-데이터-02",
    "course": "데이터분석",
    "week_no": 2,
    "case_id": "TC-3",
    "case_title": "결과를 보고서 파일로 남깁니다",
    "required": false,
    "weight": null,
    "hint_text": null,
    "required_files": [
      "solution.py",
      "report.md"
    ],
    "forbidden_imports": [],
    "due_at_raw": "2026-05-19 23:59"
  },
  {
    "assignment_id": "AS-앱-01",
    "course": "앱개발",
    "week_no": null,
    "case_id": "TC-1",
    "case_title": "앱이 빌드되고 첫 화면이 뜹니다",
    "required": true,
    "weight": 50,
    "hint_text": "빌드 설정 파일을 함께 올렸는지 보세요.",
    "required_files": [
      "main.kt"
    ],
    "forbidden_imports": [],
    "due_at_raw": null
  },
  {
    "assignment_id": "AS-앱-01",
    "course": "앱개발",
    "week_no": null,
    "case_id": "TC-2",
    "case_title": "버튼을 누르면 값이 바뀝니다",
    "required": true,
    "weight": 50,
    "hint_text": "상태를 화면과 어떻게 묶었는지 확인해 보세요.",
    "required_files": [
      "main.kt"
    ],
    "forbidden_imports": [],
    "due_at_raw": null
  },
  {
    "assignment_id": "AS-앱-01",
    "course": "앱개발",
    "week_no": null,
    "case_id": "TC-3",
    "case_title": "버튼을 누르면 값이 바뀝니다",
    "required": false,
    "weight": 10,
    "hint_text": null,
    "required_files": [
      "main.kt"
    ],
    "forbidden_imports": [],
    "due_at_raw": null
  },
  {
    "assignment_id": "AS-웹개발-03",
    "course": "웹개발",
    "week_no": 3,
    "case_id": "TC-1",
    "case_title": "폼 입력이 저장됩니다",
    "required": true,
    "weight": 100,
    "hint_text": "저장 후 다시 조회해 값이 남는지 보세요.",
    "required_files": [
      "app.py"
    ],
    "forbidden_imports": [],
    "due_at_raw": "05/11 23:59"
  },
  {
    "assignment_id": "AS-웹개발-05",
    "course": "웹개발",
    "week_no": 5,
    "case_id": "TC-1",
    "case_title": "로그인한 사용자만 목록을 봅니다",
    "required": true,
    "weight": 70,
    "hint_text": "세션이 없을 때의 응답 코드를 확인해 보세요.",
    "required_files": [
      "app.py",
      "README.md"
    ],
    "forbidden_imports": [
      "requests",
      "urllib"
    ],
    "due_at_raw": "2026-05-25 23:59"
  }
]