Spaces:
Runtime error
Runtime error
fix: Update upload-survey endpoint with working detection flow
Browse files- src/api/main.py +19 -49
src/api/main.py
CHANGED
|
@@ -558,12 +558,13 @@ async def analyze_survey(request: AnalysisRequest):
|
|
| 558 |
@app.post("/upload-survey")
|
| 559 |
async def upload_survey(files: List[UploadFile] = File(...)):
|
| 560 |
"""
|
| 561 |
-
Upload survey images
|
| 562 |
-
Returns
|
|
|
|
| 563 |
"""
|
| 564 |
results = []
|
| 565 |
|
| 566 |
-
print(f"[UPLOAD]
|
| 567 |
|
| 568 |
for file in files:
|
| 569 |
# Skip non-image files
|
|
@@ -595,59 +596,28 @@ async def upload_survey(files: List[UploadFile] = File(...)):
|
|
| 595 |
gps_data = extract_gps_from_image(contents)
|
| 596 |
base_lat = gps_data["latitude"]
|
| 597 |
base_lon = gps_data["longitude"]
|
| 598 |
-
print(f"[GPS] GPS from {file.filename}: lat={base_lat}, lon={base_lon}")
|
| 599 |
|
| 600 |
-
#
|
| 601 |
-
|
| 602 |
-
|
| 603 |
-
|
| 604 |
-
|
| 605 |
-
|
| 606 |
-
|
| 607 |
-
|
| 608 |
-
|
| 609 |
-
|
| 610 |
-
|
| 611 |
-
|
| 612 |
-
|
| 613 |
-
"longitude": float(base_lon),
|
| 614 |
-
"image_url": image_url,
|
| 615 |
-
"filename": unique_name
|
| 616 |
-
})
|
| 617 |
-
else:
|
| 618 |
-
# Add all detections found
|
| 619 |
-
for det in ensemble_results:
|
| 620 |
-
# Classify severity based on size or confidence
|
| 621 |
-
conf = float(det["confidence"])
|
| 622 |
-
if conf >= 0.8:
|
| 623 |
-
severity = "heavy"
|
| 624 |
-
elif conf >= 0.5:
|
| 625 |
-
severity = "medium"
|
| 626 |
-
else:
|
| 627 |
-
severity = "light"
|
| 628 |
-
|
| 629 |
-
results.append({
|
| 630 |
-
"x1": int(det["box"][0]), "y1": int(det["box"][1]),
|
| 631 |
-
"x2": int(det["box"][2]), "y2": int(det["box"][3]),
|
| 632 |
-
"class_name": det["class_name"],
|
| 633 |
-
"class_id": det.get("class_id", 0),
|
| 634 |
-
"confidence": conf,
|
| 635 |
-
"severity": severity,
|
| 636 |
-
"latitude": float(base_lat),
|
| 637 |
-
"longitude": float(base_lon),
|
| 638 |
-
"image_url": image_url,
|
| 639 |
-
"filename": unique_name
|
| 640 |
-
})
|
| 641 |
-
print(f"[DETECT] {file.filename}: Found {len(ensemble_results)} damages")
|
| 642 |
|
| 643 |
except Exception as e:
|
| 644 |
import traceback
|
| 645 |
-
print(f"[ERROR] Error
|
| 646 |
traceback.print_exc()
|
| 647 |
continue
|
| 648 |
|
| 649 |
-
print(f"[DONE] Processed {len(files)} files, {len(results)} detections total")
|
| 650 |
-
|
| 651 |
return {
|
| 652 |
"success": True,
|
| 653 |
"total_files": len(files),
|
|
|
|
| 558 |
@app.post("/upload-survey")
|
| 559 |
async def upload_survey(files: List[UploadFile] = File(...)):
|
| 560 |
"""
|
| 561 |
+
Upload survey images and extract GPS data only.
|
| 562 |
+
Returns 'Pending' points for map display.
|
| 563 |
+
Use /analyze-survey to run AI detection later.
|
| 564 |
"""
|
| 565 |
results = []
|
| 566 |
|
| 567 |
+
print(f"[UPLOAD] Uploading {len(files)} survey files...")
|
| 568 |
|
| 569 |
for file in files:
|
| 570 |
# Skip non-image files
|
|
|
|
| 596 |
gps_data = extract_gps_from_image(contents)
|
| 597 |
base_lat = gps_data["latitude"]
|
| 598 |
base_lon = gps_data["longitude"]
|
| 599 |
+
print(f"[GPS] GPS from {file.filename}: lat={base_lat}, lon={base_lon}, success={gps_data.get('success')}")
|
| 600 |
|
| 601 |
+
# Return "Pending" point for map
|
| 602 |
+
results.append({
|
| 603 |
+
"x1": 0, "y1": 0, "x2": 0, "y2": 0,
|
| 604 |
+
"class_name": "Pending",
|
| 605 |
+
"class_id": -2,
|
| 606 |
+
"confidence": 0.0,
|
| 607 |
+
"severity": "none",
|
| 608 |
+
"latitude": float(base_lat),
|
| 609 |
+
"longitude": float(base_lon),
|
| 610 |
+
"image_url": image_url,
|
| 611 |
+
"filename": unique_name
|
| 612 |
+
})
|
| 613 |
+
print(f"[OK] Uploaded: {file.filename} -> {unique_name}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 614 |
|
| 615 |
except Exception as e:
|
| 616 |
import traceback
|
| 617 |
+
print(f"[ERROR] Error uploading {file.filename}: {e}")
|
| 618 |
traceback.print_exc()
|
| 619 |
continue
|
| 620 |
|
|
|
|
|
|
|
| 621 |
return {
|
| 622 |
"success": True,
|
| 623 |
"total_files": len(files),
|