Skip to content

TMS / EDI / EDI 214

EDI 214

1. 기본 정보

항목 내용
작성자 이샘미
최초 작성일 2025-12-31
최종 변경일 2025-12-31

2. 요약 및 산출물

요약

Schedule 및 Actual Date 변경 정보와 POD 업로드 여부를 EDI 214로 생성하여 전송합니다.

주요 산출물

  • 변경 여부 확인 및 EDI 214 전송 함수들
    (1) EDI 214 전송 여부를 판단하는 함수 
    (2) 발생된 Work Order 이벤트에 따라 EDI 214 유형을 결정하고 전송하는 함수
    (3) EDI 214 메시지 구조를 생성하고 DynamoDB에 저장하는 함수
    (4) POD 파일 업로드 발생 시 EDI 214를 SFTP로 전송하고 관련 정보를 DB에 저장하는 함수
    

3. 타당성

본 기능은 EDI 204 승인 이후 생성된 Work Order에서 발생하는 주요 상태 변경 사항을 EDI 214를 통해 고객에게 전달하기 위해 설계되었습니다.

EDI 204로 생성된 Work Order에서 Schedule, Actual Date 변경, POD 업로드 등 주요 이벤트가 발생할 경우, 고객사별 설정에 따라 적절한 EDI 214 메시지를 생성하여 SFTP를 통해 전송함으로써, 고객이 운송 진행 상황을 체계적으로 확인할 수 있도록 지원합니다.


4. 기술 설명

Workflow

flowchart TB
    A[Work Order 업데이트 발생] --> B{EDI 204 기반 WO인가?}

    B -->|No| X[종료]
    B -->|Yes| C[유효한 EDI 204 조회]

    C --> D{이전에 DELIVERY ACTUAL과<br/>관련된 214 전송됨?}
    D -->|Yes| X
    D -->|No| E[날짜/시간 변경 여부 비교]

    E -->|변경 없음| X
    E -->|변경됨| F[Update Type 확인]

    %% Schedule
    F -->|Schedule| G[Schedule 정보 변경]
    G --> H{Location / Sender<br/>조건 충족?}
    H -->|Yes| I[EDI 214 데이터 생성]
    H -->|No| X

    %% Actual In
    F -->|Actual In| J[Actual In 정보 변경]
    J --> K{Location / Sender<br/>조건 충족?}
    K -->|Yes| I
    K -->|No| X

    %% Actual Out
    F -->|Actual Out| L[Actual Out 정보 변경]
    L --> M{Location / Sender<br/>조건 충족?}
    M -->|Yes| I
    M -->|No| X

    %% Create & Send
    I --> N[DynamoDB에 EDI 214 저장]
    N --> O[SFTP로 EDI 214 전송]

    %% POD Flow
    P[POD 업로드 발생] --> Q[유효한 EDI 204 조회]
    Q -->|존재| R[POD 파일명 생성]
    R --> S[SFTP로 POD 파일 전송]
    S --> T[DynamoDB에 EDI 214 저장]
    Q -->|없음| X

    X[종료]

DynamoDB 설계

이름 설명 비고
wo_no Work Order를 식별하는 고유 번호 Partition Key
ts 데이터 생성 기준 Unix timestamp Local Sort Key, CategoryIndex의 Sort Key
created_by 데이터 생성 주체
created_date 데이터 생성 일시
file_name 전송된 EDI 파일명
info 생성된 EDI 정보
status EdiUpdateStatusEnum은로 표현된 EDI 210 종류
category 고정 상수 CategoryIndex의 Partition Key
  • EDI 214을 전송하기 위해서는 transactionNumber가 필요하며, 이를 생성하기 위해 CategoryIndex가 설정되었습니다.

How to generate the transaction number

EDI 210, 214, 322를 고객에게 전달하기 위해 transactionNumber가 필요하며, 생성 규칙은 모두 동일합니다.
규칙은 다음과 같습니다:

  1. 날짜 접두사 생성
    Division을 기준으로 YYMMDD 형식의 날짜 접두사를 생성합니다.

  2. 시퀀스 번호 생성
    해당 날짜에 테이블에 존재하는 트랜잭션 수에 1을 더하고, 3자리 0 패딩을 적용합니다.

  3. 최종 결합
    날짜 접두사와 시퀀스 번호를 결합하여 최종 transactionNumber를 생성합니다.

EDI 214 전송 여부 판단 함수

def check_date_time_change(
        wo_instance: models.Wo,
        history_loc: models.Location,
        update_loc: models.Location,
        update_date_type: str,
        request: Union[Request, None]
) -> None:
    # 1) Work Order가 EDI 204 기반인지 확인
    # 2) 이미 DELIVERY_ACTUAL 상태의 EDI 214가 전송되었는지 검사
    # 3) 변경 전·후 날짜 및 시간을 비교
    # 4) 변경이 감지되면, 변경 유형에 따라 update_schedule_info_214 호출

EDI 214 유형 결정 및 전송 함수

def update_schedule_info_214(
        wo_instance: models.Wo,
        location_instance: models.Location,
        input_date: str,
        input_time: str,
        update_date_type: str,
        updated_by: str,
        data_204: dict
) -> None:
    # 1) Location 타입(P/O, DILV)과 ordering 기준 판단
    # 2) Sender 별 EDI 214 전송 허용 여부 확인
    # 3) 이벤트 유형에 맞는 EdiUpdateStatusEnum 선택
    # 4) update_edi_214_data를 호출하여 EDI 214 데이터 및 파일명 생성
    # 5) 구성된 EDI 214를 사전에 합의된 SFTP 서버로 전송

메시지 구조 생성 및 저장 함수

def update_edi_214_data(
        wo_instance: models.Wo,
        data_204: dict,
        updated_by: str,
        input_date: str,
        input_time: str,
        status: str,
        appointment_status: str,
        stop_sequence: str,
        action: str
) -> Tuple[dict, str]:
    # 1) Division 기준으로 transactionNumber 생성
    # 2) EDI 214 데이터 및 파일명 구성
    # 3) DynamoDB에 EDI 214 저장

POD 파일 업로드 시 EDI 214 전송 및 저장 함수

def update_pod_info_214(
        request: Request,
        file_url: str,
        ref_no: str,
        wo_no: str
):
    # 1) EDI 204 기반 Work Order인지 확인
    # 2) Division Timezone 기준 파일명 생성
    # 3) POD 파일을 사전에 합의된 SFTP 서버로 전송
    # 4) DynamoDB에 POD 관련 EDI 214 기록 저장

5. 위험성 평가

-


🧩 추가 정보

-