190 lines
4.4 KiB
Markdown
190 lines
4.4 KiB
Markdown
|
|
# 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:**
|
||
|
|
```python
|
||
|
|
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:**
|
||
|
|
```python
|
||
|
|
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):
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"mapProjectId": 16950,
|
||
|
|
"name": "AP-0",
|
||
|
|
"latitude": "40.792075732",
|
||
|
|
"longitude": "-124.129212629",
|
||
|
|
"typeId": 3,
|
||
|
|
"locked": 0,
|
||
|
|
"group1": "Zone 03"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Access Point 5** (Handhole - typeId 1):
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"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
|
||
|
|
|
||
|
|
1. **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
|
||
|
|
|
||
|
|
2. **Splicing** (Priority: HIGH)
|
||
|
|
- Add debug output
|
||
|
|
- Verify endpoint name (`map-splice` vs `map-splicing`)
|
||
|
|
- Check for missing required fields
|
||
|
|
|
||
|
|
### Requires Research
|
||
|
|
|
||
|
|
3. **Permits** (Priority: MEDIUM)
|
||
|
|
- Research MapPermitStatus references
|
||
|
|
- Research MapPermitEntityType references
|
||
|
|
- Research MapPermitULRType references
|
||
|
|
- Add required fields with appropriate defaults
|
||
|
|
|
||
|
|
### Blocked by API Bug
|
||
|
|
|
||
|
|
4. **Info Layers** (Cabinet Boundaries, Cables, Parcels)
|
||
|
|
- Waiting on Verofy API fix for `data` field issue
|
||
|
|
- Metric calculations are working correctly
|
||
|
|
- Can be imported manually through web interface meanwhile
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lessons Learned
|
||
|
|
|
||
|
|
1. **Field Name Consistency:** Always check API documentation for exact field names
|
||
|
|
2. **Debug Output is Critical:** The debug output showing the exact data being sent was essential for identifying the issue
|
||
|
|
3. **Simple Fixes Matter:** A one-line change fixed an entire layer
|
||
|
|
4. **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:
|
||
|
|
1. Upload access_points.shp to any map
|
||
|
|
2. Check Verofy web interface to confirm access points appear
|
||
|
|
3. Verify locked status is set correctly (should be unlocked by default)
|
||
|
|
4. Verify typeId mapping is correct (Handhole, Vault, etc.)
|
||
|
|
5. Verify Group 1 and Group 2 fields are populated correctly
|