초기 PM 소스 전체 업로드

This commit is contained in:
koj729
2026-06-12 17:14:03 +09:00
commit 4e33c9a02a
1769 changed files with 377797 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
const express = require('express');
const router = express.Router();
const adminController = require('../../controllers/admin/adminController');
const { isLoggedIn, deserializeUser } = require('../../oauth/oauthController');
// 어드민 여부 확인 미들웨어
const isAdmin = (req, res, next) => {
const userGroup = req.user?.group;
// 로컬 우회(test_user) 계정의 group이 'dev'일 때도 개발/어드민 권한으로 인정
if (req.user && (userGroup === 'USER_GROUP_super' || userGroup === 'dev' || userGroup === 'super')) {
return next();
}
return res.status(403).json({ error: "어드민(super) 권한이 필요합니다." });
};
// 모든 어드민 API는 로그인 및 어드민 세션 검증 필수
router.use(isLoggedIn, deserializeUser, isAdmin);
// 1. Projects
router.get('/projects', adminController.getProjects);
router.post('/projects', adminController.createProject);
router.put('/projects/:id', adminController.updateProject);
router.delete('/projects/:id', adminController.deleteProject);
// 2. Permissions
router.get('/permissions/project/:projectId', adminController.getProjectPermissions);
router.post('/permissions/assign', adminController.assignPermissions);
router.put('/permissions/update', adminController.updatePermission);
router.delete('/permissions/remove', adminController.removePermission);
// 3. Banners
router.get('/banners', adminController.getBanners);
router.post('/banners', adminController.createBanner);
router.put('/banners/stop/:id', adminController.stopBanner);
// 4. Users
router.get('/users', adminController.getUsers);
router.get('/users/:id/permissions', adminController.getUserPermissions);
router.post('/users', adminController.createUser);
router.put('/users/:id', adminController.updateUser);
router.delete('/users/:id', adminController.deleteUser);
// 5. Audit Logs
router.get('/audit-logs', adminController.getAuditLogs);
// 6. System Policy
router.get('/system-policy', adminController.getSystemPolicy);
router.post('/system-policy/update', adminController.updateSystemPolicy);
router.get('/system-policy/logs', adminController.getAutoCleanLogs);
// 7. Common Codes
router.get('/common-codes/masters', adminController.getCodeMasters);
router.post('/common-codes/masters', adminController.createCodeMaster);
router.put('/common-codes/masters/:code', adminController.updateCodeMaster);
router.delete('/common-codes/masters/:code', adminController.deleteCodeMaster);
router.get('/common-codes/details/:mainCode', adminController.getCodeDetails);
router.post('/common-codes/details', adminController.createCodeDetail);
router.put('/common-codes/details/:mainCode/:subCode', adminController.updateCodeDetail);
router.delete('/common-codes/details/:mainCode/:subCode', adminController.deleteCodeDetail);
module.exports = router;

128
routes/archiveRouter.js Normal file
View File

