Files
ai-code-app/src/features/layout/README.md

3.5 KiB
Executable File

Layout Feature

프로젝트 종속적인 레이아웃은 src/features/layout 아래에서 관리합니다.

포함 항목

  • 컴포넌트 샘플 레이아웃
  • 위젯 샘플 레이아웃
  • Markdown preview 리스트 레이아웃
  • Layout Editor와 저장 레이아웃 흐름

규칙

  • 공통 레이아웃 시스템이 아니라 현재 프로젝트 화면에 종속되면 features/layout에 배치
  • 공통 재사용 가능성이 높으면 components 또는 widgets로 승격 검토

Layout Editor 기준

Layout Editor는 위젯 자체의 기본 기능을 정의하는 화면이 아닙니다. 이 화면은 레이아웃 안에 배치된 컴포넌트가 현재 화면에서 어떤 역할을 해야 하는지 기술하는 편집기입니다.

용어 기준:

  • 컴포넌트 기능 명세: 현재 레이아웃에 배치된 컴포넌트의 화면 동작, 상호작용, 구현 포인트를 적는 항목
  • 저장 레이아웃: 구조, 배치, 기능 명세를 함께 저장한 편집 결과
  • Codex 요청: 저장된 레이아웃과 그 안의 기능 명세를 기준으로 구현 요청을 만드는 액션

허용 범위:

  • 컴포넌트 간 이벤트 전달, 상태 동기화, focus/selection 이동, 표시/숨김 제어를 기능 명세로 기술할 수 있다
  • 한 컴포넌트의 입력/액션이 다른 컴포넌트 목록, 상세, 요약, CTA 상태를 바꾸는 흐름을 기술할 수 있다
  • 서버 저장, 조회, 갱신, 삭제 같은 API 연결과 그 응답이 다른 컴포넌트에 반영되는 흐름도 기능 명세 범위에 포함한다
  • 가능하면 공통 컴포넌트나 위젯 본체를 직접 수정하기보다, 현재 레이아웃에서 필요한 props를 내려 동작과 표시를 조정하는 방식으로 구현한다
  • Layout Editor 실행 요청은 기본적으로 "현재 화면 조합을 props/배치/상호작용으로 맞춘다"는 의미로 해석하고, 공통 패키지 내부 구현 변경은 최후 수단으로만 검토한다

구현 우선순위:

  • 1순위는 기존 컴포넌트/위젯 조합과 props 조정만으로 요구사항을 만족시키는 것이다
  • 2순위는 현재 프로젝트 전용 래퍼, feature 레이어, 어댑터를 추가해 공통 패키지 수정 없이 화면 요구를 흡수하는 것이다
  • 공통 컴포넌트/위젯 수정이 정말 필요할 때만 기존 사용처를 모두 확인한 뒤 제한적으로 수정한다
  • 공통 컴포넌트/위젯에 새 동작을 추가할 때는 기본값 props를 기존 동작과 동일하게 유지해, 명시적으로 opt-in한 화면만 달라지게 만든다

금지 해석:

  • 위젯 또는 컴포넌트 샘플 메타에서 "기본 기능"을 자동으로 끌어와 Layout Editor 기능 명세처럼 취급하지 않는다
  • 사용자가 직접 추가하지 않은 항목을 기능 명세 목록에 자동 주입하지 않는다
  • 레이아웃 기능 명세와 위젯 고유 스펙 문서를 같은 개념으로 섞지 않는다
  • 현재 레이아웃 요구를 맞추기 위해 공통 위젯 내부 코드를 바로 덧대고, 그 부작용을 기존 화면이 함께 떠안게 만드는 방식은 지양한다
  • 기존 화면 영향도 검토 없이 공통 컴포넌트/위젯의 기본 동작, 기본 스타일, 기본 데이터 흐름을 바꾸지 않는다

구현/문서 작성 시에는 항상 "이 기능은 위젯의 본래 능력 설명인가, 아니면 현재 레이아웃에서 그 컴포넌트가 수행할 역할 설명인가"를 먼저 구분합니다. Layout Editor 문맥에서는 후자만 다룹니다.