Skip to content

[TIL] 2025-07-17 | AI 개인 맞춤 추천 게시글 로직 #87

@s0ooo0k

Description

@s0ooo0k
graph TD
    A[사용자 가입/소셜 프로필 완성] --> B[AiProfileEvent 발행]
    B --> C[초기 AI 프로필 생성]
    C --> D[사용자 선택 토픽 기반 프로필]
    
    subgraph "AI 프로필 생성 과정"
        E[사용자 활동 데이터 수집] --> F[북마크 게시글 분석]
        E --> G[좋아요한 게시글 분석]
        E --> H[작성한 게시글 분석]
        
        F --> F1[최근 3개 북마크 게시글]
        F1 --> F2[제목+내용으로 텍스트 구성]
        F2 --> F3[AI 분석: 관심사 패턴 파악]
        
        G --> G1[최근 3개 좋아요 게시글]
        G1 --> G2[제목+내용으로 텍스트 구성]
        G2 --> G3[AI 분석: 흥미 패턴 파악]
        
        H --> H1[최근 3개 작성 게시글]
        H1 --> H2[제목+내용으로 텍스트 구성]
        H2 --> H3[AI 분석: 전문성/스타일 파악]
        
        F3 --> I[활동 요약 데이터 생성]
        G3 --> I
        H3 --> I
        
        I --> J[최종 AI 프로필 생성]
        J --> K[persona_description + interest_keywords]
    end
    
    subgraph "게시글 임베딩 시스템"
        L[게시글 작성/수정] --> M[게시글 임베딩 생성]
        M --> N[제목+내용 포맷팅]
        N --> O[임베딩 모델로 벡터 변환]
        O --> P[EmbeddingStore에 저장]
        P --> Q[메타데이터: postId, userId, boardType, 생성일]
    end
    
    subgraph "추천 게시글 생성 과정"
        R[스케줄러: 매일 새벽 5시] --> S[AI 프로필 보유 사용자 조회]
        S --> T[사용자별 추천 생성]
        
        T --> U[AI 프로필 기반 쿼리 구성]
        U --> U1[persona_description + interest_keywords]
        
        U1 --> V[임베딩 기반 유사도 검색]
        V --> V1[쿼리를 임베딩으로 변환]
        V1 --> V2[EmbeddingStore에서 유사 게시글 검색]
        V2 --> V3[자신이 작성한 게시글 제외]
        V3 --> V4[유사도 점수로 정렬]
        
        V4 --> W[추천 게시글 DB 저장]
        W --> W1[기존 추천 데이터 삭제]
        W1 --> W2[새로운 추천 데이터 저장]
        W2 --> W3[boardId 매핑 및 상태 확인]
    end
    
    subgraph "사용자 추천 조회"
        X[메인 페이지 접근] --> Y[저장된 추천 게시글 조회]
        Y --> Z[블라인드 처리된 게시글 필터링]
        Z --> AA[최종 추천 목록 반환]
    end
    
    %% 스케줄링 프로세스
    BB[3일마다 새벽 4시] --> CC[활성 사용자 AI 프로필 업데이트]
    CC --> DD[최근 3일간 활동 체크]
    DD --> EE{활동 있음?}
    EE -->|Yes| E
    EE -->|No| FF[프로필 업데이트 스킵]
    
    %% 연결
    D --> K
    K --> U
    CC --> E
    
    %% 스타일링
    classDef profileProcess fill:#e1f5fe
    classDef embeddingProcess fill:#f3e5f5
    classDef recommendProcess fill:#e8f5e8
    classDef scheduleProcess fill:#fff3e0
    
    class E,F,G,H,F1,F2,F3,G1,G2,G3,H1,H2,H3,I,J,K profileProcess
    class L,M,N,O,P,Q embeddingProcess
    class R,S,T,U,U1,V,V1,V2,V3,V4,W,W1,W2,W3 recommendProcess
    class BB,CC,DD,EE,FF scheduleProcess
Loading

Metadata

Metadata

Assignees

Labels

TILToday I Learned..

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions