Skip to content

리뷰/링크 Neo4j 적재를 Airflow 파이프라인에 연동 (자동 갱신) #29

Description

@likell1

배경

추천 시스템(4EVR0-Server)이 Product 노드의 리뷰(rating/review_count/review_stats)올리브영 링크(product_url) 를 사용한다(부연 근거 + 정렬 + 구매링크). 현재 이 데이터를 Neo4j에 적재하는 로더가 Airflow DAG에 안 걸려 있어 수동 실행이다. → 크롤을 새로 돌려도 리뷰/링크가 자동 갱신되지 않음.

(실제로 오래된 스냅샷(2026-06-06)을 쓰다가 커버리지 62%였던 이슈가 있었음. 지금은 최신 07-20으로 수동 재적재해 99%.)

현재 상태

  • 로더 2개가 GraphRAG_Pipeline에 있음:
    • scripts/load_product_reviews_to_neo4j.py — rating/review_count/review_stats SET
    • scripts/load_product_links_to_neo4j.py — product_url SET + URL goodsNo로 goods_no 교정(이미지·링크 일관화)
  • 둘 다 최신 silver_current CSV 자동선택(LastModified 기준) 이미 구현됨 → 인자 없이 호출하면 최신 사용.
  • idempotent(MERGE/SET), 기존 AFFECTS/CONTAINS 무손상.

훅 포인트

DAG oliveyoung_bronze_to_silver의 마지막 태스크 silver_to_neo4j_csv 뒤. Product 노드가 만들어진 다음 리뷰/링크 속성을 얹어야 함.

sync_reference >> bronze_to_silver >> silver_to_gold >> silver_to_neo4j_csv >> [리뷰/링크 적재]

방식 (택1)

  • A. 접어넣기: silver_to_neo4j_csv 커맨드가 Product 노드 생성 시 리뷰/링크도 같이 SET. 태스크 1개·CSV 1회. 싱크 코드 수정 필요.
  • B. 태스크 추가 (권장): 로더를 이 레포로 이식 → 이미지 커맨드 load_reviews/load_links 신설 → DAG에 뒤로 배선. 자기완결적, 기존 로더 거의 그대로.

할 일 체크리스트 (B 기준)

  • 로더 2개를 Oliveyoung_Pipeline으로 이식(또는 GraphRAG_Pipeline 의존)
  • 이미지 엔트리포인트에 load_reviews, load_links 커맨드 등록
  • evr0/oliveyoung-pipeline 이미지 재빌드 + ECR 푸시
  • DAG(dags/oliveyoung_pipeline.py)에 태스크 2개 추가 + silver_to_neo4j_csv >> load_reviews >> load_links
  • COMMON env에 NEO4J_URI/USER/PASSWORD 추가(시크릿) — silver_to_neo4j_csv가 쓰는 것과 동일
  • Airflow 배포 후 1회 수동 트리거로 검증(커버리지·값 확인)

참고

  • 이미지(image_url)는 요청시점 presigned S3 라이브라 자동 최신(별도 작업 불필요). 이 이슈는 리뷰/링크(그래프 적재분) 자동화만 대상.
  • 관련: 4EVR0-Server 리뷰/링크 기능(머지됨), GraphRAG_Pipeline 로더(머지됨).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions