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 관련 일반적 오류

  1. SQL 구문 오류
    • Oracle 특화 함수 사용 (DECODE, NVL, SYSDATE 등)
    • 잘못된 JOIN 구문
    • 부적절한 WHERE 조건
  2. 파라미터 바인딩 오류
    • #{} vs ${} 사용법 혼동
    • 파라미터명 불일치
    • 타입 변환 오류
  3. 결과 매핑 오류
    • resultMap과 실제 컬럼 불일치
    • 타입 매핑 오류
    • 중첩 객체 매핑 오류
  4. 동적 SQL 오류
    • <if> 조건문 오류
    • <choose>, <when>, <otherwise> 구문 오류
    • <foreach> 반복문 오류

Target DB별 특화 오류

  1. PostgreSQL 특화
    • 대소문자 구분 오류
    • 스키마명 누락
    • 시퀀스 사용법 오류
  2. 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 단계에서 단위 테스트 수행 권장
  • 통합 테스트: 전체 애플리케이션 레벨에서의 통합 테스트 필요

Back to top

Copyright © 2024 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.