Skip to content

Latest commit

Β 

History

History
675 lines (515 loc) Β· 17.6 KB

File metadata and controls

675 lines (515 loc) Β· 17.6 KB

μˆ˜μ—… API

μˆ˜μ—… κ΄€λ ¨ APIλŠ” μ„Έ κ°€μ§€ λ¦¬μ†ŒμŠ€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

  • κ°•μ˜κ³„νšμ„œ(Syllabus): μˆ˜μ—… κ°œμ„€ 정보 (제λͺ©, μ‹œκ°„, ꡐ과λͺ©, λ©˜ν†  λ“±)
  • μˆ˜κ°•(Enrollment): ν•™μƒμ˜ μˆ˜κ°•μ‹ μ²­ 및 평가 정보
  • ν•™κΈ° 등둝(Registration): μ‚¬μš©μžμ˜ 학기별 μ—­ν• (학생/ꡐ사) 등둝

이 μ„Έ λ¦¬μ†ŒμŠ€κ°€ 유기적으둜 μ—°κ²°λ˜μ–΄ μˆ˜μ—…μ˜ 전체 생애주기λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.


1. κ°•μ˜κ³„νšμ„œ API (Syllabus)

라우트 파일: backend/src/routes/syllabuses.js 컨트둀러 파일: backend/src/controllers/syllabuses.js λͺ¨λΈ 파일: backend/src/models/Syllabus.js

μ—”λ“œν¬μΈνŠΈ μš”μ•½

λ©”μ„œλ“œ 경둜 μ„€λͺ… κΆŒν•œ
POST /api/syllabuses κ°•μ˜κ³„νšμ„œ 생성 isLoggedIn
GET /api/syllabuses/:_id? κ°•μ˜κ³„νšμ„œ 쑰회 (λͺ©λ‘/상세) isLoggedIn
POST /api/syllabuses/:_id/confirmed μˆ˜μ—… 승인 isLoggedIn
DELETE /api/syllabuses/:_id/confirmed μˆ˜μ—… 승인 μ·¨μ†Œ isLoggedIn
PUT /api/syllabuses/:_id κ°•μ˜κ³„νšμ„œ μˆ˜μ • isLoggedIn
PUT /api/syllabuses/:_id/subject ꡐ과λͺ© μˆ˜μ • isLoggedIn
PUT /api/syllabuses/:_id/cover-image 컀버 이미지 μ„€μ • isLoggedIn
DELETE /api/syllabuses/:_id/cover-image 컀버 이미지 μ‚­μ œ isLoggedIn
PUT /api/syllabuses/:_id/hide μΊ˜λ¦°λ” μˆ¨κΉ€ isLoggedIn
PUT /api/syllabuses/:_id/show μΊ˜λ¦°λ” ν‘œμ‹œ isLoggedIn
DELETE /api/syllabuses/:_id κ°•μ˜κ³„νšμ„œ μ‚­μ œ isLoggedIn

κ°•μ˜κ³„νšμ„œ 생성

ꡐ사(λ©˜ν† )κ°€ μˆ˜μ—…μ„ κ°œμ„€ν•©λ‹ˆλ‹€. ν•™κΈ°μ˜ permissionSyllabusV2 κΆŒν•œ 섀정에 따라 κ°œμ„€ κ°€λŠ₯ μ—¬λΆ€κ°€ κ²°μ •λ©λ‹ˆλ‹€.

POST /api/syllabuses

κΆŒν•œ: isLoggedIn (ν•™κΈ° κΆŒν•œμ— 따라 μΆ”κ°€ μ œν•œ)

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
season string O ν•™κΈ° ObjectId
classTitle string O μˆ˜μ—… 제λͺ©
time object[] X μˆ˜μ—… μ‹œκ°„ λ°°μ—΄
time[].label string O μ‹œκ°„ 라벨 (예: "μ›”8")
time[].day string O μš”μΌ (μ›”, ν™”, 수, λͺ©, 금, ν† , 일)
time[].start string O μ‹œμž‘ μ‹œκ°„ (예: "10:00")
time[].end string O μ’…λ£Œ μ‹œκ°„ (예: "11:00")
classroom string X κ°•μ˜μ‹€
subject string[] X ꡐ과λͺ© λΆ„λ₯˜ λ°°μ—΄ (예: ["μˆ˜ν•™", "미적뢄"])
point number X 학점 (κΈ°λ³Έκ°’: 0)
limit number X μˆ˜κ°• 정원 (0이면 λ¬΄μ œν•œ, κΈ°λ³Έκ°’: 0)
teachers object[] O λ©˜ν†  λͺ©λ‘ (μ΅œμ†Œ 1λͺ…)
teachers[]._id string O ꡐ사 ObjectId
teachers[].userId string O ꡐ사 μ‚¬μš©μž ID
teachers[].userName string O ꡐ사 이름
info object X μ„ΈλΆ€ 정보 (에디터 데이터)

