def get_ganji_full(birth_date, birth_time, calendar_type): cheon = ["갑", "을", "병", "정", "무", "기", "경", "신", "임", "계"] ji = ["자", "축", "인", "묘", "진", "사", "오", "미", "신", "유", "술", "해"] elements = {"갑": "목(나무)", "을": "목(나무)", "병": "화(불)", "정": "화(불)", "무": "토(흙)", "기": "토(흙)", "경": "금(쇠)", "신": "금(쇠)", "임": "수(물)", "계": "수(물)"} animals = {"자": "쥐", "축": "소", "인": "범", "묘": "토끼", "진": "용", "사": "뱀", "오": "말", "미": "양", "신": "원숭이", "유": "닭", "술": "개", "해": "돼지"} year = birth_date.year y_idx = year - 4 y_stem = cheon[y_idx % 10] y_branch = ji[y_idx % 12] return { "text_data": f"{year}년 {birth_date.month}월 {birth_date.day}일 {birth_time.hour}시 ({calendar_type})", "year_ganji": f"{y_stem}{y_branch}년", "animal": animals[y_branch], "element": elements[y_stem], "desc": f"당신은 {animals[y_branch]}띠이며, {elements[y_stem]}의 기운을 타고났습니다." } def get_fengshui_advanced(year, gender, door_dir, head_dir): digits_sum = sum(int(digit) for digit in str(year)) while digits_sum > 9: digits_sum = sum(int(digit) for digit in str(digits_sum)) if gender in ["남성", "Male"]: gua = 11 - digits_sum else: gua = digits_sum + 4 while gua > 9: gua -= 9 while gua < 1: gua += 9 if gua == 5: gua = 2 if gender in ["남성", "Male"] else 8 is_east = gua in [1, 3, 4, 9] group = "동사택 (East Group)" if is_east else "서사택 (West Group)" good_dirs = ["북", "동", "남", "남동"] if is_east else ["북동", "남서", "서", "북서"] is_good_head = any(d in head_dir for d in good_dirs) or (head_dir in good_dirs) return { "gua": gua, "group": group, "good_dirs": ", ".join(good_dirs), "match": is_good_head, "advice": f"귀하는 {group}입니다. {head_dir} 방향은 {'좋은' if is_good_head else '나쁜'} 기운입니다." }