Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

일정 배치 제안 함수

Suggestion Function은 선택한 일정 블록을 어디에 배치할지 적합도를 보여 주는 TypeScript 함수입니다. 결과의 시간 영역을 색으로 표시하여 선호하는 위치나 피해야 할 위치를 구분할 수 있습니다.

결과는 앱을 처음 로드할 때 계산한 정적 값입니다. 그 이후의 액션 변경을 반영하지 않으므로 계속 바뀌는 일정의 실시간 검증과는 다릅니다.

표시와 강제 설정

가상의 Susan 배정에서는 선호 장소인 Garden City를 녹색, 선호하지 않는 Sandbar를 회색으로 보여 줄 수 있습니다.

항공편 시간이 고정되어 있고 조종사만 바꿀 수 있는 업무에서는 세로로 같은 시간 범위를 강조할 수 있습니다.

Custom Suggestions에 함수를 연결하고 Enforce Suggestions를 켜면 가까운 강조 영역으로 배치를 맞춥니다. Shift를 누르면 재정의할 수 있으므로 이 표시 설정을 변경 불가능한 업무 제약이나 접근 통제로 사용해서는 안 됩니다.

입력과 반환 계약

입력은 일정 객체의 기본 키 목록과 Gantt 전체 시작 및 종료 Timestamp입니다. 반환은 일정 기본 키별 맵이며, 그 안에서 자원 행의 기본 키를 각 시간 슬롯 목록에 매핑합니다.

아래는 TSv1의 입출력 자료형 정의입니다. 조직의 실제 적합도 로직이 이 구조로 결과를 반환하도록 작성합니다.

import { Float, FunctionsMap, Long, Timestamp } from "@foundry/functions-api";

export interface IDomain {
    start: Long;
    end: Long;
}

export interface ISuggestionSlot {
    domain: IDomain;
    rating: Float;
}

export type IValidSlots = ISuggestionSlot[];
export type ISlotMappings = FunctionsMap<string, IValidSlots>;
export type ISuggestionResult = FunctionsMap<string, ISlotMappings>;

export type ISuggestion = (
    scheduleObjectPrimaryKeys: string[],
    domainStart: Timestamp,
    domainEnd: Timestamp
) => ISuggestionResult;

export const ALL_ROWS_ID = "__ALL_ROWS";

domain.start와 domain.end는 슬롯의 Long형 시간 경계입니다. rating은 -1부터 1까지이며 1에 가까울수록 진한 녹색, -1에 가까울수록 빨강으로 표시합니다.

시작과 종료를 고정하고 자원만 바꾸는 경우에는 행별 같은 슬롯을 반복하는 대신 ALL_ROWS_ID인 __ALL_ROWS를 사용할 수 있습니다. 입력의 일정 기본 키와 반환 맵의 키를 정확히 대응시켜야 합니다.

편집 후의 상태를 확인할 때는 검증 규칙을, 현재 시나리오를 고려해 새 후보를 찾을 때는 검색 함수를 사용합니다.