docs: 자동 스케줄 생성 기능 추가 및 관련 문서 업데이트
- 생산계획 목록에 자동 스케줄 생성 기능에 대한 상세 가이드를 추가하였습니다. - 스케줄 생성의 데이터 흐름과 설정을 명확히 설명하였으며, JSON 형식의 설정 예시를 포함하였습니다. - 버튼 설정 및 연결 필터 설정에 대한 정보를 추가하여 사용자가 기능을 쉽게 이해할 수 있도록 하였습니다. - 구현 상태를 체크리스트 형식으로 정리하여 각 항목의 진행 상황을 명시하였습니다.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user