# 제품 아키텍처 ## 확정된 기술 경계 제품은 C#·.NET 8을 사용한다. 실제 업무 프로젝트, entry point, 런타임 데이터 흐름과 배포 구조는 아직 미정이다. 특정 UI 프레임워크, 계층, DI나 async 구조를 강제하지 않는다. 다음은 제품 생성 시의 **권장 배치**이며 현재 구현된 제품 구조를 뜻하지 않는다. ```text src// 제품 C# 코드와 SDK 스타일 .csproj tests/.Tests/ 제품 테스트와 테스트 .csproj ``` - 공개 API의 접근성, 타입과 nullability 계약을 유지한다. - 프로젝트 참조는 제품에서 정한 방향을 따른다. 테스트가 제품을 참조하며 제품은 테스트 프로젝트를 참조하지 않는다. - 별도 Contracts 프로젝트나 추가 계층은 실제 필요가 확인될 때만 도입한다. - 신규 프로젝트는 `TargetFramework=net8.0`, `Nullable=enable`, `ImplicitUsings=enable`을 기본으로 한다. C# 언어 버전은 SDK 기본값을 따른다. - 루트 `global.json`은 빌드에 사용할 SDK 선택을 제어하며 제품 TFM을 대신하지 않는다. 실제 제품과 metadata가 추가되면 확인된 구조와 참조 방향만 이 문서에 기록한다. `tests/fixtures/dotnet/Smoke/`는 개발 도구 검증용이며 제품이 아니다. Harness의 Python 모듈 구조와 phase 운영 절차는 [Harness 문서](HARNESS.md)에 둔다.