Files
llm-wiki/templates/branch-report-template.md

9.5 KiB

title, source_type, status, confidence, derived_from, related_projects, target_branch, target_module, audience, purpose, last_reviewed, status_label
title source_type status confidence derived_from related_projects target_branch target_module audience purpose last_reviewed status_label
report draft unknown
raw/branch-notes/<branch-name>
wiki/projects/<canonical-doc>
ca-tmpl
self branch-implementation-understanding draft

{{title}}

이 문서는 이해를 위한 derived report입니다.
SSOT는 raw/branch-notes/wiki/projects/의 canonical 문서입니다.
이 문서는 branch-note의 모든 내용을 보존하지 않고, 사람이 읽고 설명할 수 있도록 재구성합니다.


0. Executive Summary

한 문장 요약

이 기능은 <무엇><어떤 문제>를 일으키지 않도록, <어느 계층>에서 <어떤 계약>으로 통제하는 기능이다.

이 보고서를 읽고 답할 수 있어야 하는 질문

  • 이 기능은 왜 필요한가?
  • 이 기능이 없으면 어떤 실패가 발생하는가?
  • Clean Architecture 구조에서 어디에 위치하는가?
  • 어떤 모듈이 무엇을 책임지고 무엇을 몰라야 하는가?
  • 실제 구현은 어떤 원리로 동작하는가?
  • 무엇을 테스트로 증명해야 하는가?

관련 문서

  • Branch note:
    • raw/branch-notes/<branch-name>
  • Canonical project:
    • wiki/projects/<canonical-doc>
  • 관련 코드:
    • <module>/<path>
  • 관련 테스트:
    • <module>/<test-path>

1. 이 기능은 어떤 문제를 해결하는가?

문제 정의

<문제 설명>

이 문제가 중요한 이유

  • <이유 1>
  • <이유 2>
  • <이유 3>

이 기능이 없을 때 생기는 구조적 문제

  • <레이어 침투>
  • <기술 누출>
  • <실패 분류 불일치>
  • <테스트로 감지 불가>

2. 실제 실패 시나리오

시나리오 A. <실패 이름>

상황

<현실적인 상황 설명>

실패 흐름

<입력/요청>
→ <잘못된 처리>
→ <장애/버그>
→ <운영 영향>

이 기능이 막는 방식

<어떤 계약/테스트/모듈 경계가 이 실패를 막는지>


시나리오 B. <실패 이름>

상황

<현실적인 상황 설명>

실패 흐름

<입력/요청>
→ <잘못된 처리>
→ <장애/버그>
→ <운영 영향>

이 기능이 막는 방식

<어떤 계약/테스트/모듈 경계가 이 실패를 막는지>


3. Clean Architecture 안에서의 위치

관련 모듈

모듈 이 기능과의 관계
domain-core
application-core
adapter-web
adapter-persistence
adapter-outbound
shared-contract
app-bootstrap
sample-portfolio

의존 방향

<허용되는 의존 방향>

이 기능의 소유 계층

  • 주 소유 계층:
  • 보조 계층:
  • 소비 계층:

4. 각 모듈은 무엇을 책임지고 무엇을 몰라야 하는가?

모듈 책임 몰라야 하는 것 위반 예시
domain-core
application-core
adapter-web
adapter-persistence
adapter-outbound
shared-contract
app-bootstrap
sample-portfolio

5. 핵심 설계 결정

ID 결정 이유 대안 선택하지 않은 이유 상태
D1
D2
D3

가장 중요한 결정 1개

<이 branch에서 가장 중요한 결정>

이 결정이 중요한 이유

<왜 이 결정이 전체 구조를 좌우하는지>


6. 핵심 구현 원리

구현 원리 요약

<핵심 구현 원리 설명>

처리 흐름

<입력>
→ <경계>
→ <변환>
→ <핵심 처리>
→ <외부 어댑터>
→ <응답/로그/테스트>

구현 위치

코드 위치 역할 관련 결정
<path> D1
<path> D2
<path> D3

7. 상태나 데이터 모델은 어떻게 생기는가?

주요 타입

타입 위치 역할 노출 가능 여부
Request DTO
Command/Query
Domain Model
Persistence Entity
Response DTO
Error/Envelope Type

변환 흐름

HTTP JSON
→ Request DTO
→ Command / Query
→ Domain Model
→ Persistence Entity
→ Response DTO
→ Envelope

주의할 점

  • DTO와 Domain을 섞지 않는다.
  • Domain과 Persistence Entity를 동일시하지 않는다.
  • 내부 진단 정보와 외부 응답 payload를 섞지 않는다.

8. 동시성/장애 상황에서 어떻게 동작하는가?

장애 분류

장애 상황 감지 위치 변환 결과 client 노출 log/trace
validation failure
persistence failure
dependency timeout
authorization failure
concurrency conflict

동시성 관련 동작

  • transaction boundary:
  • lock/retry/idempotency 관련 여부:
  • 중복 실행 시 기대 동작:
  • multi-instance 관련 제약:

9. 이 구현이 보장하는 것과 보장하지 못하는 것

보장하는 것

  • <자동 테스트나 컴파일 규칙으로 검증 가능한 것>
  • <계약상 반드시 유지되는 것>

보장하지 못하는 것

  • <정적 분석으로 잡기 어려운 것>
  • <운영 환경에서 추가 검증이 필요한 것>
  • <비즈니스 요구사항 자체의 정합성>

표현 주의

아래 표현은 사용하지 않는다.

  • 완벽히 보장한다
  • 100% 방지한다
  • 완전무결하다
  • 모든 상황에서 안전하다

대신 아래처럼 쓴다.

  • 빌드 시점에 감지한다
  • 정적 import 위반을 차단한다
  • 계약 위반을 테스트로 드러낸다
  • 런타임 동적 우회는 코드 리뷰와 추가 테스트가 필요하다

10. 테스트는 무엇으로 증명해야 하는가?

테스트 종류 증명하는 것 실패해야 하는 조건 실행 명령
unit test
contract test
architecture test
integration test
smoke test

핵심 테스트

<명령어>

이 테스트가 깨졌을 때 의미

<어떤 계약이 깨졌다는 뜻인지>


11. Implementation Status

항목 상태 근거 비고
<항목> <decision-only / documented-only / local-verified / pending / unknown> <문서/코드/테스트>

상태 값 정의

상태 의미
decision-only 결정은 있으나 구현/검증은 아직 없음
documented-only 문서상 계약만 있음
local-verified 로컬 코드/테스트로 검증됨
pending 아직 착수 전 또는 잔여 작업 존재
unknown 근거 부족으로 판단 불가

12. Fact / Interpretation / Unknown

검증된 사실

  • <검증된 사실> — 근거: [[...]]

내 해석

  • <내 해석> — 이유: <왜 그렇게 해석했는지>

아직 모르는 것

  • <확인 필요 항목>

13. 설명용 문장

30초 설명

<짧은 설명>

2분 설명

<면접/리뷰에서 말할 수 있는 설명>

깊게 질문받았을 때 답변

Q. 왜 이렇게 나누었나?
A. <답변>

Q. 이 구조의 한계는 무엇인가?
A. <답변>

Q. 이게 실제 장애를 어떻게 막나?
A. <답변>


14. 남은 리스크와 후속 작업

리스크 영향 확인 방법 후속 문서/branch

15. Closure

  • 이 보고서를 작성한 기준일:
  • 반영한 branch-note:
  • 반영한 코드 버전/커밋:
  • 아직 반영하지 않은 자료:
  • 다음에 읽을 문서: