L4·L5 워크플로우 Migration 및 배포 검증 시나리오
대상 변경: l4_workflow_edges.description 컬럼 추가 및 L4·L5 워크플로우 관리 기능
적용 대상: Process Center 운영·스테이징·프로덕션 배포 환경
1. 목적과 완료 기준
이 문서는 배포 환경에서 pnpm db:push를 실행한 뒤, L4 통합 워크플로우 연결의 설명 저장 기능과 L5 워크플로우의 시작점·엔티티·관계·종료 후보 기능이 데이터베이스와 관리자 UI에 정상 반영되었는지 확인하기 위한 운영 시나리오입니다.
완료 기준: 아래의 스키마 확인, 저장·재조회, 입력 제한, PDF 출력 검증을 모두 통과하고, 기존 L5 워크플로우 조회와 연결 저장에 오류가 없어야 합니다.
| 구분 | 핵심 확인 사항 |
|---|---|
| 스키마 | l4_workflow_edges.description 컬럼이 존재하고 varchar(2000), NULL 허용 상태이다. |
| L4 | 하위 L5만 연결할 수 있으며 조건과 설명이 저장·재조회된다. |
| L5 | 외부 시작점, 내부 L6, 다른 L5, 다이아몬드, 종료 후보가 올바르게 구분된다. |
| 종료 처리 | 후행이 없는 L6는 후보로만 표시되고 자동 END 연결이 발생하지 않는다. |
| 출력 | L4와 L5 화면의 PDF 버튼이 인쇄 대화상자를 열고 워크플로우를 출력한다. |
2. 배포 전 준비
배포 전에 대상 데이터베이스의 백업 또는 스냅샷을 확보하고, 배포용 환경 변수에서 올바른 데이터베이스를 가리키는지 확인합니다. 운영 환경에는 애플리케이션과 동일한 release revision의 migration 파일이 배포되어야 합니다.
| 항목 | 확인 방법 | 기대 결과 |
|---|---|---|
| 애플리케이션 revision | 배포 태그 또는 Git SHA 확인 | PR #10 병합 이후 revision |
| migration 파일 | drizzle/0017_l4_workflow_edge_description.sql 확인 | 파일이 release artifact에 포함됨 |
| DB 연결 | 배포 환경의 DATABASE_URL 또는 연결 설정 확인 | 대상 환경 DB를 정확히 가리킴 |
| 사전 백업 | DB snapshot 또는 dump 확인 | 롤백 가능한 복구 지점 확보 |
| 관리자 계정 | Process Center 관리자 계정 확인 | L4·L5 편집 권한 보유 |
3. Migration 실행 및 스키마 확인
애플리케이션 release 디렉터리에서 migration을 실행합니다.
pnpm db:push명령이 성공하면 MySQL에 접속해 아래 SQL을 실행합니다.
SELECT
column_name,
column_type,
is_nullable,
column_default
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'l4_workflow_edges'
AND column_name = 'description';| 확인 항목 | 기대 결과 | 실패 시 조치 |
|---|---|---|
| 조회 행 수 | 정확히 1행 | 연결한 DB와 migration 대상 DB가 같은지 확인 |
column_name | description | release artifact와 schema version 확인 |
column_type | varchar(2000) | migration SQL과 실제 schema 차이 확인 |
is_nullable | YES | 기존 연결 데이터 호환성 확인 |
| 기존 L4 연결 | 기존 row가 그대로 조회됨 | 즉시 배포 중지 후 backup·schema diff 검토 |
추가로 다음 질의로 테이블 정의를 확인할 수 있습니다.
SHOW CREATE TABLE l4_workflow_edges;4. UI 기반 기능 검증 데이터
스테이징에서는 아래와 같은 검증용 구조를 사용합니다. 실제 운영 데이터에 직접 시험 연결을 만들지 말고, 별도 테스트 L4와 L5를 만들거나 사전에 합의된 샘플을 사용합니다.
| 노드 | 레벨 | 용도 |
|---|---|---|
검증 L4 | L4 | 통합 워크플로우 조회·연결 검증 |
접수 L5 | L5 | 외부 시작점·내부 START 검증 |
검토 L5 | L5 | 다중 외부 유입과 N:1 합류 검증 |
처리 L5 | L5 | L4 L5→L5 연결 및 외부 유출 검증 |
접수 L6-A, 접수 L6-B | L6 | L5 내부 관계·종료 후보 검증 |
검토 L6-A | L6 | 다중 유입의 후행 대상 검증 |
5. L4 통합 워크플로우 검증
5.1 L5 전용 표시와 선택 제한
- 관리자 모드에서
검증 L4를 엽니다. - L5 통합 워크플로우 섹션을 확인합니다.
- 캔버스와 선행·후행 선택 목록을 확인합니다.
| 검증 | 기대 결과 |
|---|---|
| 캔버스 노드 | 하위 L5만 표시된다. L6, 다이아몬드, START, END는 표시되지 않는다. |
| 연결 선택 목록 | 하위 L5만 선택할 수 있다. |
| L5 요약 | 각 L5에 L6 수, 분기 수, 관계 수, END 설정 상태가 표시된다. |
| 내부 편집 | L4 화면에서 L5 내부 L6·다이아몬드를 수정할 수 없다. |
5.2 조건과 설명 저장·재조회
- 선행 L5로
접수 L5, 후행 L5로검토 L5를 선택합니다. - 조건에
접수 검토 완료를 입력합니다. - 연결 설명에
접수 결과와 증빙이 검토 단계로 전달됨을 입력합니다. - 연결 저장을 누른 뒤 화면을 새로고침합니다.
| 검증 | 기대 결과 |
|---|---|
| 저장 | 성공 toast가 표시되고 연결선이 생성된다. |
| 캔버스 | 연결선에 조건 접수 검토 완료가 표시된다. |
| 목록 | 조건과 설명이 모두 표시된다. |
| 새로고침 | 동일한 조건·설명이 유지된다. |
| DB 확인 | 해당 row의 description에 입력한 문구가 저장된다. |
DB 확인 예시는 다음과 같습니다.
SELECT l4Id, sourceNodeId, targetNodeId, conditionLabel, description
FROM l4_workflow_edges
WHERE l4Id = :verification_l4_id
ORDER BY id DESC;5.3 입력 제한과 무결성
| 시도 | 기대 결과 |
|---|---|
| 동일 L5를 선행·후행으로 선택 | 저장이 거부된다. |
| L4 하위가 아닌 L5를 API로 연결 | BAD_REQUEST가 반환된다. |
| L6를 L4 연결 대상으로 요청 | BAD_REQUEST가 반환된다. |
| 기존 경로에 순환을 만드는 연결 | CONFLICT가 반환된다. |
| 기존 연결 삭제 | 목록·캔버스·DB row가 함께 갱신된다. |
6. L5 워크플로우 검증
6.1 시작점과 엔티티 구성
검토 L5에서 하위 L6 동기화를 실행합니다.접수 L5의 마지막 L6 또는 다이아몬드에서검토 L5의검토 L6-A로 외부 유입 연결을 저장합니다.처리 L5에서도 같은검토 L6-A로 외부 유입 연결을 추가합니다.검토 L5를 새로고침해 워크플로우 구성 구조 패널을 확인합니다.
| 검증 | 기대 결과 |
|---|---|
| 외부 시작점 | 접수 L5, 처리 L5가 각각 독립된 외부 시작 엔티티로 표시된다. |
| N:1 합류 | 두 외부 시작점이 동일한 검토 L6-A로 연결될 수 있다. |
| 내부 START | 외부 유입이 있는 L5에는 START 자동 생성·자동 연결이 발생하지 않는다. |
| 외부 유입 없음 | 외부 유입이 없는 L5에는 필요 시 내부 START를 추가하라는 안내가 표시된다. |
| 엔티티 수 | 현재 L5 하위 L6, 다른 L5, 다이아몬드 수가 분리 표시된다. |
6.2 L5 내부 관계와 다이아몬드
접수 L5의 L6-A에서 L6-B로 일반 연결을 생성합니다.- 연결 라벨에
필수 검토, 조건 설명에접수 정보와 필수 증빙이 모두 유효한 경우를 입력합니다. - 다이아몬드를 추가하고 Y, N, 사용자 정의 결과를 각각 L6 또는 다른 L5로 연결합니다.
- 각 분기 연결에 조건·설명을 입력합니다.
| 검증 | 기대 결과 |
|---|---|
| 일반 연결 | 1:1 연결, 라벨, 조건 설명이 저장·표시된다. |
| 다이아몬드 | 여러 출력 관계를 생성할 수 있다. |
| 다중 관계 | 여러 외부 시작점 또는 다이아몬드 출력이 하나의 L6로 합류할 수 있다. |
| 관계 목록 | 모든 연결에 출발·도착·라벨·조건 설명이 표시된다. |
| 순환 연결 | 서버 검증으로 차단된다. |
6.3 종료 후보와 명시적 END
- 후행 연결이 없는 L6를 하나 준비합니다.
- 해당 L5의 워크플로우 구성 구조 패널을 확인합니다.
- 종료 후보에 표시된 L6를 확인합니다.
- END가 없다면 END를 추가합니다.
- 종료 후보에서 END 연결 준비를 누르고, 관계 설정에서 L6 → END 연결을 명시적으로 저장합니다.
- 화면을 새로고침합니다.
| 검증 | 기대 결과 |
|---|---|
| 후보 탐지 | 후행 연결이 없는 L6만 종료 후보로 표시된다. |
| 자동 처리 방지 | 후보 표시만으로 END 노드·연결이 자동 생성되지 않는다. |
| 명시적 확정 | 관리자가 관계 저장을 수행한 뒤에만 L6 → END 연결이 생성된다. |
| 후보 갱신 | END에 연결된 L6는 종료 후보 목록에서 제거된다. |
| 제한 | START, END, 다이아몬드, 이미 후행 연결이 있는 L6를 END의 출발점으로 연결하려 하면 저장이 거부된다. |
7. PDF 출력 검증
L4와 L5 화면 모두에서 PDF 버튼을 누릅니다. 새 창의 인쇄 대화상자에서 대상 프린터를 PDF로 저장으로 선택하고 파일을 저장합니다.
| 출력 종류 | 필수 확인 내용 |
|---|---|
| L5 PDF | 외부 시작점, L6, 다른 L5, 다이아몬드, 연결 방향, 조건·설명, 종료 후보·END 상태가 읽을 수 있게 출력된다. |
| L4 PDF | 하위 L5 노드, L5 간 연결 방향, 조건·설명, 각 L5의 요약 지표가 출력된다. |
| 레이아웃 | 가로 A4에서 노드·연결선·텍스트가 잘리지 않는다. |
| 데이터 | UI에서 보이는 조건·설명과 PDF의 값이 일치한다. |
8. 장애 대응 및 롤백 판단
migration 실행 실패, 컬럼 누락, 기존 연결 조회 오류, 저장된 설명 누락이 하나라도 발생하면 신규 L4 연결 생성은 중지합니다. 기존 row와 application log를 보존하고, migration 실행 로그와 SHOW CREATE TABLE l4_workflow_edges 결과를 첨부해 원인을 분석합니다.
description은 NULL 허용 신규 컬럼이므로, 정상적인 rollback에서는 애플리케이션을 이전 revision으로 되돌린 뒤 신규 설명 데이터의 보존 여부를 검토합니다. 컬럼 삭제는 이미 작성된 설명을 잃을 수 있으므로, 별도 승인 없이 수행하지 않습니다.
9. 운영 완료 기록
| 항목 | 기록 값 |
|---|---|
| 환경 | 스테이징 / 프로덕션 |
| 실행 일시 | |
| 실행 담당자 | |
| 배포 revision | |
pnpm db:push 결과 | 성공 / 실패 |
| 스키마 SQL 결과 | 성공 / 실패 |
| L4 저장·재조회 | 성공 / 실패 |
| L5 시작점·종료 후보 | 성공 / 실패 |
| PDF 출력 | 성공 / 실패 |
| 이슈 및 조치 |