// /js/daily-issue-api.js import { apiGet, apiPost } from './api-helper.js'; /** * 이슈 보고서 작성을 위해 필요한 초기 데이터(프로젝트, 이슈 유형)를 가져옵니다. * @returns {Promise<{projects: Array, issueTypes: Array}>} */ export async function getInitialData() { try { const [projects, issueTypes] = await Promise.all([ apiGet('/projects'), apiGet('/issue-types') ]); return { projects, issueTypes }; } catch (error) { console.error('이슈 보고서 초기 데이터 로딩 실패:', error); throw error; } } /** * 특정 날짜에 근무한 작업자 목록을 가져옵니다. * @param {string} date - 조회할 날짜 (YYYY-MM-DD) * @returns {Promise} - 작업자 목록 */ export async function getWorkersByDate(date) { try { // 백엔드에 해당 날짜의 작업자 목록을 요청하는 API가 있다고 가정합니다. // (예: /api/workers?work_date=YYYY-MM-DD) // 현재는 기존 로직을 최대한 활용하여 구현합니다. let workers = []; const reports = await apiGet(`/daily-work-reports?date=${date}`); if (reports && reports.length > 0) { const workerMap = new Map(); reports.forEach(r => { if (!workerMap.has(r.worker_id)) { workerMap.set(r.worker_id, { worker_id: r.worker_id, worker_name: r.worker_name }); } }); workers = Array.from(workerMap.values()); } else { // 보고서가 없으면 전체 작업자 목록을 가져옵니다. workers = await apiGet('/workers'); } return workers.sort((a, b) => a.worker_name.localeCompare(b.worker_name)); } catch (error) { console.error(`${date}의 작업자 목록 로딩 실패:`, error); throw error; } } /** * 작성된 이슈 보고서 데이터를 서버에 전송합니다. * @param {object} issueData - 전송할 이슈 데이터 * @returns {Promise} - 서버 응답 결과 */ export async function createIssueReport(issueData) { try { const result = await apiPost('/issue-reports', issueData); return result; } catch (error) { console.error('이슈 보고서 생성 요청 실패:', error); throw error; } }