| 항목 | 내용 |
|---|---|
| Globs | /server/lib/src//.dart, **/.spy.yaml |
백엔드 코딩 컨벤션#
레이어 구조#
- Endpoint → Service → Repository → DB
- Endpoint에 비즈니스 로직 금지
- Endpoint에 DB 쿼리 직접 작성 금지
- Repository 간 직접 호출 금지 (Service에서 조율)
엔드포인트 규칙#
- App 엔드포인트와 Console 엔드포인트 분리
- 인증 필요 시
requireLogin => true -
메서드명:
get,list,create,update,delete접두사
모델 규칙#
- Entity에
createdAt: DateTime,updatedAt: DateTime?필수 - 모든 필드에 한글 주석(
###) 추가 - 외래키에 인덱스 필수
-
DTO는 Entity와 분리 (
_create_request,_update_request,_list_response)
트랜잭션 규칙#
- 트랜잭션 내에서
tx사용 (session아님) - 다중 DB 작업은 반드시 트랜잭션으로 감싸기
- 트랜잭션 관리는 Service 레이어에서만
캐싱 규칙#
- 반드시
lifetime설정 - 엔티티 수정 시 관련 캐시 무효화
- 다중 서버 환경에서
global캐시 사용
테스팅 규칙#
- 엔드포인트는
endpoints파라미터로 호출 - 인증 테스트: 인증됨/미인증/권한부족 3가지 케이스
- 동시 트랜잭션 테스트:
rollbackDatabase: disabled
로깅 규칙#
- 민감 데이터 로깅 금지
- InternalSession은 반드시 close
- 세션 종료 후 세션 사용 금지
코드 생성#
.spy.yaml수정 후 반드시serverpod generate- Entity 변경 후 반드시
serverpod create-migration - 마이그레이션 적용 후 커밋