docs(311): add UUID validation policy

This commit is contained in:
happybell80 2026-03-27 12:30:25 +09:00
parent bb72ac44ea
commit 2db88e9e55

View File

@ -1,7 +1,7 @@
# Backend Coding Principles
**작성일**: 2025-09-17
**수정일**: 2026-01-21 (파일 크기 제한 300줄 → 500줄 완화)
**수정일**: 2026-03-27 (DB 접근 규칙에 UUID 검증 원칙 추가)
**상위 원칙**: [0_VALUE Coding Principles](../../../../0_VALUE/20_Governance/coding-principles.md)
## 1. 계층 분리 원칙
@ -153,6 +153,14 @@ utils
- 예: `system_endpoint.py`에서 router 인스턴스, `schedule_endpoint.py`에서 scheduler 인스턴스
- **간단한 경우**: `state/database.py`에서 직접 연결
### UUID 검증 원칙
상위 원칙 참조: [coding-principles.md](../../../../0_VALUE/20_Governance/coding-principles.md) 식별자 계약
- `user_id` 검증은 Pydantic의 `UUID` 타입으로 처리한다. UUID4 전용 검증(`UUID4`)으로 제한하지 않는다.
- DB `uuid` 컬럼은 버전 무관 표준 UUID를 저장하므로, 앱 계층의 입력 검증과 스키마도 같은 기준을 사용한다.
- 생성 정책과 소비자 검증 정책을 혼동하지 않는다. 특정 서비스가 UUID4를 발급하더라도, 소비자는 유효한 표준 UUID 전체를 수용한다.
### Supabase 쿼리 컬럼명 충돌 처리
- **예약어/컬럼명 충돌**: `order` 같은 예약어가 컬럼명과 겹칠 경우 쿼리 체이닝에서 직접 `.order()` 사용 금지
- **Python 로직 처리**: 컬럼명 충돌 시 Supabase 쿼리 체이닝 대신 Python 로직으로 정렬 처리 (모든 데이터 조회 후 Python에서 정렬)