전체 글 133

[개발일지_safeHome] 17. 등기부등본 비동기 분석 프로세스_상태변경처리

비동기 분석 프로세스를 붙이면서 처리해야할 수많은 내용중에 하나는SSE로 진행 상황을 알리면서 해당 상태를 DB에도 남기는 것이다 그래서 오늘은AnalysisJob Persistence 구조 보강Async Processor에서 DB 상태 업데이트까지 책임지기이 두 가지를 했다.1. AnalysisJobPersistencePort 역할 정리기존에는 save() 위주였는데,비동기 프로세스에서 쓰기엔 부족해서 의도를 드러내는 메서드들을 추가했다.Persistence Portpackage com.woopi.safehome.domain.deed.application.port.outboundimport com.woopi.safehome.domain.deed.model.AnalysisJobimport com.woop..

개발일지 2026.02.06

[개발일지_safeHome] 16. 등기부등본 비동기 분석 프로세스_PDF 검증_1

프로세스사용자가 PDF 업로드분석은 오래 걸림 → 비동기 처리분석 진행 상태를 SSE로 실시간 전달PDF가 잘못되었으면 즉시 실패 처리이제 PDF 검증부분을 추가해야하는데, 아래과 같은 고민이 생김“PDF 검증은 어디서 해야 하지?”“비동기 프로세스는 유스케이스가 직접 호출해도 되나?” 전체 흐름최종적으로 정리된 흐름은 아래와 같다.[Controller] ↓[DeedUseCase] - Job 생성 - SSE 연결 - 분석 실행 지시 ↓[AnalysisJobExecutorPort] ↓[AnalysisAsyncProcessor (@Async)] - PDF 검증 - 단계별 분석 - SSE 알림유스케이스는 ‘시작’까지만 책임지고,실제 처리는 전부 비동기 프로세서로 위임한다.Job..

개발일지 2026.02.05

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

jobId 생성 API는 만들었다.그 뒤엔 어떤 프로세스를 거쳐야 하는지 검점하고자 한다. 우선 전체 흐름은 SSE 기반 비동기 PDF 분석 프로세스를 설계했다.PDF 분석처럼 시간이 오래 걸리는 작업을 처리할 때'SSE로 진행 상황을 보여주고, 결과는 DB 기준으로 관리하는 구조'로 설계했다.추가로, 앱 온/오프라인 대응까지 고려한 흐름으로 설계했다. 기본 설계분석 진행 상황을 SSE로 실시간 전달실패 시 즉시 중단하고 원인 전달성공 결과는 DB에 영속화앱이 켜져 있든 꺼져 있든 동일한 결과 조회 가능전체 처리 흐름1. SSE 연결클라이언트가 분석 요청과 함께 JobId생성 및 SSE 연결서버는 jobId를 기준으로 분석 작업 관리초기 이벤트로 연결 성공 알림 전송2. 비동기 분석 시작실제 분석 로직은..

개발일지 2026.02.05

[개발일지_safeHome] 14. react native로 app 시작하기

React Native 프로젝트 시작1. React Native를 선택한 이유이번 프로젝트는 웹이 아닌 앱만 제공하는 설치형 서비스를 목표로 했다.iOS와 Android를 각각 네이티브로 개발하기엔 개발·유지 비용이 부담되기 때문에,하나의 코드베이스로 두 플랫폼을 동시에 지원할 수 있는 React Native를 선택했다.React Native는 이라는 특징이 있다.JavaScript / TypeScript 기반React 문법 그대로 사용실제 네이티브 컴포넌트로 렌더링웹(React) 경험을 그대로 활용하면서도 네이티브 앱에 가까운 성능과 UX를 낼 수 있다.2. 프로젝트 시작 시 Expo를 사용한 이유React Native는 순수 CLI 방식으로 시작할 수도 있지만,초기 환경 설정과 네이티브 빌드 설정이 ..

개발일지 2026.01.18

[개발 고민] webSocket, SSE(Server Sent Event) 중 뭐가 좋을까?

개인 프로젝트에서 비동기로 시간이 걸리는 작업을 진행중일때, 진행 상황을 클라이언트에게 실시간으로 알려주는 기능이 필요했음.초기에는 WebSocket을 고려했으나, SSE(Server-Sent Events)로 방향을 전환하게 됨 1. WebSocket이란?간단 설명양방향 실시간 통신 프로토콜.클라이언트와 서버가 서로 자유롭게 메시지를 주고받을 수 있음.동작 방식1. 클라이언트 → 서버: WebSocket 연결 요청 (HTTP Handshake)2. 서버 → 클라이언트: 연결 승인 (프로토콜 업그레이드)3. ↔ 양방향 통신: 클라이언트 ↔ 서버 자유롭게 메시지 전송4. 연결 종료: 어느 쪽에서든 종료 가능특징양방향 통신: 서버 → 클라이언트, 클라이언트 → 서버 모두 가능프로토콜: ws:// 또는 wss:..

개발 고민 2026.01.18

[개발일지_safeHome] 13. SSE 샘플 추가

등본 분석 상황을 실시간으로 알려주기 위해서웹소켓을 사용할려고한다,웹소켓이 아닌 SSE(Server Sent Event)를 활용할 예정 (중간에 앱을 종료했을때는, 알림을 사용하려고 한다) SSE(Server-Sent Events)가 더 적합한 이유- 단방향 통신만 필요 - 서버에서 프론트로만 진행 상황을 전송 - 더 간단한 구현 - WebSocket보다 설정이 단순함 - 자동 재연결 - 연결 끊김 시 브라우저가 자동으로 재연결 시도 - HTTP 기반 - 별도의 프로토콜이나 복잡한 설정 불필요 예를 들어---1. PDF 파싱 --> "첨부된 파일을 분석중이에요"2. LLM 분석--> AI가 등본을 분석중이에요"3. 이후 처리--> "분석한 내용을 정리중이에요"4. 완료 --> "완료 됐습니다!" 1. ..

개발일지 2026.01.15

[개발일지_safeHome] 12. 등기부등본 분석 작업 관련 DB 설계 및 서비스 개발(임시)

분석 요청 API 동작 시 비동기로 처리를 할건데처리를 위한 job 을 관리하는 DB를 만들것이다. 1. analysis_jobs 테이블 설계schema.sql-- 분석 job 테이블CREATE TABLE IF NOT EXISTS analysis_jobs ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', job_id VARCHAR(255) NOT NULL COMMENT '작업 ID(UUID)', file_name VARCHAR(255) NOT NULL COMMENT '파일명', file_size BIGINT NOT NULL COMMENT '파일 크기', status VARCHAR(50) NOT NULL COMMENT '상태(예: PE..

개발 고민 2026.01.08

[개발일지_safeHome] 10. 등기부등본 분석 설계는 어떻게 할 것인가?

1. 등기부등본 분석 서비스 플로우 1. 사용자가 앱에서 PDF 업로드 ↓2. Spring API: POST /api/v1/deed/analyze - Job 생성 (PENDING) - FCM 토큰 저장 - 즉시 응답 (202 Accepted, jobId 반환) ↓3. 비동기 처리 시작 (@Async) ├─ WebSocket 연결 중인 사용자: 실시간 진행상황 전송 └─ 백그라운드 사용자: 대기 ↓4. Step 1: S3에 PDF 업로드 - WebSocket: "파일 업로드 중..." (10%) ↓5. Step 2: Python PDF 서비스 호출 - HTTP POST → pdf-service:8001/api/extract - WebSocket: "PDF 변환 중..

개발일지 2025.12.29