5-1. UI 오류-XML 재수정
메뉴명
UI 오류-XML 재수정
목적
변환 과정에서 발생한 UI 관련 XML 오류를 Amazon Q Chat을 활용하여 자동으로 재수정합니다. 주로 MyBatis Mapper XML 파일에서 발생하는 UI 관련 SQL 구문 오류, 파라미터 바인딩 오류, 결과 매핑 오류 등을 처리합니다.
실행 흐름
initOMA.sh (메인 메뉴)
→ 5. UI 오류-XML 재수정 선택
→ execute_ui_error_xml_fix()
→ q chat --trust-all-tools "$APP_TOOLS_FOLDER/../postTransform/editUIErrors.md"
→ Amazon Q Chat 실행
→ UI 오류 분석
→ 자동 수정 제안
→ XML 파일 수정
→ 수정 결과 검증
상세 분석
1. execute_ui_error_xml_fix() 함수
# 위치: initOMA.sh (메인 메뉴 5번)
# 실행파일: $APP_TOOLS_FOLDER/../postTransform/editUIErrors.md
# 실행명령: q chat --trust-all-tools "editUIErrors.md"
2. 핵심 실행 스크립트
2.1 editUIErrors.md 프롬프트
# 위치: $APP_TOOLS_FOLDER/../postTransform/editUIErrors.md
# 주요 기능: Amazon Q Chat을 활용한 UI 관련 XML 오류 자동 수정
# 실행명령: q chat --trust-all-tools "editUIErrors.md"
# 처리 대상:
# - MyBatis Mapper XML 파일의 UI 관련 오류
# - SQL 구문 오류 (SELECT, INSERT, UPDATE, DELETE)
# - 파라미터 바인딩 오류 (#{}, ${} 구문)
# - 결과 매핑 오류 (resultMap, resultType)
# - 동적 SQL 오류 (<if>, <choose>, <foreach> 등)
3. 주요 환경변수 매핑
# 입력 관련 환경변수
APPLICATION_NAME # 프로젝트명
APP_TOOLS_FOLDER # 애플리케이션 도구 폴더 경로
APP_TRANSFORM_FOLDER # 변환 작업 폴더 경로
APP_LOGS_FOLDER # 로그 폴더 경로
TARGET_DBMS_TYPE # 대상 DBMS 타입 (PostgreSQL/MySQL)
# 출력 관련 환경변수
APP_TRANSFORM_FOLDER # 수정된 XML 파일 저장 폴더
APP_LOGS_FOLDER # 로그 및 결과 파일 저장
# 기타 설정 환경변수
OMA_BASE_DIR # OMA 기본 디렉토리
4. 작업 단계
4.1 UI 오류 분석
- XML 파일 스캔: $APP_LOGS_FOLDER/mapper//transform/.xml 경로에서 UI 관련 오류 파일 검색
- 오류 패턴 식별: 일반적인 UI 관련 XML 오류 패턴 분석
- SQL 구문 오류: 잘못된 SELECT, JOIN, WHERE 절
- 파라미터 바인딩 오류: #{parameter} vs ${parameter} 사용법
- 결과 매핑 오류: resultMap과 실제 컬럼 불일치
- 동적 SQL 오류: 조건문, 반복문 구문 오류
- Target DB별 특화 오류: PostgreSQL/MySQL 특화 오류 식별
4.2 Amazon Q Chat 실행
- 프롬프트 로딩: editUIErrors.md 파일 내용을 Amazon Q Chat에 전달
- 컨텍스트 설정: 현재 프로젝트 환경 및 Target DBMS 정보 제공
- 오류 수정 요청: 식별된 UI 오류에 대한 자동 수정 요청
- 수정 방안 제시: Amazon Q Chat이 제안하는 수정 방안 검토
4.3 XML 파일 수정
- 백업 생성: 원본 XML 파일 백업 생성
- 자동 수정 적용: Amazon Q Chat 제안사항을 바탕으로 XML 파일 수정
- 구문 검증: 수정된 XML 파일의 구문 유효성 검증
- Target DB 호환성 확인: PostgreSQL/MySQL 호환성 검증
4.4 수정 결과 검증
- XML 파싱 테스트: 수정된 XML 파일의 파싱 가능 여부 확인
- SQL 구문 검증: 수정된 SQL 구문의 문법적 정확성 확인
- 파라미터 매핑 검증: 파라미터 바인딩 정확성 확인
- 결과 매핑 검증: 결과 매핑 구조 정확성 확인
처리 대상 오류 유형
UI 관련 일반적 오류
- SQL 구문 오류
- Oracle 특화 함수 사용 (DECODE, NVL, SYSDATE 등)
- 잘못된 JOIN 구문
- 부적절한 WHERE 조건
- 파라미터 바인딩 오류
- #{} vs ${} 사용법 혼동
- 파라미터명 불일치
- 타입 변환 오류
- 결과 매핑 오류
- resultMap과 실제 컬럼 불일치
- 타입 매핑 오류
- 중첩 객체 매핑 오류
- 동적 SQL 오류
<if>
조건문 오류<choose>
,<when>
,<otherwise>
구문 오류<foreach>
반복문 오류
Target DB별 특화 오류
- PostgreSQL 특화
- 대소문자 구분 오류
- 스키마명 누락
- 시퀀스 사용법 오류
- MySQL 특화
- 백틱(`) 사용 오류
- 날짜 함수 사용법 오류
- AUTO_INCREMENT 관련 오류
결과 파일
수정된 XML 파일
# 출력 경로: $APP_LOGS_FOLDER/mapper/*/transform/
1. *.xml # 수정된 MyBatis Mapper XML 파일들
2. *.xml.backup # 원본 XML 파일 백업
로그 파일
# 출력 경로: $APP_LOGS_FOLDER/qlogs
1. $APP_LOGS_FOLDER/qlogs/ui_error_fix_[타임스탬프].log # UI 오류 수정 처리 로그
2. $APP_LOGS_FOLDER/qlogs/ui_error_fix_error.log # 오류 발생 시 에러 로그
# 출력 경로: $APP_LOGS_FOLDER/qlogs/qprompt
3. $APP_LOGS_FOLDER/qlogs/qprompt/qchat_command_history.log # Q Chat 명령어 실행 이력
수정 결과 리포트
# 출력 경로: $APP_TRANSFORM_FOLDER
1. $APP_TRANSFORM_FOLDER/ui_error_fix_report.html # HTML 형태의 수정 결과 리포트
2. $APP_TRANSFORM_FOLDER/ui_error_fix_summary.json # JSON 형태의 수정 요약 정보
환경 변수 의존성
필수 환경변수
- 프로젝트 설정:
APPLICATION_NAME
,APPLICATION_FOLDER
- 도구 경로:
APP_TOOLS_FOLDER
,APP_TRANSFORM_FOLDER
,APP_LOGS_FOLDER
- DBMS 설정:
TARGET_DBMS_TYPE
- 기본 경로:
OMA_BASE_DIR
선택적 환경변수
- 로깅:
LOG_LEVEL
,VERBOSE_MODE
- 백업:
BACKUP_ENABLED
(기본값: true)
사전 조건
- SQL 변환 작업 완료 (2-1 단계)
- POST 변환 작업 완료 (2-2 단계)
- 변환된 XML 파일들이 $APP_LOGS_FOLDER/mapper/*/transform/ 경로에 존재
- Amazon Q Chat 환경 설정 완료
- editUIErrors.md 프롬프트 파일 존재
다음 단계
이 단계의 결과물은 다음 단계들에서 사용됩니다:
- 3-1. XML List 생성: 수정된 XML 기반 Unit Test 목록 생성
- 3-2. SQL Unit Test: 수정된 XML의 SQL 구문 테스트
- 4-1. 변환 결과 병합: 최종 XML 파일 병합
주요 특징
- 메인 메뉴 직접 접근: 메인 메뉴 5번으로 직접 접근 가능
- AI 기반 수정: Amazon Q Chat을 통한 지능형 오류 수정
- Target DB별 최적화: PostgreSQL/MySQL 특화 오류 처리
- 자동 백업: 원본 파일 자동 백업으로 안전성 확보
- 상세 로깅: 수정 과정 및 결과에 대한 상세 로그 기록
- 검증 기능: 수정 후 XML 구문 및 SQL 유효성 자동 검증
- 리포트 생성: HTML/JSON 형태의 수정 결과 리포트 자동 생성
중요 주의사항
⚠️ Amazon Q Chat 컨텍스트 관리
- 컨텍스트 손실 모니터링: Amazon Q Chat 실행 중 기존 작업 컨텍스트를 잃어버리는 경우가 발생할 수 있음
- 비정상 동작 감지: 다음과 같은 상황이 발생하면 즉시 중단 필요
- 지시하지 않은 새로운 작업 방향으로 진행하려는 경우
- 배치 형태의 대량 변환을 시도하려는 경우
- 원래 목적과 다른 파일 처리를 시작하는 경우
- 즉시 중단 및 재시작: 위와 같은 상황 발견 시
CTRL+C
로 즉시 중단하고 처음부터 재실행
⚠️ 백업 및 복구
- 자동 백업: 모든 XML 파일은 수정 전 자동으로 백업됨
- 복구 방법: 문제 발생 시 .backup 파일을 이용하여 원본 복구 가능
- 백업 관리: 디스크 공간 고려하여 주기적인 백업 파일 정리 필요
⚠️ 대용량 파일 처리
- 처리 시간: XML 파일 개수가 많은 경우 처리 시간이 오래 걸릴 수 있음
- 메모리 사용량: 대용량 XML 파일 처리 시 메모리 사용량 모니터링 필요
- 진행 상황 추적: 처리 진행 상황을 실시간으로 모니터링 권장
⚠️ Target DB별 주의사항
- PostgreSQL: 대소문자 구분, 스키마명 필수 지정
- MySQL: 백틱 사용법, 예약어 처리 주의
- 공통: SQL 표준 준수 및 호환성 확인
⚠️ 검증 및 테스트
- 수정 후 검증: 모든 수정 사항은 반드시 검증 과정을 거쳐야 함
- 단위 테스트: 수정된 XML은 3-1 단계에서 단위 테스트 수행 권장
- 통합 테스트: 전체 애플리케이션 레벨에서의 통합 테스트 필요