Initial commit: 교육 프로젝트 배포

This commit is contained in:
송대일
2026-07-01 18:32:42 +09:00
commit be6dccd120
1483 changed files with 5082202 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
<?php
/**
* bbs/api/diagnosis.php — 디버그용 진단 API
* 현재 사용자의 세션, 키워드 저장 상태, DB 연결 등을 확인
*/
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
require_once dirname(__DIR__) . '/db_conn.php';
require_once dirname(__DIR__) . '/auth.php';
edu_start_session();
$memberId = edu_current_member_id();
$sysCompCode = (string)($_SESSION['sys_comp_code'] ?? '');
$diag = [
'member_id' => $memberId,
'sys_comp_code' => $sysCompCode,
'session_keys' => array_keys($_SESSION),
];
if ($memberId === '') {
echo json_encode(['success' => false, 'error' => 'not_logged_in'] + $diag, JSON_UNESCAPED_UNICODE);
exit;
}
try {
$pdo = db_conn();
$pdo->exec("SET NAMES 'utf8mb4'");
// 1. 사용자 정보
$userSt = $pdo->prepare('SELECT * FROM edu_users WHERE member_id = ? ORDER BY sys_comp_code LIMIT 1');
$userSt->execute([$memberId]);
$userRow = $userSt->fetch(PDO::FETCH_ASSOC);
$diag['user_info'] = $userRow ? [
'name' => $userRow['name'] ?? '',
'rank_name' => $userRow['rank_name'] ?? '',
'sys_comp_code' => $userRow['sys_comp_code'] ?? '',
] : null;
// 2. 저장된 키워드 (sys_comp_code 제약 없이)
$kwSt = $pdo->prepare("
SELECT uk.keyword_code, ec.code_name AS keyword_name, uk.member_id, uk.sys_comp_code
FROM edu_user_keywords uk
JOIN edu_codes ec ON ec.base_code = uk.keyword_code
WHERE uk.member_id = ?
ORDER BY uk.keyword_code
");
$kwSt->execute([$memberId]);
$savedKws = $kwSt->fetchAll(PDO::FETCH_ASSOC);
$diag['saved_keywords'] = $savedKws;
$diag['saved_keywords_count'] = count($savedKws);
// 3. 테이블 존재 확인
$tblCheck = [];
foreach (['edu_user_keywords', 'edu_codes', 'edu_recommend_keywords', 'edu_contents'] as $tbl) {
try {
$cnt = $pdo->query("SELECT COUNT(*) FROM {$tbl}")->fetchColumn();
$tblCheck[$tbl] = $cnt;
} catch (Exception $e) {
$tblCheck[$tbl] = 'ERROR: ' . $e->getMessage();
}
}
$diag['table_check'] = $tblCheck;
// 3b. edu_recommend_keywords 컬럼 확인
try {
$cols = $pdo->query("SHOW COLUMNS FROM edu_recommend_keywords")->fetchAll(PDO::FETCH_ASSOC);
$diag['edu_recommend_keywords_columns'] = array_column($cols, 'Field');
} catch (Exception $e) {
$diag['edu_recommend_keywords_columns'] = 'ERROR: ' . $e->getMessage();
}
// 4. 회사 추천 키워드 샘플 (main_data.php와 동일 규칙)
try {
$admSt = $pdo->prepare("
SELECT rk.keyword_code, ec.code_name AS keyword_name, rk.is_active, rk.sys_comp_code
FROM edu_recommend_keywords rk
JOIN edu_codes ec ON ec.base_code = rk.keyword_code
WHERE rk.is_active = 1
AND rk.keyword_code IS NOT NULL
AND rk.keyword_code <> ''
AND ec.group_code = 'KW100'
ORDER BY rk.keyword_code
LIMIT 2
");
$admSt->execute();
$admKws = $admSt->fetchAll(PDO::FETCH_ASSOC);
$diag['admin_keywords_sample'] = $admKws;
$diag['admin_keywords_count'] = count($admKws);
} catch (Exception $e) {
$diag['admin_keywords_sample'] = 'ERROR: ' . $e->getMessage();
$diag['admin_keywords_count'] = 0;
}
echo json_encode(['success' => true] + $diag, JSON_UNESCAPED_UNICODE);
} catch (Throwable $e) {
echo json_encode([
'success' => false,
'error' => $e->getMessage(),
] + $diag, JSON_UNESCAPED_UNICODE);
}