Spaces:
Sleeping
Sleeping
Update utils/calculations.py
Browse files- utils/calculations.py +48 -55
utils/calculations.py
CHANGED
|
@@ -1,77 +1,70 @@
|
|
| 1 |
# utils/calculations.py
|
| 2 |
|
| 3 |
-
def
|
| 4 |
"""
|
| 5 |
-
|
| 6 |
"""
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
"๊ฐ": "๋ชฉ(๋๋ฌด)", "์": "๋ชฉ(๋๋ฌด)",
|
| 13 |
-
"๋ณ": "ํ(๋ถ)", "์ ": "ํ(๋ถ)",
|
| 14 |
-
"๋ฌด": "ํ (ํ)", "๊ธฐ": "ํ (ํ)",
|
| 15 |
-
"๊ฒฝ": "๊ธ(์ )", "์ ": "๊ธ(์ )",
|
| 16 |
-
"์": "์(๋ฌผ)", "๊ณ": "์(๋ฌผ)"
|
| 17 |
-
}
|
| 18 |
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
|
|
|
|
|
|
| 23 |
|
| 24 |
-
|
|
|
|
|
|
|
| 25 |
|
| 26 |
return {
|
| 27 |
-
"
|
| 28 |
-
"
|
| 29 |
-
"
|
| 30 |
-
"element": elements[
|
| 31 |
-
"
|
| 32 |
-
"branch_desc": f"์ง์ง๋ {ji[branch_idx]}"
|
| 33 |
}
|
| 34 |
|
| 35 |
-
def
|
| 36 |
"""
|
| 37 |
-
๋ณธ๋ช
๊ถ
|
| 38 |
"""
|
| 39 |
-
#
|
| 40 |
-
|
| 41 |
-
digits_sum = sum(int(digit) for digit in str(birth_year))
|
| 42 |
while digits_sum > 9:
|
| 43 |
digits_sum = sum(int(digit) for digit in str(digits_sum))
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
gua_num = digits_sum + 4
|
| 50 |
|
| 51 |
-
|
| 52 |
-
while
|
| 53 |
-
|
| 54 |
-
if gua_num == 5: # 5ํฉํ ์ฑ์ ๋จ์๋ 2(๊ณค), ์ฌ์๋ 8(๊ฐ)์ผ๋ก ์นํ
|
| 55 |
-
gua_num = 2 if gender == "๋จ์ฑ" else 8
|
| 56 |
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
is_east_group = gua_num in [1, 3, 4, 9]
|
| 60 |
-
group_name = "๋์ฌํ(East Group)" if is_east_group else "์์ฌํ(West Group)"
|
| 61 |
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
|
|
|
|
|
|
| 67 |
|
| 68 |
-
|
| 69 |
-
|
| 70 |
|
| 71 |
return {
|
| 72 |
-
"
|
| 73 |
-
"group":
|
| 74 |
-
"
|
| 75 |
-
"
|
| 76 |
-
"advice": f"
|
| 77 |
}
|
|
|
|
| 1 |
# utils/calculations.py
|
| 2 |
|
| 3 |
+
def get_ganji_full(birth_date, birth_time, calendar_type):
|
| 4 |
"""
|
| 5 |
+
์๋
์์ผ์๋ฅผ ์
๋ ฅ๋ฐ์ ์ฌ์ฃผํ์(๋ค ๊ธฐ๋ฅ) ์ ๋ณด๋ฅผ ๊ณ์ฐ (์ฝ์)
|
| 6 |
"""
|
| 7 |
+
# ์ฒ๊ฐ/์ง์ง ๋ฐ์ดํฐ
|
| 8 |
+
cheon = ["๊ฐ", "์", "๋ณ", "์ ", "๋ฌด", "๊ธฐ", "๊ฒฝ", "์ ", "์", "๊ณ"]
|
| 9 |
+
ji = ["์", "์ถ", "์ธ", "๋ฌ", "์ง", "์ฌ", "์ค", "๋ฏธ", "์ ", "์ ", "์ ", "ํด"]
|
| 10 |
+
elements = {"๊ฐ": "๋ชฉ", "์": "๋ชฉ", "๋ณ": "ํ", "์ ": "ํ", "๋ฌด": "ํ ", "๊ธฐ": "ํ ", "๊ฒฝ": "๊ธ", "์ ": "๊ธ", "์": "์", "๊ณ": "์"}
|
| 11 |
+
animals = {"์": "์ฅ", "์ถ": "์", "์ธ": "๋ฒ", "๋ฌ": "ํ ๋ผ", "์ง": "์ฉ", "์ฌ": "๋ฑ", "์ค": "๋ง", "๋ฏธ": "์", "์ ": "์์ญ์ด", "์ ": "๋ญ", "์ ": "๊ฐ", "ํด": "๋ผ์ง"}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
+
year = birth_date.year
|
| 14 |
+
|
| 15 |
+
# 1. ์ฐ์ฃผ(Year Pillar) ๊ณ์ฐ
|
| 16 |
+
y_idx = year - 4
|
| 17 |
+
y_stem = cheon[y_idx % 10]
|
| 18 |
+
y_branch = ji[y_idx % 12]
|
| 19 |
|
| 20 |
+
# 2. ์์ฃผ, ์ผ์ฃผ, ์์ฃผ (์ ํํ ๋ง์ธ๋ ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ฏ๋ก ์ฌ๊ธฐ์ Mockup ๋ก์ง ์ฌ์ฉ)
|
| 21 |
+
# ์ค์ ์ฑ์์ 'korean-lunar-calendar' ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๊ถ์ฅ
|
| 22 |
+
# ์ฌ๊ธฐ์ AI์๊ฒ ์ ํํ ๋ ์ง๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ ์ง์ค
|
| 23 |
|
| 24 |
return {
|
| 25 |
+
"text_data": f"{year}๋
{birth_date.month}์ {birth_date.day}์ผ {birth_time.hour}์ {birth_time.minute}๋ถ ({calendar_type})",
|
| 26 |
+
"year_ganji": f"{y_stem}{y_branch}",
|
| 27 |
+
"animal": animals[y_branch],
|
| 28 |
+
"element": elements[y_stem], # ํ์ด๋ ํด์ ์ฒ๊ฐ ๊ธฐ์ค (๋ ์๊น ๊ฒฐ์ )
|
| 29 |
+
"desc": f"๋น์ ์ {animals[y_branch]}๋ ์ด๋ฉฐ, {elements[y_stem]}({y_stem})์ ๊ธฐ์ด์ ๊ฐ์ง๊ณ ํ์ด๋ฌ์ต๋๋ค."
|
|
|
|
| 30 |
}
|
| 31 |
|
| 32 |
+
def get_fengshui_advanced(year, gender, door_dir, head_dir):
|
| 33 |
"""
|
| 34 |
+
๋ณธ๋ช
๊ถ + ์นจ๋ ๋ฐฉํฅ ์ ๋ฐ ๋ถ์
|
| 35 |
"""
|
| 36 |
+
# ๋ณธ๋ช
๊ถ ๊ณ์ฐ (๊ฐ๋ต์)
|
| 37 |
+
digits_sum = sum(int(digit) for digit in str(year))
|
|
|
|
| 38 |
while digits_sum > 9:
|
| 39 |
digits_sum = sum(int(digit) for digit in str(digits_sum))
|
| 40 |
|
| 41 |
+
if gender == "๋จ์ฑ" or gender == "Male":
|
| 42 |
+
gua = 11 - digits_sum
|
| 43 |
+
else:
|
| 44 |
+
gua = digits_sum + 4
|
|
|
|
| 45 |
|
| 46 |
+
while gua > 9: gua -= 9
|
| 47 |
+
while gua < 1: gua += 9
|
| 48 |
+
if gua == 5: gua = 2 if (gender == "๋จ์ฑ" or gender == "Male") else 8
|
|
|
|
|
|
|
| 49 |
|
| 50 |
+
is_east = gua in [1, 3, 4, 9]
|
| 51 |
+
group = "๋์ฌํ (East Group)" if is_east else "์์ฌํ (West Group)"
|
|
|
|
|
|
|
| 52 |
|
| 53 |
+
good_dirs = ["๋ถ", "๋", "๋จ", "๋จ๋"] if is_east else ["๋ถ๋", "๋จ์", "์", "๋ถ์"]
|
| 54 |
+
|
| 55 |
+
# ์นจ๋ ๏ฟฝ๏ฟฝ๏ฟฝํฅ ์ง๋จ
|
| 56 |
+
korean_dirs = {"N": "๋ถ", "NE": "๋ถ๋", "E": "๋", "SE": "๋จ๋", "S": "๋จ", "SW": "๋จ์", "W": "์", "NW": "๋ถ์"}
|
| 57 |
+
|
| 58 |
+
# ์
๋ ฅ๋ ์๋ฌธ ๋ฐฉํฅ์ ํ๊ธ๋ก ๋ณํ (๋น๊ต์ฉ)
|
| 59 |
+
head_kor = korean_dirs.get(door_dir, door_dir) # ๋งคํ ์ ๋๋ฉด ๊ทธ๋๋ก
|
| 60 |
|
| 61 |
+
# ๋งค์นญ ์ฌ๋ถ (๋จ์ ๋ฌธ์์ด ํฌํจ ์ฌ๋ถ๋ก ์ฒดํฌ)
|
| 62 |
+
is_good_head = any(d in head_dir for d in good_dirs) or (head_dir in good_dirs)
|
| 63 |
|
| 64 |
return {
|
| 65 |
+
"gua": gua,
|
| 66 |
+
"group": group,
|
| 67 |
+
"good_dirs": ", ".join(good_dirs),
|
| 68 |
+
"match": is_good_head,
|
| 69 |
+
"advice": f"๊ทํ๋ {group}์
๋๋ค. {head_dir} ๋ฐฉํฅ์ ๊ทํ์๊ฒ {'์ข์' if is_good_head else '๋์'} ๊ธฐ์ด์ ์ค๋๋ค."
|
| 70 |
}
|