ScheduleGenerator 테스트";
try {
require_once('classes/ScheduleGenerator.class.php');
$generator = new ScheduleGenerator();
// 테스트할 년월
$year = 2024;
$month = 12;
echo "
1. 기본 설정 확인
";
// 기본 설정 확인
$duration = consultant_get_config('consultation_duration', 60);
$maxPersons = consultant_get_config('max_persons_per_slot', 2);
echo "- 상담 시간: {$duration}분
";
echo "- 최대 인원: {$maxPersons}명
";
echo "2. 요일별 설정 확인
";
$days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
$dayNames = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일'];
foreach ($days as $i => $day) {
$enabled = consultant_get_config($day . '_enabled', '1');
$start = consultant_get_config($day . '_start', '09:00');
$end = consultant_get_config($day . '_end', '18:00');
$lunchStart = consultant_get_config($day . '_lunch_start', '12:00');
$lunchEnd = consultant_get_config($day . '_lunch_end', '13:00');
echo "- {$dayNames[$i]}: ";
if ($enabled == '1') {
echo "운영 ({$start}~{$end}, 점심: {$lunchStart}~{$lunchEnd})";
} else {
echo "휴무";
}
echo "
";
}
echo "3. 기존 스케줄 확인
";
$existingCount = sql_fetch("SELECT COUNT(*) as count FROM consultant_schedule WHERE YEAR(specific_date) = {$year} AND MONTH(specific_date) = {$month}");
echo "- 기존 스케줄: {$existingCount['count']}개
";
echo "4. 충돌 검사
";
$conflicts = $generator->checkScheduleConflicts($year, $month);
echo "- 충돌 건수: " . count($conflicts) . "건
";
if (!empty($conflicts)) {
echo "";
foreach ($conflicts as $conflict) {
echo "- {$conflict['date']} {$conflict['time']} - {$conflict['customer']} ({$conflict['reason']})
";
}
echo "
";
}
echo "5. 스케줄 생성 테스트
";
$result = $generator->generateMonth($year, $month);
if ($result) {
$newCount = sql_fetch("SELECT COUNT(*) as count FROM consultant_schedule WHERE YEAR(specific_date) = {$year} AND MONTH(specific_date) = {$month}");
echo "✅ 성공: {$newCount['count']}개 스케줄 생성 완료
";
// 생성된 스케줄 샘플 표시
echo "생성된 스케줄 샘플 (첫 5일)
";
$samples = sql_query("SELECT * FROM consultant_schedule WHERE YEAR(specific_date) = {$year} AND MONTH(specific_date) = {$month} ORDER BY specific_date, start_time LIMIT 20");
echo "";
echo "| 날짜 | 요일 | 시작시간 | 종료시간 | 최대인원 | 사용가능 | 타입 | 메모 |
";
while ($row = sql_fetch_array($samples)) {
$dayOfWeek = date('N', strtotime($row['specific_date']));
$dayName = $dayNames[$dayOfWeek - 1];
$available = $row['is_available'] ? '가능' : '불가능';
$type = $row['temp_1'] ?? '일반';
$memo = $row['temp_2'] ?? '';
echo "";
echo "| {$row['specific_date']} | ";
echo "{$dayName} | ";
echo "{$row['start_time']} | ";
echo "{$row['end_time']} | ";
echo "{$row['max_persons']} | ";
echo "{$available} | ";
echo "{$type} | ";
echo "{$memo} | ";
echo "
";
}
echo "
";
// 타입별 통계
echo "생성된 스케줄 통계
";
$stats = sql_query("SELECT temp_1, COUNT(*) as count FROM consultant_schedule WHERE YEAR(specific_date) = {$year} AND MONTH(specific_date) = {$month} GROUP BY temp_1");
echo "";
while ($stat = sql_fetch_array($stats)) {
$type = $stat['temp_1'] ?? '일반';
echo "- {$type}: {$stat['count']}개
";
}
echo "
";
} else {
echo "❌ 실패: 스케줄 생성에 실패했습니다.
";
}
} catch (Exception $e) {
echo "오류: " . htmlspecialchars($e->getMessage()) . "
";
echo "" . htmlspecialchars($e->getTraceAsString()) . "
";
}
echo "
";
echo "설정으로 돌아가기 | 스케줄 관리
";
?>