저장버튼 제어기능 (insert)

This commit is contained in:
kjs
2025-09-18 10:05:50 +09:00
parent 7b7f81d85c
commit 7cbbf45dc9
32 changed files with 8500 additions and 116 deletions

View File

@@ -0,0 +1,74 @@
/**
* 🔥 버튼 데이터플로우 라우트
*
* 성능 최적화된 API 엔드포인트들
*/
import express from "express";
import {
getButtonDataflowConfig,
updateButtonDataflowConfig,
getAvailableDiagrams,
getDiagramRelationships,
getRelationshipPreview,
executeOptimizedButton,
executeSimpleDataflow,
getJobStatus,
} from "../controllers/buttonDataflowController";
import { authenticateToken } from "../middleware/authMiddleware";
const router = express.Router();
// 🔥 모든 라우트에 인증 미들웨어 적용
router.use(authenticateToken);
// ============================================================================
// 🔥 버튼 설정 관리
// ============================================================================
// 버튼별 제어관리 설정 조회
router.get("/config/:buttonId", getButtonDataflowConfig);
// 버튼별 제어관리 설정 업데이트
router.put("/config/:buttonId", updateButtonDataflowConfig);
// ============================================================================
// 🔥 관계도 및 관계 정보 조회
// ============================================================================
// 사용 가능한 관계도 목록 조회
router.get("/diagrams", getAvailableDiagrams);
// 특정 관계도의 관계 목록 조회
router.get("/diagrams/:diagramId/relationships", getDiagramRelationships);
// 관계 미리보기 정보 조회
router.get(
"/diagrams/:diagramId/relationships/:relationshipId/preview",
getRelationshipPreview
);
// ============================================================================
// 🔥 버튼 실행 (성능 최적화)
// ============================================================================
// 최적화된 버튼 실행 (즉시 응답 + 백그라운드)
router.post("/execute-optimized", executeOptimizedButton);
// 간단한 데이터플로우 즉시 실행
router.post("/execute-simple", executeSimpleDataflow);
// 백그라운드 작업 상태 조회
router.get("/job-status/:jobId", getJobStatus);
// ============================================================================
// 🔥 레거시 호환성 (기존 API와 호환)
// ============================================================================
// 기존 실행 API (redirect to optimized)
router.post("/execute", executeOptimizedButton);
// 백그라운드 실행 API (실제로는 optimized와 동일)
router.post("/execute-background", executeOptimizedButton);
export default router;

View File

@@ -0,0 +1,89 @@
/**
* 🧪 테스트 전용 버튼 데이터플로우 라우트 (인증 없음)
*
* 개발 환경에서만 사용되는 테스트용 API 엔드포인트
*/
import express from "express";
import {
getButtonDataflowConfig,
updateButtonDataflowConfig,
getAvailableDiagrams,
getDiagramRelationships,
getRelationshipPreview,
executeOptimizedButton,
executeSimpleDataflow,
getJobStatus,
} from "../controllers/buttonDataflowController";
import { AuthenticatedRequest } from "../types/auth";
import config from "../config/environment";
const router = express.Router();
// 🚨 개발 환경에서만 활성화
if (config.nodeEnv !== "production") {
// 테스트용 사용자 정보 설정 미들웨어
const setTestUser = (req: AuthenticatedRequest, res: any, next: any) => {
req.user = {
userId: "test-user",
userName: "Test User",
companyCode: "*",
email: "test@example.com",
};
next();
};
// 모든 라우트에 테스트 사용자 설정
router.use(setTestUser);
// ============================================================================
// 🧪 테스트 전용 API 엔드포인트들
// ============================================================================
// 버튼별 제어관리 설정 조회
router.get("/config/:buttonId", getButtonDataflowConfig);
// 버튼별 제어관리 설정 업데이트
router.put("/config/:buttonId", updateButtonDataflowConfig);
// 사용 가능한 관계도 목록 조회
router.get("/diagrams", getAvailableDiagrams);
// 특정 관계도의 관계 목록 조회
router.get("/diagrams/:diagramId/relationships", getDiagramRelationships);
// 관계 미리보기 정보 조회
router.get(
"/diagrams/:diagramId/relationships/:relationshipId/preview",
getRelationshipPreview
);
// 최적화된 버튼 실행 (즉시 응답 + 백그라운드)
router.post("/execute-optimized", executeOptimizedButton);
// 간단한 데이터플로우 즉시 실행
router.post("/execute-simple", executeSimpleDataflow);
// 백그라운드 작업 상태 조회
router.get("/job-status/:jobId", getJobStatus);
// 테스트 상태 확인 엔드포인트
router.get("/test-status", (req: AuthenticatedRequest, res) => {
res.json({
success: true,
message: "테스트 모드 활성화됨",
user: req.user,
environment: config.nodeEnv,
});
});
} else {
// 운영 환경에서는 접근 차단
router.use((req, res) => {
res.status(403).json({
success: false,
message: "테스트 API는 개발 환경에서만 사용 가능합니다.",
});
});
}
export default router;