레거시 전환 분석 증적 정리 #2

Merged
forge-bot merged 3 commits from forge/role-aa-001-attempt-1-run-f88341c79b7c into main 2026-07-14 05:07:04 +00:00
Showing only changes of commit 9a1ad656ff - Show all commits

View file

@ -0,0 +1,258 @@
{
"documentInfo": {
"title": "레거시 전환 분석 증적 목록",
"version": "1.0",
"createdDate": "2025-07-14",
"project": "runtime-role-smoke-202607140500"
},
"inputSources": [
{
"id": "IN-001",
"name": "데이터베이스 스키마",
"path": "/legacy/db/schema/",
"type": "DDL",
"validationCriteria": "무결성 제약조건",
"lastModified": "2025-06-30"
},
{
"id": "IN-002",
"name": "API 명세서",
"path": "/legacy/api/specs/",
"type": "OpenAPI/Swagger",
"validationCriteria": "버전 관리 여부",
"lastModified": "2025-07-01"
},
{
"id": "IN-003",
"name": "배치 잡 정의",
"path": "/legacy/batch/jobs/",
"type": "XML/JSON",
"validationCriteria": "스케줄 주기",
"lastModified": "2025-06-28"
},
{
"id": "IN-004",
"name": "설정 파일",
"path": "/legacy/config/",
"type": "Properties/YAML",
"validationCriteria": "암호화 여부",
"lastModified": "2025-07-05"
},
{
"id": "IN-005",
"name": "업무 흐름도",
"path": "/legacy/docs/workflows/",
"type": "BPMN/Visio",
"validationCriteria": "버전 관리 여부",
"lastModified": "2025-06-25"
}
],
"businessRules": {
"coreRules": [
{
"id": "BR-001",
"name": "결제 정산 로직",
"currentImplementation": "일 1회 배치",
"expectedAfterTransition": "실시간 처리",
"verificationMethod": "결과 비교"
},
{
"id": "BR-002",
"name": "회원 등급 산정",
"currentImplementation": "월 1회 갱신",
"expectedAfterTransition": "이벤트 트리거",
"verificationMethod": "등급 변경 이력"
},
{
"id": "BR-003",
"name": "재고 차감 정책",
"currentImplementation": "선점 방식",
"expectedAfterTransition": "낙관적 잠금",
"verificationMethod": "동시성 테스트"
},
{
"id": "BR-004",
"name": "알림 발송 규칙",
"currentImplementation": "즉시 발송",
"expectedAfterTransition": "큐 기반 처리",
"verificationMethod": "발송 순서"
},
{
"id": "BR-005",
"name": "데이터 보존 정책",
"currentImplementation": "무제한",
"expectedAfterTransition": "7년 보존",
"verificationMethod": "삭제 검증"
}
],
"dataTransformationRules": [
{
"id": "TR-001",
"sourceField": "OLD_STATUS_CD",
"targetField": "new_status",
"transformationLogic": "매핑 테이블 참조",
"exceptionHandling": "미매핑 시 DEFAULT"
},
{
"id": "TR-002",
"sourceField": "REG_DT (YYYYMMDD)",
"targetField": "created_at (TIMESTAMP)",
"transformationLogic": "포맷 변환",
"exceptionHandling": "NULL 허용"
},
{
"id": "TR-003",
"sourceField": "AMT (원 단위)",
"targetField": "amount (원 단위)",
"transformationLogic": "소수점 처리",
"exceptionHandling": "반올림"
}
]
},
"riskAreas": {
"highRisk": [
{
"id": "RK-001",
"description": "데이터 손실",
"likelihood": "높음",
"impact": "심각",
"mitigation": "이중 백업 + 검증 쿼리"
},
{
"id": "RK-002",
"description": "서비스 중단",
"likelihood": "중간",
"impact": "심각",
"mitigation": "블루-그린 배포"
},
{
"id": "RK-003",
"description": "성능 저하",
"likelihood": "중간",
"impact": "보통",
"mitigation": "부하 테스트"
}
],
"mediumRisk": [
{
"id": "RK-004",
"description": "호환성 불일치",
"likelihood": "중간",
"impact": "보통",
"mitigation": "API 게이트웨이"
},
{
"id": "RK-005",
"description": "설정 누락",
"likelihood": "낮음",
"impact": "보통",
"mitigation": "설정 검증 체크리스트"
}
]
},
"evidenceLocations": {
"preTransition": [
{
"id": "EV-001",
"type": "원본 소스",
"path": "/archive/legacy/v1.0/",
"retentionPeriod": "전환 완료 후 5년",
"accessLevel": "감사팀"
},
{
"id": "EV-002",
"type": "데이터 스냅샷",
"path": "/archive/snapshot/20250701/",
"retentionPeriod": "5년",
"accessLevel": "DBA"
},
{
"id": "EV-003",
"type": "설정 백업",
"path": "/archive/config/backup/",
"retentionPeriod": "영구",
"accessLevel": "보안팀"
},
{
"id": "EV-004",
"type": "로그 아카이브",
"path": "/archive/logs/legacy/",
"retentionPeriod": "3년",
"accessLevel": "운영팀"
}
],
"postTransition": [
{
"id": "EV-101",
"type": "전환 보고서",
"path": "/transition/report/",
"generatedAt": "전환 완료 시",
"verificationCycle": "일회성"
},
{
"id": "EV-102",
"type": "비교 검증 결과",
"path": "/transition/validation/",
"generatedAt": "전환 후 24시간",
"verificationCycle": "전환 후 7일"
},
{
"id": "EV-103",
"type": "모니터링 대시보드",
"path": "/monitoring/dashboard/",
"generatedAt": "실시간",
"verificationCycle": "상시"
},
{
"id": "EV-104",
"type": "감사 로그",
"path": "/audit/logs/",
"generatedAt": "실시간",
"verificationCycle": "상시"
}
]
},
"validationChecklist": {
"dataIntegrity": [
"원본 데이터 건수 vs 전환 데이터 건수 일치",
"필수 필드 NULL 체크",
"외래 키 참조 무결성",
"인덱스 재생성 여부",
"통계 정보 업데이트 여부"
],
"functional": [
"핵심 API 응답 동일성",
"배치 잡 실행 결과 동일성",
"예외 처리 동작 동일성",
"로그 출력 형식 동일성"
],
"performance": [
"응답 시간 기준 충족 (P95 < 500ms)",
"동시 접속자 수 기준 충족 (1000명)",
"배치 처리 시간 기준 충족 (기존 대비 ±10%)"
]
},
"approvalProcess": [
{
"step": 1,
"role": "분석가",
"approver": "TBD",
"deadline": "전환 3일 전",
"signaturePath": "/approval/analyst/"
},
{
"step": 2,
"role": "아키텍트",
"approver": "TBD",
"deadline": "전환 2일 전",
"signaturePath": "/approval/architect/"
},
{
"step": 3,
"role": "프로젝트 매니저",
"approver": "TBD",
"deadline": "전환 1일 전",
"signaturePath": "/approval/pm/"
}
]
}