POP 전용 카테고리 트리 UI 구현 (계층적 폴더 구조) 카테고리 CRUD API 추가 (hierarchy_path LIKE 'POP/%' 필터) 화면 이동 기능 (기존 연결 삭제 후 새 연결 추가 방식) 카테고리/화면 순서 변경 기능 (display_order 교환) 이동 UI를 서브메뉴에서 검색 가능한 모달로 개선 POP 레이아웃 버전 통일 (pop-1.0) 및 로드 로직 수정 DB 스키마 호환성 수정 (writer 컬럼, is_active VARCHAR)
127 lines
4.6 KiB
TypeScript
127 lines
4.6 KiB
TypeScript
import { Router } from "express";
|
|
import { authenticateToken } from "../middleware/authMiddleware";
|
|
import {
|
|
// 화면 그룹
|
|
getScreenGroups,
|
|
getScreenGroup,
|
|
createScreenGroup,
|
|
updateScreenGroup,
|
|
deleteScreenGroup,
|
|
// 화면-그룹 연결
|
|
addScreenToGroup,
|
|
removeScreenFromGroup,
|
|
updateScreenInGroup,
|
|
// 필드 조인
|
|
getFieldJoins,
|
|
createFieldJoin,
|
|
updateFieldJoin,
|
|
deleteFieldJoin,
|
|
// 데이터 흐름
|
|
getDataFlows,
|
|
createDataFlow,
|
|
updateDataFlow,
|
|
deleteDataFlow,
|
|
// 화면-테이블 관계
|
|
getTableRelations,
|
|
createTableRelation,
|
|
updateTableRelation,
|
|
deleteTableRelation,
|
|
// 화면 레이아웃 요약
|
|
getScreenLayoutSummary,
|
|
getMultipleScreenLayoutSummary,
|
|
// 화면 서브 테이블 관계
|
|
getScreenSubTables,
|
|
// 메뉴-화면그룹 동기화
|
|
syncScreenGroupsToMenuController,
|
|
syncMenuToScreenGroupsController,
|
|
getSyncStatusController,
|
|
syncAllCompaniesController,
|
|
// POP 전용 화면 그룹
|
|
getPopScreenGroups,
|
|
createPopScreenGroup,
|
|
updatePopScreenGroup,
|
|
deletePopScreenGroup,
|
|
ensurePopRootGroup,
|
|
} from "../controllers/screenGroupController";
|
|
|
|
const router = Router();
|
|
|
|
// 모든 라우트에 인증 미들웨어 적용
|
|
router.use(authenticateToken);
|
|
|
|
// ============================================================
|
|
// 화면 그룹 (screen_groups)
|
|
// ============================================================
|
|
router.get("/groups", getScreenGroups);
|
|
router.get("/groups/:id", getScreenGroup);
|
|
router.post("/groups", createScreenGroup);
|
|
router.put("/groups/:id", updateScreenGroup);
|
|
router.delete("/groups/:id", deleteScreenGroup);
|
|
|
|
// ============================================================
|
|
// 화면-그룹 연결 (screen_group_screens)
|
|
// ============================================================
|
|
router.post("/group-screens", addScreenToGroup);
|
|
router.put("/group-screens/:id", updateScreenInGroup);
|
|
router.delete("/group-screens/:id", removeScreenFromGroup);
|
|
|
|
// ============================================================
|
|
// 필드 조인 설정 (screen_field_joins)
|
|
// ============================================================
|
|
router.get("/field-joins", getFieldJoins);
|
|
router.post("/field-joins", createFieldJoin);
|
|
router.put("/field-joins/:id", updateFieldJoin);
|
|
router.delete("/field-joins/:id", deleteFieldJoin);
|
|
|
|
// ============================================================
|
|
// 데이터 흐름 (screen_data_flows)
|
|
// ============================================================
|
|
router.get("/data-flows", getDataFlows);
|
|
router.post("/data-flows", createDataFlow);
|
|
router.put("/data-flows/:id", updateDataFlow);
|
|
router.delete("/data-flows/:id", deleteDataFlow);
|
|
|
|
// ============================================================
|
|
// 화면-테이블 관계 (screen_table_relations)
|
|
// ============================================================
|
|
router.get("/table-relations", getTableRelations);
|
|
router.post("/table-relations", createTableRelation);
|
|
router.put("/table-relations/:id", updateTableRelation);
|
|
router.delete("/table-relations/:id", deleteTableRelation);
|
|
|
|
// ============================================================
|
|
// 화면 레이아웃 요약 (미리보기용)
|
|
// ============================================================
|
|
router.get("/layout-summary/:screenId", getScreenLayoutSummary);
|
|
router.post("/layout-summary/batch", getMultipleScreenLayoutSummary);
|
|
|
|
// ============================================================
|
|
// 화면 서브 테이블 관계 (조인/참조 테이블)
|
|
// ============================================================
|
|
router.post("/sub-tables/batch", getScreenSubTables);
|
|
|
|
// ============================================================
|
|
// 메뉴-화면그룹 동기화
|
|
// ============================================================
|
|
// 동기화 상태 조회
|
|
router.get("/sync/status", getSyncStatusController);
|
|
// 화면관리 → 메뉴 동기화
|
|
router.post("/sync/screen-to-menu", syncScreenGroupsToMenuController);
|
|
// 메뉴 → 화면관리 동기화
|
|
router.post("/sync/menu-to-screen", syncMenuToScreenGroupsController);
|
|
// 전체 회사 동기화 (최고 관리자만)
|
|
router.post("/sync/all", syncAllCompaniesController);
|
|
|
|
// ============================================================
|
|
// POP 전용 화면 그룹 (hierarchy_path LIKE 'POP/%')
|
|
// ============================================================
|
|
router.get("/pop/groups", getPopScreenGroups);
|
|
router.post("/pop/groups", createPopScreenGroup);
|
|
router.put("/pop/groups/:id", updatePopScreenGroup);
|
|
router.delete("/pop/groups/:id", deletePopScreenGroup);
|
|
router.post("/pop/ensure-root", ensurePopRootGroup);
|
|
|
|
export default router;
|
|
|
|
|