diff --git a/.forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b.md b/.forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b.md new file mode 100644 index 0000000..2daa9d9 --- /dev/null +++ b/.forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b.md @@ -0,0 +1,3 @@ +# iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b + +Forge 이슈 작업 브랜치 `forge/iss-bfacccaabbd5-attempt-2-run-e90ddcbf6b8b`. diff --git a/source-inventory/README.md b/source-inventory/README.md new file mode 100644 index 0000000..8da85a7 --- /dev/null +++ b/source-inventory/README.md @@ -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 명세 +- [ ] 아키텍처 문서 +- [ ] 운영 가이드 diff --git a/source-inventory/api-inventory.json b/source-inventory/api-inventory.json new file mode 100644 index 0000000..209b00c --- /dev/null +++ b/source-inventory/api-inventory.json @@ -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" + } +} diff --git a/source-inventory/asset-inventory.json b/source-inventory/asset-inventory.json new file mode 100644 index 0000000..747f820 --- /dev/null +++ b/source-inventory/asset-inventory.json @@ -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" + } +} diff --git a/source-inventory/database-inventory.json b/source-inventory/database-inventory.json new file mode 100644 index 0000000..5d6727e --- /dev/null +++ b/source-inventory/database-inventory.json @@ -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" + } +} diff --git a/source-inventory/source-code-inventory.json b/source-inventory/source-code-inventory.json new file mode 100644 index 0000000..32daef3 --- /dev/null +++ b/source-inventory/source-code-inventory.json @@ -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" + } +} diff --git a/source-inventory/test_reference.md b/source-inventory/test_reference.md new file mode 100644 index 0000000..03c05ca --- /dev/null +++ b/source-inventory/test_reference.md @@ -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/` + +## 검증 체크리스트 + +- [ ] 모든 단위 테스트 통과 +- [ ] 모든 통합 테스트 통과 +- [ ] 코드 커버리지 기준 충족 +- [ ] 빌드 산출물 생성 완료 +- [ ] 테스트 보고서 생성 완료