🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5.7 KiB
Upload Test Results - Map ID 16950
Test Date: 2025-12-09 Test Type: First 10 records per shapefile layer Map ID: 16950
Summary
| Layer | Records Attempted | Records Uploaded | Status |
|---|---|---|---|
| poles.shp | 10 | 10 | ✅ SUCCESS |
| segments.shp | 10 | 10 | ✅ SUCCESS |
| sites.shp | 10 | 10 | ✅ SUCCESS |
| access_points.shp | 10 | 0 | ❌ FAILED |
| network_elements.shp | 10 | 0 | ❌ FAILED |
| splicing.shp | 10 | 0 | ❌ FAILED |
| cabinet_boundaries.shp | 3 | 0 | ❌ FAILED |
| cables.shp | 3 | 0 | ❌ FAILED |
| parcels.shp | 3 | 0 | ❌ FAILED |
| permits.shp | 10 | 0 | ❌ FAILED |
Overall: 30 out of 59 records uploaded successfully (51%)
Successful Uploads
✅ Poles (10/10)
- All records uploaded successfully
- Field mapping working correctly
- No errors
✅ Segments (10/10)
- All records uploaded successfully
- TypeId mapping working correctly
- No errors
✅ Sites (10/10)
- All records uploaded successfully
- Address fields mapping correctly
- State lookup working
- No errors
Failed Uploads
❌ Access Points (0/10)
Error: API returns 500 error
PHP Warning: Undefined array key "isLocked"
Root Cause: The API expects locked field, but the uploader is sending isLocked
Fix Required: Change field name in _upload_access_points() method
# Current (wrong):
ap_data = {
"isLocked": 0 # ❌ Wrong field name
}
# Should be:
ap_data = {
"locked": 0 # ✅ Correct field name
}
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:407
❌ Network Elements (0/10)
Error: Silent failure (returns 500 error but not logged in debug output)
Root Cause: API likely rejecting due to missing or incorrect field
Status: Code was recently updated with correct typeId mapping - may need testing with debug output enabled
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:452-511
❌ Splicing (0/10)
Error: Silent failure (returns 500 error but not logged in debug output)
Root Cause: API likely rejecting due to missing or incorrect field
Status: Code was recently updated with correct typeId mapping - may need testing with debug output enabled
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:537-598
❌ Cabinet Boundaries (0/3)
Error: API returns 500 error
Database Exception: Field 'metric' doesn't have a default value
Root Cause: The mapobject table requires a metric field that's not being provided
Fix Required: Add metric field to info object data
info_data = {
"mapProjectId": int(map_id),
"name": str(row.get('Name', f'Cabinet-Boundary-{idx}')),
"mapinfoobjecttypeId": 3,
"data": data,
"color": "#ffffff",
"alpha": "0.40",
"metric": 0 # ✅ Add this required field
}
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:549-563
❌ Cables (0/3)
Error: API returns 500 error
Database Exception: Field 'metric' doesn't have a default value
Root Cause: Same as cabinet_boundaries - missing metric field
Fix Required: Add metric field to info object data
info_data = {
"mapProjectId": int(map_id),
"name": str(row.get('Name', f'Cable-{idx}')),
"mapinfoobjecttypeId": 2,
"data": data,
"color": "#ffffff",
"alpha": "1.00",
"metric": 0 # ✅ Add this required field
}
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:591-598
❌ Parcels (0/3)
Error: API returns 500 error
Database Exception: Field 'metric' doesn't have a default value
Root Cause: Same as cabinet_boundaries - missing metric field
Fix Required: Add metric field to info object data
info_data = {
"mapProjectId": int(map_id),
"name": str(row.get('Name', f'Parcel-{idx}')),
"mapinfoobjecttypeId": 3,
"data": data,
"color": "#ffffff",
"alpha": "0.40",
"objectgroup": str(row['Group 1']),
"objectgroup2": str(row['Group 2']),
"metric": 0 # ✅ Add this required field
}
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:634-641
❌ Permits (0/10)
Error: API returns 422 validation error
Permit Status cannot be blank.
Permit Entity Type cannot be blank.
Permit ULR Type cannot be blank.
Root Cause: Missing required fields in permit data
Fix Required: Add required fields with default values
permit_data = {
"mapProjectId": int(map_id),
"name": str(name),
"poly": poly,
"mappermitstatusId": 1, # ✅ Add: Default to status 1
"mappermitentitytypeId": 1, # ✅ Add: Default to entity type 1
"mappermitulrtypeId": 1 # ✅ Add: Default to ULR type 1
}
Note: Need to research the correct default values for these IDs from the API references.
File: /home/ahall/Sandbox/dragnddrop/backend/verofy_uploader.py:699-703
Action Items
-
CRITICAL - Fix Access Points
- Change
isLockedtolockedfield name - Should result in immediate success
- Change
-
HIGH - Fix Info Objects (Cabinet Boundaries, Cables, Parcels)
- Add
metric: 0field to all info object creations - Should result in immediate success
- Add
-
HIGH - Fix Permits
- Research correct reference IDs for permit types
- Add required fields with appropriate defaults
-
MEDIUM - Debug Network Elements & Splicing
- Add debug output (like access_points and sites have)
- Verify typeId mapping is working
- Check for any other missing required fields
Next Steps
- Apply the fixes identified above
- Re-run test with same data to map 16950
- Verify all layers upload successfully
- Document any additional issues found