μš”μ²­ μ˜ˆμ‹œ

{
  "season": "507f1f77bcf86cd799439021",
  "classTitle": "미적뢄 기초반",
  "time": [
    { "label": "μ›”3", "day": "μ›”", "start": "10:00", "end": "10:50" },
    { "label": "수3", "day": "수", "start": "10:00", "end": "10:50" }
  ],
  "classroom": "101호",
  "subject": ["μˆ˜ν•™", "미적뢄"],
  "point": 2,
  "limit": 30,
  "teachers": [
    {
      "_id": "507f1f77bcf86cd799439011",
      "userId": "teacher01",
      "userName": "김ꡐ사"
    }
  ]
}

응닡 (200)

{
  "syllabus": {
    "_id": "507f1f77bcf86cd799439031",
    "season": "507f1f77bcf86cd799439021",
    "school": "507f1f77bcf86cd799439011",
    "schoolId": "highschool01",
    "schoolName": "ν…ŒμŠ€νŠΈ 고등학ꡐ",
    "year": "2024학년도",
    "term": "1ν•™κΈ°",
    "user": "507f1f77bcf86cd799439011",
    "userId": "teacher01",
    "userName": "김ꡐ사",
    "classTitle": "미적뢄 기초반",
    "time": [
      { "label": "μ›”3", "day": "μ›”", "start": "10:00", "end": "10:50" },
      { "label": "수3", "day": "수", "start": "10:00", "end": "10:50" }
    ],
    "classroom": "101호",
    "subject": ["μˆ˜ν•™", "미적뢄"],
    "point": 2,
    "limit": 30,
    "count": 0,
    "teachers": [
      {
        "_id": "507f1f77bcf86cd799439011",
        "userId": "teacher01",
        "userName": "김ꡐ사",
        "confirmed": false,
        "isHiddenFromCalendar": false
      }
    ]
  }
}

μ°Έκ³ : time 배열은 μ €μž₯ μ‹œ μš”μΌ+μ‹œμž‘μ‹œκ°„ 순으둜 μžλ™ μ •λ ¬λ©λ‹ˆλ‹€. μš”μΌ μˆœμ„œ: μ›”(0) ~ 일(6).

κ°•μ˜κ³„νšμ„œ 쑰회

GET /api/syllabuses/:_id?

κΆŒν•œ: isLoggedIn

λͺ©λ‘ 쑰회 쿼리 νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„° νƒ€μž… ν•„μˆ˜ μ„€λͺ…
season string X ν•™κΈ° ObjectId둜 필터링
school string X 학ꡐ ObjectId둜 필터링
user string X κ°œμ„€μž ObjectId둜 필터링

λͺ©λ‘ 응닡 (200)

{
  "syllabuses": [
    {
      "_id": "...",
      "classTitle": "미적뢄 기초반",
      "subject": ["μˆ˜ν•™", "미적뢄"],
      "time": [...],
      "classroom": "101호",
      "count": 15,
      "limit": 30,
      "teachers": [...]
    }
  ]
}

μˆ˜μ—… 승인 / 승인 μ·¨μ†Œ

λ©˜ν† (ꡐ사)κ°€ μžμ‹ μ΄ ν¬ν•¨λœ μˆ˜μ—…μ„ μŠΉμΈν•©λ‹ˆλ‹€.

승인

POST /api/syllabuses/:_id/confirmed

승인 μ·¨μ†Œ

DELETE /api/syllabuses/:_id/confirmed

κ°•μ˜κ³„νšμ„œ μˆ˜μ •

PUT /api/syllabuses/:_id

κΆŒν•œ: isLoggedIn

μš”μ²­ λ³Έλ¬Έ

생성 μ‹œμ™€ λ™μΌν•œ ν•„λ“œλ₯Ό μˆ˜μ • κ°€λŠ₯ν•©λ‹ˆλ‹€ (classTitle, time, classroom, subject, point, limit, teachers, info λ“±).

