Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -137,7 +137,7 @@ def normalize_wardrobe_item(itm: Dict[str, Any]) -> Dict[str, Any]:
|
|
| 137 |
return {}
|
| 138 |
|
| 139 |
# Prefer explicit thumbnail_url, then camelCase thumbnailUrl, then thumbnail, then thumbnailPath
|
| 140 |
-
thumb = itm.get("
|
| 141 |
|
| 142 |
title = itm.get("title") or itm.get("label") or (itm.get("analysis") or {}).get("type") or ""
|
| 143 |
label = itm.get("label") or itm.get("title") or title or ""
|
|
@@ -149,7 +149,7 @@ def normalize_wardrobe_item(itm: Dict[str, Any]) -> Dict[str, Any]:
|
|
| 149 |
"id": itm.get("id") or itm.get("doc_id") or "",
|
| 150 |
"label": label,
|
| 151 |
"title": title,
|
| 152 |
-
"
|
| 153 |
"analysis": itm.get("analysis") or {},
|
| 154 |
"confidence": float(confidence) if confidence is not None else 0.8,
|
| 155 |
# keep original payload for debugging if needed
|
|
@@ -222,7 +222,7 @@ def naive_generate_candidates(wardrobe_items: List[Dict[str, Any]],
|
|
| 222 |
"id": x.get("id"),
|
| 223 |
"label": x.get("label"),
|
| 224 |
"title": x.get("title"),
|
| 225 |
-
"
|
| 226 |
"analysis": x.get("analysis", {})
|
| 227 |
} for x in items
|
| 228 |
],
|
|
@@ -261,7 +261,7 @@ def generate_candidates_with_gemini(wardrobe_items: List[Dict[str, Any]],
|
|
| 261 |
"summary": (a.get("summary") or "")[:180],
|
| 262 |
"brand": (a.get("brand") or "")[:80],
|
| 263 |
"tags": a.get("tags") or [],
|
| 264 |
-
"
|
| 265 |
})
|
| 266 |
|
| 267 |
prompt = (
|
|
@@ -305,7 +305,7 @@ def generate_candidates_with_gemini(wardrobe_items: List[Dict[str, Any]],
|
|
| 305 |
for iid in c.get("item_ids", []):
|
| 306 |
itm = id_map.get(str(iid))
|
| 307 |
if itm:
|
| 308 |
-
items.append({"id": itm.get("id"), "label": itm.get("label"), "title": itm.get("title"), "thumbnail_url": itm.get("
|
| 309 |
out.append({
|
| 310 |
"id": c.get("id") or str(uuid.uuid4()),
|
| 311 |
"items": items,
|
|
@@ -365,7 +365,7 @@ def refine_candidates_with_constraints(candidates: List[Dict[str, Any]],
|
|
| 365 |
"id": it.get("id"),
|
| 366 |
"label": it.get("label"),
|
| 367 |
"title": it.get("title"),
|
| 368 |
-
"
|
| 369 |
"analysis": it.get("analysis", {}),
|
| 370 |
"confidence": it.get("confidence", 0.5),
|
| 371 |
} for it in resolved
|
|
@@ -484,12 +484,12 @@ def fetch_wardrobe_from_firestore(uid: str) -> List[Dict[str, Any]]:
|
|
| 484 |
for d in docs:
|
| 485 |
dd = d.to_dict() or {}
|
| 486 |
# accept both snake_case and camelCase thumbnail fields
|
| 487 |
-
thumb = dd.get("
|
| 488 |
items.append({
|
| 489 |
"id": dd.get("id") or d.id,
|
| 490 |
"label": dd.get("label") or dd.get("title") or "item",
|
| 491 |
"title": dd.get("title") or dd.get("label") or "",
|
| 492 |
-
"
|
| 493 |
"analysis": dd.get("analysis", {}),
|
| 494 |
"confidence": dd.get("confidence", 0.8),
|
| 495 |
})
|
|
@@ -506,12 +506,12 @@ def fetch_wardrobe_from_firestore(uid: str) -> List[Dict[str, Any]]:
|
|
| 506 |
items = []
|
| 507 |
for d in docs:
|
| 508 |
dd = d.to_dict() or {}
|
| 509 |
-
thumb = dd.get("
|
| 510 |
items.append({
|
| 511 |
"id": dd.get("id") or d.id,
|
| 512 |
"label": dd.get("label") or dd.get("title") or "item",
|
| 513 |
"title": dd.get("title") or dd.get("label") or "",
|
| 514 |
-
"
|
| 515 |
"analysis": dd.get("analysis", {}),
|
| 516 |
"confidence": dd.get("confidence", 0.8),
|
| 517 |
})
|
|
@@ -673,7 +673,7 @@ def suggest_all():
|
|
| 673 |
log.warning("Failed to produce final note for candidate %s: %s", cand.get("id"), e)
|
| 674 |
note = cand.get("notes") or cand.get("reason") or "A curated outfit."
|
| 675 |
|
| 676 |
-
thumb_urls = [it.get("
|
| 677 |
|
| 678 |
suggestion = {
|
| 679 |
"id": cand.get("id") or str(uuid.uuid4()),
|
|
|
|
| 137 |
return {}
|
| 138 |
|
| 139 |
# Prefer explicit thumbnail_url, then camelCase thumbnailUrl, then thumbnail, then thumbnailPath
|
| 140 |
+
thumb = itm.get("thumbnailUrl") # or itm.get("thumbnailUrl") or itm.get("thumbnail") or itm.get("thumbnailPath") or None
|
| 141 |
|
| 142 |
title = itm.get("title") or itm.get("label") or (itm.get("analysis") or {}).get("type") or ""
|
| 143 |
label = itm.get("label") or itm.get("title") or title or ""
|
|
|
|
| 149 |
"id": itm.get("id") or itm.get("doc_id") or "",
|
| 150 |
"label": label,
|
| 151 |
"title": title,
|
| 152 |
+
"thumbnailUrl": thumb,
|
| 153 |
"analysis": itm.get("analysis") or {},
|
| 154 |
"confidence": float(confidence) if confidence is not None else 0.8,
|
| 155 |
# keep original payload for debugging if needed
|
|
|
|
| 222 |
"id": x.get("id"),
|
| 223 |
"label": x.get("label"),
|
| 224 |
"title": x.get("title"),
|
| 225 |
+
"thumbnailUrl": x.get("thumbnailUrl"),
|
| 226 |
"analysis": x.get("analysis", {})
|
| 227 |
} for x in items
|
| 228 |
],
|
|
|
|
| 261 |
"summary": (a.get("summary") or "")[:180],
|
| 262 |
"brand": (a.get("brand") or "")[:80],
|
| 263 |
"tags": a.get("tags") or [],
|
| 264 |
+
"thumbnailUrl": it.get("thumbnailUrl") or ""
|
| 265 |
})
|
| 266 |
|
| 267 |
prompt = (
|
|
|
|
| 305 |
for iid in c.get("item_ids", []):
|
| 306 |
itm = id_map.get(str(iid))
|
| 307 |
if itm:
|
| 308 |
+
items.append({"id": itm.get("id"), "label": itm.get("label"), "title": itm.get("title"), "thumbnail_url": itm.get("thumbnailUrl"), "analysis": itm.get("analysis", {})})
|
| 309 |
out.append({
|
| 310 |
"id": c.get("id") or str(uuid.uuid4()),
|
| 311 |
"items": items,
|
|
|
|
| 365 |
"id": it.get("id"),
|
| 366 |
"label": it.get("label"),
|
| 367 |
"title": it.get("title"),
|
| 368 |
+
"thumbnailUrl": it.get("thumbnailUrl"),
|
| 369 |
"analysis": it.get("analysis", {}),
|
| 370 |
"confidence": it.get("confidence", 0.5),
|
| 371 |
} for it in resolved
|
|
|
|
| 484 |
for d in docs:
|
| 485 |
dd = d.to_dict() or {}
|
| 486 |
# accept both snake_case and camelCase thumbnail fields
|
| 487 |
+
thumb = dd.get("thumbnailUrl") # or dd.get("thumbnailUrl") or dd.get("thumbnail") or dd.get("thumbnailPath") or None
|
| 488 |
items.append({
|
| 489 |
"id": dd.get("id") or d.id,
|
| 490 |
"label": dd.get("label") or dd.get("title") or "item",
|
| 491 |
"title": dd.get("title") or dd.get("label") or "",
|
| 492 |
+
"thumbnailUrl": thumb,
|
| 493 |
"analysis": dd.get("analysis", {}),
|
| 494 |
"confidence": dd.get("confidence", 0.8),
|
| 495 |
})
|
|
|
|
| 506 |
items = []
|
| 507 |
for d in docs:
|
| 508 |
dd = d.to_dict() or {}
|
| 509 |
+
thumb = dd.get("thumbnailUrl") # or dd.get("thumbnailUrl") or dd.get("thumbnail") or dd.get("thumbnailPath") or None
|
| 510 |
items.append({
|
| 511 |
"id": dd.get("id") or d.id,
|
| 512 |
"label": dd.get("label") or dd.get("title") or "item",
|
| 513 |
"title": dd.get("title") or dd.get("label") or "",
|
| 514 |
+
"thumbnailUrl": thumb,
|
| 515 |
"analysis": dd.get("analysis", {}),
|
| 516 |
"confidence": dd.get("confidence", 0.8),
|
| 517 |
})
|
|
|
|
| 673 |
log.warning("Failed to produce final note for candidate %s: %s", cand.get("id"), e)
|
| 674 |
note = cand.get("notes") or cand.get("reason") or "A curated outfit."
|
| 675 |
|
| 676 |
+
thumb_urls = [it.get("thumbnailUrl") # for it in cand.get("items", []) if it.get("thumbnail_url")]
|
| 677 |
|
| 678 |
suggestion = {
|
| 679 |
"id": cand.get("id") or str(uuid.uuid4()),
|