refactor: 프론트엔드 SSO 인증 통합 및 API 경로 정리

- Gateway 로그인/포탈 페이지 SSO 연동
- System1 web/fastapi-bridge API base URL 동적 설정
- SSO 토큰 기반 인증 흐름 통일
- deprecated JS 파일 삭제

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-06 23:18:09 +09:00
parent ec755ed52f
commit 61c810bd47
63 changed files with 255 additions and 1357 deletions

View File

@@ -8,7 +8,6 @@ let currentEditingTask = null;
// 페이지 초기화
document.addEventListener('DOMContentLoaded', async () => {
console.log('📋 작업 관리 페이지 초기화');
// API 함수가 로드될 때까지 대기
let retryCount = 0;
@@ -33,7 +32,7 @@ async function loadAllData() {
// 작업 목록 로드
await loadTasks();
} catch (error) {
console.error(' 데이터 로드 오류:', error);
console.error(' 데이터 로드 오류:', error);
showToast('데이터를 불러오는 중 오류가 발생했습니다.', 'error');
}
}
@@ -51,11 +50,10 @@ async function loadWorkTypes() {
workTypes = [];
}
console.log('✅ 공정 목록 로드:', workTypes.length + '개');
renderWorkTypeTabs();
populateWorkTypeSelect();
} catch (error) {
console.error(' 공정 목록 조회 오류:', error);
console.error(' 공정 목록 조회 오류:', error);
// API 오류 시에도 빈 배열로 처리
workTypes = [];
renderWorkTypeTabs();
@@ -69,7 +67,6 @@ async function loadTasks() {
if (response && response.success) {
tasks = response.data || [];
console.log('✅ 작업 목록 로드:', tasks.length + '개');
} else {
tasks = [];
}
@@ -77,7 +74,7 @@ async function loadTasks() {
renderTasks();
updateStatistics();
} catch (error) {
console.error(' 작업 목록 조회 오류:', error);
console.error(' 작업 목록 조회 오류:', error);
showToast('작업 목록을 불러오는 중 오류가 발생했습니다.', 'error');
tasks = [];
renderTasks();
@@ -257,7 +254,7 @@ async function editTask(taskId) {
document.body.style.overflow = 'hidden';
}
} catch (error) {
console.error(' 작업 조회 오류:', error);
console.error(' 작업 조회 오류:', error);
showToast('작업 정보를 불러올 수 없습니다.', 'error');
}
}
@@ -314,7 +311,7 @@ async function saveTask() {
throw new Error(response.message || '저장에 실패했습니다.');
}
} catch (error) {
console.error(' 작업 저장 오류:', error);
console.error(' 작업 저장 오류:', error);
showToast('작업 저장 중 오류가 발생했습니다.', 'error');
}
}
@@ -339,7 +336,7 @@ async function deleteTask() {
throw new Error(response.message || '삭제에 실패했습니다.');
}
} catch (error) {
console.error(' 작업 삭제 오류:', error);
console.error(' 작업 삭제 오류:', error);
showToast('작업 삭제 중 오류가 발생했습니다.', 'error');
}
}
@@ -399,7 +396,7 @@ async function editWorkType(workTypeId) {
document.getElementById('workTypeModal').style.display = 'flex';
document.body.style.overflow = 'hidden';
} catch (error) {
console.error(' 공정 조회 오류:', error);
console.error(' 공정 조회 오류:', error);
showToast('공정 정보를 불러올 수 없습니다.', 'error');
}
}
@@ -445,7 +442,7 @@ async function saveWorkType() {
throw new Error(response.message || '저장에 실패했습니다.');
}
} catch (error) {
console.error(' 공정 저장 오류:', error);
console.error(' 공정 저장 오류:', error);
showToast('공정 저장 중 오류가 발생했습니다.', 'error');
}
}
@@ -477,7 +474,7 @@ async function deleteWorkType() {
throw new Error(response.message || '삭제에 실패했습니다.');
}
} catch (error) {
console.error(' 공정 삭제 오류:', error);
console.error(' 공정 삭제 오류:', error);
showToast('공정 삭제 중 오류가 발생했습니다.', 'error');
}
}