@@ -0,0 +1,128 @@
const express = require('express');
const router = express.Router({mergeParams:true});
const path = require('path');
const { isLoggedIn } = require('../oauth/oauthController');
const {
// setUseEncrypt,
getTreeObject,
getRecycleBinObject,
getFolderSize,
getLog,
checkTargetExists,
createFolder,
generateUploadUrl,
uploadData,
ensureAddOnFolder,
renameTarget,
editAuthor,
getDataInfo,
generateDownloadUrl,
downloadTarget,
relocateTarget,
removeTarget,
deleteTarget,
setDataPermission,
editPosition,
renewExpiryDate,
convertPdf,
makeThumbPdf,
addConvetPdfLog,
removeConvertingData,
postProcessVideo,
requestResetViewer,
updateMemoInfo,
getMemoInfo,
uploadData_titleImg,
generateImageUrl,
isMainTitleImage,
deleteMainTitleImage,
mgmtFunc_resetConvert,
mgmtFunc_addClickLog,
getControlBoxPosition,
setControlBoxPosition,
// dtest,
// otest,
summarizeAI,
summarizeAI_action,
downloadzip,
addSummarizeAiLog,
// getSocket,
summarizeState,
getMyDownloadList,
addPermissionLog,
getFilterLog,
getUserLog,
getNullThumbnailDataInfo,
updateThumbnailInfo,
} = require("../controllers/archiveController");
// router.post('/dtest', dtest);
// router.post('/otest', otest);
router.get('/', isLoggedIn ,async(req, res, next) => {
res.sendFile(path.join(process.cwd(), `views/main/main.html`));
//////// pm-bcmf 연결용 테스트 코드 - id, pw 입력해서 정상적으로 로그인 한 경우 authController id, startPath 전역변수 초기화
req.body = {
id: undefined,
startPath: undefined
};
const authController = require('../controllers/authController');
await authController.setBcmfUrlQuery(req, res);
});
// router.put('/setUseEncrypt', setUseEncrypt);
router.get('/getTreeObject', getTreeObject);
router.get('/getRecycleBinObject', getRecycleBinObject);
router.get('/getFolderSize', getFolderSize);
router.get('/getLog', getLog);
router.post('/checkTargetExists', checkTargetExists);
router.post('/createFolder', createFolder);
router.post('/generateUploadUrl', generateUploadUrl);
router.post('/uploadData', uploadData);
router.post('/ensureAddOnFolder', ensureAddOnFolder);
router.post('/renameTarget', renameTarget);
router.post('/editAuthor', editAuthor);
router.post('/getDataInfo', getDataInfo);
router.post('/generateDownloadUrl', generateDownloadUrl);
router.post('/downloadTarget', downloadTarget);
router.post('/relocateTarget', relocateTarget);
router.post('/removeTarget', removeTarget);
router.post('/deleteTarget', deleteTarget);
router.post('/setDataPermission', setDataPermission);
router.post('/editPosition', editPosition);
router.post('/renewExpiryDate', renewExpiryDate);
router.post('/convertPdf', convertPdf);
router.post('/makeThumbPdf', makeThumbPdf);
router.post('/addConvetPdfLog', addConvetPdfLog);
router.post('/removeConvertingData', removeConvertingData);
router.post('/postProcessVideo', postProcessVideo);
router.post('/requestResetViewer', requestResetViewer);
router.post('/updateMemoInfo', updateMemoInfo);
router.get('/getMemoInfo', getMemoInfo);
router.post('/uploadData_titleImg', uploadData_titleImg);
router.get('/generateImageUrl', generateImageUrl);
router.get('/isMainTitleImage', isMainTitleImage);
router.post('/deleteMainTitleImage', deleteMainTitleImage);
router.post('/mgmtFunc_resetConvert', mgmtFunc_resetConvert);
router.post('/mgmtFunc_addClickLog', mgmtFunc_addClickLog);
router.get('/getControlBoxPosition', getControlBoxPosition);
router.post('/setControlBoxPosition', setControlBoxPosition);
router.post('/summarizeAI', summarizeAI.fields([
{ name: 'prompt_file', maxCount: 1 },
{ name: 'schema_file', maxCount: 1 },
]), summarizeAI_action);
router.post('/addSummarizeAiLog', addSummarizeAiLog);
router.get('/downloadzip', downloadzip);
router.get('/summarizeState', summarizeState)
router.get('/summarizeState', summarizeState)
router.get('/getMyDownloadList', getMyDownloadList);
router.post('/addPermissionLog', addPermissionLog);
router.get('/getNullThumbnailDataInfo', getNullThumbnailDataInfo);
router.post('/updateThumbnailInfo', updateThumbnailInfo);
router.get('/getFilterLog', getFilterLog);
router.get('/getUserLog', getUserLog);
module.exports = router;

38
routes/authRouter.js Normal file
View File

