You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.2 KiB

Phase 1 코딩 규칙

1. 기본 원칙

  • 함수는 가능하면 작은 단위로 분리합니다.
  • adapter / parser / db / feature builder 책임을 섞지 않습니다.
  • side effect는 application layer에 모읍니다.
  • 표준 라이브러리와 검증된 범용 라이브러리를 우선 사용합니다.
  • 예외를 삼키지 않습니다.

2. 타입과 검증

  • Python type hint를 필수로 사용합니다.
  • 외부 입력은 Pydantic 또는 동등한 검증 계층을 거칩니다.
  • 내부 DTO와 DB model을 혼용하지 않습니다.

3. idempotency 규칙

  • 동일 입력을 두 번 처리해도 결과가 달라지지 않아야 합니다.
  • source key + checksum + unique constraint를 적극 사용합니다.
  • raw 수집과 structured 적재는 분리합니다.

4. 예외 처리

반드시 아래 중 하나로 분류합니다.

  • retryable
  • non-retryable
  • validation
  • dependency

예외 객체에는 source/entity/context가 있어야 합니다.

5. retry / timeout

  • 외부 HTTP 호출은 timeout 필수
  • 무한 retry 금지
  • 지수 백오프 + 상한 적용
  • validation 실패는 retry 금지

6. 파일 저장 규칙

  • 파일명은 deterministic 해야 합니다.
  • 원문 overwrite 금지
  • sidecar metadata JSON 함께 저장
  • 상대경로 대신 data root 기준 canonical path 사용

7. DB write 규칙

  • 가능하면 upsert 사용
  • bulk insert 전 unique key 명확화
  • transaction scope를 짧게 유지
  • parser core에서 DB 세션 직접 접근 금지

8. 로깅 규칙

  • INFO: 정상 단계
  • WARNING: 데이터 이상, fallback 사용
  • ERROR: 처리 실패
  • DEBUG: 로컬 개발 전용

민감정보 로그 출력 금지:

  • API key
  • secret
  • full auth header

9. 테스트 규칙

  • fixture 없는 adapter 구현 금지
  • parser는 최소 10개 이상의 샘플 문서 fixture 확보 권장
  • 회귀 버그는 반드시 fixture 추가 후 수정

10. 문서화 규칙

  • 모든 adapter에 README 또는 docstring 필요
  • config key는 설명과 기본값 포함
  • migration은 목적 설명 포함

11. 코드 리뷰 기준

  • 책임 분리가 되어 있는가
  • 재실행 안전한가
  • 실패 시 상태가 명확한가
  • 테스트가 충분한가
  • 로그로 추적 가능한가