🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
226 lines
5.7 KiB
Markdown
226 lines
5.7 KiB
Markdown
# 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
|
|
```python
|
|
# 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
|
|
```python
|
|
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
|
|
```python
|
|
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
|
|
```python
|
|
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
|
|
```python
|
|
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
|
|
|
|
1. **CRITICAL - Fix Access Points**
|
|
- Change `isLocked` to `locked` field name
|
|
- Should result in immediate success
|
|
|
|
2. **HIGH - Fix Info Objects (Cabinet Boundaries, Cables, Parcels)**
|
|
- Add `metric: 0` field to all info object creations
|
|
- Should result in immediate success
|
|
|
|
3. **HIGH - Fix Permits**
|
|
- Research correct reference IDs for permit types
|
|
- Add required fields with appropriate defaults
|
|
|
|
4. **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
|
|
|
|
1. Apply the fixes identified above
|
|
2. Re-run test with same data to map 16950
|
|
3. Verify all layers upload successfully
|
|
4. Document any additional issues found
|