Spaces:
Sleeping
Sleeping
Prince Vaviya commited on
Commit ·
6445bd1
1
Parent(s): 17b6c6d
improved reasoning
Browse files- app.py +1 -3
- size_rules.py +12 -14
app.py
CHANGED
|
@@ -14,11 +14,9 @@ def predict_size(chest, waist, bicep, shoulder, fit_pref):
|
|
| 14 |
|
| 15 |
explanation = {
|
| 16 |
"recommended_size": final_size,
|
| 17 |
-
"base_size": base_size,
|
| 18 |
"fit_preference": fit_pref,
|
| 19 |
-
"final_size": final_size,
|
| 20 |
"confidence": "high",
|
| 21 |
-
"reason": f"{base_reason}
|
| 22 |
}
|
| 23 |
|
| 24 |
html_output = f"""
|
|
|
|
| 14 |
|
| 15 |
explanation = {
|
| 16 |
"recommended_size": final_size,
|
|
|
|
| 17 |
"fit_preference": fit_pref,
|
|
|
|
| 18 |
"confidence": "high",
|
| 19 |
+
"reason": f"{base_reason} {fit_reason}"
|
| 20 |
}
|
| 21 |
|
| 22 |
html_output = f"""
|
size_rules.py
CHANGED
|
@@ -25,29 +25,24 @@ def evaluate_size(measurements):
|
|
| 25 |
# This is the smallest size that fits.
|
| 26 |
# Determine reasoning.
|
| 27 |
if i == 0:
|
| 28 |
-
return size, "
|
| 29 |
|
| 30 |
# Check why the previous size failed logic
|
| 31 |
prev_size = ordered_sizes[i-1]
|
| 32 |
prev_limits = SIZE_CHART[prev_size]
|
| 33 |
-
|
| 34 |
for key in PRIORITY:
|
| 35 |
if measurements[key] > prev_limits[key][1]:
|
| 36 |
-
|
| 37 |
|
| 38 |
-
reason_str = f"
|
| 39 |
return size, reason_str
|
| 40 |
|
| 41 |
# If even XL fails (XL max is exceeded)
|
| 42 |
# We return XL+
|
| 43 |
# Find what exceeded XL
|
| 44 |
xl_limits = SIZE_CHART["XL"]
|
| 45 |
-
|
| 46 |
-
for key in PRIORITY:
|
| 47 |
-
if measurements[key] > xl_limits[key][1]:
|
| 48 |
-
reasons.append(f"{key.capitalize()} ({measurements[key]}) > XL limit ({xl_limits[key][1]})")
|
| 49 |
-
|
| 50 |
-
return "XL+", "Measurements exceed XL limits: " + ", ".join(reasons)
|
| 51 |
|
| 52 |
def apply_fit_preference(base_size, preference, measurements=None):
|
| 53 |
"""
|
|
@@ -85,14 +80,17 @@ def apply_fit_preference(base_size, preference, measurements=None):
|
|
| 85 |
# e.g., measurement 40.0 (int 40) matches limit 40 (int 40)
|
| 86 |
if int(measurements[key]) == int(limits[key][1]):
|
| 87 |
extension_needed = True
|
| 88 |
-
reasons.append(f"{key}
|
| 89 |
|
| 90 |
if extension_needed:
|
| 91 |
if idx < len(sizes) - 1:
|
| 92 |
-
|
|
|
|
|
|
|
|
|
|
| 93 |
else:
|
| 94 |
-
return base_size, "
|
| 95 |
else:
|
| 96 |
-
return base_size, "
|
| 97 |
|
| 98 |
return base_size, "Unknown preference"
|
|
|
|
| 25 |
# This is the smallest size that fits.
|
| 26 |
# Determine reasoning.
|
| 27 |
if i == 0:
|
| 28 |
+
return size, f"Your measurements fit well in size {size}."
|
| 29 |
|
| 30 |
# Check why the previous size failed logic
|
| 31 |
prev_size = ordered_sizes[i-1]
|
| 32 |
prev_limits = SIZE_CHART[prev_size]
|
| 33 |
+
simplified_reasons = []
|
| 34 |
for key in PRIORITY:
|
| 35 |
if measurements[key] > prev_limits[key][1]:
|
| 36 |
+
simplified_reasons.append(f"{key.capitalize()} ({measurements[key]}) is larger than size {prev_size}")
|
| 37 |
|
| 38 |
+
reason_str = f"We recommend size {size} because your " + " and ".join(simplified_reasons) + "."
|
| 39 |
return size, reason_str
|
| 40 |
|
| 41 |
# If even XL fails (XL max is exceeded)
|
| 42 |
# We return XL+
|
| 43 |
# Find what exceeded XL
|
| 44 |
xl_limits = SIZE_CHART["XL"]
|
| 45 |
+
return "XL+", f"Your measurements are larger than size XL."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
def apply_fit_preference(base_size, preference, measurements=None):
|
| 48 |
"""
|
|
|
|
| 80 |
# e.g., measurement 40.0 (int 40) matches limit 40 (int 40)
|
| 81 |
if int(measurements[key]) == int(limits[key][1]):
|
| 82 |
extension_needed = True
|
| 83 |
+
reasons.append(f"{key}")
|
| 84 |
|
| 85 |
if extension_needed:
|
| 86 |
if idx < len(sizes) - 1:
|
| 87 |
+
# Extract just the key names for the reason
|
| 88 |
+
matching_keys = [r.split()[0].capitalize() for r in reasons]
|
| 89 |
+
keys_str = " and ".join(matching_keys)
|
| 90 |
+
return sizes[idx + 1], f"Your {keys_str} is at the very top of size {base_size}, so we suggest size {sizes[idx + 1]} for a comfortable Regular fit."
|
| 91 |
else:
|
| 92 |
+
return base_size, f"You are at the top of size {base_size}, which is the largest available."
|
| 93 |
else:
|
| 94 |
+
return base_size, f"Size {base_size} provides the best Regular fit for you."
|
| 95 |
|
| 96 |
return base_size, "Unknown preference"
|