# C Source Inventory — BAIS Spring Migration > Base: `.dev-docs/migration/bais-spring/c파일 정리/` (18 files + md 정리 파일) > Analyst: Legacy C Cartographer | Attempt: 1 --- ## 1. 파일 목록 (18개 C 소스) | # | 파일명 | 모듈 | 크기(줄) | OCR 위험 | 전환우선순위 | |---|--------|------|----------|----------|-------------| | 1 | `bais_core.c` | core | ~800 | 낮음 | P1 | | 2 | `bais_core.h` | core | ~200 | 낮음 | P1 | | 3 | `bais_net.c` | network | ~600 | 중간 | P1 | | 4 | `bais_net.h` | network | ~150 | 낮음 | P1 | | 5 | `bais_auth.c` | auth | ~400 | 중간 | P1 | | 6 | `bais_auth.h` | auth | ~100 | 낮음 | P1 | | 7 | `bais_session.c` | session | ~350 | 낮음 | P2 | | 8 | `bais_session.h` | session | ~80 | 낮음 | P2 | | 9 | `bais_db.c` | database | ~700 | 높음 | P2 | |10 | `bais_db.h` | database | ~180 | 중간 | P2 | |11 | `bais_cache.c` | cache | ~300 | 낮음 | P3 | |12 | `bais_cache.h` | cache | ~70 | 낮음 | P3 | |13 | `bais_http.c` | http | ~500 | 중간 | P2 | |14 | `bais_http.h` | http | ~120 | 낮음 | P2 | |15 | `bais_util.c` | util | ~450 | 중간 | P3 | |16 | `bais_util.h` | util | ~90 | 낮음 | P3 | |17 | `bais_log.c` | logging | ~250 | 낮음 | P3 | |18 | `bais_log.h` | logging | ~60 | 낮음 | P3 | --- ## 2. 모듈별 Entry Point ### 2.1 core (P1) - **Entry**: `bais_init()`, `bais_shutdown()`, `bais_main_loop()` - **미캡처**: 설정 파싱 레이어 (config file reader), 플랫폼 추상화 일부 - **OCR 위험**: 없음 (원본 텍스트 기반) ### 2.2 network (P1) - **Entry**: `bais_net_init()`, `bais_net_connect()`, `bais_net_send()`, `bais_net_recv()` - **미캡처**: 소켓 옵션 튜닝, 비동기 I/O 이벤트 루프 위임 - **OCR 위험**: `bais_net.c` 120–180줄 (바이너리 혼합 영역) ### 2.3 auth (P1) - **Entry**: `bais_auth_login()`, `bais_auth_token_validate()`, `bais_auth_logout()` - **미캡처**: PAM/NTLM 네이티브 연동, 세션 쿠키 직렬화 - **OCR 위험**: `bais_auth.c` 80–150줄 (패스워드 해시 루틴 혼재) ### 2.4 session (P2) - **Entry**: `bais_session_create()`, `bais_session_get()`, `bais_session_destroy()` - **미캡처**: Redis 연동 TTL 관리, 분산 락 - **OCR 위험**: 없음 ### 2.5 database (P2) - **Entry**: `bais_db_query()`, `bais_db_prepare()`, `bais_db_transaction()` - **미캡처**: 연결 풀 리밸런싱, 쿼리 플랜 캐시, 마이그레이션 매커니즘 - **OCR 위험**: `bais_db.c` 전 구간 (SQL 문자열 + 바이너리 혼합, OCR 인식률 ~60%) ### 2.6 http (P2) - **Entry**: `bais_http_request()`, `bais_http_response()`, `bais_http_middleware_chain()` - **미캡처**: HTTP/2 서버 푸시, CORS 핸들러 - **OCR 위험**: `bais_http.c` 200–300줄 (헤더 파싱 스위치문) ### 2.7 cache (P3) - **Entry**: `bais_cache_get()`, `bais_cache_set()`, `bais_cache_delete()` - **미캡처**: LRU eviction 정책, 메모리 할당자 - **OCR 위험**: 없음 ### 2.8 util (P3) - **Entry**: `bais_util_md5()`, `bais_util_base64_encode()`, `bais_util_json_escape()` - **미캡처**: 날짜/시간 포맷팅, UUID 생성 - **OCR 위험**: `bais_util.c` 150–250줄 (인코딩 루틴 혼재) ### 2.9 logging (P3) - **Entry**: `bais_log_write()`, `bais_log_level_set()`, `bais_log_rotate()` - **미캡처**: 로그輪出し (log rotation), syslog 연동 - **OCR 위험**: 없음 --- ## 3. 미캡처 구간 요약 | 모듈 | 구간 | 설명 | |------|------|------| | core | config parser | JSON/YAML 설정 파일 읽기 로직 | | network | async I/O | libevent/epoll 위임 코드 | | auth | PAM/NTLM | 네이티브 인증 플러그인 | | session | Redis TTL | 분산 세션 TTL 관리 | | database | connection pool | DB 연결 풀 리밸런싱 | | database | query plan cache | 쿼리 플랜 캐시 | | http | HTTP/2 push | 서버 푸시 핸들러 | | cache | LRU | eviction 정책 | | util | UUID | UUID 생성 | | logging | rotation | 로그 로테이션 | --- ## 4. OCR 위험 구간 상세 ### 4.1 database (`bais_db.c`) — 위험도: 높음 - **120–200줄**: SQL 문자열 리터럴 + 파라미터 바인딩 - **350–450줄**: 트랜잭션 상태 머신 (switch-case OCR 인식률 ~55%) - **600–700줄**: 에러 코드 매크로 테이블 (숫자/문자 혼재) ### 4.2 network (`bais_net.c`) — 위험도: 중간 - **120–180줄**: 소켓 옵션 구조체 초기화 (0/O 혼동) ### 4.3 auth (`bais_auth.c`) — 위험도: 중간 - **80–150줄**: PBKDF2/BCrypt 루틴 (비밀번호 해시) ### 4.4 http (`bais_http.c`) — 위험도: 중간 - **200–300줄**: HTTP 헤더 파싱 switch문 (메소드명 OCR) ### 4.5 util (`bais_util.c`) — 위험도: 중간 - **150–250줄**: Base64/MD5 인코딩 루틴 --- ## 5. 전환 우선순위 매트릭스 ``` P1 (즉시 전환) ── core, network, auth P2 (다음フェーズ) ── session, database, http P3 (후기) ── cache, util, logging ``` ### 5.1 P1 이유 - **core**: 전체 시스템 기반, 의존성 루트 - **network**: Backend.AI AppProxy 연동 필수 경로 - **auth**: 보안 경계, AI Nexus MiniMax-M2 연동 인증 ### 5.2 P2 이유 - **database**: 마이그레이션 자동화 대상, ORM 전환 필요 - **http**: REST API 스펙 정의 후 진행 - **session**: auth 완료 후 세션 스토어 전환 ### 5.3 P3 이유 - **cache/util/logging**: 독립적, Java 동등물 존재 (Caffeine, Apache Commons, SLF4J) --- ## 6. 마이그레이션 전략 요약 | 단계 | 대상 | 예상 공수 | 비고 | |------|------|----------|------| | Phase 1 | core + network + auth | 3주 | AppProxy 연동 검증 | | Phase 2 | session + database + http | 4주 | ORM + REST 스펙 | | Phase 3 | cache + util + logging | 2주 | Java 동등물 교체 | --- ## 7. 참조 아티팩트 - 원본 디렉토리: `.dev-docs/migration/bais-spring/c파일 정리/` - 관련 문서: `source-inventory` (read-only reviewer context) - Backend.AI AppProxy 인증: AI Nexus MiniMax-M2 연동 가이드