docs: 자동 스케줄 생성 기능 추가 및 관련 문서 업데이트

- 생산계획 목록에 자동 스케줄 생성 기능에 대한 상세 가이드를 추가하였습니다.
- 스케줄 생성의 데이터 흐름과 설정을 명확히 설명하였으며, JSON 형식의 설정 예시를 포함하였습니다.
- 버튼 설정 및 연결 필터 설정에 대한 정보를 추가하여 사용자가 기능을 쉽게 이해할 수 있도록 하였습니다.
- 구현 상태를 체크리스트 형식으로 정리하여 각 항목의 진행 상황을 명시하였습니다.
This commit is contained in:
kjs
2026-02-02 17:37:13 +09:00
parent 7043f26ac8
commit 61b67c3619
3 changed files with 1067 additions and 2 deletions

View File

@@ -53,6 +53,13 @@ export const V2_EVENTS = {
RELATED_BUTTON_REGISTER: "v2:related-button:register",
RELATED_BUTTON_UNREGISTER: "v2:related-button:unregister",
RELATED_BUTTON_SELECT: "v2:related-button:select",
// 스케줄 자동 생성
SCHEDULE_GENERATE_REQUEST: "v2:schedule:generate:request",
SCHEDULE_GENERATE_PREVIEW: "v2:schedule:generate:preview",
SCHEDULE_GENERATE_APPLY: "v2:schedule:generate:apply",
SCHEDULE_GENERATE_COMPLETE: "v2:schedule:generate:complete",
SCHEDULE_GENERATE_ERROR: "v2:schedule:generate:error",
} as const;
export type V2EventName = (typeof V2_EVENTS)[keyof typeof V2_EVENTS];
@@ -230,6 +237,64 @@ export interface V2RelatedButtonSelectEvent {
selectedData: any[];
}
// ============================================================================
// 스케줄 자동 생성 이벤트
// ============================================================================
/** 스케줄 타입 */
export type ScheduleType = "PRODUCTION" | "MAINTENANCE" | "SHIPPING" | "WORK_ASSIGN";
/** 스케줄 생성 요청 이벤트 */
export interface V2ScheduleGenerateRequestEvent {
requestId: string;
scheduleType: ScheduleType;
sourceData?: any[]; // 선택 데이터 (없으면 TABLE_SELECTION_CHANGE로 받은 데이터 사용)
period?: { start: string; end: string };
}
/** 스케줄 미리보기 결과 이벤트 */
export interface V2ScheduleGeneratePreviewEvent {
requestId: string;
scheduleType: ScheduleType;
preview: {
toCreate: any[];
toDelete: any[];
toUpdate: any[];
summary: {
createCount: number;
deleteCount: number;
updateCount: number;
totalQty: number;
};
};
}
/** 스케줄 적용 이벤트 */
export interface V2ScheduleGenerateApplyEvent {
requestId: string;
confirmed: boolean;
}
/** 스케줄 생성 완료 이벤트 */
export interface V2ScheduleGenerateCompleteEvent {
requestId: string;
success: boolean;
applied: {
created: number;
deleted: number;
updated: number;
};
scheduleType: ScheduleType;
targetTableName: string;
}
/** 스케줄 생성 에러 이벤트 */
export interface V2ScheduleGenerateErrorEvent {
requestId: string;
error: string;
scheduleType?: ScheduleType;
}
// ============================================================================
// 이벤트 타입 맵핑 (타입 안전성을 위한)
// ============================================================================
@@ -268,6 +333,12 @@ export interface V2EventPayloadMap {
[V2_EVENTS.RELATED_BUTTON_REGISTER]: V2RelatedButtonRegisterEvent;
[V2_EVENTS.RELATED_BUTTON_UNREGISTER]: V2RelatedButtonUnregisterEvent;
[V2_EVENTS.RELATED_BUTTON_SELECT]: V2RelatedButtonSelectEvent;
[V2_EVENTS.SCHEDULE_GENERATE_REQUEST]: V2ScheduleGenerateRequestEvent;
[V2_EVENTS.SCHEDULE_GENERATE_PREVIEW]: V2ScheduleGeneratePreviewEvent;
[V2_EVENTS.SCHEDULE_GENERATE_APPLY]: V2ScheduleGenerateApplyEvent;
[V2_EVENTS.SCHEDULE_GENERATE_COMPLETE]: V2ScheduleGenerateCompleteEvent;
[V2_EVENTS.SCHEDULE_GENERATE_ERROR]: V2ScheduleGenerateErrorEvent;
}
// ============================================================================