docs: 원칙 문서에서 구체적 예시 제거, 원칙만 정리

- 313_React_구조_원칙.md: 배열/객체 필드 검증 원칙 간소화 (구체적 필드명/코드 예시 제거)
- 311_FastAPI_구조_원칙.md: Nginx 타임아웃 설정 원칙 간소화 (구체적 경로/값 제거)
This commit is contained in:
happybell80 2025-12-02 02:22:59 +09:00
parent c6a7fe935c
commit 7adf6be87c
2 changed files with 6 additions and 23 deletions

View File

@ -247,14 +247,10 @@ utils
**핵심 원칙**: 장기 작업을 위한 프록시 엔드포인트는 HTTP/HTTPS 블록 모두에 충분한 타임아웃 설정 필요
**필수 확인 사항**:
- Nginx 설정 파일에서 `/rb8001/` 또는 해당 프록시 경로의 `location` 블록 확인
- Nginx 설정 파일에서 프록시 경로의 `location` 블록 확인
- `proxy_read_timeout`, `proxy_connect_timeout`, `proxy_send_timeout` 설정 확인
- HTTP(port 80)와 HTTPS(port 443) 블록 모두에 동일한 타임아웃 설정 적용
- 권장 값: `proxy_read_timeout 300s; proxy_connect_timeout 75s; proxy_send_timeout 300s;`
**교훈**:
- HTTP 블록에 타임아웃 설정 누락 시 HTTPS만 설정되어 있어도 HTTP 요청에서 504 Gateway Timeout 발생 가능
- 프록시 타임아웃은 백엔드 작업 시간보다 충분히 길게 설정 (백엔드 작업 시간 + 여유분)
- 프록시 타임아웃은 백엔드 작업 시간보다 충분히 길게 설정
## 15. 모범 사례 참고

View File

@ -157,24 +157,11 @@ src/
### 배열/객체 필드 검증 필수
**문제**: 백엔드가 배열을 예상했지만 `null` 또는 `undefined`를 반환할 경우 `TypeError: Cannot read property 'map' of null` 발생
**원칙**: 배열 필드는 `Array.isArray()` 체크 후 사용, 객체 필드는 옵셔널 체이닝(`?.`) 사용, 기본값 설정 필수
**해결책**:
- 배열 필드: `Array.isArray(data.field) ? data.field : []` 또는 `data.field ?? []`
- 객체 필드: 옵셔널 체이닝(`?.`) 사용
- 기본값 설정: `const items = result.page_evaluations ?? [];`
**예시**:
```typescript
// ❌ 금지: 직접 map 사용
result.page_evaluations.map(...)
// ✅ 권장: Array.isArray 체크
const evaluations = Array.isArray(result.page_evaluations)
? result.page_evaluations
: [];
evaluations.map(...)
```
**금지 사항**:
- ❌ 배열 필드에 직접 `.map()` 호출 (null/undefined 체크 없이)
- ❌ 객체 필드에 직접 속성 접근 (옵셔널 체이닝 없이)
## 11. 체크리스트