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)에 의존하지 않는 구조가 중요
'개발일지' 카테고리의 다른 글
| [개발일지_safeHome] 17. 등기부등본 비동기 분석 프로세스_상태변경처리 (0) | 2026.02.06 |
|---|---|
| [개발일지_safeHome] 16. 등기부등본 비동기 분석 프로세스_PDF 검증_1 (0) | 2026.02.05 |
| [개발일지_safeHome] 14. react native로 app 시작하기 (0) | 2026.01.18 |
| [개발일지_safeHome] 13. SSE 샘플 추가 (0) | 2026.01.15 |
| [개발일지_safeHome] 11. redis 세팅 추가 (0) | 2025.12.29 |