🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
4.4 KiB
Access Points Fix Results - Map ID 16950
Test Date: 2025-12-09
Test Type: First 10 records
Map ID: 16950
Fix Applied: Changed field name from isLocked to locked
Summary
| Layer | Records Attempted | Records Uploaded | Status |
|---|---|---|---|
| access_points.shp | 10 | 10 | ✅ SUCCESS |
Result: 100% success rate! 🎉
The Fix
Problem
The API was returning a 500 error:
PHP Warning: Undefined array key "isLocked"
Root Cause
The uploader was sending isLocked (camelCase) but the API expects locked (lowercase).
Solution
Changed one line in /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:496
Before:
ap_data = {
"mapProjectId": int(map_id),
"name": f"AP-{idx}",
"latitude": str(lat),
"longitude": str(lon),
"typeId": type_id,
"isLocked": 0 # ❌ Wrong field name
}
After:
ap_data = {
"mapProjectId": int(map_id),
"name": f"AP-{idx}",
"latitude": str(lat),
"longitude": str(lon),
"typeId": type_id,
"locked": 0 # ✅ Correct field name
}
Test Results
All 10 Access Points Uploaded Successfully
Sample Data Sent:
Access Point 0 (Vault - typeId 3):
{
"mapProjectId": 16950,
"name": "AP-0",
"latitude": "40.792075732",
"longitude": "-124.129212629",
"typeId": 3,
"locked": 0,
"group1": "Zone 03"
}
Access Point 5 (Handhole - typeId 1):
{
"mapProjectId": 16950,
"name": "AP-5",
"latitude": "40.790936719137754",
"longitude": "-124.13472765503045",
"typeId": 1,
"locked": 0,
"group1": "Zone 03"
}
Type Distribution
From the 10 test records:
- Type 1 (Handhole): 5 records
- Type 3 (Vault): 5 records
All types uploaded successfully with no errors.
Group Field Mapping
Group 1: All records had Zone assignments (Zone 02, Zone 03) Group 2: Only 2 records had Group 2 values ("13", "14")
Both optional fields mapped correctly.
Updated Success Rate
Overall Upload Status (After Access Points Fix)
| Layer | Status |
|---|---|
| ✅ Poles | Working (10/10) |
| ✅ Segments | Working (10/10) |
| ✅ Sites | Working (10/10) |
| ✅ Access Points | NOW WORKING (10/10) |
| ❌ Network Elements | Needs debug output |
| ❌ Splicing | Needs debug output + endpoint fix |
| ❌ Cabinet Boundaries | API bug (data field issue) |
| ❌ Cables | API bug (data field issue) |
| ❌ Parcels | API bug (data field issue) |
| ❌ Permits | Missing required fields |
Success Rate: 4 out of 10 layers now working (40%) Records Uploaded: 40 out of 40 tested for working layers (100%)
Next Steps
Quick Wins Remaining
-
Network Elements (Priority: HIGH)
- Add debug output to see what's being sent
- Check for any missing required fields
- Should be quick fix like access_points
-
Splicing (Priority: HIGH)
- Add debug output
- Verify endpoint name (
map-splicevsmap-splicing) - Check for missing required fields
Requires Research
- Permits (Priority: MEDIUM)
- Research MapPermitStatus references
- Research MapPermitEntityType references
- Research MapPermitULRType references
- Add required fields with appropriate defaults
Blocked by API Bug
- Info Layers (Cabinet Boundaries, Cables, Parcels)
- Waiting on Verofy API fix for
datafield issue - Metric calculations are working correctly
- Can be imported manually through web interface meanwhile
- Waiting on Verofy API fix for
Lessons Learned
- Field Name Consistency: Always check API documentation for exact field names
- Debug Output is Critical: The debug output showing the exact data being sent was essential for identifying the issue
- Simple Fixes Matter: A one-line change fixed an entire layer
- Test Early, Test Often: Testing individual layers helps isolate issues quickly
Code Location
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py
Line: 496
Method: _upload_access_points()
Change: isLocked → locked
Verification
To verify this fix in production:
- Upload access_points.shp to any map
- Check Verofy web interface to confirm access points appear
- Verify locked status is set correctly (should be unlocked by default)
- Verify typeId mapping is correct (Handhole, Vault, etc.)
- Verify Group 1 and Group 2 fields are populated correctly