@@ -0,0 +1,38 @@
const express = require('express');
const {
isLoggedIn,
isNotLoggedIn,
login,
logout,
status,
upsertPermission,
deletePermission,
getMemberList,
//////// pm-bcmf 연결용 테스트 코드
setBcmfUrlQuery,
getBcmfUrlQuery,
getDeptList,
getUserList,
getPermissionUserInfo,
} = require('../controllers/authController');
const router = express.Router();
router.post('/login', isNotLoggedIn, login);
router.get('/logout', isLoggedIn, logout);
router.get('/status', status);
router.post('/upsertPermission', upsertPermission);
router.post('/deletePermission', deletePermission);
router.get('/getMemberList', getMemberList);
//////// pm-bcmf 연결용 테스트 코드
router.post('/setBcmfUserData', setBcmfUrlQuery);
router.get('/getBcmfUrlQuery', getBcmfUrlQuery);
router.post('/getPermissionUserInfo', getPermissionUserInfo);
router.get('/getDeptList', getDeptList);
router.get('/getUserList', getUserList);
module.exports = router;

View File

@@ -0,0 +1,9 @@
// routes/monitorRouter.js
const express = require('express');
const router = express.Router();
const bullBoardController = require('../controllers/bullBoardController');
// 컨트롤러(Router)만 마운트
router.use('/', bullBoardController);
module.exports = router;

23
routes/commonRouter.js Normal file
View File

@@ -0,0 +1,23 @@
const express = require('express');
const {
getEnvData,
getProject,
mgmtFunc_updateProject,
getVersion,
updateProjectInfo,
updateLocationInfo,
getSystemPolicyPublic
} = require('../controllers/commonController');
const router = express.Router();
router.get('/getEnvData', getEnvData);
router.get('/getProject', getProject);
router.post('/mgmtFunc_updateProject', mgmtFunc_updateProject);
router.get('/getVersion', getVersion);
router.post('/updateProjectInfo', updateProjectInfo);
router.post('/updateLocationInfo', updateLocationInfo);
router.get('/system-policy', getSystemPolicyPublic);
module.exports = router;

20
routes/gsimRouter.js Normal file
View File

@@ -0,0 +1,20 @@
const express = require('express');
const { getListClass, getList, updateBookmark, projectstatusList, getPresignedUrl, uploadUrl, insertProjectStatusData, deleteFile, getAllList, setProjectStep, setProjectType } = require('../controllers/gsimController.js');
const router = express.Router();
router.get('/getListClass', getListClass);
router.get('/getList', getList);
router.get('/updateBookmark',updateBookmark);
router.get('/projectstatusList',projectstatusList);
router.get('/getPresignedUrl',getPresignedUrl);
router.get('/uploadUrl',uploadUrl);
router.get('/insertProjectStatusData',insertProjectStatusData);
router.delete('/deleteFile',deleteFile);
router.get('/setProjectStep',setProjectStep);
router.get('/setProjectType',setProjectType);
router.get('/getAllList', getAllList);
module.exports = router;

88
routes/mainRouter.js Normal file
View File

