Appearance
축약 문법
.intent.yml의 리스트 필드는 문자열 축약형과 객체 전체형을 혼용할 수 있다. 파싱 시 문자열은 { text: <값> }으로 정규화된다.
기본 규칙
문자열로 간단히 기술하거나, 객체로 확장하여 추가 정보를 포함할 수 있다:
yaml
# 축약형 (문자열)
drivers:
- 상품 상세에서 구매로 이어지는 흐름이 없다
# 전체형 (객체)
drivers:
- text: 여러 상품을 한 번에 주문하고 싶다는 사용자 피드백
source: 2026-01 사용자 설문두 형식을 같은 리스트 안에서 혼용할 수 있다:
yaml
drivers:
- 상품 상세에서 구매로 이어지는 흐름이 없다
- text: 여러 상품을 한 번에 주문하고 싶다는 사용자 피드백
source: 2026-01 사용자 설문적용 대상 필드
| 필드 | 객체 추가 속성 | 용도 |
|---|---|---|
drivers | source | 동인의 출처나 근거 |
constraints | level | 제약 수준 (MUST / SHOULD / MAY) |
openQuestions | decidedAt, decision | 결정 일자와 내용 |
constraints의 기본값
constraints에서 문자열은 MUST 수준으로 간주된다:
yaml
constraints:
# 이 둘은 동일하다
- 재고가 0인 상품은 담을 수 없다
- level: MUST
text: 재고가 0인 상품은 담을 수 없다권장 사항이나 선택 사항은 객체 형식으로 level을 명시한다:
yaml
constraints:
- 재고가 0인 상품은 담을 수 없다 # MUST (기본값)
- level: SHOULD
text: 장바구니는 브라우저를 닫아도 유지된다
- level: MAY
text: 비회원도 장바구니를 사용할 수 있다RFC 2119 수준을 따른다:
- MUST — 반드시 구현해야 한다
- SHOULD — 권장하지만 합리적인 이유가 있으면 생략할 수 있다
- MAY — 선택적으로 구현할 수 있다
openQuestions의 결정 기록
미결정 사항은 처음에 문자열로 작성하고, 결정이 내려지면 객체로 확장한다:
yaml
openQuestions:
# 아직 결정되지 않음
- 장바구니 항목 수 제한이 필요한가?
# 결정됨
- text: 비회원 장바구니의 만료 기간은?
decidedAt: 2026-02-01
decision: 7일 후 자동 삭제decidedAt과 decision이 있으면 해당 질문은 해결된 것으로 간주한다.
다음 단계
- Intent Map — 프로젝트 전체 spec을 도메인별로 관리한다