diff --git a/.dev-docs/migration/bais-spring/c파일-정리-OCR-위험-구간.md b/.dev-docs/migration/bais-spring/c파일-정리-OCR-위험-구간.md new file mode 100644 index 0000000..1250654 --- /dev/null +++ b/.dev-docs/migration/bais-spring/c파일-정리-OCR-위험-구간.md @@ -0,0 +1,88 @@ +# OCR 위험 구간 상세 분석 + +## 위험 분류 기준 + +- **높음**: 수동 리뷰 필수, 자동 전환 불가 +- **중간**: 샘플 검증 후 전환 가능 +- **낮음**: 자동 전환 권장 + +## 위험 구간 목록 + +### 높음 위험 (4개) + +#### 1. api_parser.c - 파서 상태머신 +```c +// 위험 구간: parser_state_t enum 및 상태 전이 +typedef enum { + PARSER_INIT, + PARSER_HEADER, + PARSER_BODY, + PARSER_COMPLETE, + PARSER_ERROR +} parser_state_t; + +// 위험 구간: 중첩 switch-case +switch (state) { + case PARSER_HEADER: + switch (field_type) { + // ... + } +} +``` + +#### 2. db_migrator.c - 스키마 diff 로직 +```c +// 위험 구간: 테이블 비교 알고리즘 +int compare_columns(column_t* a, column_t* b) { + // 복잡한 비교 로직 +} +``` + +#### 3. net_protocol.c - 프로토콜 상태머신 +```c +// 위험 구간: 바이너리 프로토콜 파싱 +switch (packet_type) { + case PKT_HANDSHAKE: + // ... + case PKT_DATA: + // ... +} +``` + +#### 4. utils_string.c - 인코딩 변환 +```c +// 위험 구간: 멀티바이트 문자 처리 +size_t convert_encoding(char* out, const char* in, enc_t from, enc_t to) { + // EUC-KR, UTF-8, ISO-2022-KR 변환 +} +``` + +### 중간 위험 (6개) + +| 파일 | 구간 | 위험 이유 | +|------|------|-----------| +| api_handler.c | 콜백 레지스트리 | 함수 포인터 배열 초기화 | +| api_router.c | 동적 라우트 테이블 | 해시맵 구현체 | +| db_query.c | 트랜잭션 처리 | 에러 코드 매핑 | +| net_client.c | SSL 핸드셰이크 | OpenSSL 콜백 | +| crypto_cipher.c | 키 관리 | 키 파생 함수 | +| utils_config.c | 설정 파싱 | 토큰 파싱 로직 | + +### 낮음 위험 (8개) + +| 파일 | 구간 | 비고 | +|------|------|------| +| api_validator.c | 스키마 검증 | 단순 검증 로직 | +| db_connector.c | 연결 풀 관리 | 표준 인터페이스 | +| net_server.c | 소켓 옵션 | 표준 소켓 API | +| net_buffer.c | 메모리 풀 | 단순 할당 래퍼 | +| crypto_hash.c | HMAC 처리 | 표준 OpenSSL | +| crypto_random.c | 엔트로피 소스 | 단순 래퍼 | +| utils_logger.c | 로그 로테이션 | 표준 파일 I/O | +| utils_timer.c | 타이머 큐 | 단순链表 | + +## OCR 리스크 완화 전략 + +1. **높음 위험**: 전문 리뷰어 수동 검토, 테스트 케이스 보강 +2. **중간 위험**: 샘플 입력으로 검증, 커버리지 테스트 작성 +3. **낮음 위험**: 자동 전환 후 기본 테스트만 수행