Spec — 기획자 관점 + 도메인 로직
목적
Vibe coding 으로 코드는 빠르게 짜지지만 "내 핵심 비즈니스" 가 눈에 안 보이는 문제 를 풀기 위해.
화면 중심 (기획자 관점) + 비즈니스 도메인 룰 한 곳에 모음.
3 종류 prefix
| prefix | 무엇 | 관점 |
|---|---|---|
screen- | 단일 화면의 UI 동작 / 상태 / 분기 | 기획자 / 디자이너 |
flow- | 여러 화면 걸친 사용자 시나리오 | 기획자 / PM |
domain- | 비즈니스 룰 (정량 / 정책 / 알고리즘) | 개발자 / PM |
flat 구조 — prefix 로 grouping. grep 우선.
policies/ 와 차이
| 위치 | 무엇 |
|---|---|
../policies/ | "왜" 결정했나 (이력, 토론, 트리거) |
spec/ (여기) | "지금" 어떻게 동작하나 (현재 진실) |
같은 주제 양쪽에 존재 가능 (예: policies/monetization.md 정책 진화 vs spec/domain-quota.md 현재 quota 동작 명세).
api/ 와 차이
| 위치 | 무엇 |
|---|---|
../api/ | endpoint 단위 명세 + 실 I/O 예제 |
spec/ (여기) | 화면 / 사용자 flow / 도메인 룰 |
API 와 spec 은 보완 관계. API 는 시스템 contract, spec 은 사용자 경험 / 비즈니스 룰.
작성 시점 (강제 X)
- 새 화면 / 화면 큰 변경: 같은 PR 에
screen-X.md같이 - 사용자 시나리오 정해짐:
flow-X.md추가 - 정책 / 정량 룰 결정 / 변경:
domain-X.mdupdate - 머릿속 정리 안 될 때: 코드 짜기 전 spec 먼저
템플릿
screen-X.md
markdown
# 화면: <이름>
## 진입 경로
- 어디서 진입 (대시보드 / 알림 / 푸시 등)
## 상태별 노출
- 로딩 / 정상 / 에러 / 권한 없음 / 빈 상태
- 각 상태의 UI 요소
## 인터랙션
- 버튼 / 제스처별 동작
- 상태 전이 (state diagram 가능)
## 의존성
- 호출하는 API endpoint
- 다른 화면으로의 navigateflow-X.md
markdown
# Flow: <이름>
## 시나리오
"사용자가 X 하면 Y 하고 Z 가 일어남"
## Step
1. ...
2. ...
3. ...
## 분기 / Edge case
- 권한 거부
- 네트워크 단절
- 동시성 충돌domain-X.md
markdown
# 도메인: <영역명>
## 룰
정량적 룰 / 임계값 / 정책 (예: 월 quota 5, signup bonus 5, hard cap 200)
## 알고리즘
계산 흐름 (필요 시 pseudo-code)
## Edge case
- 월 경계 / 시간대
- 동시성
- reset 조건
## 관련 테이블 / API
- DB 테이블
- endpoint인덱스
아키텍처 / 구조 (코드 전반)
- architecture.md — 시스템 전체 다이어그램 + 백엔드 / Flutter 레이어 다이어그램
- backend-structure.md — Go 백엔드 폴더 / 패키지 책임 + 컨벤션
- flutter-structure.md — Flutter 폴더 / 레이어 / Riverpod 구조
- db-schema.md — DB 스키마 안내 (실제 문서는
db-schema/— tbls 자동 생성)
도메인 (비즈니스 룰)
- domain-app-check.md — Firebase App Check: 왜 필요한지 + 동작 원리 + soft→strict 전환
- domain-quota.md — 월 AI 분석 quota 룰, 광고 보너스, 재진입 무료 정책
- domain-auth.md — 카카오 OAuth + JWT 발급/검증 + 회원가입/탈퇴 플로우
- domain-disclosure.md — 공시 수집/저장/조회 + AI 분석 스케줄링 파이프라인
- domain-watchlist.md — 관심종목 슬롯 정책 V6 (capacity-only)
- domain-admob.md — 광고 보상 플로우 (SSV + legacy dev 경로)
- domain-analytics.md — Firebase Analytics 이벤트 taxonomy + RevealOutcome enum + dev/prod 격리