Segments (1122) Delete Previous Page 10 of 23 Next All roads A F None All routes A1 A10 A11 A12 A121 A122 A123 A124 A125 A126 A13 A14 A2 A231 A232 A233 A234 A235 A236 A237 A3 A3-1 A342 A343 A344 A345 A4 A4-1 A4-2 A4-4 A4-5 A4-6 A4-7 A5 A5-1 A6 A7 A8 A8 (1) A9 E1 F100 F101 F101-1 F102 F103 F103-1 F104 F105 F106 F107 F108 F109 F110 F111 F112 F113 F114 F115 F116 F117 F118 F118-1 F119 F120 F121 F122 F123 F124 F124-1 F125 F126 F127 F128 F128-1 F128-2 F128-3 F129 F130 F131 F132 F133 F135 F136 F137 F138 F139 F200 F201 F202 F203 F204 F205 F206 F207 F208 F209 F210 F211 F212 F213 F214 F215 F216 F217 F218 F219 F220 F221 F222 F223 F224 F225 F226 F227 F228 F229 F230 F231 F232 F233 F234 F235 F236 F237 F238 F239 F240 F242 F243 F244 F245 F246 F247 F248 F249 F250 F251 F252 F252-1 F253 F254 F255 F255-1 F256 F257 F258 F259 F260 F261 Select state Abia Adamawa Akwa Ibom Anambra Bauchi Bayelsa Benue Borno Cross River Delta Ebonyi Edo Ekiti FCT Gombe Imo Jigawa Kaduna Kano Katsina Kebbi Kogi Kwara Lagos Nasarawa Niger Ogun Ondo Osun Oyo Plateau Rivers Sokoto Taraba Yobe Zamfara ☰ Route Segment code Name State Start name Northings Eastings End name Northings 2 Eastings 2 Distance(km) ✎ A4-7 A4-7BOS02 KONDUGA BORNO - 11.70072 13.33420 - 11.57874 13.52647 24.97 ✎ A4-7 A4-7BOS03 BAMA BORNO - 11.57874 13.52647 - 11.49614 13.71196 24.95 ✎ A4-7 A4-7BOS04 BULTURI BORNO - 11.49614 13.71196 - 11.36801 13.89022 24.96 ✎ A4-7 A4-7BOS05 DAR GEMAL BORNO - 11.36801 13.89022 - 11.24206 14.15558 33.72 ✎ A5 A5LAS01 LAGOS LAGOS - 6.51421 3.36468 - 6.69267 3.25740 28.79 ✎ A5 A5OGS02 IFO OGUN - 6.69267 3.25740 - 6.88717 3.19535 24.98 ✎ A5 A5OGS03 WASINMI OGUN - 6.88717 3.19535 - 7.05911 3.28641 25.00 ✎ A5 A5OGS04 ABEOKUTA OGUN - 7.05911 3.28641 - 7.18497 3.42873 26.82 ✎ A5 A5OGS05 ODEDA OGUN - 7.18497 3.42873 - 7.29600 3.60817 24.95 ✎ A5 A5OGS06 ILUGUN OGUN - 7.29600 3.60817 - 7.38794 3.69483 15.40 ✎ A5 A5OYS07 IBADAN OYO - 7.38794 3.69483 - 7.40377 3.94273 32.10 ✎ A5-1 A5-1OGS01 ATAN OGUN - 6.70688 3.24296 - 6.67755 3.03519 25.11 ✎ A5-1 A5-1OGS02 OWODE OGUN - 6.67755 3.03519 - 6.68582 2.81948 25.08 ✎ A5-1 A5-1OGS03 IDIROKO OGUN - 6.68582 2.81948 - 6.63871 2.73289 13.00 ✎ A6 A6ABS01 UMUIKA ABIA - 5.28924 7.32778 - 5.30564 7.29143 5.06 ✎ A6 A6IMS02 OGABKU IMO - 5.30564 7.29143 - 5.42538 7.10387 25.01 ✎ A6 A6IMS03 OWERRI IMO - 5.42538 7.10387 - 5.57608 6.96493 25.00 ✎ A6 A6IMS04 AWO OMAMMA IMO - 5.57608 6.96493 - 5.74923 6.88163 22.35 ✎ A6 A6ANS05 IHIALA ANAMBRA - 5.74923 6.88163 - 5.95154 6.83641 25.04 ✎ A6 A6ANS06 ONITSHA ANAMBRA - 5.95154 6.83641 - 6.13522 6.79039 23.52 ✎ A7 A7KWS01 KUBURUFU KWARA - 9.83201 3.36180 - 9.64871 3.31818 25.00 ✎ A7 A7KWS02 KOSUBOSU KWARA - 9.64871 3.31818 - 9.52624 3.31588 18.20 ✎ A7 A7KWS03 GWASERO KWARA - 9.52624 3.31588 - 9.48397 3.53356 24.99 ✎ A7 A7KWS04 KURA KWARA - 9.48397 3.53356 - 9.50285 3.74937 25.04 ✎ A7 A7KWS05 KUGEJI KWARA - 9.50285 3.74937 - 9.61086 3.92039 25.05 ✎ A7 A7KWS06 JEKANA KWARA - 9.61086 3.92039 - 9.42068 3.86338 25.00 ✎ A7 A7KWS07 BWAREGURJI KWARA - 9.42068 3.86338 - 9.18810 3.86156 28.35 ✎ A7 A7OYS08 KISHI OYO - 9.18810 3.86156 - 9.00200 3.92437 25.00 ✎ A7 A7OYS09 AGBONA OYO - 9.00200 3.92437 - 8.83873 4.06513 24.99 ✎ A7 A7OYS10 KONDORO OYO - 8.83873 4.06513 - 8.70141 4.20684 23.37 ✎ A7 A7KWS11 ADEDEJI KWARA - 8.70141 4.20684 - 8.61506 4.40831 25.00 ✎ A7 A7KWS12 ILORIN KWARA - 8.61506 4.40831 - 8.48271 4.53699 25.04 ✎ A8 A8ADS01 MAYO FARAN ADAMAWA - 9.02544 12.06416 - 8.78027 12.16365 33.21 ✎ A8 A8ADS02 BOUDAMANGA ADAMAWA - 8.78027 12.16365 - 8.57536 12.13443 25.01 ✎ A8 A8ADS03 RIBADU ADAMAWA - 8.57536 12.13443 - 8.36784 12.06308 25.00 ✎ A8 A8ADS04 GAMU ADAMAWA - 8.36784 12.06308 - 8.15985 12.04425 24.98 ✎ A8 A8ADS05 TUNGO ADAMAWA - 8.15985 12.04425 - 7.96274 11.95373 26.55 ✎ A8 A8TAS06 BURTOL TARABA - 7.96274 11.95373 - 7.62904 11.43447 450.15 ✎ A8 A8TAS07 - TARABA - 7.62904 11.43447 - 7.45444 11.31393 25.04 ✎ A8 A8TAS08 MAYO JARANDI TARABA - 7.45444 11.31393 - 7.29773 11.15832 25.01 ✎ A8 A8TAS09 TAPARE TARABA - 7.29773 11.15832 - 7.19300 11.07759 25.02 ✎ A8 A8TAS10 YELWA TARABA - 7.19300 11.07759 - 7.02988 11.08810 25.02 ✎ A8 A8TAS11 GUROJI TARABA - 7.02988 11.08810 - 6.90927 11.20056 24.98 ✎ A8 A8TAS12 LEKITABA TARABA - 6.90940 11.19723 - 6.72827 11.24773 29.22 ✎ A8 (1) A8(1)S01 Bali TARABA - 7.85840 10.97199 - 7.80512 11.18072 24.96 ✎ A8 (1) A8(1)S02 Mambila Plateau Rd TARABA - 7.80512 11.18072 - 7.79817 11.39188 24.98 ✎ A8 (1) A8(1)S03 Mambila Plateau Rd TARABA - 7.79817 11.39188 - 7.62650 11.43534 25.08 ✎ A8 (1) A8(1)S04 Mambila Plateau Rd TARABA - 7.62650 11.43534 - 7.45402 11.31367 24.85 ✎ A8 (1) A8(1)S05 Mambila Plateau Rd, 663101 TARABA - 7.45402 11.31367 - 7.29769 11.15815 24.97 ✎ A8 (1) A8(1)S06 Mambila Plateau Rd, 663001 TARABA - 7.29769 11.15815 - 7.19324 11.07737 24.97 Features Features and Workflows1) LandingFERMA-branded entry page.Navigation to Inventory, Motorability, Condition, Library, Engineering Admin.2) Road InventoryPrimary use case: route and segment inventory exploration.Main sectionsKPI strip above mapMap/table view sectionRight side cards:Segment summarySegment details with:Segment Identity tableSegment Characteristics tableCurrent behavior highlightsFilters are mutually exclusive in page logic (road OR route OR state).Route row selection loads details via AJAX endpoint:GET /road-inventory/route-details/?route=<route_code>Summary includes:RouteLength (sum of segment distances)Start point/End point derived from first/last segment by index orderingPasses through (Route.details)Number of segmentsStart/End display fallback chain for name:Address FK name -> Segment name -> Segment state -> -Point display format:Name (Lat, Lon) with fixed decimal precision3) Road MotorabilityPrimary use case: evaluate motorability performance and segment status distribution.Main sectionsKPI strip (length/routes/segments/no data)Status KPI strip (Good/Tolerable/Intolerable/Failed)Map/table viewRight side cards:Motorability summarySegments under investigation or repairInvestigation/repair table behaviorOne row per segmentFilter-aware (uses page filter context)Source: Defect records where workflow status is not repair_completeColumns:Segment (segment code)Status (human-readable workflow status)Sort order:Segment index/code ordering4) Road ConditionPrimary use case: operate on sub-segment condition records and create draft defect records.Key endpointsPOST /road-condition/save-draft/GET /road-condition/subsegments/?segment=<code>BehaviorCreates defect drafts only for eligible sub-segments.Prevents duplicate active records per sub-segment.Left-side filter uses Route and Condition instead of State.Speed-vs-distance graph auto-loads the first segment returned by the active filter.If the current filter returns no segments, the page shows No segments found for the selected filter.Segment ordering uses:parent routesegment trailing two-digit suffix (numeric)id tie-breakerSub-segment ordering uses:parent routeparent segment trailing two-digit suffix (numeric)parent segment idsub-segment trailing suffix (numeric)id tie-breaker5) LibrarySections:Road inventoryReportsTechnical guideUser guideNotes:Shared page title behavior implemented as Library across sections.Technical and user guides are rendered via shared guide template logic.Road inventory interactionsSegment rows no longer open the editor directly.A compact edit icon beside each segment checkbox opens the segment edit modal.Clicking a segment row expands it inline as an accordion.Only one segment can stay expanded at a time.Expanded segment rows load sub-segments on demand.Inline sub-segment workspaceExpanded sub-segment tables show:checkboxedit iconsub-segment codestart pointend pointdistanceThe inline sub-segment edit modal currently updates:start pointend pointSub-segment distance remains visible in the table but is read-only in the modal.Selecting sub-segments reveals a local Delete action above the expanded sub-segment table.Confirmed delete removes the selected sub-segments and then renumbers the remaining rows so codes stay contiguous.Data hygiene and constraintsSegment codes are standardized to end in two digits.Segment code max length is now 16 characters.Shared list ordering ignores the middle portion of the code and prioritizes route plus the final two-digit suffix.Duplicate sub-segment imports are collapsed during upload so repeated coordinate/data rows are not created.Sub-segment position ceiling is now 35, with duplicate-cleanup and renumbering support in the migration path.6) Engineering AdminWorkflow tabs/pages:Root Cause AnalysisPhysical InspectionSolution DesignApprovalsOverview/History variantsWorkflow progression (conceptual)draft -> rca -> physical_inspection -> solution_design -> approved/rejected -> repair_ongoing -> repair_completeRecent UI updatePriority controls/labels removed from Approvals and engineering-admin summary tables.Top navigation is fixed site-wide.Library and Engineering left navigation panes are fixed on desktop and scroll independently from the main content area.7) Data import/sync utilitiesRoute details sync commandCommand: python manage.py sync_route_detailsReads route lines from template source and updates Route.details.Supports dry run and apply mode.Segment refresh services/tasksQueue refresh endpoint and Celery task for updating distances/speeds/status from Google API. Uploads Download template Select file (.xls, .xlsx, .csv) Begin Upload Uploading, please wait... Upload summary Download error CSV
Features and Workflows1) LandingFERMA-branded entry page.Navigation to Inventory, Motorability, Condition, Library, Engineering Admin.2) Road InventoryPrimary use case: route and segment inventory exploration.Main sectionsKPI strip above mapMap/table view sectionRight side cards:Segment summarySegment details with:Segment Identity tableSegment Characteristics tableCurrent behavior highlightsFilters are mutually exclusive in page logic (road OR route OR state).Route row selection loads details via AJAX endpoint:GET /road-inventory/route-details/?route=<route_code>Summary includes:RouteLength (sum of segment distances)Start point/End point derived from first/last segment by index orderingPasses through (Route.details)Number of segmentsStart/End display fallback chain for name:Address FK name -> Segment name -> Segment state -> -Point display format:Name (Lat, Lon) with fixed decimal precision3) Road MotorabilityPrimary use case: evaluate motorability performance and segment status distribution.Main sectionsKPI strip (length/routes/segments/no data)Status KPI strip (Good/Tolerable/Intolerable/Failed)Map/table viewRight side cards:Motorability summarySegments under investigation or repairInvestigation/repair table behaviorOne row per segmentFilter-aware (uses page filter context)Source: Defect records where workflow status is not repair_completeColumns:Segment (segment code)Status (human-readable workflow status)Sort order:Segment index/code ordering4) Road ConditionPrimary use case: operate on sub-segment condition records and create draft defect records.Key endpointsPOST /road-condition/save-draft/GET /road-condition/subsegments/?segment=<code>BehaviorCreates defect drafts only for eligible sub-segments.Prevents duplicate active records per sub-segment.Left-side filter uses Route and Condition instead of State.Speed-vs-distance graph auto-loads the first segment returned by the active filter.If the current filter returns no segments, the page shows No segments found for the selected filter.Segment ordering uses:parent routesegment trailing two-digit suffix (numeric)id tie-breakerSub-segment ordering uses:parent routeparent segment trailing two-digit suffix (numeric)parent segment idsub-segment trailing suffix (numeric)id tie-breaker5) LibrarySections:Road inventoryReportsTechnical guideUser guideNotes:Shared page title behavior implemented as Library across sections.Technical and user guides are rendered via shared guide template logic.Road inventory interactionsSegment rows no longer open the editor directly.A compact edit icon beside each segment checkbox opens the segment edit modal.Clicking a segment row expands it inline as an accordion.Only one segment can stay expanded at a time.Expanded segment rows load sub-segments on demand.Inline sub-segment workspaceExpanded sub-segment tables show:checkboxedit iconsub-segment codestart pointend pointdistanceThe inline sub-segment edit modal currently updates:start pointend pointSub-segment distance remains visible in the table but is read-only in the modal.Selecting sub-segments reveals a local Delete action above the expanded sub-segment table.Confirmed delete removes the selected sub-segments and then renumbers the remaining rows so codes stay contiguous.Data hygiene and constraintsSegment codes are standardized to end in two digits.Segment code max length is now 16 characters.Shared list ordering ignores the middle portion of the code and prioritizes route plus the final two-digit suffix.Duplicate sub-segment imports are collapsed during upload so repeated coordinate/data rows are not created.Sub-segment position ceiling is now 35, with duplicate-cleanup and renumbering support in the migration path.6) Engineering AdminWorkflow tabs/pages:Root Cause AnalysisPhysical InspectionSolution DesignApprovalsOverview/History variantsWorkflow progression (conceptual)draft -> rca -> physical_inspection -> solution_design -> approved/rejected -> repair_ongoing -> repair_completeRecent UI updatePriority controls/labels removed from Approvals and engineering-admin summary tables.Top navigation is fixed site-wide.Library and Engineering left navigation panes are fixed on desktop and scroll independently from the main content area.7) Data import/sync utilitiesRoute details sync commandCommand: python manage.py sync_route_detailsReads route lines from template source and updates Route.details.Supports dry run and apply mode.Segment refresh services/tasksQueue refresh endpoint and Celery task for updating distances/speeds/status from Google API.