fix: 웹 UI JavaScript API 응답 구조 호환성 수정
- 성능 최적화로 변경된 API 응답 구조에 맞춰 JavaScript 수정
- management-dashboard.js: workers 데이터 접근 경로 수정 (data.data 지원)
- manage-worker.js: 작업자 목록 API 응답 구조 수정
- daily-work-report.js: workers, projects 데이터 접근 경로 수정
- login.js: 로그인 API 응답 구조 수정 (result.data.token 접근)
API 응답 구조: { success: true, data: [...], meta: {...} }
This commit is contained in:
@@ -118,7 +118,7 @@ async function loadWorkers() {
|
|||||||
try {
|
try {
|
||||||
console.log('Workers API 호출 중... (통합 API 사용)');
|
console.log('Workers API 호출 중... (통합 API 사용)');
|
||||||
const data = await apiCall(`${API}/workers`);
|
const data = await apiCall(`${API}/workers`);
|
||||||
workers = Array.isArray(data) ? data : (data.workers || []);
|
workers = Array.isArray(data) ? data : (data.data || data.workers || []);
|
||||||
console.log('✅ Workers 로드 성공:', workers.length);
|
console.log('✅ Workers 로드 성공:', workers.length);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('작업자 로딩 오류:', error);
|
console.error('작업자 로딩 오류:', error);
|
||||||
@@ -130,7 +130,7 @@ async function loadProjects() {
|
|||||||
try {
|
try {
|
||||||
console.log('Projects API 호출 중... (통합 API 사용)');
|
console.log('Projects API 호출 중... (통합 API 사용)');
|
||||||
const data = await apiCall(`${API}/projects`);
|
const data = await apiCall(`${API}/projects`);
|
||||||
projects = Array.isArray(data) ? data : (data.projects || []);
|
projects = Array.isArray(data) ? data : (data.data || data.projects || []);
|
||||||
console.log('✅ Projects 로드 성공:', projects.length);
|
console.log('✅ Projects 로드 성공:', projects.length);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('프로젝트 로딩 오류:', error);
|
console.error('프로젝트 로딩 오류:', error);
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ document.getElementById('loginForm').addEventListener('submit', async function (
|
|||||||
// API 헬퍼를 통해 로그인 요청
|
// API 헬퍼를 통해 로그인 요청
|
||||||
const result = await login(username, password);
|
const result = await login(username, password);
|
||||||
|
|
||||||
if (result.token) {
|
if (result.success && result.data && result.data.token) {
|
||||||
// 인증 정보 저장
|
// 인증 정보 저장
|
||||||
saveAuthData(result.token, result.user);
|
saveAuthData(result.data.token, result.data.user);
|
||||||
|
|
||||||
// 백엔드가 지정한 URL로 리디렉션
|
// 백엔드가 지정한 URL로 리디렉션
|
||||||
const redirectUrl = result.redirectUrl || '/pages/dashboard/user.html'; // 혹시 모를 예외처리
|
const redirectUrl = result.data.redirectUrl || '/pages/dashboard/user.html'; // 혹시 모를 예외처리
|
||||||
|
|
||||||
// 부드러운 화면 전환 효과
|
// 부드러운 화면 전환 효과
|
||||||
document.body.style.transition = 'opacity 0.3s ease-out';
|
document.body.style.transition = 'opacity 0.3s ease-out';
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ async function loadWorkers() {
|
|||||||
throw new Error(`HTTP error! status: ${res.status}`);
|
throw new Error(`HTTP error! status: ${res.status}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const list = await res.json();
|
const response = await res.json();
|
||||||
|
const list = response.data || response; // 새로운 API 응답 구조 지원
|
||||||
tbody.innerHTML = '';
|
tbody.innerHTML = '';
|
||||||
|
|
||||||
if (Array.isArray(list)) {
|
if (Array.isArray(list)) {
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ async function loadWorkers() {
|
|||||||
try {
|
try {
|
||||||
console.log('작업자 데이터 로딩 중... (통합 API)');
|
console.log('작업자 데이터 로딩 중... (통합 API)');
|
||||||
const data = await apiCall(`${API}/workers`);
|
const data = await apiCall(`${API}/workers`);
|
||||||
workers = Array.isArray(data) ? data : (data.workers || []);
|
workers = Array.isArray(data) ? data : (data.data || data.workers || []);
|
||||||
console.log('✅ 작업자 로드 성공:', workers.length);
|
console.log('✅ 작업자 로드 성공:', workers.length);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('작업자 로딩 오류:', error);
|
console.error('작업자 로딩 오류:', error);
|
||||||
|
|||||||
Reference in New Issue
Block a user