@@ -0,0 +1,88 @@
const express = require('express');
const process = require('process');
const path = require('path');
const router = express.Router();
const { isLoggedIn } = require('../controllers/authController');
const { getIo } = require('../socket');
const env = process.env;
//////// pm-bcmf 연결용 테스트 코드 - url pathname이 pm-bcmf로 들어온 경우 authController id, startPath 전역변수에 쿼리 내용 저장 후 main.html로 이동
router.get('/pm-bcmf', async(req, res, next) => {
req.body = {
id: req.query.id,
startPath: req.query.startPath
};
const authController = require('../controllers/authController');
await authController.setBcmfUrlQuery(req, res);
res.sendFile(path.join(process.cwd(), `views/main/main.html`));
})
router.get('/projectStatus'/* , isLoggedIn */ ,async(req, res, next) => {
res.sendFile(path.join(process.cwd(), `views/index/index-projectStatus.html`));
});
router.get(`/`/* , isLoggedIn */,(req,res,next)=>{
let html = ``;
// html = `views/index/index-bim.html`;
// html = `views/index/index-overseas.html`;
if(env.SERVICE_NAME === 'PM_ver4_LOCAL' || env.SERVICE_NAME === 'PM_ver4_ONPREMISE') html = `views/index/index-onpremise.html`;
if(env.SERVICE_NAME === 'PM_ver4_CLOUD_OVERSEAS'){
if(req.hostname.toLowerCase().includes('gtb.')) html = `views/main/main.html`;
// if(req.hostname.toLowerCase().includes('cheongyong.')) html = `views/main/main.html`;
if(req.hostname.toLowerCase().includes('bim.')) html = `views/index/index-bim.html`;
if(req.hostname.toLowerCase().includes('overseas.')) html = `views/index/index-overseas.html`;
if(req.hostname.toLowerCase().includes('jangheon.')) html = `views/index/index-jangheon.html`;
if(req.hostname.toLowerCase().includes('jangheonindustry.')) html = `views/index/index-jangheon.html`
// 아래는 로컬에서 테스트 할 때 사용 -> html 변수에 테스트 할 인덱스 페이지 경로 사용
if(req.hostname.toLowerCase().includes('172') || req.hostname.toLowerCase().includes('localhost')) {
//// 온프레미스
html = `views/index/index-onpremise.html`;
//// 클라우드 bim
// html = `views/index/index-bim.html`;
//// 클라우드 overseas
// html = `views/index/index-overseas.html`;
//// 클라우드 jangheon
// html = `views/index/index-jangheon.html`;
//// 클라우드 gtb, cheongyong
// html = `views/main/main.html`;
}
}
res.sendFile(path.join(process.cwd(), html));
})
router.get('/:type'/* , isLoggedIn */ ,async(req, res, next) => {
const { type } = req.params;
let html = ``;
// if(env.SERVICE_NAME === 'PM_ver4_LOCAL' || env.SERVICE_NAME === 'PM_ver4_ONPREMISE') html = `views/index/list-onpremise-tdc.html`;
// if(env.SERVICE_NAME === 'PM_ver4_CLOUD_JANGHEON') html = `views/index/index-jangheon.html`;
// if(env.SERVICE_NAME === 'PM_ver4_CLOUD_OVERSEAS'){
// if(req.hostname.toLowerCase().includes('gtb.')) html = `views/main/main.html`;
// if(req.hostname.toLowerCase().includes('bim.')) html = `views/index/index-bim.html`;
// if(req.hostname.toLowerCase().includes('overseas.')) html = `views/index/index-overseas.html`;
// if(req.hostname.toLowerCase().includes('jangheon.')) html = `views/index/index-jangheon.html`;
// }
// if(env.SERVICE_NAME === 'PM_ver4_LOCAL' || env.SERVICE_NAME === 'PM_ver4_ONPREMISE'){
// if(type.toLowerCase() == 'tdc') res.redirect('/');
// }
if (type.toLowerCase() == 'popup'){
html = 'views/main/popup.html';
res.sendFile(path.join(process.cwd(), `${html}`));
} else{
res.redirect('/');
}
});
module.exports = router;

View File

