WiFi Optimizer: Centralized rule engine for recommendations#216
Merged
tvancott42 merged 34 commits intomainfrom Feb 5, 2026
Merged
WiFi Optimizer: Centralized rule engine for recommendations#216tvancott42 merged 34 commits intomainfrom
tvancott42 merged 34 commits intomainfrom
Conversation
- Create extensible rule engine (IWiFiOptimizerRule, WiFiOptimizerEngine) - Add IoTSsidSeparationRule: suppresses recommendation when IoT SSID exists with band steering enabled on main SSIDs - Add BandSteeringRule: recommends enabling when >30% clients are steerable - Add High2GHzConcentrationRule: flags when >50% on 2.4 GHz despite capability - Integrate with VlanAnalyzer for network classification (IoT, Security, etc.) - Add NetworkId to WlanConfiguration for WLAN-to-network linking
- Port Minimum RSSI recommendation to rule engine (MinRssiRule) - Update BandSteeringAnalysis.razor to use audit issue CSS classes - Remove debug logging from WiFiOptimizerEngine
Rules added: - HighPowerRule: warns when all radios on an AP are set to high TX power - CoverageGapRule: detects APs with >= 50% weak-signal clients - WeakSignalPopulationRule: warns when >= 30% of all clients have weak signal - MinRssiEnabledRule: info about min RSSI being enabled (can cause disconnects) - RoamingAssistantRule: recommends enabling 5 GHz Roaming Assistant - TxPowerVariationRule: recommends varied TX power in multi-AP deployments
- Add ShowOnOverview property to HealthIssue (defaults true) - Set ShowOnOverview=false for informational rules (tab-only) - Port AirtimeFairness.razor rules: - HighRadioUtilizationRule: warns when utilization > 70% - LegacyClientAirtimeRule: warns when >= 3 legacy clients - HighTxRetryRule: warns when TX retries > 15% - MinimumDataRatesRule: recommends min data rates for 2.4 GHz
Rules added: - LoadImbalanceRule: warns when load imbalance > 50% - HighApLoadRule: warns when AP has > 2x average clients - DhcpIssuesRule: detects clients without IP addresses
Update all WiFi Optimizer components to pull recommendations from the rule engine via health score instead of generating locally. Use the same issue-item CSS styling as Security Audit for consistent UI.
- Create IssuesList.razor with SVG icons (shield/triangle/circle-i)
- Convert all WiFi tabs to use standardized component
- Replace text icons ("!" and "i") with proper SVG icons
- Convert local issue classes to use HealthIssue where possible
- Update CSS with proper styling aliases
- Add CoChannelInterferenceRule for detecting co-channel interference - Add NonStandardChannelRule for 2.4 GHz non-standard channel detection - Add ChannelHealth dimension to HighRadioUtilizationRule - Add EvaluateAll interface method for multi-issue rules - Update WiFiOptimizerEngine to use EvaluateAll - ChannelAnalysis now pulls issues from health score engine
- Add HighPowerOverlapRule for detecting high-power APs on same channel - PowerCoverageAnalysis now pulls overlap issues from health score - Both co-channel rules properly filter out mesh pairs
- Add BandSteering to HealthDimension enum - Update BandSteeringRule, IoTSsidSeparationRule, High2GHzConcentrationRule to use BandSteering - BandSteeringAnalysis now filters by BandSteering dimension - Channel-related issues no longer appear on Band Steering page
- Fix LoadImbalanceRule string interpolation bug - Remove ClientSatisfaction from load-related rules (HighApLoadRule, LoadImbalanceRule) - Exclude overlap issues from PowerCoverageAnalysis recommendations section
Shows on Band Steering page under legacy devices section instead of separate custom display.
The LegacyClientAirtimeRule now shows in the Recommendations section via the standard IssuesList component instead of a custom display.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major refactor of the WiFi Optimizer that extracts recommendation logic from individual Razor components into a centralized, testable rule engine.
NetworkOptimizer.WiFi/Rules/replace inline logic from BandSteeringAnalysis, PowerCoverageAnalysis, AirtimeFairness, ApLoadBalance, and ConnectivityFlow componentsUI Improvements
Rules Ported
Test plan