개발일지

[개발일지_safeHome] 15. 등본 분석 프로세스 재정리

woopii 2026. 2. 5. 00:41

jobId 생성 API는 만들었다.

그 뒤엔 어떤 프로세스를 거쳐야 하는지 검점하고자 한다.

 

우선 전체 흐름은 
SSE 기반 비동기 PDF 분석 프로세스를 설계했다.

PDF 분석처럼 시간이 오래 걸리는 작업을 처리할 때
'SSE로 진행 상황을 보여주고, 결과는 DB 기준으로 관리하는 구조'로 설계했다.
추가로, 앱 온/오프라인 대응까지 고려한 흐름으로 설계했다.

 

기본 설계

  • 분석 진행 상황을 SSE로 실시간 전달
  • 실패 시 즉시 중단하고 원인 전달
  • 성공 결과는 DB에 영속화
  • 앱이 켜져 있든 꺼져 있든 동일한 결과 조회 가능

전체 처리 흐름

1. SSE 연결

  • 클라이언트가 분석 요청과 함께 JobId생성 및 SSE 연결
  • 서버는 jobId를 기준으로 분석 작업 관리
  • 초기 이벤트로 연결 성공 알림 전송

2. 비동기 분석 시작

  • 실제 분석 로직은 비동기로 실행
  • SSE는 진행 상태 스트림 전용

3. PDF 검증

  • SSE로 "PDF 검증 중" 메시지 전송
  • 검증 실패 시:
    • SSE로 실패 메시지 전송
    • DB에 FAILED 상태 저장
    • 이후 프로세스 즉시 중단

4. AI 분석

  • SSE로 "AI 분석 중" 메시지 전송
  • 분석 실패 시:
    • SSE 실패 알림
    • DB 상태 업데이트
    • 프로세스 종료

5. 분석 성공 → DB 저장

  • 분석 결과를 DB에 저장
  • job과 result를 분리해 관리하면 재시도·이력 관리에 유리

6. 완료 후 클라이언트 처리 분기

  • 앱이 켜져 있는 경우
    • SSE로 resultId 전달
    • 클라이언트가 해당 ID로 결과 조회
  • 앱이 꺼져 있는 경우
    • SSE는 이미 종료
    • 서버가 푸시 알림 발송 (resultId 포함)
    • 알림 클릭 → 앱 실행 → 결과 조회

설계 포인트

  • SSE는 결과 전달 수단이 아니다
    • 진행 상태/알림 전용
    • 최종 결과는 항상 DB 기준
  • 분석 작업은 Job 단위로 관리
  • 앱 상태(ON/OFF)에 의존하지 않는 구조가 중요