Initial commit: 교육 프로젝트 배포
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user