Schedule API
스케줄 관련 API
📌 스케줄 상태 Enum
BEFORE_WORK
스케줄 시작 전ON_DUTY
스케줄 진행 중 (정시 출근 후)LATE
스케줄 진행 중 (지각 출근 후)SUCCESS
스케줄 완료FAIL
스케줄 미완료 (ex. 지각, 조기 퇴근, 결근 등)
📌 전체 스케줄 상태 Enum
COMPLETE
해당 날짜의 스케줄 모두 완료 (스케줄 상태가 모두 SUCCESS)INCOMPLETE
해당 날짜의 스케줄 중 완료되지 않은 건 1건 이상 존재BEFORE
해당 날짜의 스케줄 모두 시작 전 (현재 날짜 이후 날짜)NONE
해당 날짜의 스케줄 존재X
GET /boss/schedules/home
홈 달력 정보 조회
Request-Header
Response-Body
{
"dateList": [
{
"date": {
"year": 2023,
"month": 1,
"day": 13,
"dayOfWeek": "금"
},
"totalScheduleStatus": "INCOMPLETE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 14,
"dayOfWeek": "토"
},
"totalScheduleStatus": "NONE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 15,
"dayOfWeek": "일"
},
"totalScheduleStatus": "NONE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 16,
"dayOfWeek": "월"
},
"totalScheduleStatus": "INCOMPLETE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 17,
"dayOfWeek": "화"
},
"totalScheduleStatus": "NONE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 18,
"dayOfWeek": "수"
},
"totalScheduleStatus": "NONE"
},
{
"date": {
"year": 2023,
"month": 1,
"day": 19,
"dayOfWeek": "목"
},
"totalScheduleStatus": "NONE"
}
],
"selectedSubPage": {
"selectedDate": {
"year": 2023,
"month": 1,
"day": 16,
"dayOfWeek": "월"
},
"workspaceList": [
{
"workspaceId": 4,
"name": "송이떡볶이 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 2,
"name": "송이커피 숙대점",
"imageUrl": "http://abcd",
"selectedScheduleList": [
{
"scheduleId": 18,
"scheduleStartTime": "18:00",
"scheduleEndTime": "22:00",
"logicalStartTime": "18:00",
"logicalEndTime": "22:00",
"status": "SUCCESS",
"worker": {
"workerId": 2,
"name": "김나은",
"imageUrl": "http://abcd"
}
}
]
},
{
"workspaceId": 3,
"name": "송이토스트 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 1,
"name": "송이파스타 숙대점",
"imageUrl": "http://",
"selectedScheduleList": [
{
"scheduleId": 17,
"scheduleStartTime": "10:00",
"scheduleEndTime": "17:00",
"logicalStartTime": "11:00",
"logicalEndTime": "17:00",
"status": "FAIL",
"worker": {
"workerId": 2,
"name": "김나은",
"imageUrl": "http://abcd"
}
},
{
"scheduleId": 16,
"scheduleStartTime": "10:00",
"scheduleEndTime": "17:00",
"logicalStartTime": "11:00",
"logicalEndTime": "16:30",
"status": "FAIL",
"worker": {
"workerId": 1,
"name": "김다은",
"imageUrl": "http://"
}
}
]
}
]
}
}
GET /boss/schedules/home/selected
홈 해당 날짜 모든 가게의 스케줄 조회
Request-Header
Params
Response-Body
✅ 논리적 스케줄 시작/종료 시간?
스케줄 출퇴근 시 현재 시간을 10분 단위로, 논리적으로 계산한 시간
ex. 10시가 출근 시간일 때, 10시 12분에 출근 시 10시 10분으로 출근 시간 저장
ex. 17시가 퇴근 시간일 때, 16시 37분에 퇴근 시 16시 30분으로 퇴근 시간 저장
ex. 17시가 퇴근 시간일 때, 20시에 퇴근 시 17시로 퇴근 시간 저장
✅ logicalStartTime
이 null이면 scheduleStartTime
, logicalEndTime
이 null이면 scheduleEndTime
을 표시
전체 스케줄 상태가
COMPLETE
→ 초록색INCOMPLETE
→ 빨간색BEFORE
→ 회색NONE
→ 점 표시X
logicalStartTime
이 없으면scheduleStartTime
검은색logicalStartTime
이 있으면서scheduleStartTime
과 같으면logicalStartTime
초록색logicalStartTime
이 있으면서scheduleStartTime
과 다르면logicalStartTime
빨간색logicalEndTime
이 없으면scheduleEndTime
검은색logicalEndTime
이 있으면서scheduleEndTime
과 같으면logicalEndTime
초록색logicalEndTime
이 있으면서scheduleEndTime
과 다르면logicalEndTime
빨간색
{
"selectedDate": {
"year": 2023,
"month": 1,
"day": 16,
"dayOfWeek": "월"
},
"workspaceList": [
{
"workspaceId": 4,
"name": "송이떡볶이 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 2,
"name": "송이커피 숙대점",
"imageUrl": "http://abcd",
"selectedScheduleList": [
{
"scheduleId": 18,
"scheduleStartTime": "18:00",
"scheduleEndTime": "22:00",
"logicalStartTime": "18:00",
"logicalEndTime": "22:00",
"status": "SUCCESS",
"worker": {
"workerId": 2,
"name": "김나은",
"imageUrl": "http://abcd"
}
}
]
},
{
"workspaceId": 3,
"name": "송이토스트 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 1,
"name": "송이파스타 숙대점",
"imageUrl": "http://",
"selectedScheduleList": [
{
"scheduleId": 17,
"scheduleStartTime": "10:00",
"scheduleEndTime": "17:00",
"logicalStartTime": "11:00",
"logicalEndTime": "17:00",
"status": "FAIL",
"worker": {
"workerId": 2,
"name": "김나은",
"imageUrl": "http://abcd"
}
},
{
"scheduleId": 16,
"scheduleStartTime": "10:00",
"scheduleEndTime": "17:00",
"logicalStartTime": "11:00",
"logicalEndTime": "16:30",
"status": "FAIL",
"worker": {
"workerId": 1,
"name": "김다은",
"imageUrl": "http://"
}
}
]
}
]
}
//조회된 스케줄 없음
{
"selectedDate": {
"year": 2023,
"month": 1,
"day": 15,
"dayOfWeek": "일"
},
"workspaceList": [
{
"workspaceId": 4,
"name": "송이떡볶이 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 2,
"name": "송이커피 숙대점",
"imageUrl": "http://abcd",
"selectedScheduleList": []
},
{
"workspaceId": 3,
"name": "송이토스트 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
},
{
"workspaceId": 1,
"name": "송이파스타 숙대점",
"imageUrl": "http://",
"selectedScheduleList": []
}
]
}
GET /boss/schedules
해당 워크스페이스 홈 달력 정보 조회
Request-Header
Params
Response-Body
{
"selectedWorkspace": {
"workspaceId": 2,
"name": "송이커피 숙대점",
"imageUrl": "http://"
},
"year": 2022,
"month": 9,
"dateList": [
{
"day": 1,
"dayOfWeek": "THURSDAY",
"totalScheduleStatus": "NONE"
}, //이날에는 스케줄 존재X
{
"day": 2,
"dayOfWeek": "FRIDAY",
"totalScheduleStatus": "COMPLETE"
}, //전체 스케줄 모두 완료
//......
{
"day": 29,
"dayOfWeek": "THURSDAY",
"totalScheduleStatus": "INCOMPLETE"
}, //전체 스케줄 중 정상적으로 완료되지 못한 건 하나 이상 존재
{
"day": 30,
"dayOfWeek": "FRIDAY",
"totalScheduleStatus": "BEFORE"
} //전체 스케줄 시작 전 (현재 날짜 이후 날짜)
],
"selectedSubPage": {
"selectedDay": 30,
"selectedScheduleList": [
{
"scheduleId": 10,
"scheduleStartTime": "15:00",
"scheduleEndTime": "19:00",
"status": "SUCCESS",
"worker": {
"workerId": 3,
"name": "신지연"
}
},
{
"scheduleId": 9,
"scheduleStartTime": "17:00",
"scheduleEndTime": "19:00",
"status": "BEFORE_WORK",
"worker": {
"workerId": 5,
"name": "김다은"
}
},
{
"scheduleId": 8,
"scheduleStartTime": "21:00",
"scheduleEndTime": "03:00",
"status": "BEFORE_WORK",
"worker": {
"workerId": 4,
"name": "조예진"
}
}
]
}
}
GET /boss/schedules/selected
해당 워크스페이스 홈 해당 날짜 스케줄 조회
Request-Header
Params
Response-Body
{
"selectedDay": 30,
"selectedScheduleList": [
{
"scheduleId": 10,
"scheduleStartTime": "15:00",
"scheduleEndTime": "19:00",
"status": "SUCCESS",
"worker": {
"workerId": 3,
"name": "신지연"
}
},
{
"scheduleId": 9,
"scheduleStartTime": "17:00",
"scheduleEndTime": "19:00",
"status": "BEFORE_WORK",
"worker": {
"workerId": 5,
"name": "김다은"
}
},
{
"scheduleId": 8,
"scheduleStartTime": "21:00",
"scheduleEndTime": "03:00",
"status": "BEFORE_WORK",
"worker": {
"workerId": 4,
"name": "조예진"
}
}
]
}
GET /boss/schedules/possible/staffs
해당 날짜에 근무 가능한 해당 워크스페이스 내 알바 리스트 조회 (for 스케줄 추가)
Request-Header
Params
Response-Body
{
"staffList": [
{
"staffId": 5,
"name": "김다은",
"imageUrl": "http://"
},
{
"staffId": 4,
"name": "신지연",
"imageUrl": "http://"
},
{
"staffId": 3,
"name": "조예진",
"imageUrl": "http://"
}
]
}
POST /boss/schedules
스케줄 생성
Request-Header
Request-Body
{
"workspaceId": 1,
"staffId": 1,
"scheduleDateTime": {
"start": "2023-01-06 10:00",
"end": "2023-01-06 17:00"
},
"hourlyWage": 9160
}
DELETE /boss/schedules/{scheduleId}
해당 스케줄 삭제
Request-Header
GET /boss/schedules/reports/dates
근무내역 및 알바비 관리 년월 리스트 조회
Request-Header
Params
Response-Body
{
"dateList": [
{
"year": 2022,
"month": 11
},
{
"year": 2022,
"month": 12
},
{
"year": 2023,
"month": 1
}
]
}
GET /boss/schedules/reports
해당 가게, 해당 년월 근무내역 및 알바비 관리 리스트 조회
Request-Header
Params
Response-Body
{
"selectedWorkspaceId": 2,
"selectedYear": 2022,
"selectedMonth": 9,
"workReportList": [
{
"worker": {
"workerId": 4,
"name": "조예진",
"imageUrl": "http://"
},
"totalWorkTimeHour": 40,
"totalWorkTimeMin": 0,
"totalWorkPay": "320,600"
},
{
"worker": {
"workerId": 3,
"name": "신지연",
"imageUrl": "http://"
},
"totalWorkTimeHour": 35,
"totalWorkTimeMin": 30,
"totalWorkPay": "320,600"
},
{
"worker": {
"workerId": 5,
"name": "김다은",
"imageUrl": "http://"
},
"totalWorkTimeHour": 35,
"totalWorkTimeMin": 30,
"totalWorkPay": "320,600"
},
{
"worker": {
"workerId": 1,
"name": "차은우",
"imageUrl": "http://"
},
"totalWorkTimeHour": 35,
"totalWorkTimeMin": 30,
"totalWorkPay": "320,600"
},
{
"worker": {
"workerId": 2,
"name": "김민지",
"imageUrl": "http://"
},
"totalWorkTimeHour": 35,
"totalWorkTimeMin": 30,
"totalWorkPay": "320,600"
}
]
}
Last updated