νκΈ° λ±λ‘(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 |
νκΈ° λ±λ‘ λͺ©λ‘ μ‘°ν | λ‘κ·ΈμΈ μ¬μ©μ |
GET |
/api/registrations/:_id |
νκΈ° λ±λ‘ μμΈ μ‘°ν | λ‘κ·ΈμΈ μ¬μ©μ |
PUT |
/api/registrations/:_id |
νκΈ° λ±λ‘ μμ | admin|manager |
DELETE |
/api/registrations/:_id |
νκΈ° λ±λ‘ μμ | admin|manager |
μ¬μ©μλ₯Ό νΉμ νκΈ°μ λ±λ‘ν©λλ€. λ±λ‘ μ νκΈ°(season)μ μ¬μ©μ(user) μ 보λ₯Ό κΈ°λ°μΌλ‘ νκ΅, νλ λ, νκΈ° λ±μ μ λ³΄κ° μλμΌλ‘ μ€μ λ©λλ€.
POST /api/registrations
κΆν: admin λλ manager
| νλ | νμ | νμ | μ€λͺ |
|---|---|---|---|
season |
string |
O | νκΈ° ObjectId |
user |
string |
O | μ¬μ©μ ObjectId |
role |
string |
O | μν ("teacher" λλ "student") |
grade |
string |
X | νλ |
group |
string |
X | λ° |
teacher |
string |
X | λ΄λΉ κ΅μ¬ ObjectId |
subTeacher |
string |
X | λΆλ΄λΉ κ΅μ¬ ObjectId |
{
"season": "507f1f77bcf86cd799439011",
"user": "507f1f77bcf86cd799439022",
"role": "student",
"grade": "1",
"group": "A",
"teacher": "507f1f77bcf86cd799439033"
}{
"registration": {
"_id": "507f1f77bcf86cd799439044",
"season": "507f1f77bcf86cd799439011",
"school": "507f1f77bcf86cd799439055",
"schoolId": "school-01",
"schoolName": "ν
μ€νΈ νκ΅",
"year": "2024νλ
λ",
"term": "1νκΈ°",
"period": {
"start": "2024-03-01",
"end": "2024-08-31"
},
"user": "507f1f77bcf86cd799439022",
"userId": "student01",
"userName": "νκΈΈλ",
"role": "student",
"grade": "1",
"group": "A",
"teacher": "507f1f77bcf86cd799439033",
"teacherId": "teacher01",
"teacherName": "κΉκ΅μ¬",
"isActivated": true,
"memos": [],
"permissionSyllabusV2": false,
"permissionEnrollmentV2": false,
"permissionEvaluationV2": false,
"formEvaluation": []
}
}| μν μ½λ | λ©μμ§ | μ€λͺ |
|---|---|---|
400 |
FIELD_REQUIRED({νλλͺ
}) |
νμ νλ λλ½ (season, user, role) |
400 |
FIELD_INVALID({νλλͺ
}) |
ObjectId νμμ΄ μ¬λ°λ₯΄μ§ μμ (season, user, teacher, subTeacher) |
404 |
__NOT_FOUND(season) |
νκΈ°λ₯Ό μ°Ύμ μ μμ |
404 |
__NOT_FOUND(user) |
μ¬μ©μλ₯Ό μ°Ύμ μ μμ |
404 |
__NOT_FOUND(teacher) |
λ΄λΉ κ΅μ¬μ νκΈ° λ±λ‘ μ 보λ₯Ό μ°Ύμ μ μμ |
404 |
__NOT_FOUND(subTeacher) |
λΆλ΄λΉ κ΅μ¬μ νκΈ° λ±λ‘ μ 보λ₯Ό μ°Ύμ μ μμ |
409 |
REGISTRATION_IN_USE |
ν΄λΉ νκΈ°μ μ΄λ―Έ λ±λ‘λ μ¬μ©μ |
κΈ°μ‘΄ νκΈ°μ λͺ¨λ λ±λ‘ μ 보λ₯Ό λ€λ₯Έ νκΈ°λ‘ λ³΅μ¬ν©λλ€. λμ νκΈ°μ μ΄λ―Έ λ±λ‘ μ λ³΄κ° μ‘΄μ¬νλ©΄ 볡μ¬ν μ μμ΅λλ€.
POST /api/registrations/copy
κΆν: admin λλ manager
| νλ | νμ | νμ | μ€λͺ |
|---|---|---|---|
fromSeason |
string |
O | λ³΅μ¬ μλ³Έ νκΈ° ObjectId |
toSeason |
string |
O | λ³΅μ¬ λμ νκΈ° ObjectId |
{
"fromSeason": "507f1f77bcf86cd799439011",
"toSeason": "507f1f77bcf86cd799439066"
}{
"registerations": [
{
"_id": "507f1f77bcf86cd799439077",
"season": "507f1f77bcf86cd799439066",
"school": "507f1f77bcf86cd799439055",
"schoolId": "school-01",
"schoolName": "ν
μ€νΈ νκ΅",
"year": "2024νλ
λ",
"term": "2νκΈ°",
"user": "507f1f77bcf86cd799439022",
"userId": "student01",
"userName": "νκΈΈλ",
"role": "student",
"grade": "1",
"group": "A",
"teacher": "507f1f77bcf86cd799439033",
"teacherId": "teacher01",
"teacherName": "κΉκ΅μ¬"
}
]
}μ°Έκ³ : μλ΅ ν€κ°
registerations(μ€ν)λ‘ λ°νλ©λλ€. μ΄λ λ°±μλ μ½λμ κΈ°μ‘΄ λμμ λλ€.
| μν μ½λ | λ©μμ§ | μ€λͺ |
|---|---|---|
400 |
FIELD_REQUIRED({νλλͺ
}) |
νμ νλ λλ½ (fromSeason, toSeason) |
404 |
__NOT_FOUND(toSeason) |
λμ νκΈ°λ₯Ό μ°Ύμ μ μμ |
409 |
REGISTRATION_IN_USE |
λμ νκΈ°μ μ΄λ―Έ λ±λ‘ μ λ³΄κ° μ‘΄μ¬ν¨ |
νκΈ° λ±λ‘ λͺ©λ‘μ μ‘°νν©λλ€. 쿼리 νλΌλ―Έν°λ₯Ό μ¬μ©νμ¬ νν°λ§ν μ μμ΅λλ€.
GET /api/registrations
κΆν: λ‘κ·ΈμΈ μ¬μ©μ (isLoggedIn)
| νλΌλ―Έν° | νμ | νμ | μ€λͺ |
|---|---|---|---|
user |
string |
X | μ¬μ©μ ObjectIdλ‘ νν°λ§ |
school |
string |
X | νκ΅ ObjectIdλ‘ νν°λ§ |
season |
string |
X | νκΈ° ObjectIdλ‘ νν°λ§ |
role |
string |
X | μν λ‘ νν°λ§ ("teacher" λλ "student") |
{
"registrations": [
{
"_id": "507f1f77bcf86cd799439044",
"season": "507f1f77bcf86cd799439011",
"school": "507f1f77bcf86cd799439055",
"schoolId": "school-01",
"schoolName": "ν
μ€νΈ νκ΅",
"year": "2024νλ
λ",
"term": "1νκΈ°",
"period": {
"start": "2024-03-01",
"end": "2024-08-31"
},
"user": "507f1f77bcf86cd799439022",
"userId": "student01",
"userName": "νκΈΈλ",
"role": "student",
"grade": "1",
"group": "A",
"teacher": "507f1f77bcf86cd799439033",
"teacherId": "teacher01",
"teacherName": "κΉκ΅μ¬",
"isActivated": true,
"memos": [],
"permissionSyllabusV2": false,
"permissionEnrollmentV2": false,
"permissionEvaluationV2": false,
"formEvaluation": []
}
]
}μ°Έκ³ : νλ‘ νΈμλ(
useAPIv2)μμλ κ²°κ³Όλ₯Όperiod.endλ΄λ¦Όμ°¨μ,roleμ€λ¦μ°¨μ,gradeμ€λ¦μ°¨μ,userNameμ€λ¦μ°¨μ,userIdμ€λ¦μ°¨μμΌλ‘ μ λ ¬νμ¬ λ°νν©λλ€.
νΉμ νκΈ° λ±λ‘ μ 보λ₯Ό μ‘°νν©λλ€.
GET /api/registrations/:_id
κΆν: λ‘κ·ΈμΈ μ¬μ©μ (isLoggedIn)
| νλΌλ―Έν° | νμ | μ€λͺ |
|---|---|---|
_id |
string |
λ±λ‘ ObjectId |
{
"registration": {
"_id": "507f1f77bcf86cd799439044",
"season": "507f1f77bcf86cd799439011",
"school": "507f1f77bcf86cd799439055",
"schoolId": "school-01",
"schoolName": "ν
μ€νΈ νκ΅",
"year": "2024νλ
λ",
"term": "1νκΈ°",
"period": {
"start": "2024-03-01",
"end": "2024-08-31"
},
"user": "507f1f77bcf86cd799439022",
"userId": "student01",
"userName": "νκΈΈλ",
"role": "student",
"grade": "1",
"group": "A",
"teacher": "507f1f77bcf86cd799439033",
"teacherId": "teacher01",
"teacherName": "κΉκ΅μ¬",
"isActivated": true,
"memos": [],
"permissionSyllabusV2": false,
"permissionEnrollmentV2": false,
"permissionEvaluationV2": false,
"formEvaluation": []
}
}| μν μ½λ | λ©μμ§ | μ€λͺ |
|---|---|---|
404 |
__NOT_FOUND(registration) |
λ±λ‘ μ 보λ₯Ό μ°Ύμ μ μμ |
νκΈ° λ±λ‘ μ 보μ μν , νλ , λ°, λ΄λΉ κ΅μ¬λ₯Ό μμ ν©λλ€.
PUT /api/registrations/:_id
κΆν: admin λλ manager
| νλΌλ―Έν° | νμ | μ€λͺ |
|---|---|---|
_id |
string |
λ±λ‘ ObjectId |
| νλ | νμ | νμ | μ€λͺ |
|---|---|---|---|
role |
string |
O | μν ("teacher" λλ "student") |
grade |
string |
X | νλ |
group |
string |
X | λ° |
teacher |
string |
X | λ΄λΉ κ΅μ¬ ObjectId |
subTeacher |
string |
X | λΆλ΄λΉ κ΅μ¬ ObjectId |
{
"role": "student",
"grade": "2",
"group": "B",
"teacher": "507f1f77bcf86cd799439033"
}{
"registration": {
"_id": "507f1f77bcf86cd799439044",
"season": "507f1f77bcf86cd799439011",
"school": "507f1f77bcf86cd799439055",
"schoolId": "school-01",
"schoolName": "ν
μ€νΈ νκ΅",
"year": "2024νλ
λ",
"term": "1νκΈ°",
"period": {
"start": "2024-03-01",
"end": "2024-08-31"
},
"user": "507f1f77bcf86cd799439022",
"userId": "student01",
"userName": "νκΈΈλ",
"role": "student",
"grade": "2",
"group": "B",
"teacher": "507f1f77bcf86cd799439033",
"teacherId": "teacher01",
"teacherName": "κΉκ΅μ¬",
"isActivated": true,
"memos": [],
"permissionSyllabusV2": false,
"permissionEnrollmentV2": false,
"permissionEvaluationV2": false,
"formEvaluation": []
}
}| μν μ½λ | λ©μμ§ | μ€λͺ |
|---|---|---|
400 |
FIELD_REQUIRED(role) |
role νλ λλ½ |
400 |
FIELD_INVALID(role) |
role κ°μ΄ "teacher" λλ "student"κ° μλ |
404 |
__NOT_FOUND(teacher) |
λ΄λΉ κ΅μ¬λ₯Ό μ°Ύμ μ μμ |
404 |
__NOT_FOUND(subTeacher) |
λΆλ΄λΉ κ΅μ¬λ₯Ό μ°Ύμ μ μμ |
νκΈ° λ±λ‘ μ 보λ₯Ό μμ ν©λλ€. μμ μ ν΄λΉ νκΈ°μ κΆν μμΈ λͺ©λ‘μμλ μ¬μ©μκ° μ κ±°λ©λλ€.
DELETE /api/registrations/:_id
κΆν: admin λλ manager
μ£Όμ: λ±λ‘ μμ μ κ΄λ ¨λ μκ° μ μ²(enrollment), μμ κ³ν(syllabus), λ©λͺ¨(memo) λ±μ μ°κ΄ λ°μ΄ν°κ° ν¨κ» μμ λ μ μμ΅λλ€.
| νλΌλ―Έν° | νμ | μ€λͺ |
|---|---|---|
_id |
string |
λ±λ‘ ObjectId |
{}| μν μ½λ | λ©μμ§ | μ€λͺ |
|---|---|---|
404 |
__NOT_FOUND(registration) |
λ±λ‘ μ 보λ₯Ό μ°Ύμ μ μμ |
| ν¨μλͺ | λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|---|
CRegistration |
POST | /api/registrations |
νκΈ° λ±λ‘ μμ± |
CCopyRegistrations |
POST | /api/registrations/copy |
νκΈ° λ±λ‘ λ³΅μ¬ |
RRegistrations |
GET | /api/registrations |
νκΈ° λ±λ‘ λͺ©λ‘ μ‘°ν |
RRegistration |
GET | /api/registrations/:_id |
νκΈ° λ±λ‘ μμΈ μ‘°ν |
URegistration |
PUT | /api/registrations/:_id |
νκΈ° λ±λ‘ μμ |
DRegistration |
DELETE | /api/registrations/:_id |
νκΈ° λ±λ‘ μμ |