@@ -0,0 +1,78 @@
const express = require('express');
const router = express.Router({ mergeParams: true });
const path = require('path');
const { isLoggedIn } = require('../oauth/oauthController');
const {
getDocSeq,
getDocData,
getDocDataBySelected,
getCompanyList,
getGroupCompanyData,
saveCompanyList,
saveUserSetting,
getUserSetting,
uploadDocData,
deleteDocData,
generateUploadDocUrl,
generateGetDocUrl,
generateDeleteDocUrl,
generateDownloadDocUrl,
renameDocTarget,
convertDocPdf,
getExtractKey,
checkDocTargetExists,
docGeminiAiAction,
} = require("../controllers/officialDocController.js");
router.get('/', isLoggedIn ,async(req, res, next) => {
res.sendFile(path.join(process.cwd(), `views/archive.html`));
//////// pm-bcmf 연결용 테스트 코드 - id, pw 입력해서 정상적으로 로그인 한 경우 authController id, startPath 전역변수 초기화
req.body = {
id: undefined,
startPath: undefined
};
const authController = require('../controllers/authController');
await authController.setBcmfUrlQuery(req, res);
});
router.get('/getDocSeq', getDocSeq);
router.get('/getDocData', getDocData);
router.get('/getDocDataBySelected', getDocDataBySelected);
router.get('/getCompanyList', getCompanyList);
router.get('/getGroupCompanyData', getGroupCompanyData);
router.post('/saveCompanyList', saveCompanyList);
router.post('/saveUserSetting', saveUserSetting);
router.get('/getUserSetting', getUserSetting);
router.post('/uploadDocData', uploadDocData);
router.post('/deleteDocData', deleteDocData);
router.post('/generateUploadDocUrl', generateUploadDocUrl);
router.get('/generateGetDocUrl', generateGetDocUrl);
router.post('/generateDeleteDocUrl', generateDeleteDocUrl);
router.post('/generateDownloadDocUrl', generateDownloadDocUrl);
router.post('/renameDocTarget', renameDocTarget);
router.post('/convertDocPdf', convertDocPdf); // pdf 컨버팅
router.post('/getExtractKey', getExtractKey);
router.post('/checkDocTargetExists', checkDocTargetExists);
const multer = require('multer');
const upload = multer();
router.post('/docGeminiAi', upload.fields([
{ name: 'input_file', maxCount: 1 },
{ name: 'prompt_file', maxCount: 1 },
{ name: 'schema_file', maxCount: 1 },
]), docGeminiAiAction);
module.exports = router;

62
routes/overviewRouter.js Normal file
View File

@@ -0,0 +1,62 @@
const express = require('express');
const router = express.Router({ mergeParams: true });
const path = require('path');
const { isLoggedIn } = require('../oauth/oauthController');
const {
getData,
getFacilitySizeData,
getCalendarEventData,
getTaskPeriodData,
saveSectionLeftData,
saveSectionMiddleData,
saveScheduleData,
saveTaskHistoryData,
saveSectionLeftTabData,
deleteScheduleData,
deleteTaskPeriodData,
deleteSectionData,
deleteLocationImgData,
deleteOverviewImgData,
deleteCellData,
generateUploadImgUrl,
generateGetImgUrl,
generateDeleteImgUrl,
updateOverviewImgData,
saveIssueData
} = require("../controllers/overviewController");
router.get('/', isLoggedIn, async (req, res, next) => {
res.sendFile(path.join(process.cwd(), `views/overview.html`));
//////// pm-bcmf 연결용 테스트 코드 - id, pw 입력해서 정상적으로 로그인 한 경우 authController id, startPath 전역변수 초기화
req.body = {
id: undefined,
startPath: undefined
};
const authController = require('../controllers/authController');
await authController.setBcmfUrlQuery(req, res);
});
router.get('/getData', getData);
router.get('/getTaskPeriodData', getTaskPeriodData);
router.get('/getFacilitySizeData', getFacilitySizeData);
router.get('/getCalendarEventData', getCalendarEventData);
router.post('/saveScheduleData', saveScheduleData);
router.delete('/deleteScheduleData', deleteScheduleData);
router.delete('/deleteTaskPeriodData', deleteTaskPeriodData);
router.delete('/deleteSectionData', deleteSectionData);
router.delete('/deleteCellData', deleteCellData);
router.post('/deleteLocationImgData', deleteLocationImgData);
router.post('/deleteOverviewImgData', deleteOverviewImgData);
router.post('/saveSectionLeftData', saveSectionLeftData);
router.post('/saveSectionMiddleData', saveSectionMiddleData);
router.post('/saveTaskHistoryData', saveTaskHistoryData);
router.post('/saveSectionLeftTabData', saveSectionLeftTabData);
router.post('/saveIssueData', saveIssueData)
router.post('/generateUploadUrl', generateUploadImgUrl);
router.get('/generateGetImgUrl', generateGetImgUrl);
router.delete('/generateDeleteImgUrl', generateDeleteImgUrl);
router.post('/updateOverviewImgData', updateOverviewImgData);
module.exports = router;