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