소스 인벤토리 구조 분석 #1
7 changed files with 350 additions and 0 deletions
3
.forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b.md
Normal file
3
.forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b
|
||||||
|
|
||||||
|
Forge 이슈 작업 브랜치 `forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b`.
|
||||||
70
source-inventory/README.md
Normal file
70
source-inventory/README.md
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Source Inventory
|
||||||
|
|
||||||
|
## 프로젝트 개요
|
||||||
|
프로젝트명: runtime-smoke-20260710143823
|
||||||
|
생성일: 2025-07-10
|
||||||
|
|
||||||
|
## 소스 인벤토리 구조
|
||||||
|
|
||||||
|
### 1. 소스 코드 (Source Code)
|
||||||
|
| 구분 | 경로 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| 메인 소스 | src/main/java | Java 메인 애플리케이션 소스 |
|
||||||
|
| 테스트 소스 | src/test/java | 단위 테스트 및 통합 테스트 |
|
||||||
|
| 리소스 | src/main/resources | 설정 파일, 템플릿 |
|
||||||
|
|
||||||
|
### 2. 데이터베이스 (Database)
|
||||||
|
| 구분 | 경로 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| 마이그레이션 | db/migration | Flyway/Liquibase 마이그레이션 스크립트 |
|
||||||
|
| 스키마 | db/schema | 데이터베이스 스키마 정의 |
|
||||||
|
| 시드 데이터 | db/seed | 초기 데이터 |
|
||||||
|
|
||||||
|
### 3. API 명세 (API Specifications)
|
||||||
|
| 구분 | 경로 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| OpenAPI | api/openapi | OpenAPI/Swagger 명세 |
|
||||||
|
| GraphQL | api/graphql | GraphQL 스키마 |
|
||||||
|
| REST | api/rest | REST API 문서 |
|
||||||
|
|
||||||
|
### 4. 빌드 및 설정
|
||||||
|
| 구분 | 경로 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| Maven | pom.xml | Maven 빌드 설정 |
|
||||||
|
| Gradle | build.gradle | Gradle 빌드 설정 |
|
||||||
|
| Docker | docker/ | Docker 설정 |
|
||||||
|
|
||||||
|
### 5. 문서 (Documentation)
|
||||||
|
| 구분 | 경로 | 설명 |
|
||||||
|
|------|------|------|
|
||||||
|
| 아키텍처 | docs/architecture | 아키텍처 문서 |
|
||||||
|
| API | docs/api | API 사용 가이드 |
|
||||||
|
| 운영 | docs/operations | 운영 가이드 |
|
||||||
|
|
||||||
|
## 의존성 인벤토리
|
||||||
|
|
||||||
|
### 핵심 의존성
|
||||||
|
- Spring Boot: 3.2.x
|
||||||
|
- Java: 17+
|
||||||
|
- Database: PostgreSQL 15+
|
||||||
|
|
||||||
|
### 빌드 도구
|
||||||
|
- Maven: 3.9.x
|
||||||
|
- Node.js: 20.x (프론트엔드)
|
||||||
|
|
||||||
|
## 자산 목록
|
||||||
|
|
||||||
|
### 코드 자산
|
||||||
|
- [ ] 메인 애플리케이션 소스
|
||||||
|
- [ ] 테스트 소스
|
||||||
|
- [ ] 설정 파일
|
||||||
|
|
||||||
|
### 데이터 자산
|
||||||
|
- [ ] 마이그레이션 스크립트
|
||||||
|
- [ ] 스키마 정의
|
||||||
|
- [ ] 시드 데이터
|
||||||
|
|
||||||
|
### 문서 자산
|
||||||
|
- [ ] API 명세
|
||||||
|
- [ ] 아키텍처 문서
|
||||||
|
- [ ] 운영 가이드
|
||||||
35
source-inventory/api-inventory.json
Normal file
35
source-inventory/api-inventory.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"inventoryId": "api-001",
|
||||||
|
"category": "api-specifications",
|
||||||
|
"description": "API 명세 인벤토리",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "api-openapi",
|
||||||
|
"path": "api/openapi",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "OpenAPI/Swagger 명세",
|
||||||
|
"format": "yaml",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api-graphql",
|
||||||
|
"path": "api/graphql",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "GraphQL 스키마",
|
||||||
|
"format": "graphql",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api-rest",
|
||||||
|
"path": "api/rest",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "REST API 문서",
|
||||||
|
"format": "markdown",
|
||||||
|
"status": "pending"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"created": "2025-07-10T14:38:23Z",
|
||||||
|
"project": "runtime-smoke-20260710143823"
|
||||||
|
}
|
||||||
|
}
|
||||||
118
source-inventory/asset-inventory.json
Normal file
118
source-inventory/asset-inventory.json
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
{
|
||||||
|
"inventoryId": "asset-001",
|
||||||
|
"category": "assets",
|
||||||
|
"description": "전체 자산 인벤토리",
|
||||||
|
"summary": {
|
||||||
|
"totalItems": 12,
|
||||||
|
"byCategory": {
|
||||||
|
"source-code": 3,
|
||||||
|
"database": 3,
|
||||||
|
"api-specifications": 3,
|
||||||
|
"build-configuration": 2,
|
||||||
|
"documentation": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "src-main",
|
||||||
|
"category": "source-code",
|
||||||
|
"path": "src/main/java",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "메인 Java 소스",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src-test",
|
||||||
|
"category": "source-code",
|
||||||
|
"path": "src/test/java",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "테스트 Java 소스",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src-resources",
|
||||||
|
"category": "source-code",
|
||||||
|
"path": "src/main/resources",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "애플리케이션 리소스",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db-migration",
|
||||||
|
"category": "database",
|
||||||
|
"path": "db/migration",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "DB 마이그레이션",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db-schema",
|
||||||
|
"category": "database",
|
||||||
|
"path": "db/schema",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "DB 스키마",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db-seed",
|
||||||
|
"category": "database",
|
||||||
|
"path": "db/seed",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "시드 데이터",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api-openapi",
|
||||||
|
"category": "api-specifications",
|
||||||
|
"path": "api/openapi",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "OpenAPI 명세",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api-graphql",
|
||||||
|
"category": "api-specifications",
|
||||||
|
"path": "api/graphql",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "GraphQL 스키마",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api-rest",
|
||||||
|
"category": "api-specifications",
|
||||||
|
"path": "api/rest",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "REST API 문서",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "build-maven",
|
||||||
|
"category": "build-configuration",
|
||||||
|
"path": "pom.xml",
|
||||||
|
"type": "file",
|
||||||
|
"description": "Maven 빌드 설정",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "build-docker",
|
||||||
|
"category": "build-configuration",
|
||||||
|
"path": "docker/",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "Docker 설정",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "docs-architecture",
|
||||||
|
"category": "documentation",
|
||||||
|
"path": "docs/architecture/",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "아키텍처 문서",
|
||||||
|
"status": "pending"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"created": "2025-07-10T14:38:23Z",
|
||||||
|
"project": "runtime-smoke-20260710143823",
|
||||||
|
"version": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
33
source-inventory/database-inventory.json
Normal file
33
source-inventory/database-inventory.json
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"inventoryId": "database-001",
|
||||||
|
"category": "database",
|
||||||
|
"description": "데이터베이스 인벤토리",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "db-migration",
|
||||||
|
"path": "db/migration",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "데이터베이스 마이그레이션 스크립트",
|
||||||
|
"tool": "Flyway",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db-schema",
|
||||||
|
"path": "db/schema",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "데이터베이스 스키마 정의",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db-seed",
|
||||||
|
"path": "db/seed",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "초기 데이터 시드",
|
||||||
|
"status": "pending"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"created": "2025-07-10T14:38:23Z",
|
||||||
|
"project": "runtime-smoke-20260710143823"
|
||||||
|
}
|
||||||
|
}
|
||||||
34
source-inventory/source-code-inventory.json
Normal file
34
source-inventory/source-code-inventory.json
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"inventoryId": "source-code-001",
|
||||||
|
"category": "source-code",
|
||||||
|
"description": "소스 코드 인벤토리",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "src-main",
|
||||||
|
"path": "src/main/java",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "메인 Java 소스 디렉토리",
|
||||||
|
"language": "java",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src-test",
|
||||||
|
"path": "src/test/java",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "테스트 Java 소스 디렉토리",
|
||||||
|
"language": "java",
|
||||||
|
"status": "pending"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src-resources",
|
||||||
|
"path": "src/main/resources",
|
||||||
|
"type": "directory",
|
||||||
|
"description": "애플리케이션 리소스",
|
||||||
|
"status": "pending"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"created": "2025-07-10T14:38:23Z",
|
||||||
|
"project": "runtime-smoke-20260710143823"
|
||||||
|
}
|
||||||
|
}
|
||||||
57
source-inventory/test_reference.md
Normal file
57
source-inventory/test_reference.md
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
# 테스트 참조 문서 (Test Reference)
|
||||||
|
|
||||||
|
## 테스트 전략
|
||||||
|
|
||||||
|
### 단위 테스트 (Unit Tests)
|
||||||
|
- **목적**: 개별 컴포넌트의 기능 검증
|
||||||
|
- **도구**: JUnit 5, Mockito
|
||||||
|
- **커버리지 목표**: 80% 이상
|
||||||
|
|
||||||
|
### 통합 테스트 (Integration Tests)
|
||||||
|
- **목적**: 컴포넌트 간 상호작용 검증
|
||||||
|
- **도구**: Spring Boot Test, TestContainers
|
||||||
|
- **범위**: API 엔드포인트, 데이터베이스 연동
|
||||||
|
|
||||||
|
### E2E 테스트 (End-to-End Tests)
|
||||||
|
- **목적**: 전체 시스템 워크플로우 검증
|
||||||
|
- **도구**: Playwright, Cypress
|
||||||
|
- **범위**: 사용자 시나리오
|
||||||
|
|
||||||
|
## 테스트 실행
|
||||||
|
|
||||||
|
### 단위 테스트 실행
|
||||||
|
```bash
|
||||||
|
mvn test -Dtest=*Test
|
||||||
|
```
|
||||||
|
|
||||||
|
### 통합 테스트 실행
|
||||||
|
```bash
|
||||||
|
mvn verify -Dspring.profiles.active=test
|
||||||
|
```
|
||||||
|
|
||||||
|
### 전체 테스트 실행
|
||||||
|
```bash
|
||||||
|
mvn verify
|
||||||
|
```
|
||||||
|
|
||||||
|
## 테스트 검증 기준
|
||||||
|
|
||||||
|
| 테스트 유형 | 최소 커버리지 | 빌드 필수 여부 |
|
||||||
|
|------------|--------------|---------------|
|
||||||
|
| 단위 테스트 | 80% | Yes |
|
||||||
|
| 통합 테스트 | 60% | Yes |
|
||||||
|
| E2E 테스트 | - | No |
|
||||||
|
|
||||||
|
## 테스트 보고서
|
||||||
|
|
||||||
|
- **단위 테스트**: `target/surefire-reports/`
|
||||||
|
- **통합 테스트**: `target/failsafe-reports/`
|
||||||
|
- **커버리지**: `target/site/jacoco/`
|
||||||
|
|
||||||
|
## 검증 체크리스트
|
||||||
|
|
||||||
|
- [ ] 모든 단위 테스트 통과
|
||||||
|
- [ ] 모든 통합 테스트 통과
|
||||||
|
- [ ] 코드 커버리지 기준 충족
|
||||||
|
- [ ] 빌드 산출물 생성 완료
|
||||||
|
- [ ] 테스트 보고서 생성 완료
|
||||||
Loading…
Add table
Add a link
Reference in a new issue