MBTI 정보 로드 - 100-hours-a-week/12-marong-Wiki GitHub Wiki

📍 MBTI ChromaDB에서 가져오기

  • ChromaDB 조회 후 유저 MBTI 정보 가져오기
  • 없을 경우 메인DB에서 가져오기
# 사용자별 MBTI 로드
user_mbti: Dict[int, str] = {}
user_ids = [r.user_id for r in session.query(UserGroups.user_id).distinct()]

for uid in user_ids:
    rec = user_latest_col.get(where={"user_id": int(uid)}, limit=1, include=["metadatas"])
    if rec.get("ids"):
        meta = rec["metadatas"][0]
        ei, sn, tf, jp = meta["ei_score"], meta["sn_score"], meta["tf_score"], meta["jp_score"]
    else:
        row = (
            session.query(SurveyMBTI.ei_score, SurveyMBTI.sn_score,
                          SurveyMBTI.tf_score, SurveyMBTI.jp_score)
            .filter(SurveyMBTI.user_id == uid)
            .order_by(SurveyMBTI.created_at.desc())
            .first()
        )
        if not row:
            continue
        ei, sn, tf, jp = row.ei_score, row.sn_score, row.tf_score, row.jp_score

    mbti = (
        ("E" if ei >= 50 else "I") +
        ("N" if sn >= 50 else "S") +
        ("F" if tf >= 50 else "T") +
        ("P" if jp >= 50 else "J")
    )
    user_mbti[uid] = mbti