ꡐ과λͺ© μˆ˜μ •

PUT /api/syllabuses/:_id/subject

κΆŒν•œ: isLoggedIn

컀버 이미지

컀버 이미지 μ„€μ •

PUT /api/syllabuses/:_id/cover-image

컀버 이미지 μ‚­μ œ

DELETE /api/syllabuses/:_id/cover-image

μΊ˜λ¦°λ” ν‘œμ‹œ μ„€μ •

λ©˜ν† κ°€ μžμ‹ μ˜ μΊ˜λ¦°λ”μ—μ„œ ν•΄λ‹Ή μˆ˜μ—…μ˜ ν‘œμ‹œ μ—¬λΆ€λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

μΊ˜λ¦°λ”μ—μ„œ 숨기기

PUT /api/syllabuses/:_id/hide

μΊ˜λ¦°λ”μ— ν‘œμ‹œν•˜κΈ°

PUT /api/syllabuses/:_id/show

κ°•μ˜κ³„νšμ„œ μ‚­μ œ

DELETE /api/syllabuses/:_id

κΆŒν•œ: isLoggedIn

주의: μˆ˜κ°•μƒμ΄ μžˆλŠ” μˆ˜μ—…μ„ μ‚­μ œν•˜λ©΄ ν•΄λ‹Ή μˆ˜κ°•(Enrollment) 데이터도 ν•¨κ»˜ μ‚­μ œλ©λ‹ˆλ‹€.


2. μˆ˜κ°• API (Enrollment)

라우트 파일: backend/src/routes/enrollments.js 컨트둀러 파일: backend/src/controllers/enrollments.js λͺ¨λΈ 파일: backend/src/models/Enrollment.js

μ—”λ“œν¬μΈνŠΈ μš”μ•½

λ©”μ„œλ“œ 경둜 μ„€λͺ… κΆŒν•œ
POST /api/enrollments μˆ˜κ°•μ‹ μ²­ isLoggedIn
GET /api/enrollments/:_id? μˆ˜κ°• 쑰회 (λͺ©λ‘/상세) isLoggedIn
GET /api/enrollments/evaluation 평가 데이터 쑰회 isLoggedIn
PUT /api/enrollments/:_id/evaluation 평가 μž…λ ₯ isLoggedIn
PUT /api/enrollments/:_id/memo λ©”λͺ¨ μˆ˜μ • isLoggedIn
PUT /api/enrollments/:_id/hide μΊ˜λ¦°λ” μˆ¨κΉ€ isLoggedIn
PUT /api/enrollments/:_id/show μΊ˜λ¦°λ” ν‘œμ‹œ isLoggedIn
DELETE /api/enrollments/:_id μˆ˜κ°• μ·¨μ†Œ isLoggedIn

μˆ˜κ°•μ‹ μ²­

학생이 μˆ˜μ—…μ— μˆ˜κ°•μ‹ μ²­ν•©λ‹ˆλ‹€. ν•™κΈ°μ˜ permissionEnrollmentV2 κΆŒν•œ 섀정에 따라 μ‹ μ²­ κ°€λŠ₯ μ—¬λΆ€κ°€ κ²°μ •λ©λ‹ˆλ‹€.

POST /api/enrollments

κΆŒν•œ: isLoggedIn (ν•™κΈ° κΆŒν•œμ— 따라 μΆ”κ°€ μ œν•œ)

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
syllabus string O κ°•μ˜κ³„νšμ„œ ObjectId
student string O 학생(μ‚¬μš©μž) ObjectId
studentId string O 학생 μ‚¬μš©μž ID
studentName string O 학생 이름

μš”μ²­ μ˜ˆμ‹œ

{
  "syllabus": "507f1f77bcf86cd799439031",
  "student": "507f1f77bcf86cd799439041",
  "studentId": "student01",
  "studentName": "이학생"
}

응닡 (200)

{
  "enrollment": {
    "_id": "507f1f77bcf86cd799439051",
    "syllabus": "507f1f77bcf86cd799439031",
    "season": "507f1f77bcf86cd799439021",
    "school": "507f1f77bcf86cd799439011",
    "year": "2024학년도",
    "term": "1ν•™κΈ°",
    "classTitle": "미적뢄 기초반",
    "time": [...],
    "classroom": "101호",
    "subject": ["μˆ˜ν•™", "미적뢄"],
    "teachers": [...],
    "student": "507f1f77bcf86cd799439041",
    "studentId": "student01",
    "studentName": "이학생",
    "studentGrade": "2",
    "memo": "",
    "isHiddenFromCalendar": false
  }
}

μ—λŸ¬ 응닡

μƒνƒœ μ½”λ“œ λ©”μ‹œμ§€ μ„€λͺ…
400 FIELD_REQUIRED(...) ν•„μˆ˜ ν•„λ“œ λˆ„λ½
409 쀑볡 인덱슀 μ—λŸ¬ 이미 μˆ˜κ°•μ‹ μ²­ν•œ μˆ˜μ—…
409 ENROLLMENT_LIMIT_EXCEEDED μˆ˜κ°• 정원 초과
409 TIME_OVERLAPPED μ‹œκ°„ν‘œ 좩돌

μ°Έκ³ : μˆ˜κ°•μ‹ μ²­ μ‹œ κ°•μ˜κ³„νšμ„œμ˜ countκ°€ μžλ™μœΌλ‘œ 1 μ¦κ°€ν•©λ‹ˆλ‹€.

μˆ˜κ°• 쑰회

GET /api/enrollments/:_id?

κΆŒν•œ: isLoggedIn

λͺ©λ‘ 쑰회 쿼리 νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„° νƒ€μž… ν•„μˆ˜ μ„€λͺ…
season string X ν•™κΈ° ObjectId
syllabus string X κ°•μ˜κ³„νšμ„œ ObjectId
student string X 학생 ObjectId

λͺ©λ‘ 응닡 (200)

{
  "enrollments": [
    {
      "_id": "...",
      "classTitle": "미적뢄 기초반",
      "studentId": "student01",
      "studentName": "이학생",
      "time": [...],
      "classroom": "101호"
    }
  ]
}

μ°Έκ³ : 일반 쑰회 μ‹œ evaluation ν•„λ“œλŠ” μ•”ν˜Έν™”λ˜μ–΄ μžˆμ–΄ 응닡에 ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

평가 데이터 쑰회

μˆ˜κ°• λͺ©λ‘κ³Ό ν•¨κ»˜ λ³΅ν˜Έν™”λœ 평가 데이터λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

GET /api/enrollments/evaluation

κΆŒν•œ: isLoggedIn

쿼리 νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„° νƒ€μž… ν•„μˆ˜ μ„€λͺ…
syllabus string X κ°•μ˜κ³„νšμ„œ ObjectId
student string X 학생 ObjectId
season string X ν•™κΈ° ObjectId

응닡 (200)

{
  "enrollments": [
    {
      "_id": "...",
      "classTitle": "미적뢄 기초반",
      "studentId": "student01",
      "studentName": "이학생",
      "evaluation": {
        "λ©˜ν† ν‰κ°€": "μˆ˜μ—… 참여도가 λ†’κ³  μ„±μ‹€ν•©λ‹ˆλ‹€.",
        "μžκΈ°ν‰κ°€": "미적뢄 κ°œλ…μ„ 잘 μ΄ν•΄ν–ˆμŠ΅λ‹ˆλ‹€.",
        "μΆœμ„λ“±κΈ‰": "A"
      }
    }
  ]
}

평가 μž…λ ₯

학생 λ˜λŠ” ꡐ사가 평가λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€. ν•™κΈ°μ˜ permissionEvaluationV2 κΆŒν•œ μ„€μ •κ³Ό 평가 ν•­λͺ©μ˜ authOption에 따라 μž…λ ₯ κΆŒν•œμ΄ κ²°μ •λ©λ‹ˆλ‹€.

PUT /api/enrollments/:_id/evaluation

κΆŒν•œ: isLoggedIn (평가 ν•­λͺ©λ³„ κΆŒν•œμ— 따라 μΆ”κ°€ μ œν•œ)

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
evaluation object O 평가 데이터 (ν‚€: 평가 ν•­λͺ© 라벨, κ°’: μž…λ ₯κ°’)

μš”μ²­ μ˜ˆμ‹œ

{
  "evaluation": {
    "λ©˜ν† ν‰κ°€": "μˆ˜μ—… 참여도가 λ†’κ³  μ„±μ‹€ν•©λ‹ˆλ‹€.",
    "μΆœμ„λ“±κΈ‰": "A"
  }
}

μ°Έκ³ : evaluation λ°μ΄ν„°λŠ” mongoose-encryption으둜 μ•”ν˜Έν™”λ˜μ–΄ MongoDB에 μ €μž₯λ©λ‹ˆλ‹€.

λ©”λͺ¨ μˆ˜μ •

PUT /api/enrollments/:_id/memo

κΆŒν•œ: isLoggedIn

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
memo string O λ©”λͺ¨ λ‚΄μš©

μΊ˜λ¦°λ” ν‘œμ‹œ μ„€μ •

μˆ˜κ°• μΌμ •μ˜ μΊ˜λ¦°λ” ν‘œμ‹œ μ—¬λΆ€λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

μΊ˜λ¦°λ”μ—μ„œ 숨기기

PUT /api/enrollments/:_id/hide

μΊ˜λ¦°λ”μ— ν‘œμ‹œν•˜κΈ°

PUT /api/enrollments/:_id/show

μˆ˜κ°• μ·¨μ†Œ

DELETE /api/enrollments/:_id

κΆŒν•œ: isLoggedIn

μ°Έκ³ : μˆ˜κ°• μ·¨μ†Œ μ‹œ κ°•μ˜κ³„νšμ„œμ˜ countκ°€ μžλ™μœΌλ‘œ 1 κ°μ†Œν•©λ‹ˆλ‹€.


3. ν•™κΈ° 등둝 API (Registration)

라우트 파일: backend/src/routes/registrations.js 컨트둀러 파일: backend/src/controllers/registrations.js λͺ¨λΈ 파일: backend/src/models/Registration.js

μ—”λ“œν¬μΈνŠΈ μš”μ•½

λ©”μ„œλ“œ 경둜 μ„€λͺ… κΆŒν•œ
POST /api/registrations ν•™κΈ° 등둝 admin|manager
POST /api/registrations/copy ν•™κΈ° 볡사 등둝 admin|manager
GET /api/registrations/:_id? 등둝 쑰회 (λͺ©λ‘/상세) isLoggedIn
PUT /api/registrations/:_id 등둝 μˆ˜μ • admin|manager
DELETE /api/registrations/:_id 등둝 μ‚­μ œ admin|manager

ν•™κΈ° 등둝

μ‚¬μš©μžλ₯Ό νŠΉμ • 학기에 학생 λ˜λŠ” κ΅μ‚¬λ‘œ λ“±λ‘ν•©λ‹ˆλ‹€.

POST /api/registrations

κΆŒν•œ: admin λ˜λŠ” manager

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
season string O ν•™κΈ° ObjectId
user string O μ‚¬μš©μž ObjectId
userId string O μ‚¬μš©μž ID
userName string O μ‚¬μš©μž 이름
role string O μ—­ν•  ("student" λ˜λŠ” "teacher")
grade string X ν•™λ…„ (학생인 경우)
group string X κ·Έλ£Ή
teacher string X λ‹΄λ‹Ή ꡐ사 ObjectId (학생인 경우)

μš”μ²­ μ˜ˆμ‹œ

{
  "season": "507f1f77bcf86cd799439021",
  "user": "507f1f77bcf86cd799439041",
  "userId": "student01",
  "userName": "이학생",
  "role": "student",
  "grade": "2"
}

응닡 (200)

{
  "registration": {
    "_id": "507f1f77bcf86cd799439061",
    "season": "507f1f77bcf86cd799439021",
    "school": "507f1f77bcf86cd799439011",
    "schoolId": "highschool01",
    "schoolName": "ν…ŒμŠ€νŠΈ 고등학ꡐ",
    "year": "2024학년도",
    "term": "1ν•™κΈ°",
    "period": { "start": "2024-03-04", "end": "2024-07-19" },
    "user": "507f1f77bcf86cd799439041",
    "userId": "student01",
    "userName": "이학생",
    "role": "student",
    "grade": "2",
    "isActivated": true,
    "permissionSyllabusV2": false,
    "permissionEnrollmentV2": true,
    "permissionEvaluationV2": false,
    "formEvaluation": [...]
  }
}

μ—λŸ¬ 응닡

μƒνƒœ μ½”λ“œ λ©”μ‹œμ§€ μ„€λͺ…
409 쀑볡 인덱슀 μ—λŸ¬ 동일 학기에 이미 등둝됨 (season + user 고유)

ν•™κΈ° 볡사 등둝

이전 ν•™κΈ°μ˜ 등둝 정보λ₯Ό μƒˆ ν•™κΈ°λ‘œ λ³΅μ‚¬ν•©λ‹ˆλ‹€.

