Skip to content

Commit 7b1ee7b

Browse files
committed
feat(work_log): 알바 일정에 주소 및 카테고리 추가 가능
1 parent 065a286 commit 7b1ee7b

7 files changed

Lines changed: 55 additions & 7 deletions

File tree

prisma/schema.prisma

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,10 @@ model user_alba_schedule {
165165
repeat_days String? @db.VarChar(10)
166166
hourly_wage Int?
167167
memo String? @db.VarChar(256)
168+
address String? @db.Text
169+
category String? @db.Text
168170
user user @relation(fields: [user_id], references: [user_id], onDelete: Cascade, onUpdate: NoAction, map: "FK_user_TO_alba_schedule")
171+
user_work_log user_work_log[]
169172
170173
@@index([user_id], map: "FK_user_TO_alba_schedule")
171174
}
@@ -183,9 +186,11 @@ model user_work_log {
183186
income_log income_log[]
184187
alba_posting alba_posting? @relation(fields: [alba_id], references: [alba_id], onDelete: Cascade, onUpdate: NoAction, map: "FK_posting_TO_work_log")
185188
user user @relation(fields: [user_id], references: [user_id], onDelete: Cascade, onUpdate: NoAction, map: "FK_user_TO_work_log")
189+
user_alba_schedule user_alba_schedule? @relation(fields: [user_alba_schedule_id], references: [user_alba_schedule_id], onDelete: NoAction, onUpdate: NoAction, map: "user_work_log_user_alba_schedule_user_alba_schedule_id_fk")
186190
187191
@@index([alba_id], map: "FK_posting_TO_work_log")
188192
@@index([user_id], map: "FK_user_TO_work_log")
193+
@@index([user_alba_schedule_id], map: "user_work_log_user_alba_schedule_user_alba_schedule_id_fk")
189194
}
190195

191196
model work_schedule {

src/DTO/schedule_dto.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ export interface CreateScheduleRequestDto {
2525

2626
/** 메모 (선택사항) */
2727
memo?: string;
28+
29+
/**
30+
* 프론트측 요청으로 인한 근무지 및 카테고리 추가
31+
* 카카오 API 정보 입력용
32+
*/
33+
/**근무지 주소 (선택사항) */
34+
address?: string;
35+
36+
/**근무 카테고리 (선택사항) */
37+
category?: string;
2838
}
2939

3040
/**
@@ -51,4 +61,7 @@ export interface ScheduleResponseDto {
5161

5262
/** 메모 */
5363
memo: string;
64+
65+
address: string;
66+
category: string;
5467
}

src/DTO/work_log_dto.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ export interface TodayScheduleResponseDto {
1111
workHours: number; // 4
1212
hourlyWage: number; // 11000
1313
totalWage: number; // 44000
14+
address: string;
15+
category: string;
1416
}
1517

1618
/**

src/repository/schedule_repository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class ScheduleRepository {
4444
work_time: string;
4545
hourly_wage: number;
4646
memo?: string;
47+
address?: string;
48+
category?: string;
4749
},
4850
workLogData: {
4951
workDate: Date;
@@ -62,6 +64,8 @@ class ScheduleRepository {
6264
work_time: scheduleData.work_time,
6365
hourly_wage: scheduleData.hourly_wage,
6466
memo: scheduleData.memo || null,
67+
address: scheduleData.address || null,
68+
category: scheduleData.category || null,
6569
repeat_type: 'none',
6670
},
6771
});

src/repository/work_log_repository.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ class WorkLogRepository {
115115
store_name: string | null;
116116
};
117117
} | null;
118+
user_alba_schedule: {
119+
address: string | null;
120+
category: string | null;
121+
} | null;
118122
}[]
119123
> {
120124
// KST 기준 오늘 날짜를 YYYY-MM-DD로 구한 뒤 UTC midnight 범위로 설정
@@ -142,6 +146,12 @@ class WorkLogRepository {
142146
},
143147
},
144148
},
149+
user_alba_schedule: {
150+
select: {
151+
address: true,
152+
category: true,
153+
},
154+
},
145155
},
146156
});
147157
}

src/service/schedule_service.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class ScheduleService {
3737
work_time: workTime,
3838
hourly_wage: data.hourlyWage,
3939
memo: data.memo,
40+
address: data.address,
41+
category: data.category,
4042
};
4143

4244
const schedule = await ScheduleRepository.createScheduleWithWorkLog(scheduleData, workLogData);
@@ -50,6 +52,8 @@ class ScheduleService {
5052
hourlyWage: schedule.hourly_wage || 0,
5153
estimatedWage: estimatedWage,
5254
memo: schedule.memo || '',
55+
address: schedule.address || '',
56+
category: schedule.category || '',
5357
};
5458
}
5559

@@ -65,10 +69,14 @@ class ScheduleService {
6569
const date = new Date(workDate + 'T00:00:00Z');
6670

6771
const [sh, sm] = startTime.split(':').map(Number);
68-
const start = new Date(workDate + `T${String(sh).padStart(2, '0')}:${String(sm).padStart(2, '0')}:00+09:00`);
72+
const start = new Date(
73+
workDate + `T${String(sh).padStart(2, '0')}:${String(sm).padStart(2, '0')}:00+09:00`,
74+
);
6975

7076
const [eh, em] = endTime.split(':').map(Number);
71-
const end = new Date(workDate + `T${String(eh).padStart(2, '0')}:${String(em).padStart(2, '0')}:00+09:00`);
77+
const end = new Date(
78+
workDate + `T${String(eh).padStart(2, '0')}:${String(em).padStart(2, '0')}:00+09:00`,
79+
);
7280

7381
// 야간 근무 (종료 시간이 시작 시간보다 이전)
7482
if (end <= start) {
@@ -88,11 +96,7 @@ class ScheduleService {
8896
* @param hourlyWage - 시급
8997
* @returns 예상 금액
9098
*/
91-
private calculateEstimatedWage(
92-
startTime: string,
93-
endTime: string,
94-
hourlyWage: number,
95-
): number {
99+
private calculateEstimatedWage(startTime: string, endTime: string, hourlyWage: number): number {
96100
// 시간 파싱 (HH:MM 형식)
97101
const [startHour, startMin] = startTime.split(':').map(Number);
98102
const [endHour, endMin] = endTime.split(':').map(Number);

src/service/work_log_service.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ class WorkLogService {
7676
}
7777
}
7878

79+
let address = '';
80+
let category = '';
81+
82+
if (log.user_alba_schedule) {
83+
address = log.user_alba_schedule.address || '';
84+
category = log.user_alba_schedule.category || '';
85+
}
86+
7987
const totalWage = Math.round(hourlyWage * workHours);
8088
const status = log.status || 'scheduled';
8189

@@ -89,6 +97,8 @@ class WorkLogService {
8997
workHours,
9098
hourlyWage,
9199
totalWage,
100+
address,
101+
category,
92102
};
93103
});
94104

0 commit comments

Comments
 (0)