Files
TK-FB-Project/synology_deployment/api/index.js.backup
Hyungi Ahn a9bce9d20b fix: 캘린더 모달 중복 카드 문제 및 삭제 권한 개선
- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산
- 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader)
- 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql)
- synology_deployment 버전에도 동일 수정 적용
2025-12-02 13:08:44 +09:00

79 lines
2.9 KiB
Plaintext

require('dotenv').config();
const express = require('express');
const cors = require('cors');
const path = require('path');
const app = express();
// ✅ 요청 바디 용량 제한 확장
app.use(express.urlencoded({ extended: true, limit: '50mb' }));
app.use(express.json({ limit: '50mb' }));
// ✅ CORS 설정: 허용 origin 명시
app.use(cors({
origin: function (origin, callback) {
const allowedOrigins = [
'https://ahn.hyungi.net',
'https://tech.hyungi.net',
'https://pdf.hyungi.net'
];
if (!origin || allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('CORS 차단됨: ' + origin));
}
}
}));
// ✅ 라우터 등록
const authRoutes = require('./routes/authRoutes');
const projectRoutes = require('./routes/projectRoutes');
const workerRoutes = require('./routes/workerRoutes');
const taskRoutes = require('./routes/taskRoutes');
const processRoutes = require('./routes/processRoutes');
const workReportRoutes = require('./routes/workReportRoutes');
const cuttingPlanRoutes = require('./routes/cuttingPlanRoutes');
const factoryInfoRoutes = require('./routes/factoryInfoRoutes');
const equipmentListRoutes = require('./routes/equipmentListRoutes');
const toolsRoute = require('./routes/toolsRoute');
const uploadRoutes = require('./routes/uploadRoutes');
const uploadBgRoutes = require('./routes/uploadBgRoutes');
const dailyIssueReportRoutes = require('./routes/dailyIssueReportRoutes');
const issueTypeRoutes = require('./routes/issueTypeRoutes');
const healthRoutes = require('./routes/healthRoutes');
const pipeSpecRoutes = require('./routes/pipeSpecRoutes');
// ahn.hyungi.net 배포용
app.use(express.static(path.join(__dirname, 'public')));
// ✅ 업로드된 파일 정적 라우팅 추가 (웹에서 이미지 접근 가능하게)
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
// ✅ 각 라우트 등록
app.use('/api/auth', authRoutes);
app.use('/api/projects', projectRoutes);
app.use('/api/workers', workerRoutes);
app.use('/api/tasks', taskRoutes);
app.use('/api/processes', processRoutes);
app.use('/api/workreports', workReportRoutes);
app.use('/api/cuttingplans', cuttingPlanRoutes);
app.use('/api/factoryinfo', factoryInfoRoutes);
app.use('/api/equipment', equipmentListRoutes);
app.use('/api/tools', toolsRoute);
app.use('/api/uploads', uploadRoutes);
app.use('/api', uploadBgRoutes); // ✅ upload-bg 경로용
app.use('/api/issue-reports', dailyIssueReportRoutes);
app.use('/api/issue-types', issueTypeRoutes);
app.use('/api', healthRoutes);
app.use('/api/pipespecs', pipeSpecRoutes);
// ✅ 서버 실행
const PORT = process.env.PORT || 3005;
app.listen(PORT, () => {
console.log(`🚀 서버가 ${PORT}번 포트에서 실행 중...`);
}).on('error', (err) => {
console.error('❌ 서버 실행 중 오류 발생:', err);
});
app.use((req, res) => {
res.status(404).json({ error: '존재하지 않는 경로입니다.' });
});