POST /api/registrations/copy

κΆŒν•œ: admin λ˜λŠ” manager

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
fromSeason string O 원본 ν•™κΈ° ObjectId
toSeason string O λŒ€μƒ ν•™κΈ° ObjectId

등둝 쑰회

GET /api/registrations/:_id?

κΆŒν•œ: isLoggedIn

λͺ©λ‘ 쑰회 쿼리 νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„° νƒ€μž… ν•„μˆ˜ μ„€λͺ…
season string X ν•™κΈ° ObjectId
user string X μ‚¬μš©μž ObjectId
school string X 학ꡐ ObjectId
role string X μ—­ν•  ν•„ν„° (student, teacher)

응닡 (200)

{
  "registrations": [
    {
      "_id": "...",
      "userId": "student01",
      "userName": "이학생",
      "role": "student",
      "grade": "2",
      "year": "2024학년도",
      "term": "1ν•™κΈ°",
      "isActivated": true
    }
  ]
}

등둝 μˆ˜μ •

PUT /api/registrations/:_id

κΆŒν•œ: admin λ˜λŠ” manager

μš”μ²­ λ³Έλ¬Έ

ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
role string X μ—­ν•  λ³€κ²½
grade string X ν•™λ…„ λ³€κ²½
group string X κ·Έλ£Ή λ³€κ²½
teacher string X λ‹΄λ‹Ή ꡐ사 λ³€κ²½

등둝 μ‚­μ œ

DELETE /api/registrations/:_id

κΆŒν•œ: admin λ˜λŠ” manager

주의: 등둝 μ‚­μ œ μ‹œ ν•΄λ‹Ή 등둝에 μ—°κ²°λœ μˆ˜κ°•(Enrollment) 데이터가 영ν–₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.


ν”„λ‘ νŠΈμ—”λ“œ API ν•¨μˆ˜ (useAPIv2)

κ°•μ˜κ³„νšμ„œ (Syllabus)

ν•¨μˆ˜λͺ… λ©”μ„œλ“œ 경둜 μ„€λͺ…
CSyllabus POST /api/syllabuses κ°•μ˜κ³„νšμ„œ 생성
RSyllabuses GET /api/syllabuses κ°•μ˜κ³„νšμ„œ λͺ©λ‘
RSyllabus GET /api/syllabuses/:_id κ°•μ˜κ³„νšμ„œ 상세
USyllabus PUT /api/syllabuses/:_id κ°•μ˜κ³„νšμ„œ μˆ˜μ •
CConfirmSyllabus POST /api/syllabuses/:_id/confirmed μˆ˜μ—… 승인
DCancelConfirmSyllabus DELETE /api/syllabuses/:_id/confirmed μˆ˜μ—… 승인 μ·¨μ†Œ
DSyllabus DELETE /api/syllabuses/:_id κ°•μ˜κ³„νšμ„œ μ‚­μ œ

μˆ˜κ°• (Enrollment)

ν•¨μˆ˜λͺ… λ©”μ„œλ“œ 경둜 μ„€λͺ…
CEnrollment POST /api/enrollments μˆ˜κ°•μ‹ μ²­
REnrollments GET /api/enrollments μˆ˜κ°• λͺ©λ‘
REnrollment GET /api/enrollments/:_id μˆ˜κ°• 상세
REnrollmentEvaluation GET /api/enrollments/evaluation 평가 데이터 쑰회
UEvaluation PUT /api/enrollments/:_id/evaluation 평가 μž…λ ₯
UEnrollmentMemo PUT /api/enrollments/:_id/memo λ©”λͺ¨ μˆ˜μ •
DEnrollment DELETE /api/enrollments/:_id μˆ˜κ°• μ·¨μ†Œ

ν•™κΈ° 등둝 (Registration)

ν•¨μˆ˜λͺ… λ©”μ„œλ“œ 경둜 μ„€λͺ…
CRegistration POST /api/registrations ν•™κΈ° 등둝
CRegistrationCopy POST /api/registrations/copy ν•™κΈ° 볡사 등둝
RRegistrations GET /api/registrations 등둝 λͺ©λ‘
RRegistration GET /api/registrations/:_id 등둝 상세
URegistration PUT /api/registrations/:_id 등둝 μˆ˜μ •
DRegistration DELETE /api/registrations/:_id 등둝 μ‚­μ œ