Skip to content

축약 문법

.intent.yml의 리스트 필드는 문자열 축약형객체 전체형을 혼용할 수 있다. 파싱 시 문자열은 { text: <값> }으로 정규화된다.

기본 규칙

문자열로 간단히 기술하거나, 객체로 확장하여 추가 정보를 포함할 수 있다:

yaml
# 축약형 (문자열)
drivers:
  - 상품 상세에서 구매로 이어지는 흐름이 없다

# 전체형 (객체)
drivers:
  - text: 여러 상품을 한 번에 주문하고 싶다는 사용자 피드백
    source: 2026-01 사용자 설문

두 형식을 같은 리스트 안에서 혼용할 수 있다:

yaml
drivers:
  - 상품 상세에서 구매로 이어지는 흐름이 없다
  - text: 여러 상품을 한 번에 주문하고 싶다는 사용자 피드백
    source: 2026-01 사용자 설문

적용 대상 필드

필드객체 추가 속성용도
driverssource동인의 출처나 근거
constraintslevel제약 수준 (MUST / SHOULD / MAY)
openQuestionsdecidedAt, 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일 후 자동 삭제

decidedAtdecision이 있으면 해당 질문은 해결된 것으로 간주한다.

다음 단계

  • Intent Map — 프로젝트 전체 spec을 도메인별로 관리한다