diff --git a/backend-node/src/controllers/productionController.ts b/backend-node/src/controllers/productionController.ts index 9d6c56c4..aa3f3a36 100644 --- a/backend-node/src/controllers/productionController.ts +++ b/backend-node/src/controllers/productionController.ts @@ -2,13 +2,14 @@ * 생산계획 컨트롤러 */ -import { Request, Response } from "express"; +import { Response } from "express"; +import { AuthenticatedRequest } from "../types/auth"; import * as productionService from "../services/productionPlanService"; import { logger } from "../utils/logger"; // ─── 수주 데이터 조회 (품목별 그룹핑) ─── -export async function getOrderSummary(req: Request, res: Response) { +export async function getOrderSummary(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const { excludePlanned, itemCode, itemName } = req.query; @@ -28,7 +29,7 @@ export async function getOrderSummary(req: Request, res: Response) { // ─── 안전재고 부족분 조회 ─── -export async function getStockShortage(req: Request, res: Response) { +export async function getStockShortage(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const data = await productionService.getStockShortage(companyCode); @@ -41,7 +42,7 @@ export async function getStockShortage(req: Request, res: Response) { // ─── 생산계획 상세 조회 ─── -export async function getPlanById(req: Request, res: Response) { +export async function getPlanById(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const planId = parseInt(req.params.id, 10); @@ -59,7 +60,7 @@ export async function getPlanById(req: Request, res: Response) { // ─── 생산계획 수정 ─── -export async function updatePlan(req: Request, res: Response) { +export async function updatePlan(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const planId = parseInt(req.params.id, 10); @@ -78,7 +79,7 @@ export async function updatePlan(req: Request, res: Response) { // ─── 생산계획 삭제 ─── -export async function deletePlan(req: Request, res: Response) { +export async function deletePlan(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const planId = parseInt(req.params.id, 10); @@ -96,7 +97,7 @@ export async function deletePlan(req: Request, res: Response) { // ─── 자동 스케줄 생성 ─── -export async function generateSchedule(req: Request, res: Response) { +export async function generateSchedule(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const createdBy = req.user!.userId; @@ -116,7 +117,7 @@ export async function generateSchedule(req: Request, res: Response) { // ─── 스케줄 병합 ─── -export async function mergeSchedules(req: Request, res: Response) { +export async function mergeSchedules(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const mergedBy = req.user!.userId; @@ -142,7 +143,7 @@ export async function mergeSchedules(req: Request, res: Response) { // ─── 반제품 계획 자동 생성 ─── -export async function generateSemiSchedule(req: Request, res: Response) { +export async function generateSemiSchedule(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const createdBy = req.user!.userId; @@ -167,7 +168,7 @@ export async function generateSemiSchedule(req: Request, res: Response) { // ─── 스케줄 분할 ─── -export async function splitSchedule(req: Request, res: Response) { +export async function splitSchedule(req: AuthenticatedRequest, res: Response) { try { const companyCode = req.user!.companyCode; const splitBy = req.user!.userId; diff --git a/frontend/lib/registry/components/v2-timeline-scheduler/TimelineSchedulerComponent.tsx b/frontend/lib/registry/components/v2-timeline-scheduler/TimelineSchedulerComponent.tsx index f6fbaea2..e7da45a6 100644 --- a/frontend/lib/registry/components/v2-timeline-scheduler/TimelineSchedulerComponent.tsx +++ b/frontend/lib/registry/components/v2-timeline-scheduler/TimelineSchedulerComponent.tsx @@ -226,11 +226,11 @@ export function TimelineSchedulerComponent({ // 디자인 모드 플레이스홀더 if (isDesignMode) { return ( -
타임라인 스케줄러
-
+
타임라인 스케줄러
+{config.selectedTable ? `테이블: ${config.selectedTable}` : "테이블을 선택하세요"} @@ -244,12 +244,12 @@ export function TimelineSchedulerComponent({ if (isLoading) { return (
오류 발생
-{error}
+오류 발생
+{error}
스케줄 데이터가 없습니다
-
+
스케줄 데이터가 없습니다
+
좌측 테이블에서 품목을 선택하거나,
스케줄 생성 버튼을 눌러 스케줄을 생성하세요