DawnC commited on
Commit
22372d8
·
verified ·
1 Parent(s): 27aad4b

Delete breed_recommendation.py

Browse files
Files changed (1) hide show
  1. breed_recommendation.py +0 -133
breed_recommendation.py DELETED
@@ -1,133 +0,0 @@
1
- from typing import Dict, Any
2
- import traceback
3
- import gradio as gr
4
- from recommendation_html_format import (
5
- format_recommendation_html,
6
- get_breed_recommendations
7
- )
8
-
9
- def create_recommendation_tab(UserPreferences, get_breed_recommendations, format_recommendation_html, history_component):
10
-
11
- with gr.TabItem("Breed Recommendation"):
12
- gr.HTML("<p style='text-align: center;'>Tell us about your lifestyle, and we'll recommend the perfect dog breeds for you!</p>")
13
-
14
- with gr.Row():
15
- with gr.Column():
16
- living_space = gr.Radio(
17
- choices=["apartment", "house_small", "house_large"],
18
- label="What type of living space do you have?",
19
- info="Choose your current living situation",
20
- value="apartment"
21
- )
22
-
23
- exercise_time = gr.Slider(
24
- minimum=0,
25
- maximum=180,
26
- value=60,
27
- label="Daily exercise time (minutes)",
28
- info="Consider walks, play time, and training"
29
- )
30
-
31
- grooming_commitment = gr.Radio(
32
- choices=["low", "medium", "high"],
33
- label="Grooming commitment level",
34
- info="Low: monthly, Medium: weekly, High: daily",
35
- value="medium"
36
- )
37
-
38
- with gr.Column():
39
- experience_level = gr.Radio(
40
- choices=["beginner", "intermediate", "advanced"],
41
- label="Dog ownership experience",
42
- info="Be honest - this helps find the right match",
43
- value="beginner"
44
- )
45
-
46
- has_children = gr.Checkbox(
47
- label="Have children at home",
48
- info="Helps recommend child-friendly breeds"
49
- )
50
-
51
- noise_tolerance = gr.Radio(
52
- choices=["low", "medium", "high"],
53
- label="Noise tolerance level",
54
- info="Some breeds are more vocal than others",
55
- value="medium"
56
- )
57
-
58
- get_recommendations_btn = gr.Button("Find My Perfect Match! 🔍", variant="primary")
59
- recommendation_output = gr.HTML(label="Breed Recommendations")
60
-
61
- def on_find_match_click(*args):
62
- try:
63
- user_prefs = UserPreferences(
64
- living_space=args[0],
65
- exercise_time=args[1],
66
- grooming_commitment=args[2],
67
- experience_level=args[3],
68
- has_children=args[4],
69
- noise_tolerance=args[5],
70
- space_for_play=True if args[0] != "apartment" else False,
71
- other_pets=False,
72
- climate="moderate",
73
- health_sensitivity="medium", # 新增: 默認中等敏感度
74
- barking_acceptance=args[5] # 使用 noise_tolerance 作為 barking_acceptance
75
- )
76
-
77
- recommendations = get_breed_recommendations(user_prefs, top_n=10)
78
-
79
- history_results = [{
80
- 'breed': rec['breed'],
81
- 'rank': rec['rank'],
82
- 'overall_score': rec['final_score'],
83
- 'base_score': rec['base_score'],
84
- 'bonus_score': rec['bonus_score'],
85
- 'scores': rec['scores']
86
- } for rec in recommendations]
87
-
88
- # 保存到歷史記錄,也需要更新保存的偏好設定
89
- history_component.save_search(
90
- user_preferences={
91
- 'living_space': args[0],
92
- 'exercise_time': args[1],
93
- 'grooming_commitment': args[2],
94
- 'experience_level': args[3],
95
- 'has_children': args[4],
96
- 'noise_tolerance': args[5],
97
- 'health_sensitivity': "medium",
98
- 'barking_acceptance': args[5]
99
- },
100
- results=history_results
101
- )
102
-
103
- return format_recommendation_html(recommendations)
104
-
105
- except Exception as e:
106
- print(f"Error in find match: {str(e)}")
107
- import traceback
108
- print(traceback.format_exc())
109
- return "Error getting recommendations"
110
-
111
- get_recommendations_btn.click(
112
- fn=on_find_match_click,
113
- inputs=[
114
- living_space,
115
- exercise_time,
116
- grooming_commitment,
117
- experience_level,
118
- has_children,
119
- noise_tolerance
120
- ],
121
- outputs=recommendation_output
122
- )
123
-
124
- return {
125
- 'living_space': living_space,
126
- 'exercise_time': exercise_time,
127
- 'grooming_commitment': grooming_commitment,
128
- 'experience_level': experience_level,
129
- 'has_children': has_children,
130
- 'noise_tolerance': noise_tolerance,
131
- 'get_recommendations_btn': get_recommendations_btn,
132
- 'recommendation_output': recommendation_output
133
- }